sizeof()的結果值

bluekrystal發表於2018-03-29

  以前一直以為sizeof()就是求一個陣列的長度,例如一個陣列a[5],sizeof(a)=5;現在才發現大錯特錯。實踐出真理,還是直接輸出來的直觀。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct num
{
    int a;
    char b;
    double c;
};
struct num1
{
    char b;
    int a;
    double c;
};
struct num2
{
    double c;
    char b;
    int a;
};
struct num3
{
    char b;
    double c;
    int a;
};
struct num4
{

};
class num5
{

};
int main()
{
    int a[5]={1,2,3,4,5};
    cout<<sizeof(a)<<endl;
    int b[5];
    cout<<sizeof(b)<<endl;
    int *p;
    cout<<sizeof(p)<<endl;
    cout<<sizeof(num)<<endl;
    cout<<sizeof(num1)<<endl;
    cout<<sizeof(num2)<<endl;
    cout<<sizeof(num3)<<endl;
    cout<<sizeof(num4)<<endl;
    cout<<sizeof(num5)<<endl;
    return 0;
}

執行結果:


來自百度百科的定義:sizeof的定義——sizeof的結果等於物件或者型別所佔的記憶體位元組數。(朋友們,是位元組數啊,現在發現還不晚!!!!!!)

當定義結構體strcut和類class的內部沒有定義任何東西時,strcut和class的大小為1;

來自百度百科的位元組對齊準則:



相關文章