联合也是一种特殊的自定义类型
union联合的关键字
哎呀测出来竟然是4的字节,这个联合(共用体),这是他们共用的体现,共用一块空间
我们可以先看一下他们内部3个元素的地址是怎么样的
3个地址竟然一模一样的,那真是逆天啊
a的话是绿色把4个格子全部占满了,c的话是1个空间,也就是说a和共占一个空间,就像生活中合租是一样的
他们两个不会同时用,用a的时候不要用c,用c的话就不要用a
联合体最少是最大成员的大小,才能存下最大内存的成员
他们3个地址是一样,所以你要注意改一个的地址,相当于把其余两个地址都给改了
判断当前的计算机的大小端的存储
取地址,把他变成char类型的指针,就可以一个一个字节,然后用*号取他第一个地址对应的值,如果是1就是小端和0的话就是大端
返回的是第一个字节,u.i是4个字节往整形放1个1,因为char c 和int i是同用1个空间返回1个字节
匿名的话就只能用一次
算他的内存大小
最大对齐数的倍数
因为char是5但其实char 就是1个字节,他的对齐数是1,int i 他的对齐数是4个字节
arr是5个字节,算内存算他的字节数,然后要符合对齐数的倍数
arr用4个红色,i用前面5个
内存最少是最大成员的大小,当最大成员不是对齐数的整数倍时,就要对齐最大对齐数的整数倍
短整形是2个字节
这里并不是说是等价,只是让我们更好的去理解,把arr【5】想成5个char字符的变量去对待他们的对齐数都是1
这些c1到c5都是i的第一个字节,他们都是1个1个的成员
vs值下的对齐数是他本身和他默认的对齐数的较小值就是对齐数
而其他编译器没有默认的对齐数的话,那么他自身的大小就是对齐数
2024 6.3