union のサンプルコード | int型とchar型メンバによる共有

共用体とは構造体に似ていますが、性質は異なります。共用体はメンバがメモリを共有します。よってあるメンバに値を代入すると、他のメンバも上書きされます。

これは同時に複数のメンバの値が使用されない仕様の場合、メモリを節約するために使用するためです。

例えばメンバとして数字あるいは文字の値を保有するが同時には保有しないとします。(どちらかしか片方しか記憶しない)

その場合メモリを節約するために同じ領域に値を保管する工夫をしています。

この例はint 型メンバ x にchar 型のメンバ y の値を代入すると、メンバ x が上書きされることを確認するサンプルです。

実行結果は以下の通りです。

97 97

共に'a' の文字コードの 97 が出力されます。

スポンサーリンク

Visual C++ 向けサンプルコード

//共用体の宣言のサンプルプログラム
//あるメンバに値を代入すると、他のメンバが上書きされることを確認する
#include<string.h>
#include <stdio.h>
int main()
{
//共用体の宣言
union {
int x;
char y;
}unionTest;
unionTest.x=1;
unionTest.y='a';
// xは1のはずですが 'a'の文字コードで上書きされていることが分かります。
printf("%d %d",unionTest.x, unionTest.y);
return 1; }

スポンサーリンク



[Visual C++ サンプルコード | 即戦力ソース集に戻る]

本サンプルコードではエラー処理を省略している場合があります。実践で使用する場合はエラー処理が必要となる場合があります。