構造數據類型,也叫聯合體
用途:使幾個不同類型的變量共佔一段內存(相互覆蓋)
結構體是一種構造數據類型
用途:把不同類型的數據組合成一個整體-------自定義數據類型
---------------------------------------------------------------
結構體變量所佔內存長度是各成員佔的內存長度的總和。
共同體變量所佔內存長度是各最長的成員佔的內存長度。
共同體每次只能存放哪個的一種!!
共同體變量中起作用的成員是尊後一次存放的成員,
在存入新的成員後原有的成員失去了作用!
---------------------------------------------------------------
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