C语言联合体union
程序员文章站
2022-07-15 08:50:41
...
今天总算是有点收获,把以前忽略的联合体搞明白了,简单点说联合体union就是:穿衣大法
怎么个穿衣大法呢?一个人(联合体)有许多衣服(成员),不管他穿多少衣服,都是这个人。
union也是一样,由于联合体变量的各成员共享同一地址的内存单元(相当于一个人),所以对其成员赋值的那一时刻(相当于又穿上了一件衣服),存放和起作用的是最后一次存入的值(只能看见穿在最外面的衣服啦)。如:
union UData data;
data.i=10;data.ch='A';data.f='12.5';
则data.f才是有效的成员的值。
对联合体变量的某个成员赋值时,也改变了其他成员的值(相当于这个人多穿衣服感觉不冷了),因为他们共享同一地址。
union UData data;
data.i=10;data.ch='A';
则data.i将变为65(A的ASCII)
由于联合体变量所有成员共享同一存储空间,因此联合体变量与其他成员地址相同(相当于:那个穿灰色衣服的帅哥是Alihuhu)
当然,这只是我自己为了记忆和理解写的,不是很恰当~~~还希望不要误导了大家。