15

填空题 15 /47

typedef struct
{
char flag[3];
short value;
} sampleStruct;
union
{
char flag[3];
short value;
} sampleUnion;

假设 sizeof(char)=1,sizeof(short)=2, 那么sizeof(sampleStruct) =1, sizeof(sampleUnion) =2

参考答案

输出结果是:6,4

字符类型占1字节, 可以从任何地址开始

short类型占2字节, 必须从2字节倍数地址开始

int类型占4字节,必须从4字节倍数地址开始

0000  a[0]

0001  a[1]

0002  a[2]

0003  空一个字节

0004 b 这个是2倍数的地址

0005

结构体在内存组织上是顺序式的,联合体则是重叠式,各成员共享一段内存,所以整个联合体的sizeof也就是每个成员sizeof的最大值。