unionとかenum
共用体
- 基本的には,データAとデータBは違うアドレスに置く
- しかし,同じアドレスに置くこともできる
- その操作を行うのが共用体で,unionというキーワードを用いる
例(共用体を使ってみる)
とりあえず,どんな感じで使うのか見てみる
#include <stdio.h> int main(void){ union sample{ char ch; short sh; int it; }; union sample u1; u1.it = 0x12345678; printf("%x\n", u1.ch); printf("%x\n", u1.sh); printf("%x\n", u1.it); return 0; }
上のファイルをコンパイルして実行すると以下の結果が得られる.
78 5678 12345678
確かに,1つの変数を触っただけなのに,他の変数の値も更新されている.
例(typedefと併用してみる)
unionはtypedefと一緒に使うことが多いそうなので,試してみる.
#include <stdio.h> int main(void){ typedef union sample{ char ch; short sh; int it; }smpl; smpl u1; u1.it = 0x12345678; printf("%x\n", u1.ch); printf("%x\n", u1.sh); printf("%x\n", u1.it); return 0; }
変数を宣言するときに,いちいちunionと言わなくてよくなった.もちろん,結果はさっきと同じ.
どう使うのか?何がうれしいのか?
メモリの節約に関係しているそうだが,詳細は不明.いい例があったら今後追加する
列挙型データ
- define ~をまとめて,見栄えをよくするための機能
- つまり,定数をメンバにもつデータ型(構造体?)
- 各定数の値はint型
- enumというキーワードを用いる