A-94 E3 Computer Nyumon C-group
A-94 E3 コンピューター入門 第二
☆〜☆〜☆〜☆〜 C グループ 〜☆〜☆〜☆〜☆
C 言語における、名前の有効範囲(スコープ)
○C言語では 変数や関数、ラベル、構造体、共有体 に名前を使用します。
名前には、プログラムfileの全域で通用するもの、関数内でしか通用しない
もの、ブロックの中でしか通用しないものの 3つの有効範囲があります。
それぞれ ファイルスコープ 関数スコープ ブロックスコープ と呼びます。
●ファイルスコープ
関数名は プログラムの全域で通用するので、名前は 一義的になっていなけ
ればなりません。(同じ名前の関数が 2つ以上あってはいけない。C++除く)
変数名は 関数の外で宣言されると、プログラムの全域で通用する変数になり
ます。この変数をグローバル変数と呼びます。
●関数スコープ
ラベル名は 関数の内部でのみ通用します。ブロックからの脱出などに使われ
るので 関数の内部で一義的になっていなければなりません。
●ブロックスコープ
変数名は 関数の内部で宣言されると、その関数の内部でのみ通用する変数に
なります。グローバル変数に同じ名前がある場合には 関数内部の宣言が優先
します。これをスコープによるの隠蔽(いんぺい)と言
います。
変数名は ブロックの内部で宣言されると、そのブロックの内部でのみ通用
する変数になります。同じ変数名のものが 上位のスコープに存在する時は、
ブロックの内部の宣言が優先します。これをブロックスコープによる隠蔽と
いいます。またブロックはネスト出来ますが、内側の方の名前が優先します。
m9410171@edu.cc.uec.ac.jp