C/C++ union用法——20110531

 

在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。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章