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;
}