第4講 繰り返し処理・if文・グローバル変数について
第8話 グローバル変数
第3講第8話でC言語の変数の有効範囲(スコープ)は、
関数内に限定されているという話をしました。
では、プログラム全体で有効な変数をC言語は用意していないのでしょうか。
答えは、『用意しています』です。
プログラム全体で有効な変数をグローバル変数と言います。
逆に、有効範囲が関数に限定されている変数をローカル変数と言います。
C言語はメモリ節約のために基本的にローカル変数を用いますが、
ゲームプログラミングでは、グローバル変数も多用します。
では、グローバル変数=全社員共有の箱はどのように宣言するのでしょうか。
#include<stdio.h> //秘密の道具箱から、printf()という社員(関数)を借りるために必要
void f(); //社員f()の紹介
void g(); //社員g()の紹介
int w;
int main(){
  f(); //f()に仕事を命じている
  g(); //g()に仕事を命じている
}
void f(){ //1から10までの合計を求める社員
  int i;
  w=0;
  for(i=1;i<=10;i++)w+=i;
}
void g(){ //和をコンソールに表示する社員
  printf("1+2+3+4+5+67+8+9+10=%d\n",w);
}
コピペ用添付ファイル
答えは、main()前で宣言するです。

本当は、すべてローカル変数でプログラミングできるのが理想です。
なぜなら、必要なときだけ変数をメモリ上におけるからです。
関数は、命じられて業務を遂行しているときだけ、
コンピュータのメモリ上に現れます。
メモリは、社員(関数)が踊るための舞台です。
仕事があるときだけ、舞台に上がり、
仕事がないときには、舞台の下にいるべきです。
これは実は比喩です。
正確には、C言語の関数は、
コール(社員名を呼ばれる)されたときに始めて発生して、
任務の遂行が終わると消滅しています。
仕事しているときだけに、
関数はメモリ上に存在していると言うことは、
各関数が用意する箱(これもメモリが割り当てられている)も、
関数が存在しているときだけ存在すると言うことです。
社員が存在しているときのみに、
変数の中身を記憶するために、
メモリ上に記憶領域を割り振ると言うことです。
ということは、関数が消滅するときに、
箱そのものが消えてしまい、箱の中身も消滅します。
このように生成消滅を繰り返すのが、
C言語の関数や変数の特徴なのです。
生成消滅を繰り返す関数を動的関数、生成消滅を繰り返す変数を動的変数といいます。
存在しているときだけメモリを使うと言うには、
とても合理的なことです。
グローバル変数は、使っていようが使っていまいが、
メモリ上に常駐します。
これはメモリの無駄遣いです。
ですから、基本ローカル変数でいくべきなのですが、
ローカル変数のみでプログラミングを行うとすると、
プログラムが大変複雑なものとなってしまいます。
そこで、やむを得ずゲームプログラミングでは、
グローバル変数も多用するのです。
ですが、ちょっとした工夫で使わなくてもよい場合には、
社員専用の箱=ローカル変数にするべきでです。

さて、機は熟しました。
ゲームに戻りましょう。





第7話へ   第5講第1話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ