为了账号安全,请及时绑定邮箱和手机立即绑定

菜鸟关于共用体变量赋值的问题

菜鸟关于共用体变量赋值的问题

C++
谢偃 2016-12-27 10:54:25
共用体变量为最后一次存放的成员起作用,是说最后一次存放的成员覆盖前面存放的成员吗?如果最后一次存放的成员所占内存空间并非最大,那它覆盖内存空间最大的成员是只从前覆盖还是保持原来的元素只内存空间扩大至覆盖成员内存空间大小。如: union dat{float i; int t; }x; i=2009.0; t=15; 那么最后共用体变量为 ①1509.0 内存空间与i同大 或②15 内存空间与i同大
查看完整描述

2 回答

已采纳
?
angie

TA贡献56条经验 获得超8个赞

先说说你这问题的格式,不知道是不是用手机提问的,读起来十分困难

  1. 是会覆盖掉之前的数据的

  2. union 申请的内存是占空间最大的成员的大小,也就是说,所有的成员共用同一块内存,如果你计算各个成员的地址,你会发现他们是一样的,这个地址也是该 union 的地址

  3. float 和 int 在内存中的布局是不一样的。如果在你的机器上,float 和 int 一样大,赋值 `x.t = 15;` 之后,读取 x.i 的值肯定不是 1509.0,到底是多少,这就看在你机器上如何解码咯。

  4. 最后,如果你十分想要探索的话,你完全可以写下代码试一下

查看完整回答
反对 回复 2016-12-27
  • 2 回答
  • 0 关注
  • 1528 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信