3 記憶クラス(教科書の6章)

記憶クラスの話は、関数(サブルーチン)を使わないと御利益がない。そこで、本日はこの プリントを読む程度にとどめるのが良いだろう。関数の学習の時に、ちゃんと説明する。

3.1 ローカル変数とグローバル変数(p.68)

変数には宣言をする場所によりローカル変数とグローバル変数がある。
ローカル変数
関数の外で宣言され、その関数の中だけで使用できる。関数がコー ルされるとメモリー上に変数が配置される。その関数の処理が終 わるとその変数は消滅する。通常、よく使われる。
グローバル変数
関数の外で宣言され、どの関数でも使用できる。プログラムが 起動されるとメモリー上に変数が配置される。プログラムが終了 するまで、変数は維持される。

教科書のp.69の図6-1を見て欲しい。ここでは、こんなものがあると思うだけでよい。関 数の時にもう少し分かりやすく説明する。ただ、グローバル変数はできるだけ使わない方 が良い。プログラムの独立性が低くなるし、非常に分かりづらいバグが発生することがあ る。この意味については、もう少しプログラムに馴れれば理解できるであろう。

この授業で諸君は、グローバル変数を使うプログラムを書くことはほとんどないであろう。

3.2 自動変数(auto)と静的変数(static) (p.70, p.77)

静的変数は、変数宣言の前に static と付ければ良い。一方、今まで学習してきた変数は staticが無いので、自動変数である。それらの違いは、次に通りである。

自動変数
関数内でのみ値を保持する。関数の動作が終わると、メモリーの解放 され、その値は2度と使えない。新たにその関数をコールすると、新た にメモリーを確保する。この場合、前の場所と同じとは限らない。
静的変数
プログラムが起動されたときにメモリーが確保され、プログラムが終 了するまでそれが維持される。
この授業で諸君は、グローバル変数を使うプログラムを書くことはほとんどないであろう。


ホームページ: Yamamoto's laboratory
著者: 山本昌志
yamamoto masashi
平成17年5月14日


no counter