联合

联合是一种特殊的数据类型,它允许在同一内存位置存储不同类型的数据。联合的所有成员共享同一块内存空间,这意味着在任何给定时刻,联合体只能包含一个成员的值。

#include <stdio.h>
#include <string.h>

union data
{
    int i;
    float f;
    char s[20];
};

int main(int argc, char const *argv[])
{
    union data u;
    u.i = 233;
    printf("%d\n", u.i);
    u.f = 6.66;
    printf("%d\n", u.i);
    printf("%f\n", u.f);
    strcpy(u.s, "Hello World!");
    printf("%d\n", u.i);
    printf("%f\n", u.f);
    printf("%s\n", u.s);
    return 0;
}

联合默认用其第一个成员类型的值进行初始化,或者使用指定初始化器来初始化特定的成员。

#include <stdio.h>

union data
{
    int i;
    float f;
    char s[20];
};

int main(int argc, char const *argv[])
{
    union data u1 = {233};
    printf("%d\n", u1.i);
    printf("%f\n", u1.f);
    printf("%s\n", u1.s);
    union data u2 = {.f = 6.66};
    printf("%d\n", u2.i);
    printf("%f\n", u2.f);
    printf("%s\n", u2.s);
    union data u3 = {.s = "Hello World!"};
    printf("%d\n", u3.i);
    printf("%f\n", u3.f);
    printf("%s\n", u3.s);
    return 0;
}

results matching ""

    No results matching ""