回 帖 发 新 帖 刷新版面

主题:整型数组,

一个整型数组如a[10];
a[0]=1;a[1]=10;
在内存中存储应该是连续的吧,那么在a[0]与a[1]之间有没有什么特别的东西表示a[0]结束a[1]开始??
比如:union aa{int a[10],long b}u;
令u.a[0]=1;u.a[1]=10;
在输出u.b的时候会输出1但不会有10;为什么会这样呢。。

回复列表 (共5个回复)

沙发


补充一个问题,如果在共同体内还有一个float t;那么在输入u.a[0]=1;u.a[1]=10;后再输出t为什么会为0.0000000?而b会为1 ???

板凳

union表示这几个变量共同使用这一段内存

long和float表示用两种类型去解读这一段内存,long型的解读为1,因为一般情况下long和int等长,第一个元素就是1,float型为0,这个我也没仔细去算,不过介意你去学习一下浮点数在内存中表示的形式

3 楼

通常不在整型和浮点之间做Union,
除非你是要利用这个技巧来解析浮点内部构造

4 楼

这里所谓的共享是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值

5 楼


问题是,如果旧值被冲去的话,为什么输出b的时候会是1呢,,我只是给a[1]赋值了啊。

我来回复

您尚未登录,请登录后再回复。点此登录或注册