共用体について
最終更新日:2004-06-19.
今回は、共用体についてちょっと。
これは、一つの変数でいろいろな型のデータを処理したい場合に
使用できます。
・共用体
共用体(union)を使用すると、異なる型のデータを同じアドレスで
処理することができます。
(これは構造体にちょっとにています。)
共用体を使用するには、型枠を宣言します。
例えば、共用体の型枠をdataとして、そのメンバーを
char, int, long, floatの四つにするとします。
この場合、以下のようになります。
union data {
char c;
int i;
long l;
float f;
};
そして、変数を宣言して使用するには、以下のようにします。
union data x;
共用体変数 xのサイズは、どのメンバーのデータも処理できるように
一番大きなメンバーのサイズになります。
上記の例では4バイトになります。
次に、各メンバーにアクセスするには、変数名とメンバー名を
半角のピリオド(.)で結びます。
x.c;
x.i;
x.l;
x.f;
のようになります。
また、共用体変数へのポインタも使用することができます。
その際、各メンバーにアクセスするにはポインタ変数とメンバーとを
ハイフンとだいなり (->) 記号で結びます。
union data *y;
y->c;
y->i;
y->l;
y->f;
のようになります。
では、ソースで見てみましょう。
今回は、DOSのバージョン番号を調べる方法です。
+------------------------------------------------------------+
/* filename=no014-1.c */
/* include */
#include <stdio.h>
#include <dos.h>
/* main */
int main( )
{
/* 共用体宣言 */
union REGS in, out;
/* 値をセット */
in.h.ah=0x30;
/* DOSのシステムコールを実行 */
intdos(&in, &out);
/* バージョン番号の表示 */
printf("%d.%d\n", out.h.al, out.h.ah);
return 0;/* 終了 */
}
+------------------------------------------------------------+
上記のソースをコンパイルして実行すると以下のように表示されました。
7.10
上記はWindows98SEのMS-DOSプロンプトより実行しました。
戻る