qlw319 发表于 2013-11-22 17:17:16

C中补齐和对齐的疑问

typedef struct A
{
      int i;
      char a;
      short s;
      char b;
}a;
typedef struct B
{
      int i;
      char a;
      char b;
      short s;
}b;
为什么sizeof(a)是12
sizeof(b)是8
也就是说为什么A中的char b为什么不能补到short s后面合并成一个四字节,而是重新开辟了一个字节
导致其sizeof为12?麻烦了。

qlw319 发表于 2013-11-23 10:36:59

这个应该是short必须放在偶数的地址上,而char没有要求,所以导致A和B的不同,a中的short在a后空出一个字节的地址即第三个地址开始存放,而b也是一样,只不过char b放在char a的后面,所以才会少了一个字节。个人理解,还望高手指教!
页: [1]
查看完整版本: C中补齐和对齐的疑问