union的内存分配
这里是union的典型用法
union U
{
char s[9];
int n;
double d;
};
与struct的区别在于union对于内存的控制更为精细,同样的struct所占内存为其所有成员所占内存之和,而union的内存分配方式则完全不同,其分配空间大小满足两个条件:
- 大小足够容纳最宽的成员
- 大小能被其包含的所有基本数据类型的大小所整除。
因此这个union实际的内存分配为16个字节,因为16是既大于9,同时也能被4和8整除的最小数。
而假如用struct,则占用 9+4+8 = 21个字节
暂时没有了解union更深层次的存储特性,目前只知道对union的成员赋值有可能影响到旁边的成员,而struct则不会。