定义:联合体的定义和结构体类似,不过它的所有成员共享同一块内存空间,这块空间的大小由占用内存最大的成员决定。
使用场景:当需要存储不同类型的数据,但不需要同时使用它们时,使用联合体可以节省内存。
#include <stdio.h>
// 定义一个联合体
union Data {
int i; // 整型,占4字节
float f; // 浮点型,占8字节
char str[20]; // 字符数组,占20字节
};
int main() {
union Data data;
// 存储整数
data.i = 10;
printf("data.i: %d\n", data.i);
// 存储浮点数(会覆盖之前存储的整数)
data.f = 220.5;
printf("data.f: %f\n", data.f);
// 存储字符串(会覆盖之前存储的浮点数)
sprintf(data.str, "Hello");
printf("data.str: %s\n", data.str);
return 0;
}
输出结果:
data.i: 10
data.f: 220.500000
data.str: Hello