1. 联合体(union)的基本概念与定义
联合体(union)是C/C++语言中一种特殊的数据结构,它允许在同一内存位置存储不同的数据类型。与结构体(struct)类似,union也是一种用户自定义的数据类型,但它们在内存使用方式上有着本质区别。
1.1 联合体的语法定义
在C语言中,联合体的定义语法如下:
c复制union UnionName {
member_type1 member1;
member_type2 member2;
// 更多成员...
};
例如,定义一个可以存储整数、浮点数或字符数组的联合体:
c复制union Data {
int i;
float f;
char str[20];
};
这个联合体Data可以存储一个整数i,或者一个浮点数f,或者一个字符数组str,但同一时间只能存储其中一种类型的数据。
1.2 联合体的内存分配机制
联合体的核心特点是所有成员共享同一块内存空间。编译器会为联合体分配足够容纳其最大成员的内存空间。以上面的Data联合体为例:
- int i通常占用4字节
- float f通常占用4字节
- char str[20]占用20字节
- 因此整个Data联合体将分配20字节的内存空间
所有成员都从同一内存地址开始存储,这意味着修改一个成员的值会影响其他成员的值,因为它们共享相同的内存位置。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 结构体(struct)的基本概念与定义
结构体是C/C++中另一种重要的复合数据类型,它允许将不同类型的数据组合成一个单一的类型。
2.1 结构体的语法定义
结构体的定义语法如下:
c复制struct StructName {
member_type1 member1;
member_type2 member2;
// 更多成员...
};
例如,定义一个表示学生的结构体:
c复制struct Student {
int id;
char name[50];
float gpa;
};
2.2 结构体的内存分配机制
与联合体不同,结构体的每个成员都有自己独立的内存空间。编译器会为结构体分配足够
