1,共用体属于构造类型,它可以包含多个类型不同的成员,和结构体非常类似,但也有不同之处,共用体有时也被称为联合或者联合体,定义格式为:
union 共用体名{
成员列表
};
2,结构体和共用体的区别在于,结构体的各个成员会占用不同的内存,互相之间没有影响,而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员
1 union data { //data就是一个共用体,包含三个成员,共享数据空间,该空间的大小以占用最大的成员为准 2 int n; 3 char ch; 4 short m; 5 }; 6 void main(){ 7 union data a; //定义一个共用体变量 a 8 printf("%d %d\n", sizeof(a), sizeof(union data)); 9 10 a.n = 0x40; 11 printf("%d %c %d\n", a.n, a.ch, a.m); 12 13 a.ch = '9'; 14 printf("%d %c %d\n", a.n, a.ch, a.m); 15 16 a.m = 0x2059; 17 printf("%d %c %d\n", a.n, a.ch, a.m); 18 19 a.n = 0x3E25AD54; 20 printf("%d %c %d\n", a.n, a.ch, a.m); 21 printf("%d %c %d\n", a.n, a.ch, a.m); 22 }