结构体的大小应该怎么计算,我考试的书上说的是各成员的和(理论上)



描述了一个人的时候就觉得自己很优秀的人才市场的问题,我们的生活方式就是这样一种感觉

img

img

  1. union的size是里面成员中最大的size,而不是所有的都加在一起,所以 A 中是 int + union U = 4 + 4 = 8;这里暂时没有补齐的情况。

  2. 第二个是要考虑补齐的情况:char(1),short(2)和double(8)
    这里就变成了:1 + (3,补齐) + 2 + (2,补齐)+ 8 = 16
    而且这个结果需要是struct中元素中最大size的整数倍,即8的最小整数倍且大于等于16,16刚好是8的整数倍,所以结果是16
    补充说明,如果这里把char去掉,就变成:2 + (2,补齐)+ 8 = 12,需要是struct中元素中最大size的整数倍,即8的最小整数倍且大于等于12,因此是8的2倍,结果依旧是16

并不是,理论上也不是,有个字节对齐的概念。

http://t.csdn.cn/uHIQg