目录
共用体基础知识
共用体的定义格式:
union 共⽤体名
{
成员列表;
};
面试中或者工作中有时候也将共用体称为 “ 联合 ” 或 “ 联合体 ”。
共用体和结构体那么相似,区别在哪呢?
共用体和结构体的区别
1、共用体所有成员占用的是同一块内存;结构体中每个成员相互独立,占用不同的内存。
2、共用体中修改其中任何一个成员就会影响到其余所有成员;结构体中每个成员互不影响。
3、共用体变量占用的内存等于最长的成员占用的内存;结构体变量占用的内存大于等于所有成员占用内存的总和,成员之间可能会存在 “缝隙”。
共用体是怎么做到只占用一块内存的呢?成员为什么又是互相影响的呢?
这是因为共用体使用了 “ 内存覆盖技术 ”,同一时刻只能保存一个成员的值,如果对某个成员赋值就会把原来所有的成员的值通通覆盖。
共用体的实际应用
union haha
{
int n;
char ch;
short m;
} animal, people;
1、“ haha ” 是共用体类型。
2、“ animal ” 、“ people ” 都是共用体变量。
3、“ sizeof ( haha ) ”、“ sizeof ( animal ) ”、“ sizeof ( int ) ” 的结果都是 4 。
4、共用体成员引用的方法:“ animal.n ”、“ animal.ch ”、“ animal.m ”。