struct stu{
char a;
int b;
char c;
};
int main(){
struct stu stu1;
stu1.b = 12;
struct stu stu2;
stu2.b = 10;
return 0;
}
每个元素的地址如下所示:
&stu1
0x7fffffffe000
&stu1.a
0x7fffffffe000
&stu1.b
0x7fffffffe004
&stu1.c
0x7fffffffe008
&stu2
0x7fffffffe010
&stu2.a
0x7fffffffe010
&stu2.b
0x7fffffffe014
&stu2.c
0x7fffffffe018
为什么在2个结构之间有4个字节(0x7fffffffe0c〜0x7fffffffe00f)
ps:另外,如果仅定义了两个结构,则它们的地址相同,为什么?
这是出于速度原因。读/写整个(d)(q)单词(与实际的物理内存结构对齐)要快得多。您还可以看到单个字符需要4个字节(b -addr。的a = 4,而不是1)。
如果要避免它,请制作一个结构并使用#pragma Pack。
正确的数据分组可以使您的程序更快(因为大多数读/写操作都使用整个QWOWS完成)。