C 共用体
C 共用体
概念
在C语言中,共用体(union
)是一种特殊的数据类型,它允许多个成员共享同一块内存。
和结构体(struct)不同:
- 结构体:每个成员都有独立的存储空间,大小是所有成员大小之和(加上对齐)。
- 共用体:所有成员重叠存放,大小等于最大成员的大小,而且任意时刻只能保存其中一个成员的值。
基本语法
1
2
3
4
5
union Data {
int i;
float f;
char str[20];
};
这里 Data
的大小是 max(sizeof(int), sizeof(float), sizeof(char[20]))
,也就是 20 个字节。
所有成员从同一个内存地址开始存放。
特点
- 节省内存,所有成员共享同一片内存
- 一个共用体在同一时间只能保存其中一个成员的值
- 可以用来实现多态效果,比如一个变量有时存
int
,有时存float
,就适用union
使用共用体可能会导致数据存在丢失或污染
本文由作者按照 CC BY 4.0 进行授权