一、聯(lián)合的定義
聯(lián)合(union)
定義一個(gè)聯(lián)合類型的一般形式為:
union 聯(lián)合名
{
成員表
};
成員表中含有若干成員,成員的一般形式為: 類型說(shuō)明符 成員名 成員名的命名應(yīng)符合標(biāo)識(shí)符的規(guī)定。
例如:
union perdata
{
int class;
char office[10];
};
定義了一個(gè)名為perdata的聯(lián)合類型,它含有兩個(gè)成員,一個(gè)為整型,成員名為class;另一個(gè)為字符數(shù)組,數(shù)組名為office。聯(lián)合定義之后,即可進(jìn)行聯(lián)合變量說(shuō)明,被說(shuō)明為perdata類型的變量,可以存放整型量class或存放字符數(shù)組office。
定義一個(gè)聯(lián)合類型的一般形式為:
union 聯(lián)合名
{
成員表
};
成員表中含有若干成員,成員的一般形式為: 類型說(shuō)明符 成員名 成員名的命名應(yīng)符合標(biāo)識(shí)符的規(guī)定。
例如:
union perdata
{
int class;
char office[10];
};
定義了一個(gè)名為perdata的聯(lián)合類型,它含有兩個(gè)成員,一個(gè)為整型,成員名為class;另一個(gè)為字符數(shù)組,數(shù)組名為office。聯(lián)合定義之后,即可進(jìn)行聯(lián)合變量說(shuō)明,被說(shuō)明為perdata類型的變量,可以存放整型量class或存放字符數(shù)組office。
聯(lián)合說(shuō)明和聯(lián)合變量定義
聯(lián)合也是一種新的數(shù)據(jù)類型, 它是一種特殊形式的變量。
聯(lián)合說(shuō)明和聯(lián)合變量定義與結(jié)構(gòu)十分相似。其形式為:
union 聯(lián)合名{
數(shù)據(jù)類型 成員名;
數(shù)據(jù)類型 成員名;
...
} 聯(lián)合變量名;
聯(lián)合表示幾個(gè)變量公用一個(gè)內(nèi)存位置, 在不同的時(shí)間保存不同的數(shù)據(jù)類型 和不同長(zhǎng)度的變量。
下例表示說(shuō)明一個(gè)聯(lián)合a_bc:
union a_bc{
int i;
char mm;
};
再用已說(shuō)明的聯(lián)合可定義聯(lián)合變量。
例如用上面說(shuō)明的聯(lián)合定義一個(gè)名為lgc的聯(lián)合變量, 可寫成:
union a_bc lgc;
在聯(lián)合變量lgc中, 整型量i和字符mm公用同一內(nèi)存位置。
當(dāng)一個(gè)聯(lián)合被說(shuō)明時(shí), 編譯程序自動(dòng)地產(chǎn)生一個(gè)變量, 其長(zhǎng)度為聯(lián)合中最大的變量長(zhǎng)度。
聯(lián)合訪問(wèn)其成員的方法與結(jié)構(gòu)相同。同樣聯(lián)合變量也可以定義成數(shù)組或指針,但定義為指針時(shí),也要用"->"符號(hào), 此時(shí)聯(lián)合訪問(wèn)成員可表示成:
聯(lián)合名->成員名
另外, 聯(lián)合既可以出現(xiàn)在結(jié)構(gòu)內(nèi), 它的成員也可以是結(jié)構(gòu)。
例如:
struct{
int age;
char *addr;
union{
int i;
char *ch;
}x;
}y[10];
若要訪問(wèn)結(jié)構(gòu)變量y[1]中聯(lián)合x的成員i, 可以寫成:
y[1].x.i;
若要訪問(wèn)結(jié)構(gòu)變量y[2]中聯(lián)合x的字符串指針ch的第一個(gè)字符可寫成:
*y[2].x.ch;
若寫成"y[2].x.*ch;"是錯(cuò)誤的。





