typedef struct
{
char flag[3];
short value;
} sampleStruct;
union
{
char flag[3];
short value;
} sampleUnion;
假设 sizeof(char)=1,sizeof(short)=2,那么sizeof(sampleStruct) = 6 , sizeof(sampleUnion) = 4
字符类型占1字节, 可以从任何地址开始
short类型占2字节, 必须从2字节倍数地址开始
int类型占4字节,必须从4字节倍数地址开
字符型占用1字节,不需要字节对齐
short占用2字节,需要两字节对齐
所以sizeof(sampleStruct) = 3 *(1字节) + (1个补齐字节) + 1*(2字节) = 6
联合体
占用大小采用成员最大长度的对齐,最大长度是short的2字节
但 char flag[3]需要3个字节
所以 sizeof(sampleUnion) = 2*(2字节) = 4
结构体与联合体大小计算

被折叠的 条评论
为什么被折叠?



