sizeof 大小總結

2021-10-09 04:35:17 字數 1828 閱讀 1198

查詢物件或型別的大小

在需要知道物件的實際大小時使用

語法:

sizeof(型別)

sizeof 表示式

解釋

返回 型別 的物件表示的位元組數。

返回當 表示式 求值時所返回的型別的物件表示的位元組數。

#include class a

;int main()

; sizeof(a); //值為8,位元組對齊,在char之後會填充3個位元組。

struct b

; sizeof(b); //值為8,位元組對齊,在char之後會填充3個位元組。

struct c

; sizeof(c); //值為1,空結構體也佔記憶體

聯合體是共享一段記憶體,其中最大的變數大小。

因為long long和double都是8個位元組。

其中char str[21]本來最大記憶體是21個位元組,但是是4位元組對齊,所以需要補齊後面3個位元組,所以大小是24位元組

union u

;cout <指標是用來記錄另乙個物件的位址,所以指標的記憶體大小當然就等於計算機內部位址匯流排的寬度。

在32位編譯器中,乙個指標變數的返回值必定是4。

指標變數的sizeof值與指標所指的物件沒有任何關係。

char* str="123";

cout《注意不要說類的大小,是類的物件的大小.

首先,類的大小是什麼?確切的說,類只是乙個型別定義,它是沒有大小可言的。 用sizeof運算子對乙個型別名操作,得到的是具有該型別實體的大小。

如果 class a; a obj; 那麼sizeof(a)==sizeof(obj) 那麼sizeof(a)的大小和成員的大小總和是什麼關係呢,很簡單,乙個物件的大小大於等於所有非靜態成員大小的總和。

空類

#include using namespace std;

class a

;class b

b(){}

~b(){}

};class c

virtual ~c(){}

virtual void fun(){}

};int main()

;cout《求繼承類的大小

#include using namespace std;

class a {};

class b {};

class c ;

class d ;

class c_1;

class e:public a{};

class f:public a,public b,public c{};

class g:public a,public b,public d{};

class h:public c,public d,public c_1{};

class h_1:public c,public c_1,public d{};

class h_2:public c,public c_1,public d,public b,public a{};

int main()

{ cout<小結類的大小

1.為類的非靜態成員資料的型別大小之和.

2.由編譯器額外加入的成員變數的大小,用來支援語言的某些特性(如:指向虛函式的指標).

3.為了優化訪問效率,進行的邊緣調整(對齊).

4 與類中的建構函式,析構函式以及其他的成員函式無關.

sizeof 類大小,空類大小

乙個類的例項化物件所佔空間的大小?注意不要說類的大小,是類的物件的大小.首先,類的大小是什麼?確切的說,類只是乙個型別定義,它是沒有大小可言的。用sizeof運算子對乙個型別名操作,得到的是具有該型別實體的大小。如果 class a a obj 那麼sizeof a sizeof obj 那麼siz...

sizeof 類大小,空類大小

乙個類的例項化物件所佔空間的大小?注意不要說類的大小,是類的物件的大小.首先,類的大小是什麼?確切的說,類只是乙個型別定義,它是沒有大小可言的。用sizeof運算子對乙個型別名操作,得到的是具有該型別實體的大小。如果 class a a obj 那麼sizeof a sizeof obj 那麼siz...

sizeof計算struct大小

題目 s的輸出結果 include struct s struct s next int main 答案 16 struct的sizeof不是成員型別大小的簡單相加,對齊!1 sizeof應用在結構上的情況 請看下面的結構 struct mystruct 對結構mystruct採用sizeof會出現...