一、联合体1.1.联合体类型的说明像结构体一样联合体也是由一个或者多个成员构成这些成员可以是不同的类型。但是编译器只为最大的成员分配足够的内存空间联合体的特点是所有成员共用一块内存空间所以联合体也叫做共用体给联合体其中一个成员赋值其他成员的值也跟着变化。1.2.测试代码试想一下结果为什么是4代码如下可自行测试#includestdio.hunion Un{//联合类型的声明char c;int i;};int main() {union Un un { 0 };//联合变量的创建printf(%d\n, sizeof(un));return 0;}二、联合体的特点2.1.联合的成员是共用于同一块内存空间的这样一个联合变量的大小至少是最大成员的大小因为联合至少得有能力保存最大的那个成员2.2.代码1代码如下可自行测试#includestdio.hunion Un {//联合类型的声明char c;int i;};int main() {union Un un { 0 };//联合变量的创建printf(%p\n, un.c);printf(%p\n, un.i);printf(%p\n, un);return 0;}2.3.代码2代码如下可自行测试#includestdio.hunion Un {//联合类型的声明char c;int i;};int main() {union Un un { 0 };//联合变量的创建un.i 0x11223344;un.c 0x55;printf(%x\n, un.i);return 0;}2.4.总结代码一输出的三个地址一模一样,代码二的输出发现将i的第4个字节内容修改为55了一句话记住“联合体同一块内存不同名字同一时间只认一个。”三、相同成员的结构体和联合体的对比3.1.结构体struct S {char c;int i;};3.2.联合体union U {char c;int i;};3.3.一句话口诀结构体是“并排坐”联合体是“叠着住”。