写一个联合会员并从另一个联合会员读书

联合的成员在内存中共享相同的空间。这意味着写入一个成员会覆盖所有其他成员中的数据,并且从一个成员读取会产生与从所有其他成员读取的数据相同的数据。但是,因为联合成员可以具有不同的类型和大小,所以读取的数据可以有不同的解释,请参阅 http://stackoverflow.com/documentation/c/1119/structs-and-unions/9399/using-unions-to -reinterpret 值

下面的简单示例演示了具有两个相同类型的成员的联合。它表明写入成员 m_1 会导致从成员 m_2 读取写入的值,并且写入成员 m_2 会导致从成员 m_1 读取写入的值。

#include <stdio.h>

union my_union /* Define union */
{
    int m_1;
    int m_2;
};

int main (void)
{
    union my_union u;             /* Declare union */
    u.m_1 = 1;                    /* Write to m_1 */
    printf("u.m_2: %i\n", u.m_2); /* Read from m_2 */
    u.m_2 = 2;                    /* Write to m_2 */
    printf("u.m_1: %i\n", u.m_1); /* Read from m_1 */
    return 0;
}

结果

u.m_2: 1
u.m_1: 2