共用体とは、1つのアドレスに異なるデータを割りあてることです。
共用体は、1つのメモリ領域で異なる型の変数のどれかひとつを選んで使うことができます。
共用体の宣言は以下のようになります。
//「uniondata」は共用体名、「unilist1」は共用体変数
union uniondata{
int no;
char name[10];
float weight;
};
union uniondata unilist1;
共用体を使ったサンプルを試してみます。
#include <stdio.h>
int main(void)
{
//「uniondata」は共用体名、「unilist1」は共用体変数
union uniondata{
int no;
char name[10];
float weight;
};
union uniondata unilist1;
unilist1.no = 1;
printf("%d\n", unilist1.no);
strcpy(unilist1.name, "test!!");
printf("%s\n", unilist1.name);
unilist1.weight = 123.4;
printf("%f\n", unilist1.weight);
return 0;
}
unilist1がメモリに占める領域は一番大きな型にあわせた大きさになる。
共用体はまだまだ深いので、改めて追記して理解を深めることにします。
出力結果は以下のなります。
1 test!! 123.400002