当前位置: 首页 > 工具软件 > kint > 使用案例 >

typedef union {long i; int k[5]; char c;}DATE; struct data { int cat; DATE cow; double dog;} too;

汪才英
2023-12-01

typedef union {long i; int k[5]; char c;}DATE;

struct data { int cat; DATE cow; double dog;} too;

DATE max;

则语句 printf("%d",sizeof(too)+sizeof(max));的执行结果是:______

答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20。

data是一个struct, 每个变量分开占用空间. 依次为int4 +DATE20 + double8 = 32.

所以结果是 20 + 32 = 52.

  1. struct data 默认4字节对齐,与最大字节元素无关;

3.union 共用体的字节对齐情况类似,共用体的自身对齐按成员的最大元素字节对齐;

  1. Union放入struct 后,会改变struct 内存对齐的方式,将按union的字节对齐。

即typedef union {long i; int k[5]; double d;}DATE; 按8字节对齐。

struct data { int cat; DATE cow; double dog;} too; 也将变成按8字节对齐。

 类似资料: