http://www.jb51.net/article/56009.htm
上文详细解析了union的用法。
定义:(类似struct)
union text
{
char name;
int number;
float people;
}a;
虽然定义是与struct一样,但是占用内存不一样,以及使用方式不一样;
将上面代码中的union改为struct,在使用sizeof(struct)来计算内存,发现是12;而当我们使用sizeof(union)计算内存则是4(根据谭浩强书中所说union的大小是其中类型的最大内存);
union在使用时,每次只能使用一个,只有最后输入的数值有效;
而struct就没有这样的限制;
为什么呢??因为这三个变量相互覆盖,共同占用同一段内存,所以称之为“共用体类型”
两个注意
- 一个union可以存放多种类型的变量,但是每个时刻只能存在其中一种,而不是同时存放好几个变量;也就是说,每次只能使用一种变量;
- union中起作用的是最后一个存放的成员;(跟第一条是一样的意思,只能存在一个,那么新的过来了,旧的成员就要丢掉);