面试题答案
一键面试myStruct
的大小:- 在32位系统默认对齐方式下,
char
类型占1字节,int
类型占4字节,short
类型占2字节。 - 结构体的对齐原则是每个成员按其自身大小的整数倍对齐,并且结构体的总大小为最大成员大小的整数倍。
myStruct
中char a
占1字节,由于int b
占4字节,a
后面要填充3字节以满足b
按4字节对齐。b
占4字节,short c
占2字节,c
后面要填充2字节以满足结构体总大小是4字节(最大成员int
的大小)的整数倍。- 所以
myStruct
的大小为1 + 3 + 4 + 2 + 2 = 12
字节。
- 在32位系统默认对齐方式下,
myUnion
的大小:- 联合体的大小是其最大成员的大小。
- 在
myUnion
中,int b
是最大成员,占4字节。 - 所以
myUnion
的大小为4字节。
总结:
myStruct
的大小为12字节,原因是结构体对齐规则。myUnion
的大小为4字节,原因是联合体取最大成员大小。