写起这篇文章的原因呢?是因为在看面试题突然遇到,然后与人讨论,亲自测试发现很多的问题,所以,想来总结以下.
首先把面试题奉上(不论题,只论知识):
typedef union
{
long i;int k[5];char c;
}DATE;
struct date
{
int cat;DATE cow;double dog;
}too;
DATE max;
main()
{
printf("%d",sizeof(struct date)+sizeof(max));
}
这是原题,网上和书本给的结果是32+20=55.
网上给出的答案分析:在共用体中,i占4个字节,k[5]占20个字节,c占1个字节,因为是共用同一个空间,所以union的大小按最大的变量k[5]来算,占20个字节。在结构体中,cat占4个