关于C语言中结构体字节对齐问题(二)

2014-11-24 10:41:31 ? 作者: ? 浏览: 1
intf("%d ", offsetof(T, i));
printf("%d ", offsetof(T, j));
printf("%d\n", offsetof(T, k));
}struct S中,i的偏移量为0毋庸置疑,j的对齐值为2,但是由于i的对齐值占用了4个字节,所以由于4%2=0,所以对j而言,起始对齐位置是上文所说的自然位置,所以j的起始对齐位置为4,而对于k,由于前两个成员的总和偏移仅仅为4+2=6,而6%8!=0,所以必须在j后,k前填两个0(当然,视编译器不同而异),达到8位,使8%8=0,所以K的起始对齐位置为8,所以输出结果为:0,4,8;


第二个例子我就不多讲解了,因为原理相似,只是将默认对齐位置强制变为2而已。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: