聯合體與結構體的區別


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

 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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM