1.基础

作用:处理一种数据可能有多种类型的情况

定义:

c
1
2
3
4
5
6
7
8
9
10
union 共同体名 {
类型1 成员1;
类型2 成员2;
...
}; // 创建一个联合体类型。

union 共同体名 共同体变量名; //创建共同体变量
共同体变量名.成员1 = xxx; //使用时就是共同体变量名.成员
共同体变量名.成员2 = xxx; //赋值只能分开赋值,不同类型的赋给对应的

起别名:和结构体类似

c
1
2
3
4
5
typedef union 共同体名 {
类型1 变量1;
类型2 变量2;
...
}别名;

2.特点

  • 可以叫做共同体、联合体、共用体

  • 所有变量使用同一个内存空间

  • 所占的内存大小 = 最大成员的长度(也受内存对齐影响,总大小一定是最大成员的整数倍)

  • 每次只能给一个变量进行赋值,因为第二次赋值时会覆盖原有的数据

3.结构体和共用体的区别

结构体:一种事物中包含多个属性;存储方式各存各的;内存占用是各个变量的总和

共用体:表示一个属性有多种数据类型;存储方式是存一起,多次存会覆盖;内存占用是最大类型