Dプログラミング-連合
Dでの連合の定義
ユニオンを定義するには、構造を定義したときと非常によく似た方法でユニオンステートメントを使用する必要があります。 ユニオンステートメントは、プログラムに複数のメンバーを持つ新しいデータ型を定義します。 ユニオン文の形式は次のとおりです-
- unionタグ*はオプションであり、各メンバー定義はint iなどの通常の変数定義です。またはfloat f;または他の有効な変数定義。 ユニオンの定義の最後で、最後のセミコロンの前に、1つ以上のユニオン変数を指定できますが、これはオプションです。 これは、3つのメンバー i 、 f 、および str を持つDataという名前の共用体型を定義する方法です-
ユニオンが占有するメモリは、ユニオンの最大メンバーを保持するのに十分な大きさになります。 たとえば、上記の例では、データ型は20バイトのメモリ空間を占有します。これは、これが文字列で占有できる最大の空間だからです。 次の例は、上記のユニオンが占有する合計メモリサイズを表示します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
組合員へのアクセス
組合のメンバーにアクセスするには、* memberアクセス演算子(。)*を使用します。 メンバーアクセス演算子は、ユニオン変数名とアクセスするユニオンメンバー間のピリオドとしてコーディングされます。 ユニオンキーワードを使用して、ユニオンタイプの変数を定義します。
例
次の例は、ユニオンの使用方法を説明しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
ここでは、変数に割り当てられた最終値がメモリ位置を占有しているため、ユニオンの i および f メンバーの値が破損していることがわかります。これが str メンバーの値が非常にうまく印刷される理由です。 。
今、私たちはユニオンを持つ主な目的である一度に1つの変数を使用する同じ例をもう一度見てみましょう-
変更された例
上記のコードをコンパイルして実行すると、次の結果が生成されます-
ここでは、一度に1つのメンバーが使用されているため、すべてのメンバーが非常にうまく印刷されています。