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则不会。

本篇到此为止,希望这对你有帮助,如果有错误或是有需要补充的地方,望告知。


种一棵树最好的时间是在十年前,而后是现在。

Loading Disqus comments...
Table of Contents