定义
结构体是将不同类型的数据组合成一个整体的数据类型。
例如:
struct Student {
char name[20];
int age;
float score;
};
联合体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。
例如:
union Data {
int i;
float f;
char str[20];
};
主要的区别
特性 | 结构体(struct) | 联合体(union) |
内存使用 | 各成员有独立的内存空间 | 各成员共享同一个内存空间 |
大小 | 所有成员大小之和(考虑对齐) | 是最大成员的大小 |
成员访问 | 可同时访问所有的成员 | 同一时间只能有效的访问一个成员 |
用途 | 组合相关数据 | 节省内存,同一时间只需一种类型数据 |
内存对齐
struct Example1 {
char c; // 1字节
int i; // 4字节
}; // 可能占用8字节(考虑对齐)
union Example2 {
char c; // 1字节
int i; // 4字节
}; // 占用4字节(最大成员大小)