C言語ホーム > 外部変数・局所変数前ページ次ページ
サイト内検索:

C言語の外部変数・局所変数について

C言語の外部変数・局所変数について説明しています。

外部変数とは

C言語において外部変数(がいぶへんすう、global variable)とは全ての関数の外で定義される変数です。外部変数はどの関数からでもアクセス可能です。グローバル変数、大域変数とも呼ばれます。

関数内でのみ存在する局所変数(ローカル変数)と異なり、外部変数は永久に存在します。ある関数で外部変数に値をセットしたら、その関数の処理が終了しても、外部変数の値はそのまま残ります。また、外部変数は定義時に明示的に初期化されていなければ、0で初期化されます。

外部変数は多数の関数を通して継続的に使用される場合に適しています。局所変数にしてしまうと、引数として受け渡しが増大してしまうからです。

また、外部変数は多数の関数が利用するため、いつどの関数がどのようにその外部変数を利用しているかが把握しづらいという弱点があります。そのため、外部変数の安易な利用が不具合(バグ)の原因になったり、修正のしにくいプログラム設計になるといった保守性低下の原因となったりすることがあります。外部変数の使用は設計時に充分に検討する必要があります。



局所変数とは

C言語において局所変数(きょくしょへんすう、local variable)とは関数の中で宣言される変数です。ローカル変数、自動変数とも呼ばれます。関数内の局所変数は、関数がコールされた時のみ存在し、関数の処理が終了すると消滅します。そのため、一度呼び出されてから次に呼び出されるまでの間、局所変数の値は基本的に保持されません。また、他の関数で同じ名前の局所変数が存在しても問題ありません。

局所変数は定義時に明示的に初期化されていなければ、その値は不定です。ですので、局所変数は値をセットしてから使用する必要があります。局所変数の初期化忘れといううっかりミスで不具合を発生させることがありますので注意しましょう。

C言語ホーム > 外部変数・局所変数前ページ次ページ
© 2009 C言語サイト管理人