联合(共用体)

联合也是一种特殊的自定义类型

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

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值