2.結構和聯合的區別
結構和聯合有下列區別:
1.結構和聯合都是由多個不同的數據類型成員組成,但在任何同一時刻,聯合中只存放了一個被選中的成員,而結構的所有成員都存在。
2.對於聯合的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了,而對於結構的不同成員賦值是互不影響的。
下面舉一個例了來加對深聯合的理解。
例4:
main()
{
union{ /*定義一個聯合*/
int i;
struct{ /*在聯合中定義一個結構*/
char first;
char second;
}half;
}number;
number.i=0x4241; /*聯合成員賦值*/
printf("%c%c\n", number.half.first, mumber.half.second);
number.half.first='a'; /*聯合中結構成員賦值*/
number.half.second='b';
printf("%x\n", number.i);
getch();
}
輸出結果為:
AB
6261
從上例結果可以看出:當給i賦值後,其低八位也就是first和second的值;當給first和second賦字符後,這兩個字符的ASCII碼也將作為i的低八位和高八位。