语法
union 联合体名称
{
变量类型 变量名称;
变量类型 变量名称;
}
特别注意*:通过union可以创建一个联合体,union成员变量共享内存,因此union的内存大小由最大成员变量决定
union USER
{
short A;
int B;
}
user.A=100;
USER.B=0;
std::cout<<USER.B;
AB | AB | B | B |
这里输出的结果为100,内存表现如图
100 | 0 | 0 | 0 |
当访问A时,会读取2个字节,为100,访问B时,会读取4个字节,也是100
user.A=-1;
USER.B=0;
std::cout<<USER.B;
这时,输出为65535,内存表现如图
FF | FF | 00 | 00 |
0XFFFF在4字节读取时,显示为65535
输出A和B的地址,它们 的地址 也是一样 的,也说明它们共享内存
特别注意*:联合体任何一个变量发生变动,都会导致其他数据发生变动
匿名联合体、结构体
struct User
{
union
{
short A;
int B;
}ls;
}
ls.A=100;
ls.B=0;
std::cout<<USER.B;
一般来说,匿名联合体、结构体都是只能用一次,这里是声明了一个临时变量ls,基本上,匿名都是只用一次的,以后就不用了