union嵌套struct的存储方式解析

struct的存储方式

要搞清楚union嵌套struct的存储方式,首先必须清楚struct的存储方式。

转载:结构体在内存中的存储方式(转) - Maydaytyh - 博客园

举例说明:

struct X
{
	char a;
	int b;
	double c;
}S1;

成员从低字节开始排,以4字节对齐的方式进行。因此S1存储方式如下:
在这里插入图片描述
注意:struct存储方式需要满足对齐要求

union嵌套struct的存储方式

转载:union嵌套struct_Mister5ive的专栏-CSDN博客

以题目举例:

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;

答案:
d.s.x为4
d.s.y为8

union存储空间大小为8字节。struct存储空间大小为8字节。
其中,低4字节同时存储成员d.x、d.y、d.s.x;高4字节存储成员d.s.y。

注意:联合体变量的各个成员都是从低字节开始公用的

具体分析见原链接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值