union 是特殊數(shù)據(jù)類型,可以將不同的數(shù)據(jù)類型存儲(chǔ)在同一存儲(chǔ)位置。
定義Union
要定義Union,您必須以與定義結(jié)構(gòu)相似的方式使用并集union語(yǔ)句。
union [union tag] {
member definition;
member definition;
...
member definition;
} [one or more union variables];
union標(biāo)簽tag是可選的,每個(gè)成員定義都是一個(gè)普通變量定義,如int i;或浮動(dòng)f;在并集union定義的末尾,在最后一個(gè)分號(hào)之前,您可以指定一個(gè)或多個(gè)并集變量,但這是可選的。這是定義名為Data的聯(lián)合類型的方法,該類型具有三個(gè)成員 i , f 和 str -
union Data {
int i;
float f;
char str[20];
} data;
Data 類型的變量可以存儲(chǔ)整數(shù),浮點(diǎn)數(shù)或字符串,這意味著可以使用一個(gè)變量來(lái)存儲(chǔ)多種類型的數(shù)據(jù)。
import std.stdio;
union Data {
int i;
float f;
char str[20];
};
int main( ) {
Data data;
writeln( "Memory size occupied by data : ", data.sizeof);
return 0;
}
編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-
Memory size occupied by data : 20
訪問方法
您將使用union關(guān)鍵字定義union類型的變量。
以下示例說明了union的用法-
import std.stdio;
union Data {
int i;
float f;
char str[13];
};
void main( ) {
Data data;
data.i=10;
data.f=220.5;
data.str="D Programming".dup;
writeln( "size of : ", data.sizeof);
writeln( "data.i : ", data.i);
writeln( "data.f : ", data.f);
writeln( "data.str : ", data.str);
}
編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-
size of : 16
data.i : 1917853764
data.f : 4.12236e+30
data.str : D Programming
在這里,您可以看到工會(huì)的 i 和 f 的值已變更,因?yàn)榉峙浣o變量的最終值已占用內(nèi)存位置。
更多建議: