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。
注意:联合体变量的各个成员都是从低字节开始公用的。
具体分析见原链接。