#include
union myun
{ struct{
int x,y,z;}u;
int k;
}a;
main(){
a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);
}
为什么是0不是4
因为共用体a有两个成员,一个是结构体u一个是int k u与k共用同一块内存空间 给k赋值时 覆盖了内存里原有的值, 补充概念:共用体(联合体)
共用同一块内存空间 所以叫共用体
利用下面的代码进行了测试
#include<iostream>
union myun
{ struct{
int x,y,z;}u;
int k;
}a;
main(){
a.u.x=4;
printf("%d\n",a.u.x);
a.u.y=5;
a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);
}
结果输 出
4
0
去查阅了下是因为
联合体内公用一块内存,那么结构体和整型变量k共用一裤子内存,但是,k是一个int,结构体内含三个int ,所以只能影响结构体内的第一个int变量。
希望可以帮到你。
共用一段内存,执行
a.u.y=5;
a.u.z=6;
时,修改该段内存,则可知a.u.x这时就不是4了