先週は,C言語の変数のスコープについて学習した.変数のスコープとは,その変数の有
効範囲のことで,それは宣言する場所で決まる.以下の箇条書きと図
1に
示すように3 種類のスコープがある.
- 全ての関数の外側,プログラムの先頭付近で宣言した変数は全ての関数で有効である.
これをグローバル変数と呼ぶ.
- 関数の先頭で宣言した変数は,その関数内のみで有効である.これを,ローカ
ル変数と呼ぶ.また,関数の仮引数もローカル変数である.
- コードブロック--{ }で囲まれた部分2--の先頭で宣言した変数は,そのブロック内のみで有効になる.こ
れもローカル変数のひとつであるが,ここではブロック内宣言の
変数と呼ぶことにする.
スコープが異なれば,同じ名前の変数名を使うことができる.その場合,優先度の高い順
に並べると,ブロック内宣言の変数
ローカル変数
グローバル
変数となる.
本日の学習範囲は教科書 [
1]のp.189-202である.教科
書は,変数のスコープ(ローカル変数/グローバル変数)と記憶クラスの区別があいまいな
ところがある.少し分かり難いので,このプリントに記憶クラスをまとめる.変数のスコー
プに関しては,先週のプリントのとおり.
本日の学習のゴールは以下の通り.
-4pt
- 変数のスコープの意味が分かる.
- 自動変数(auto)と静的変数(static)の違いがわかる.
- 分割コンパイルする場合のグローバル変数の取扱い方法が分かる.
- レジスター変数の利点と使い方が分かる.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成18年11月17日