使い方が似ていて何かとややこしい構造体と共用体についてまとめておきます。
まずは構造体の使い方
struct タグ名
{
データ型 メンバ1;
データ型 メンバ2;
:
:
}変数名;
つぎに共用体
union タグ名
{
データ型 メンバ1;
データ型 メンバ2;
:
:
}変数名;
違うところは最初のstructとunionだけ。つまり、書き方はまったく一緒ということです。では何が違うのか。
構造体のメンバは、それぞれが独自に記憶領域を確保するのに対し、
共用体のメンバは、それぞれが同じ記憶領域を共有するのです。
だから、共用体の場合、メンバ1に何か値が入っているときに、メンバ2に何か値を入れると、メンバ1に入っていた値は無効になってしまいます。それぞれが同じ場所を共有しているのですから。
このように一見不便そうな共用体ですが、便利な使い方もあります。
共用体は、一人の人間に複数の名前をつけるようなことと考えられます。
同じ人を状況に応じて別の呼び方で呼べると便利ですよね。
同じ場所へのアクセス方法が複数あることで、とても便利なときがあるのです。
[References]
http://www.mapee.jp/cpp/post_31.html
http://www.geocities.jp/ky_webid/c/047.html
例題で学ぶはじめてのC言語/大石 弥幸
(P.143-149)

にほんブログ村

まずは構造体の使い方
struct タグ名
{
データ型 メンバ1;
データ型 メンバ2;
:
:
}変数名;
つぎに共用体
union タグ名
{
データ型 メンバ1;
データ型 メンバ2;
:
:
}変数名;
違うところは最初のstructとunionだけ。つまり、書き方はまったく一緒ということです。では何が違うのか。
構造体のメンバは、それぞれが独自に記憶領域を確保するのに対し、
共用体のメンバは、それぞれが同じ記憶領域を共有するのです。
だから、共用体の場合、メンバ1に何か値が入っているときに、メンバ2に何か値を入れると、メンバ1に入っていた値は無効になってしまいます。それぞれが同じ場所を共有しているのですから。
このように一見不便そうな共用体ですが、便利な使い方もあります。
共用体は、一人の人間に複数の名前をつけるようなことと考えられます。
同じ人を状況に応じて別の呼び方で呼べると便利ですよね。
同じ場所へのアクセス方法が複数あることで、とても便利なときがあるのです。
[References]
http://www.mapee.jp/cpp/post_31.html
http://www.geocities.jp/ky_webid/c/047.html
例題で学ぶはじめてのC言語/大石 弥幸
(P.143-149)
にほんブログ村