一、定义
联合是一种数据类型,它能在同一个内存空间存储不同的数据类型,但是不是同时存储。
e.g.
union name {
int a;
char b
};
注:共用一块内存空间。用a时不能用b。
二、与结构相比较
e.g.
struct name {
int a;
char b
};
注:结构,打个比喻结构相当于合租。
三、联合体的大小
1、联合体的大小至少是最大成员的大小。
2、当联合体的最大成员大小不是最大对齐数的整数倍时,对齐到最大对齐数的整数倍 。
四、联合体的初始化
union name add;
add.letter = 'R';
union name add1 = add; // 用另一个联合体来初始化
union name add2 = { 88 } ; // 初始化联合体里的int类型成员
union name add3 = { .sub = 110.2 }; // 指定联合体里的double类型的初始化器
五、使用联合体
在联合体中,一次只存储一个值。即使有足够的空间,也不能同时存储一个char类型的值和一个int类型的值。
add.digit =23;
add.f=3.0; // 清除23,存储3.0,占8字节
联合体指针访问成员同结构体。
联合体使用成员运算符的方式与结构相同。