聯合體是一種特殊的數據類型,表示幾個變量公用一個內存位置,在不同的時間保存不同類型和長度的變量。形式如下:
union 聯合名 {
數據類型 成員名;
數據類型 成員名;
...
} 聯合變量名;
union a_bc {
int i;
char mm;
};
union a_bc lgc; // 定義聯合變量
在 lgc 中,整型 i 和字符 mm 公用同一內存位置。編譯器自動分配長度為聯合體中最大成員的長度。
訪問方式與結構體相同:聯合變量.成員名。若為指針,用 聯合指針->成員名。聯合體可嵌套在結構體中,其成員也可以是結構體。
struct {
int age;
char *addr;
union {
int i;
char *ch;
} x;
} y[10];
y[1].x.i; // 訪問 y[1] 中聯合 x 的成員 i
*y[2].x.ch; // 訪問 y[2] 中聯合 x 的字符串指針 ch 的首字符
// y[2].x.*ch; // 錯誤寫法