c語言中union的使用

相同類型的數據集合在一起可以用數組;--->每個成員佔用不同的內存空間

不同類型的數據集合在一起可以用結構體;--->每個成員佔用不同的內存空間

不同類型的數據放在同一段內存單元上,使用共用體。--->每個成員佔用同一段的內存空間----->省內存空間

例如:結構體

struct student{

char name[10];

int age;

float length;

};

共用體:

union student{

char name[10];

int age;

float length;

};

共用體所佔內存字節數與其成員中佔字節數最多的那個成員相等。

共用體變量不能進行初始化;

只能對成員進行單獨賦值:

union student  stt;

stt.age = 19;

stt.length = 1.76;

printf("%d",stt.age);------------------->最後的值,是length成員的值,故會將1.76 取整,

共用體只能引用共用體變量的成員。有三種形式:

共用體變量名.成員名

共用體指針->成員名

(*共用體指針).成員名

共用體變量中起作用的是最近一次存入的成員變量的值,原有的成員變量的值將被覆蓋。

例如:

利用共用體取出int變量的高字節和低字節的數據

union student{

int a;

char ch[2];

}stt;

stt.a=0x4321;

printf("%x,%x",ch[0],ch[1]);

通信中的數據包會用到共用體。
因爲不知道對方會發一個什麼包過來,用共用體的話就很簡單了,定義幾種格式的包,收到包之後就可以直接根據包的格式取出數據。

 

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