C语言Union结构存储多类型的数据

44 阅读1分钟
#include <stdio.h>
/*
C 语言提供了 Union 结构,用来自定义可以灵活变更的数据结构。
它内部可以包含各种属性,但同一时间只能有一个属性,
因为所有属性都保存在同一个内存地址,
后面写入的属性会覆盖前面的属性。这样做的最大好处是节省空间。
它将一段内存空间,重用于不同类型的数据。
*/
union quantity
{
    short count;
    float weight;
    float volume;
};

int main(void)
{
    // 写法一
    union quantity q1;
    q1.count = 4;
    q1.weight = 0.5;
    // q.weight赋值后,原先的q.count的属性就不再有效了
    printf("%d\n", q1.count);
    printf("%f\n", q1.weight);

    // 写法二
    union quantity q2 = {.count = 4};

    // 写法三:不指定属性名,会赋值给第一个属性
    union quantity q3 = {4};

    return 0;
}