union联合体

时间:2023-04-03 19:02:22

语法

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,基本上,匿名都是只用一次的,以后就不用了