聯(lián)合(union):
一、聯(lián)合說明和聯(lián)合變量定義
聯(lián)合也是一種新的數(shù)據(jù)類型, 它是一種特殊形式的變量。
聯(lián)合說明和聯(lián)合變量定義與結(jié)構(gòu)十分相似。其形式為:
union 聯(lián)合名
{
數(shù)據(jù)類型 成員名;
數(shù)據(jù)類型 成員名;
...
}聯(lián)合變量名;
聯(lián)合表示幾個變量公用一個內(nèi)存位置,在不同的時間保存不同的數(shù)據(jù)類型和不同長度的變量。
下例表示說明一個聯(lián)合a_bc:
union a_bc
{
int i;
char mm;
};
再用已說明的聯(lián)合可定義聯(lián)合變量。
例如用上面說明的聯(lián)合定義一個名為lgc的聯(lián)合變量,可寫成:
union a_bc lgc;
在聯(lián)合變量lgc中, 整型量i和字符mm公用同一內(nèi)存位置。
當(dāng)一個聯(lián)合被說明時, 編譯程序自動地產(chǎn)生一個變量,其長度為聯(lián)合中最大的變量長度。
聯(lián)合訪問其成員的方法與結(jié)構(gòu)相同。同樣聯(lián)合變量也可以定義成數(shù)組或指針,但定義為指針時,也要用->符號, 此時聯(liá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];
若要訪問結(jié)構(gòu)變量y[1]中聯(lián)合x的成員i, 可以寫成:
y[1].x.i;
若要訪問結(jié)構(gòu)變量y[2]中聯(lián)合x的字符串指針ch的第一個字符可寫成:
*y[2].x.ch;
若寫成y[2].x.*ch;是錯誤的。
相關(guān)推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |