c语言共用体基础知识提问 1C

#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

c

3个回答

因为共用体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变量。

希望可以帮到你。

Beginner_WZH
Beginner? 回复coolComputer: x是0那 y z的值改变吗
3 年多之前 回复

共用一段内存,执行

a.u.y=5;
a.u.z=6; 

时,修改该段内存,则可知a.u.x这时就不是4了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐