1.联合类型的定义
联合也是一种特殊的自定义类型
这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)
//联合类型的声明 union Un { char c; int i; }; //联合变量的定义 union Un un; //计算连个变量的大小 printf("%d\n", sizeof(un));
2.联合的特点
联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联
合至少得有能力保存最大的那个成员)
union Un { int i; char c; }; int main() { union Un un; printf("%d\n", &(un.i)); printf("%d\n", &(un.c)); un.i = 0x11223344; un.c = 0x55; printf("%x\n", un.i);//0x11223355 }
输出后可以发现un.i和un.c地址相同,且un.c也改变了un.i的值更加证明了公用同一块空间.
3.联合大小的计算
(1)联合的大小至少是最大成员的大小。
(2)当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。
比如:
union Un1 { char c[5]; int i; }; union Un2 { short c[7]; int i; }; printf("%d\n", sizeof(union Un1));//8字节 printf("%d\n", sizeof(union Un2));//16字节
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!