表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
32/37

第三十話 構造体



「じゃ、FILEの説明に出てきた構造体をついでに解説しちゃうわよ」

 先輩の言葉に、俺たちは耳を傾ける。

「構造体ってのは、要するに一つの変数の中に複数の変数をまとめて入れたものよ」

「それって、何か意味あるんですか?」

「イツキくん、無かったら作られるわけないでしょうが。こうすることで、関連する変数を一つにまとめられるから、わかりやすくなるわけよ」

「関連する変数、ですか?」と西原さん。

「ちょっとこれは例を出したほうがいいわね。たとえばイツキくんらがRPGを作っているとするでしょ。そしてプレイヤーのキャラのデータを作っているとして……」

 先輩はカタカタとコードをうち始めた。



#include<stdio.h>


int main(void)

{

  struct PC {

    char* name;

    int hp;

    int str;

    int mp;

  };


  struct PC itsuki;

  itsuki.name = "イツキ";

  itsuki.hp = 50;

  itsuki.str = 40;

  itsuki.mp = 10;


  printf("PC %s HP %d STR %d MP %d \n",itsuki.name, itsuki.hp, itsuki.str, itsuki.mp);

  return 0;

}



「こんな風に、一つにまとめていた方が、データを参照するにも便利でしょ」

「ああ、なるほど。確かにそうですね」

「このstructで構造体の型を宣言するの。それから、最初は型のタグで、最後にそのまま変数を追加するなら、省略も可能よ。次の行で、PC itsukiで、PC構造体の型のitsukiって変数を定義するわけ」

「うん。俺キャラのパラメータもばっちり設定されてるぜ」

「でしょ? それに、これだと、たとえばキャラを追加するのも簡単よ」

 先輩はさらにコードを付け加える。



int main(void)

{

  int i;


  struct PC {

    char* name;

    int hp;

    int str;

    int mp;

  };


  struct PC pcs[2];


  pcs[0].name = ”イツキ”;

  pcs[0].hp = 50;

  pcs[0].str = 40;

  pcs[0].mp = 10;


  pcs[1].name = ”アカネ”;

  pcs[1].hp = 30;

  pcs[1].str = 30;

  pcs[1].mp = 50;


  for (i = 0; i < 2; i++){

    printf("PC %s HP %d STR %d MP %d \n", pcs[i].name, pcs[i].hp, pcs[i].str, pcs[i].mp);

  }


  return 0;

}



「ほらね、配列にしたら、for文を使えば複数のキャラの表示も簡単に出来るでしょ?」

「うーむ。確かにこの方がわかりやすくなるなぁ」

「ま、データ構造は、プログラミングの基礎だから、しっかりと覚えておいてね。じゃ、今日はこれくらいにしておくわ」


 時間がすでに帰る時刻だ。俺は頷いた。

「今日も勉強したなぁ。もう俺もC言語も使えるようになったかな?」

「甘い甘い」先輩は苦笑しながらかぶりを振った。「C言語はまだまだ奥が深い言語よ。イツキくんに教えていない事は、まだいっぱいあるから、それはまたいずれ話すとするわ。でも、今はゲームを完成させる事に専念するほうがいいわね」

「そ、そうなのか……」

「でも、ここまで来れたイツキくんだもの。大丈夫ですよ」

「うん。私も、そう思う」

 西原さんとサヤちゃんにも励まされる。

「じゃ、明日また続きをするとして、今日は解散!」


 これで俺の今日の部活は終わった。

 明日はいよいよ総集編となる。

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ