Structure and Union有什麼區別?(轉)


共用體
構造數據類型,也叫聯合體
用途:使幾個不同類型的變量共佔一段內存(相互覆蓋)

結構體是一種構造數據類型
用途:把不同類型的數據組合成一個整體-------自定義數據類型

---------------------------------------------------------------


結構體變量所佔內存長度是各成員佔的內存長度的總和。


共同體變量所佔內存長度是各最長的成員佔的內存長度。


共同體每次只能存放哪個的一種!!

共同體變量中起作用的成員是尊後一次存放的成員,
在存入新的成員後原有的成員失去了作用!

---------------------------------------------------------------


Structure 與 Union主要有以下區別:

    1. struct和union都是由多個不同的數據類型成員組成, 但在任何同一時刻, union中只存放了一個被選中的成員, 而struct的所有成員都存在。在struct中,各成員都佔有自己的內存空間,它們是同時存在的。一個struct變量的總長度等於所有成員長度之和。在Union中,所有成員不能同時佔用它的內存空間,它們不能同時存在。Union變量的長度等於最長的成員的長度。

    2. 對於union的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於struct的不同成員賦值是互不影響的。


    
舉一個例子:

例:

     #include <stdio.h>

     main()
     {
          union{                   /*定義一個聯合*/
               int i;
               struct{             /*在聯合中定義一個結構*/
                    char first;
                    char second;
               }half;
          }number;
          number.i=0x4241;         /*聯合成員賦值*/
          printf("%c%c\n", number.half.first, number.half.second);
          number.half.first='a';   /*聯合中結構成員賦值*/
          number.half.second='b';
          printf("%x\n", number.i);
          getch();
     }

    輸出結果爲:
     AB
     6261
發佈了1 篇原創文章 · 獲贊 1 · 訪問量 5735
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章