联合体类型的声明
联合体的特点
联合体大小的计算
1.1联合体的声明
和结构体一样,联合体也是一个或多个成员构成的,这些成员可以
是不同类型的,但是编译器只为最大的成员分配足够的空间,联合
体的特点是所有成员公用同一块空间
对比一下结构体和联合体
联合体的声明、创建、初始化
union Un
{
char c;
int i;
};
int main()
{
union Un u = { 0 };
return 0;
}
大小是4个字节
1.2联合体的特点
为什么是4个字节?
取元素地址
他们会互相影响,同一时间用了 c 就不能用 i
1.3联合体大小的计算
上面的代码,最大成员大小为5
所占字节却是8个字节
联合体的大小不一定就是最大成员的大小
当最大的成员大小不是最大对齐数的整数倍时,就对齐到最大对齐数的整数倍
char类型最大对齐数是1
int 是 4
最大对齐数是4,所以对齐到8
short 是 2 个字节
联合体的应用
联合体是可以节省空间的,举个例子:
比如,我们要搞⼀个活动,要上线⼀个礼品兑换单,礼品兑换单中有三种商品:图书、杯⼦、衬衫。
每⼀种商品都有:库存量、价格、商品类型和商品类型相关的其他信息。
图书:书名、作者、⻚数
杯⼦:设计
衬衫:设计、可选颜⾊、可选尺⼨
联合体的练习
写⼀个程序,判断当前机器是⼤端?还是⼩端?