>> C言語入門トップに戻る

グローバル変数とスコープについて

今回はグローバル変数とスコープについて説明します。
今までは変数は全て関数内に書いていましたが、
関数の外に書くこともできます。

#include <stdio.h>

int test;

void func(void);

int main(void)
{
	test++;
	
	printf("%d\n",test);

	func();

	printf("%d\n",test);
	
	return 0;
}

void func(void){
	
	test++;
}


これを実行するとこのようになります。

このような変数をグローバル変数と言います。
この変数には次の特徴があります。

・宣言時に自動的に0かNULLに初期化される。
・同じファイルのどの関数からもアクセスできる。
・プログラム終了まで値が保持される。

上記の実行結果を見てもらっても分かるとおり、
初期値を設定していない状態で、test++と1を足していますが、
ちゃんと1と表示されています。

また、func関数内でもtest++とグローバル変数にアクセスできています。
そして、func関数を実行した後は、ちゃんと1が足され、
2と表示されています。

もしfunc関数内で定義していた場合は、
その関数内だけでしか使うことが出来ず、また関数の処理が終了したらその変数は消えてしまいます。
この限られた範囲のことをスコープと言います。
前にも少し言いましたが、関数内でfor文等を書き、そこで変数を宣言した場合は、
その変数はそのfor文の中でしか使えません。
この仕組みがスコープです。

グローバル変数とスコープの意味を理解できましたでしょうか?
グローバル変数は共有したい値を保存するときによく使われます。

今回の説明は以上です。
次回は定数について説明します。


>> 【定数について】に進む
>> C言語入門トップに戻る