概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C 構造体
2006年09月16日 (土) | 編集 |
昨日の話だが、家に帰ったらTVでホームアローンとか放映していた。
久し振りだなとか思いながら見ていたら記憶に無い罠で撃退しているではないか。

3かよ

もっと早く帰ればよかった。
まあどうしても通して見たければDVDでも借りてくるだけだが。



構造体とか言うよく分からない概念の話だ。
構造体? 建築物じゃあるまいし。
構造体とは、また聞き慣れない単語が出てきたものだが。
実際はお目にかかることが多い概念らしいので避けては通れないぜ。

異なる型のデータを1つの集まりとして扱う為のデータ型だそうだ。

例えば、
名前STRINTPIEVITAGILUC
隊長181818151719
桐崎191817181819
アリシア181818191819
栃木181918181818
ティー141918122422
ウェル171918191819

こんなデータが与えられた時に、名前、STR、INT、PIE、VIT、AGI、LUCを一塊のデータとして与えられたら便利だな。便利かね? 便利なんじゃねー? 便利か? と思うわけだ。
そういうときにこのようなデータを表す型として構造体を使ったりするらしい。

さて、そんな便利物体構造体だが、扱う為には各メンバの型と名前を定める必要がある。

メンバとは?
構造体の各々のデータのことをそう呼ぶらしい。
この場合は名前とかSTRとかINTとかが該当するな。
ていうかそもそもそれらのデータを扱いたいから構造体使うんだが。

実際に定義してみよう。
名前は英字1文字で表現するとしてchar型を用い、メンバ名はnameとする。
STRはINT型で(ややこしいな)、メンバ名はそのままstrでいいやな。
他のステも同様にやりゃいいが面倒なので残りはVITとAGIだけにする。
よってVITもINT型で、メンバ名はそのままvit、AGIもINT型でagiとしよう。
そうすると、

struct m_status {
 char name;
 int str;
 int vit;
 int agi;
};


こんな感じの書式になる。これによって、struct m_status型という新しい型(構造体型)が宣言されたことになるのだそうだ。
1行目のstructの後にあるm_statusってのがこの構造体の名前になり、m_statusはcharとint型をメンバに持っていることになる。また、この名前のことをタグと呼ぶ。

で、この構造体で更に変数も宣言出来るらしい。

struct m_status a;

こんな感じに。ていうかこれでaの値として色々入れていくのかね?
ついでに、

struct m_status {
 char name;
 int str;
 int vit;
 int agi;
} a;


こうするとタグ宣言と構造体変数宣言も同時に行う事も出来るそうな。


さて、斯様に構造体を宣言したりした訳だが、宣言しただけでは中に何の値も無いのは当然なので、参照とかしたりして中に値を代入してやるのがよろしい。
構造体の各メンバを参照するには、

構造体変数名.メンバ名

といったように.を使って記述する。
例えばティー(T)のデータを構造体変数aに代入するには、

a.name='T';
a.str=14;
a.vit=12;
a.agi=24;


こう記述してやればいい。
また、代入されたデータは勿論出力する事も可能であり、

printf("%c %d %d %d\n",a.name,a.str,a.vit,a.agi);


こうすれば画面に出力出来たりもする。

struct_test.jpgstruct_test2.jpg
こんな感じに


まとめよう。

構造体を使うと異なる型のデータを一塊のデータとして扱える
構造体を宣言にはstructという型を使う
構造体型の名前?をタグと呼ぶ


以上。
プログラムらしいことはやってないが、今日のところはまだ触りということで。


スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。