構造体の配列を導入します 複数のキャラクターのステータスデータを構造体の配列をもちいてメモリに格納、管理することができます。

格納した数値データを効率よくprintf表示する 構造体型の配列宣言を行い構造体型の配列を作製して複数の構造体変数のメンバ変数に格納された数値を構造体型の配列に格納してみよう その1

ソーラー「あ、あの・・・


もう、題名からして ふりきれてるね


アレサ ここが重要なエピソードになるんだね。」


アレサ「はい 


この今はまた~く理解できない😊


構造体型の配列宣言を行い

構造体型の配列を作製して


複数の構造体変数のメンバ変数に格納された数値を

構造体型の配列に格納してみよう


の意味が このエピソードを読み終えるとわかるようになるんです。」


ソーラー「しぇ~


この文章の意味が・・・???



読者のみなさんは理解できるかな?


10分間 予想してみてください












ぼくはもうちんぷんかんぷんだよ」


アレサ「


格納した数値データを効率よくprintf表示する


ことは


シューティングゲームに限らず


シュミレーション バーチャルリアリティ


グラフィック


さまざまな分野で必要とされる


プログラムの超基本事項なのです」


ソーラー「その超基本的なことをこれから学んでいくんだね


いや、いままで学んできたことは


そのためだったといったらいいすぎかな?


では まず 手始めは ここからはじめてみましょう。。


ここに


立方体cube1の数値データ

立方体cube2の数値データ

があります。


立方体cube1の数値データは


no=1

tate=2.0

yoko=3.0

takasa=4.0

となっていて

立方体cube2の数値データは

no=2

tate=4.0

yoko=5.0

takasa=6.0

となっているとします。


これらの数値データを


メモリに格納させたのち


🍎いかに簡単にprinf出力表示させるか🍅


その方法をさがしてみよう。アレサ 


こういうことだよね」


アレサ「はい、そのとおりです。


そして、


どちらかというと


いかに簡単に数値データをメモリに格納できるかではなく


🍎いかに簡単に


メモリに格納した数値データを


prinf出力表示させることができるか、が重要なのです。🍅


メモリにデータを格納するのは手間がかかっても


1回ですみますが


データは基本的に何度も呼び出されるものなのです


ですから


データを呼び出すたびに


長い、もしくは複雑な命令文を記述しなければならない状態は


効率が悪いのです。



数値データの格納方法と呼び出し方法はセットになっているので


どのような方法で数値データをメモリに格納するかで


データの呼び出し方法がきまります。


数値をメモリに格納する方法によっては


"簡単に" 


格納した数値データをよびだして


prinf出力表示させることができたり、できなかったりします


この差は


格納した数値データがおおく、


呼び出す数値データがおおくなればなるほど、


顕著になってきます。」


ソーラー 「もしかして ずっと昔、


コンピュータが


できたてほやほやのころは


効率の悪い数値データの


prinf出力表示方法しかなかったのかな」


アレサ 「そうなのです。


そこで


数値データが


簡単に呼び出せるような数値データのメモリへの格納方法が


いろいろ考えられたわけです。



配列のシステムなどはその1例です


配列を使えば


たくさんの数値を配列を使ってメモリにとりこみ


その格納されたすべての数値データを


簡単にprintf表示させることができます。


ここで、おさらいとして


配列を使ってメモリに数値を格納したのち


その格納された数値データを表示させる例をみていきますね。


#include <stdio.h>


int main(void)

{


int str[]={1,2,3,4,5,6,7,8,9,10};

int i;

for(i=0;i<10;i++)

printf("%d\n" ,str[i]);

return 0;

}

コンパイル結果

1

2

3

4

5

6

7

8

9

10


アレサ「

数値データ1,2,3,4,5,6,7,8,9,10をメモリに格納するのに


int str[]={1,2,3,4,5,6,7,8,9,10};


の1行


数値データ1,2,3,4,5,6,7,8,9,10をprintf表示するのに


int i;

for(i=0;i<10;i++)

printf("%d\n" ,str[i]);


の 3行で済んでいます。


これは格納する数値データが


1から10000000000でも


メモリに格納するのに1行

printf出力表示するのに3行


で済むことには変わりはありません。


もしこの数値データを


int a=1;

int b=2;

int c=3;

int d=4;

int e=5;

int f=6;

int g=7;

int h=8;

int i=9;

int j=10;


このように


変数を使ってメモリに格納したならば


     数値データをprintf出力表示方法も必然的にきまり


さきほどのプログラムは次のようになります。」


#include <stdio.h>


int main(void)

{


int a=1;

int b=2;

int c=3;

int d=4;

int e=5;

int f=6;

int g=7;

int h=8;

int i=9;

int j=10;


printf("%d\n" ,a);

printf("%d\n" ,b);

printf("%d\n" ,c);

printf("%d\n" ,d);

printf("%d\n" ,e);

printf("%d\n" ,f);

printf("%d\n" ,g);

printf("%d\n" ,h);

printf("%d\n" ,i);

printf("%d\n" ,j);


return 0;

}

コンパイル結果

1

2

3

4

5

6

7

8

9

10


アレサ「(*^_^*)

 

このように かなり 手間がかかっています。


数値を変数を使ってメモリに格納するという方法をとった時点で


コマンドプロンプト画面へのprintf出力表示する方法も


このような方法にきまるということにも注目してください。


もし


メモリに格納する数値データが


1から10000000000ならば


10000000000個の変数と

10000000000個のprintf文が必要となりますの。」


ソーラー「さすがに、それは手間がかかりすぎるね」


アレサ 「そう、配列は便利なシステムなんですの。」






  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます