1. 程式人生 > >共用體(聯合體)與結構體的區別

共用體(聯合體)與結構體的區別

聯合體,又稱共用體。程式設計的時候需要使幾種不同型別的變數存放到同一段記憶體單元中,而衍生出來的一種型別。也就是說,聯合體中每次只能存其中的一個變數,這個變數在聯合體變數中存入新的成員就失效了!!!用法與結構體一致,但是多用於結構體內部。

複製程式碼
 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