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