最重要的 共用体的成员变量共享同一片空间,所以每个成员都可以访问到这个空间的所以内存。
union Data
{
int a;
float f;
char str[12];
};
这样一个结构体, printf("%d\r\n",sizeof(data));=12.没问题。
union Data
{
int a;
float f;
char str[13];
};
内存大小为13.
嗯!!!!!!!!!!!!!!!!!!!
错了,16.
why?????????????????????????????????
如果是13的话,只有用char[12]可以访问这个字节,因为int和float分别是4字节和2字节对齐访问。
只有16这个最小公倍数(没想到会在这里用这个词)才能让每个成员都访问到正片内存块。
所以,计算共用体的内存时要用最小公倍数来计算。
不过在用的时候肯定是不用考虑这个问题的。。