使用sizeof計算聯合體的大小

2021-07-30 06:47:58 字數 393 閱讀 8303

#include using namespace std;  

union u

;union u2

;union u3

;int main()

;int main()

int main()

{ cout<

解析:

上述**中用#pragma pack將對齊設定為1,由於結構體test中的成員s1,s2和i的自身對齊分別為2、2和4,都小於1,因此他們都是用1作為對齊,sizeof(test) = 1+2+2+4 = 9 ,倘若注釋掉#pragma pack,則編譯器預設對齊為8,所以各個成員自身的對齊都小於8,因此它們使用自身的對齊,sizeof(test)=1+1(補齊)+2+2+2(補齊)+4 = 12

使用sizeof計算聯合體(union)的大小

聯合體的大小取決於他所有成員中占用空間最大的乙個成員的大小。並且對於復合資料型別,如union,struct,class 的對齊方式為成員中最大成員的對齊方式。include using namespace std union u u的大小是其中最大的double型別成員a,所以sizeof u s...

聯合體union的使用

1.聯合體union的基本特性 和struct的同與不同 union,中文名 聯合體 共用體 在某種程度上類似結構體struct的一種資料結構,共用體 union 和結構體 struct 同樣可以包含很多種資料型別和變數。不過區別也挺明顯 結構體 struct 中所有變數是 共存 的 優點是 有容乃...

union聯合體使用詳解

1.聯合體 聯合體 union 與結構體 struct 有一些相似之處。但兩者有本質上的不同。在結構體中,各成員有各自的記憶體空間,乙個結構變數的總長度是各成員長度之和。而在聯合體中,各成員共享一段記憶體空間,乙個聯合變數的長度等於各成員中最長的長度。應該說 明的是,這裡所謂的共享不是指把多個成員同...