共用体は複数の変数が同じメモリーを共有するもの。
union test { int i; char c; }: int main() { test a; a.i = 100; }
この共用体testの場合、iとcは同じメモリーを使用する。
また、サイズが異なる型の場合は最も大きい種類の分だけメモリーを使用する。この場合int型の4バイトが使用され、cは残り3バイトは使用されない。
共用体はある型のメモリーを別の型で参照したい場合に便利。
#include <iostream> using namespace std; union test { int i; char c[4]; }; int main() { test a; a.i = 0x41424344; cout << a.c[0] << ' ' << a.c[1] << ' ' << a.c[2] << ' ' << a.c[3]; } 実行結果 D C B A
このようにint型の領域をバイト単位でアクセスしたいときなどに使える。
というか、こういう使い方とメモリーを節約することくらいしか、今のところ使い道を思いつかない。