union

在C/C++程序的編寫中,當多個基本數據類型或複合數據結構要佔用同一片內存時,我們要使用聯合體;當多種類型,多個對象,多個事物只取其一時(我們姑且通俗地稱其爲“n 選1”),我們也
可以使用聯合體來發揮其長處。首先看一段代碼:
union myun
{
struct { int x; int y; int z; }u;
int k;
}a;
int main()
{
a.u.x =4;
a.u.y =5;
a.u.z =6;
a.k = 0;
printf("%d %d %d\n",a.u.x,a.u.y,a.u.z);
return 0;
}
union類型是共享內存的,以size最大的結構作爲自己的大小,這樣的話,myun這個結構就包含u這個結構體,而大小也等於u這個結構體 的大小,在內存中的排列爲聲明的順序x,y,z從低到高,然後賦值的時候,在內存中,就是x的位置放置4,y的位置放置5,z的位置放置6,現在對k賦 值,對k的賦值因爲是union,要共享內存,所以從union的首地址開始放置,首地址開始的位置其實是x的位置,這樣原來內存中x的位置就被k所賦的 值代替了,就變爲0了,這個時候要進行打印,就直接看內存裏就行了,x的位置也就是k的位置是0,而y,z的位置的值沒有改變,所以應該是0,5,6
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章