struct与union的区别

2016-08-01  本文已影响142人  JosephCheng

设有以下说明和定义:  
  typedef union
{
long i;
int k[5];
char c;
} DATE;

struct data
{
int cat;
DATE cow;
double dog;
} too;  
 DATE max;   
则语句 printf("%d",sizeof(struct data)+sizeof(max));的执行结果是:___52____
考点:区别struct与union.(一般假定在32位机器上)  
答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20. data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 所以结果是 20 + 32 = 52. 当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

上一篇下一篇

猜你喜欢

热点阅读