联合体(Union)简介
联合体(union
)是 C 和 C++ 编程语言中的一种数据结构,和结构体(struct
)类似,但有一些重要的区别。
定义
- 联合体中的所有成员共享同一段内存,也就是说,联合体中的多个成员变量会占用相同的地址,但是在任何一个时间点只能存储一个成员的值。
1. 联合体的定义和语法
定义语法
union UnionName {
DataType member1;
DataType member2;
...
};
示例
union Example {
int i; // 整数,占用 4 字节
float f; // 浮点数,占用 4 字节
char c; // 字符,占用 1 字节
};
- 这里的联合体
Example
包含了 3 个成员:- 一个整数
i
,占用 4 字节。 - 一个浮点数
f
,占用 4 字节。 - 一个字符
c
,占用 1 字节。
- 一个整数
- 存储特点:
- 联合体的总大小取决于它的最大成员所需的内存大小(这里是
4 字节
,因为int
和float
都占 4 字节)。
- 联合体的总大小取决于它的最大成员所需的内存大小(这里是
2. 联合体的内存分配
内存共享特点
- 联合体中的所有成员都共享同一块内存,因此:
- 写入一个成员会覆盖其他成员的值。
- 在任意时刻,联合体中只能存储一个有效值。
示例
union Example {
int i; // 整数,占用 4 字节
float f; // 浮点数,占用 4 字节
char c[4]; // 字符数组,占用 4 字节
};
union Example ex;
ex.i =