C语言笔记(十六)——联合体

1.1 定义

    联合体union是一个能在同一个存储空间存储不同类型数据的类型。联合体所占的内存长度等于其最长成员的长度,也叫共用体。联合体虽然可以有多个成员,但同一时间只能存放其中一种

union A
{
    int a;
    char b;
};
int main()
{
    union A a;
    a.a = 10246;

    printf(" %d\n", sizeof(union A));//内存大小
    printf("%p, %p\n", &a.a, &a.b);//地址
    printf("%d, %d\n", a.a, a.b);
    return 0;
}

    若联合体中有指针成员,那么一定要使用完这个指针,并且free指针之后才能使用其他成员

union A
{
    int a;
    char *b;//联合体的指针成员要特别注意
};
int main()
{
    union A a;
    a.b = malloc(100);//b指向了一个堆的地址
    //使用b
    free(a.b);//若联合体中有指针成员,那么一定要使用完这个指针,并且free指针之后才能使用其他成员
    a.a = 3;//由于共用内存,所以b的值也成了3
    printf(" %d\n", sizeof(union A));//内存大小
    printf("%p, %p\n", &a.a, &a.b);//地址
    printf("%d, %d\n", a.a, a.b);
    return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_37764129/article/details/80847618
今日推荐