关于联合的几个问题

1. 结构与联合有和区别?
1>. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)
2>. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

2. 下面关于“联合”的题目的输出?

a)
#include <stdio.h>
union
{
      int i;
      char x[2];
}a;

void main()
{
      a.x[0] = 10;
      a.x[1] = 1;
      printf("%d",a.i);

}
答案:266 (低位低地址,高位高地址,内存占用情况是0x010A)

b)
main()
{
      union{ /*定义一个联合*/
               int i;
               struct{ /*在联合中定义一个结构*/
                        char first;
                        char second;
                        }half;
               }number;
       number.i=0x4241; /*联合成员赋值*/
       printf("%c%c\n", number.half.first, number.half.second);
        number.half.first='a'; /*联合中结构成员赋值*/
       number.half.second='b';

       printf("%x\n", number.i);
       getch();
}
答案: AB (0x41对应'A',是低位;0x42对应'B',是高位)
              6261 (number.i和number.half共用一块地址空间)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值