相同類型的數據集合在一起可以用數組;--->每個成員佔用不同的內存空間
不同類型的數據集合在一起可以用結構體;--->每個成員佔用不同的內存空間
不同類型的數據放在同一段內存單元上,使用共用體。--->每個成員佔用同一段的內存空間----->省內存空間
例如:結構體
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]);
通信中的數據包會用到共用體。
因爲不知道對方會發一個什麼包過來,用共用體的話就很簡單了,定義幾種格式的包,收到包之後就可以直接根據包的格式取出數據。