UNIXの使い方
(ラズパイZeroで学ぶLinux)
 

-- 共用体 --

共用体は、unionというキーワードで宣言します。

union {
    int data_type;
    strunct struct_a type_a;
    strunct struct_b type_b;
    strunct struct_c type_c;
} sys_data;
この共用体は、メンバーとしてdata_type、type_a、type_b、type_cというメンバーが存在します。
union sys_data system_data;
という変数を作った場合、メンバーの data_type,type_a,type_b,type_cのポインターは同じ値を持っています。
type_a,type_b,type_cの初めのメンバーをint型のメンバーを宣言してそれぞれに構造体の型を示す値を入れておくと正確にどのタイプかが分かります。