D编程 联合(Unions)

2021-09-01 10:34 更新

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


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号