您的位置:首页 > 编程语言 > C语言/C++

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

2018-03-15 22:00 253 查看
    联合(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,其他的以此类推。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: