union嵌套struct

笔试遇到一个选择题,有点晕,现在记录下:

union data{
		struct { int x, y; }s;
		int x, y;
	}d;
	d.x = 1;
	d.y = 2;
	d.s.x = d.x*d.x;
	d.s.y = d.y+d.y;
	cout << d.s.x << d.s.y;

输出的结果是多少?



整个过程:





个人理解:

在The C Programming Language里面讲述union内存分配的原话是

1)联合体就是一个结构

2)联合体的所有成员相对于基地址的偏移量为0

3)此结构空间要大到总够容纳最“宽”的成员

4)并且,其对其方式要适合于联合体中所有类型的成员

所以,s占8个字节,data同样占8个字节。

又因为 联合体变量的各个成员都是从低字节开始公用的。即:所有的成员都是从低字节开始的。

我把过程直接画出来了,如下(如有不对欢迎指正)


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值