C语言中联合(union)的一个有意思的用途

    联合(union)在许多其他语言中称作变体记录(variant record),在联合中 ,所有的成员都从偏移地址零开始存储,这样,每个成员的位置都会重叠在一起。

    按照这种特性,联合可以把同一个数据解释成两种不同的东西,而不是把两个不同的数据解释为同一个东西,该用法的例子如下:

    

union bits32_tag {
    int whole;  //一个32位的值
    struct { char c0, c1, c2, c3;} byte;  //四个八位的字节
} value;

    这个联合允许程序员提取整个32位值 (int),也可以提取单独的字节段如 value.byte.c0 等。

    例如: value.whole = 0xa0fe728b; 因为所有的成员都从偏移地址零开始存储,则value.byte.c0 = (char)0x8b,其他的以此类推。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值