在C语言中,共用体(Union)是一种特殊的数据类型,允许你在同一内存位置存储不同类型的数据。与结构体类似,但共用体的所有成员共享相同的内存空间,因此共用体的大小等于最大成员的大小。以下是有关C语言共用体的基本知识:

1. 定义共用体:
#include <stdio.h>

// 定义共用体
union Data {
    int intValue;
    float floatValue;
    char stringValue[20];
};

int main() {
    // 使用共用体
    union Data data;

    // 对共用体进行赋值
    data.intValue = 10;

    // 输出不同成员的值
    printf("intValue: %d\n", data.intValue);

    data.floatValue = 3.14;
    printf("floatValue: %.2f\n", data.floatValue);

    strcpy(data.stringValue, "Hello");
    printf("stringValue: %s\n", data.stringValue);

    return 0;
}

2. 共用体的应用场景:

共用体通常用于需要在不同类型之间进行切换的情况。在任何时刻,只能使用共用体的一个成员。
#include <stdio.h>

// 定义共用体
union Value {
    int intValue;
    float floatValue;
    char stringValue[20];
};

// 定义枚举类型,表示共用体的类型
enum Type {
    INT,
    FLOAT,
    STRING
};

// 定义包含类型和值的结构体
struct Variant {
    enum Type type;
    union Value value;
};

int main() {
    // 使用共用体实现一种变体类型
    struct Variant variant1;
    variant1.type = INT;
    variant1.value.intValue = 42;

    // 输出变体的值
    switch (variant1.type) {
        case INT:
            printf("Variant Value (INT): %d\n", variant1.value.intValue);
            break;
        case FLOAT:
            printf("Variant Value (FLOAT): %.2f\n", variant1.value.floatValue);
            break;
        case STRING:
            printf("Variant Value (STRING): %s\n", variant1.value.stringValue);
            break;
    }

    return 0;
}

共用体的使用需要小心,确保你了解当前存储的是哪个类型的数据。


转载请注明出处:http://www.pingtaimeng.com/article/detail/3185/C语言