union 是特殊數(shù)據(jù)類型,可以將不同的數(shù)據(jù)類型存儲在同一存儲位置。
要定義Union,您必須以與定義結(jié)構(gòu)相似的方式使用并集union語句。
union [union tag] {
member definition;
member definition;
...
member definition;
} [one or more union variables];
union標(biāo)簽tag是可選的,每個成員定義都是一個普通變量定義,如int i;或浮動f;在并集union定義的末尾,在最后一個分號之前,您可以指定一個或多個并集變量,但這是可選的。這是定義名為Data的聯(lián)合類型的方法,該類型具有三個成員 i , f 和 str -
union Data {
int i;
float f;
char str[20];
} data;
Data 類型的變量可以存儲整數(shù),浮點數(shù)或字符串,這意味著可以使用一個變量來存儲多種類型的數(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
在這里,您可以看到工會的 i 和 f 的值已變更,因為分配給變量的最終值已占用內(nèi)存位置。
現(xiàn)在讓我們再次查看同一示例,其中一次將使用一個變量,這是擁有Union的主要目的-
import std.stdio;
union Data {
int i;
float f;
char str[13];
};
void main( ) {
Data data;
writeln( "size of : ", data.sizeof);
data.i=10;
writeln( "data.i : ", data.i);
data.f=220.5;
writeln( "data.f : ", data.f);
data.str="D Programming".dup;
writeln( "data.str : ", data.str);
}
編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-
size of : 16
data.i : 10
data.f : 220.5
data.str : D Programming
更多建議: