联合体(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个字节。

在使用联合体时需要注意,不要同时访问多个成员变量,因为这会导致数据混乱。只能访问最后一次赋值的成员变量。

总结一下,联合体是一种特殊的数据类型,允许在同一块内存中存储不同类型的数据。通过联合体,我们可以在一定程度上节省内存空间。