1、简介
让几个不同类型的变量共享同一份内存地址。
好处是可以节省一部分内存开销,缺点是同一时刻仅仅只能存储一个成员(后面的地址在赋值后会将前面的数据覆盖掉)。
共用体类型的内存长度,是它所有成员中所占内存最长的成员的长度。
//int占4个字节,char占1个,因此下方共用体的长度为4个字节
union data{
int a;
char b;
int c;
}
2、定义
#include <stdio.h>
union data{
int a;
char b;
int c;
};
int main(){
union data data_1;
data_1.b = 'C';
//后面赋值的成员才是真正起作用的成员,
//因为所有成员共享一块内存地址,
//后面的地址在赋值后会将前面的数据覆盖掉。
data_1.a = 10;
union data data_2 = {10};
}
3、注意
共用体变量的地址和他的各个成员的地址都是同一个
#include <stdio.h>
union data{
int a;
char b;
int c;
};
int main(){
union data data_1;
data_1.b = 'B';
data_1.a = 10;
printf("%p\n", &data_1.a);
printf("%p\n", &data_1.b);
printf("%p\n", &data_1.c);
return 0;
}