C言語におけるunionの意味は何ですか?

C言語では、union(ユニオン)は特別なデータ型であり、同じメモリ位置に異なるデータ型を格納することができます。構造体と同様に、ユニオンも複数の異なる型のメンバーで構成されていますが、いつでも一度にしか使用できません。これは、ユニオンのすべてのメンバーが同じメモリ空間を共有し、その値が互いに上書きされるためです。

連合体のサイズは最大のメンバーのサイズに依存し、すべてのメンバーが同じアドレスを共有しているため、そのうちの1つのメンバーの値しか保存できません。連合体の1つのメンバーに値を代入すると、他のメンバーの値は上書きされます。

特定の状況では、特定のデータ型のみを保存する必要がありますが、他のデータ型も同じメモリ位置を使用できるようにするために、結合を使用することでメモリスペースを節約できます。

以下是一候補的聯合使用示例:

#include <stdio.h>

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

int main() {
   union Data data;
   
   printf("Memory size occupied by data : %d\n", sizeof(data));

   data.i = 10;
   data.f = 220.5;
   strcpy(data.str, "C Programming");

   printf("data.i : %d\n", data.i);
   printf("data.f : %f\n", data.f);
   printf("data.str : %s\n", data.str);

   return 0;
}

結果は次のようになります:

Memory size occupied by data : 20
data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

結合体のサイズは20バイトであり、文字配列が最大のメンバーであるためです。異なるメンバーに値を代入すると、他のメンバーの値が上書きされます。

bannerAds