17.1 共用体の機能
/* 共用体とは */
共用体は、メモリ上の同じアドレスを複数の変数で共用するもので、
すべてのメンバが同一のアドレスをもつ構造体という機能を持ちます。
同じオブジェクトをもつものとしては、
int a;
int &b = a; // bとaは同じオブジェクトになる
のように参照を使うこともできます。
共用体は、これと異なり、同じメモリ領域を異なる型で共用するということが可能になります。
もちろん、必要なら同じ型で共用してもかまいません。
/* クラスと共用体 */
省略
/* 共用体の記述 */
union Mytype { // 共用体名をMytypeとする
int idt;
short int sdt;
char cdt;
};
Mytype dt;
dt.idt = 567890;
dt.sdt = 1234;
dt.cdt = 'A';
/* 共用体の初期化 */
Mytype dt = {123456789}; // dt.idtに設定する
17.2 無名共用体
union Mytype d;
d.idt = 50;
もっと単純な形で
idt = 50;
cdt = 'A';
のように"xxx."なしで記述できるように用意されたのが、
無名共用体(anonymous union)です。
union {
int idt;
short int sdt;
char cdt;
};
17.3 グローバルな無名共用体
staticをつける 省略