ホームページ >よくある問題 >C言語でのユニオンの使い方

C言語でのユニオンの使い方

百草
百草オリジナル
2023-09-27 11:00:292689ブラウズ

C 言語における Union の使用法は、異なるデータ型を同じメモリ位置に格納できるようにする特別なデータ型です。Union を使用すると、メモリ領域を節約し、異なるデータ型を簡単に格納できます。型間で変換します。 Union を使用する場合は、対応するメンバーが有効であり、同時にアクセスできるメンバーは 1 つだけであることに注意する必要があります。

C言語でのユニオンの使い方

#C 言語の Union は、異なるデータ型を同じメモリ位置に格納できるようにする特別なデータ型です。 Union を使用すると、メモリ領域を節約し、異なるデータ型間の変換が容易になります。

1. 共用体の定義:

C 言語では、キーワード Union を使用して共用体の型を定義できます。共用体は構造体と同様に定義されますが、共用体のすべてのメンバーは同じメモリ空間を共有します。 Union の構文は次のとおりです。

   union union_name {
       member_type member1;
       member_type member2;
       // ...
   };

このうち、union_name はユニオンの名前、member_type はメンバーのデータ型、member1、member2 などはユニオンのメンバーです。

例:

   union Data {
       int i;
       float f;
       char str[20];
   };

2. 共用体メンバーへのアクセス:

ドット演算子 (.) を使用して共用体のメンバーにアクセスできます。共用体のメンバーは同じメモリ空間を共有するため、同時にアクセスできるメンバーは 1 つだけです。共用体メンバーにアクセスするための構文は次のとおりです。

   union_name.member_name

例:

   union Data data;
   data.i = 10;
   printf("data.i = %d\n", data.i);
   data.f = 3.14;
   printf("data.f = %f\n", data.f);
   strcpy(data.str, "Hello");
   printf("data.str = %s\n", data.str);

上記の例では、Data という名前の共用体を定義し、data という名前の変数を作成します。 data.i、data.f、data.str を通じて Union のさまざまなメンバーにアクセスできます。

3. 共用体のサイズ:

共用体のサイズは、その最大のメンバーのサイズによって異なります。共用体のすべてのメンバーは同じメモリ空間を共有するため、共用体のサイズは最大のメンバーを収容できるほど大きくすることができます。

例:

   union Data {
       int i;
       float f;
       char str[20];
   };
   printf("sizeof(union Data) = %lu\n", sizeof(union Data));

上記の例では、sizeof 演算子を使用してユニオン データのサイズを取得します。通常、float 型のサイズは int および char 配列のサイズよりも大きいため、union Data のサイズは float のサイズと等しくなります。

4. ユニオンの適用:

ユニオンは次のような状況でよく使用されます:

- メモリ領域の節約: 複数のメンバーのうち 1 つだけを使用する場合、次のことが可能です。メモリ領域を節約するには、union を使用します。

- 型変換: 整数から浮動小数点数への変換、浮動小数点数から文字配列への変換など、さまざまなデータ型間の変換に Union を使用できます。

例:

   union Convert {
       int i;
       float f;
   };
   union Convert convert;
   convert.i = 10;
   printf("convert.i = %d\n", convert.i);
   printf("convert.f = %f\n", convert.f);
   convert.f = 3.14;
   printf("convert.i = %d\n", convert.i);
   printf("convert.f = %f\n", convert.f);

上の例では、int 型のメンバー i と float 型のメンバー f を含む Convert という名前の共用体を定義します。共用体の 1 つのメンバーを変更すると、別のメンバーの対応する値を取得できるため、型変換が実現します。

union のメンバーは同じメモリ空間を共有するため、union を使用するときは注意する必要があることに注意してください。 1 つのメンバーの値を変更すると、他のメンバーの値は上書きされます。したがって、union を使用する場合は、対応するメンバーが有効であること、および同時に 1 つのメンバーのみにアクセスできることを確認する必要があります。

要約すると、C 言語の Union は、異なるデータ型を同じメモリ位置に格納できるようにする特別なデータ型です。共用体を定義し、そのメンバーにアクセスすることで、メモリ領域を節約し、異なるデータ型間で変換できます。 Union を使用する場合は、対応するメンバーが有効であり、同時にアクセスできるメンバーは 1 つだけであることに注意する必要があります。

以上がC言語でのユニオンの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る