寫一個聯合會員並從另一個聯合會員讀書

聯合的成員在記憶體中共享相同的空間。這意味著寫入一個成員會覆蓋所有其他成員中的資料,並且從一個成員讀取會產生與從所有其他成員讀取的資料相同的資料。但是,因為聯合成員可以具有不同的型別和大小,所以讀取的資料可以有不同的解釋,請參閱 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