具体请移步http://blog.163.com/zhangsumei0712@126/blog/static/1043778322008111194755670/
下面是我自己的理解
struct给struct内的所有属性分配了各自的内存
union分配了union内内存占用最大的属性的内存,
#include <iostream>
using namespace std;
union ufoo
{
int a;
double b;
double c;
char d;
} foo;
int main(int argc, char const *argv[])
{
foo.a = 1;
foo.b = 1.2;
foo.d = 'f';
foo.c = -1.5;
printf("%d,%lf,%lf,%c\n",foo.a ,foo.b,foo.c,foo.d);
return 0;
}
那么foo只分配了8字节的内存,
且foo.a=1;foo.b=1.2;foo.c=-1.5;foo.d='f';
后foo只保存了foo.d的值
输出结果为
102,-1.500000,-1.500000,f
暂时无法理解为什么foo.d写了值后,为什么foo.c还能正确,
可能就要考虑到double的表示结构了