D编程 联合(Unions)
union 是特殊数据类型,可以将不同的数据类型存储在同一存储位置。
定义Union
要定义Union,您必须以与定义结构相似的方式使用并集union语句。
union [union tag] {
member definition;
member definition;
...
member definition;
} [one or more union variables];
union标签tag是可选的,每个成员定义都是一个普通变量定义,如int i;或浮动f;在并集union定义的末尾,在最后一个分号之前,您可以指定一个或多个并集变量,但这是可选的。这是定义名为Data的联合类型的方法,该类型具有三个成员 i , f 和 str -
union Data {
int i;
float f;
char str[20];
} data;
Data 类型的变量可以存储整数,浮点数或字符串,这意味着可以使用一个变量来存储多种类型的数据。
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;
}
编译并执行上述代码后,将产生以下输出-
Memory size occupied by data : 20
访问方法
您将使用union关键字定义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);
}
编译并执行上述代码后,将产生以下输出-
size of : 16
data.i : 1917853764
data.f : 4.12236e+30
data.str : D Programming
在这里,您可以看到工会的 i 和 f 的值已变更,因为分配给变量的最终值已占用内存位置。
现在让我们再次查看同一示例,其中一次将使用一个变量,这是拥有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);
}
编译并执行上述代码后,将产生以下输出-
size of : 16
data.i : 10
data.f : 220.5
data.str : D Programming