D編程 聯(lián)合(Unions)

2021-09-01 10:34 更新

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)存位置。

現(xiàn)在讓我們?cè)俅尾榭赐皇纠?,其中一次將使用一個(gè)變量,這是擁有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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)