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
平成19年5月8日


no counter