C语言联合

联合

用union关键字定义的一个叫"量"的数据类型
typedef union {
    short count;
    float volume;
    float weight;
} quantity;

联合的特点

1.可以有效的使用存储器空间
    当定义联合的时候,计算机只为其中一个最大的字段分配空间,然后由你决定里面保存什么值(上面例子的name,age,weight都会存储在一个位置)

如何使用联合

1.c89方式:只能设置联合的第一个字段也就是上述中的name字段
    例子:quantity a = {1};

2.指定初始化器:按名设置联合字段的值
    quantity b = {.volume = 4.6};

3.点表示法:先创建变量,在设置字段的值
    quantity c;
    c.weight = 3.7;

注意:无论哪种方法设置联合的值,都只会保存一条数据。联合只是提供了一种让你创建支持不同数据类型的变量的方法
实例:
    #include <stdio.h>

    int main()
    {
        typedef union {
            short count;
            float volume;
            float weight;
        } quantity;

        quantity a = {1};

        quantity b = {.volume = 4.6};

        quantity c;
        c.weight = 3.7;
        printf("%i,%f,%f", a.count, b.volume, c.weight);
        return 0;
    }

结构和联合一起使用

#include <stdio.h>

typedef union {
    short count;
    float volume;
    float weight;
} quantity;

typedef struct {
    const char *name;
    const char *country;
    quantity amount;
} fruit_order;

int main()
{
    /*
        此处的.amount表示fruit_order中的amount字段,.count表示quantity中的字段
    */
    fruit_order apples = {"apple", "china", .amount.count = 20};
    printf("%s,%s,%i", apples.name, apples.country, apples.amount.count);

    return 0;
}
坚持原创技术分享,您的支持将鼓励我继续创作!