struct
{
char a;
char b;
int c;
}A;<span style="white-space:pre"> </span>
sizeof(A) = 8;
原因:空间对齐,a占一个字节,b占一个字节,c占四个字节,为了空间对齐,a占一个字节,b占3个字节(补了两个字节的空间),c占4个字节,这样子就对齐了。
<span style="font-family: Arial, Helvetica, sans-serif;"><pre name="code" class="objc">struct</span>
{
char a1;
int b1;
char c1;
}B;
sizeof(B) = 12;
</pre><p>原因:空间对齐,a1占一个字节,b1占四个字节,为了空间对齐,a1占四个字节(补了3个字节),b1占四个字节,c1占一个字节,为了空间对齐,c1占四个字节(补了3个字节)</p><p><pre name="code" class="objc">struct
{
int a;
char b;
char c;
}C;
sizeof(C) = 8;
原因:a占4个字节,b占1个字节,c占3个字节(补齐2个字节)