struct裡面的sizeof計算總結

2021-05-26 19:58:09 字數 584 閱讀 6273

struct 裡面的sizeof的計算

如struct  exap

short  a;

double b;

char c;

double d;

int e;

}size;

sizeof(struct  exap)=? 40

秘訣:方法一:

short只能存在2的倍數裡面

double只能存在8的背書裡面

char只能存在1的倍數裡面

int只能存在4的倍數裡面

在這基礎上,還必須的遵循資料有效對齊。

方法二:

在vc裡面規定的是8位元組對齊,如果struct裡最長變數<8,就以最長的位元組對齊計算,如果struct裡面最長的》=8,就以8位元組對齊計算;

在gcc裡面進行了優化,規定是4位元組對齊,如果struct裡面最長變數<4,就以最長的位元組對齊計算,如果struct裡面的最長的》=4,就以4位元組對齊計算;

補充:這裡還可以可以通過#pragma pack()來更改以上規則。例如:#pragma pack(1),則以上規則變為:1)偏移量必須為1的倍數;2)為物件分配的位元組數必須為1的整數倍。

sizeof計算struct大小

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

sizeof計算struct大小

1 結構體變數的首位址能夠被其最寬基本型別成員的大小所整除 2 結構體每個成員相對於結構體首位址的偏移量 offset 都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充位元組 internal adding 3 結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要編譯器會在最末乙個成...

struct 對齊機制和sizeof 筆記

32位機下 struct test long long int t1 char c int i char arr 2 static int iv int test iv 0 求sizeof test 如果你考慮的是在vc vs環境下,你的答案不是24,請繼續往下看 如果你考慮的是在gcc g 編譯環...