struct的存储方式
要搞清楚union嵌套struct的存储方式,首先必须清楚struct的存储方式。
转载:结构体在内存中的存储方式(转) - Maydaytyh - 博客园
举例说明:
struct X
{
char a;
int b;
double c;
}S1;
成员从低字节开始排,以4字节对齐的方式进行。因此S1存储方式如下:

注意:struct存储方式需要满足对齐要求
union嵌套struct的存储方式
转载:union嵌套struct_Mister5ive的专栏-优快云博客
以题目举例:
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。
注意:联合体变量的各个成员都是从低字节开始公用的。
具体分析见原链接。
本文详细解释了union和struct在内存中的存储方式及其对齐规则。通过具体的例子展示了struct成员如何按照对齐要求进行排列,以及union如何实现成员间的共用存储。适合初学者理解这两种数据结构的基本内存布局。
7474





