C语言 结构体共用体

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:04:46
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.

你使用的 是共同体 再使用 的结构题 .. 开辟的内存 还 是一起使用的 .

例:

1.使用 公用体 定义 的
char a;
int b;
float c;
三个变量 . 那么 a,b,c 占用 同一个内存单元 .
且这个共用 存储单元存。进去的 类型 可以是 char 或 int 或 float 。

2.使用 结构体 定义
char a;
int b;
float c;
三个变量 . 那么 a,b,c 占用 同三个不同类型内存单元.

---

union 公用体
struct 结构题

解决 :
把最后 的 a.k=0 修改成 a.k=4 。就可以把 a.u.z=6 这个数值给覆盖掉 ,最后的 结果也是 4了

共用体是构造数据类型,也叫联合体
它使几个不同类型的变量共占一段内存(相互覆盖),每次只有一个能使用.
a.k=0把a.u.x覆盖了