c/c++ 中联合体的用法
union共用同一块内存,所以输出的num.n不应该是65吗?
如果改正的话,应当怎么改正呢?
c/c++ 中联合体的用法
联合体就是将几种不同数据类型的成员变量存放到同一段内存单元中,当对联合体较小的成员变量赋值时,不会销毁或初始化未涉及到内存区域,但会改变相互重叠的部分。如果需要给联合体成员变量赋值,因为它们共用同一个内存空间,故而,不需要将每个成员变量都赋值,用到哪个赋值哪个,因为几个成员变量间是互相覆盖的。供参考:
#include <stdio.h>
union temp{
int n;
char ch;
};
int main()
{
temp num;
num.n = 0x7fffffff;
printf("%X\n", num.n);
num.ch = 'A';
printf("%X,num.ch:%c", num.n, num.ch);
return 0;
}