联合体(union)是一种特殊的数据类型,它允许在同一块内存中存储不同类型的数据。与结构体类似,联合体也可以包含多个成员变量,但是在任意时刻只有一个成员变量可以被使用。
下面是一个简单的联合体的定义和使用示例:
#include <stdio.h>
union Data {
int i;
float f;
char str[20];
};
int main() {
union Data data;
data.i = 10; // 使用整型成员变量
printf("data.i: %d\n", data.i);
data.f = 3.14; // 使用浮点型成员变量
printf("data.f: %f\n", data.f);
strcpy(data.str, "Hello, World!"); // 使用字符数组成员变量
printf("data.str: %s\n", data.str);
return 0;
}
在上面的示例中,定义了一个名为Data
的联合体,它包含了一个整型成员变量i
、一个浮点型成员变量f
和一个字符数组成员变量str
。在main
函数中,我们创建了一个Data
类型的变量data
,并分别使用整型、浮点型和字符数组成员变量来存储数据并打印出来。
需要注意的是,虽然联合体中的各个成员变量共享同一块内存空间,但是它们的大小以最大的成员变量为准。在上面的示例中,整型变量i
占据4个字节的空间,浮点型变量f
也占据4个字节的空间,字符数组str
占据20个字节的空间,所以整个联合体的大小为20个字节。
在使用联合体时需要注意,不要同时访问多个成员变量,因为这会导致数据混乱。只能访问最后一次赋值的成员变量。
总结一下,联合体是一种特殊的数据类型,允许在同一块内存中存储不同类型的数据。通过联合体,我们可以在一定程度上节省内存空间。