聯合體,又稱共用體。編程的時候需要使幾種不同類型的變量存放到同一段內存單元中,而衍生出來的一種類型。也就是說,聯合體中每次只能存其中的一個變量,這個變量在聯合體變量中存入新的成員就失效了!!!用法與結構體一致,但是多用於結構體內部。
1 struct name
2 { 3 int age; 4 char* name; 5 union text //text是標題,標題可以不寫 ,此標題在在結構體內無作用 6 { 7 char a; 8 ... 9 } 10 }mytext;//mytext是結構體的另一個名字
注意:
(1)在struct中,各成員都占有自己的內存空間,它們是同時存在的。一個struct變量的總長度等於所有成員長度之和。在Union中,所有成員不能同時占用它的內存空間,它們不能同時存在。Union變量的存儲長度為其中最大類型的整數倍,且要大於等於最大成員的大小。
(2)對於union的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於struct的不同成員賦值是互不影響的
void main() { union { int i; struct{ char first; char second; }half; }number; number.i=0x4241; printf("%c%cn", number.half.first, number.half.second); num ber.half.first='a'; number.half.second='b'; printf("%xn", number.i); } 輸出結果為: AB 6261
參考:http://blog.163.com/pei_hua100/blog/static/80569759201272343556102/