この章ではグローバル変数とローカル変数について説明します。
詳しい説明は例の後に行います。
では例をみてみましょう。 グローバル変数とは関数の外で宣言された変数のことを言います。
この例で言いますとがグローバル変数です。
これまではmain関数の中で変数を使用してきましたが、このaのように関数の外で宣言をするとグローバル変数になります。
グローバル変数は以下の通り、どの関数の中でも使用することが出来ます。
次にローカル変数について説明します。
ローカル変数とは関数の中で宣言された変数のことを言います。 ローカル変数は宣言をした関数の中でしか使用することができませんので、複数の関数で同じ変数名を使用しても問題ありません。
この例であればmain関数とtashizan関数の中のローカル変数は同じ名前の変数名を付けてもいいです。
例えば以下の例のようにmain関数とa関数の中でnumber変数を使用していますが、これらはお互いに影響を受けることはありません。
つまり、同じ変数名でも全く違う変数です。 ではもっと理解を深めるために次の例を見てみましょう。
初めにグローバル変数とローカル変数の確認から始めます。 function1関数の中で宣言している変数はローカル変数です。
main関数の中で宣言している変数はローカル変数です。 初めに、main関数内のローカル変数がprintfで出力されて,3と4が出力されます。
ローカル変数の有効範囲は宣言をした関数の中だけです。
次は変数の寿命について説明します。関数の外でグローバル変数であるを宣言していますが、グローバル変数はプログラムが実行されてから終了するまで値を記憶しています。 後ほど説明しますがローカル変数はが1回実行される度にクリアされるので値を保持することができません。
次はstaticについて説明します。
static int a=0;
関数内で変数にstaticを付けないと、ただのローカル変数になってしまいますが、staticを付けることでグローバル変数と同じ機能を持つことが出来ます。
つまり、プログラムが実行されてから終了するまで値を記憶させておくことが出来ます。
このstaticが付いた変数を「静的変数」と言います。
functionは4つありますが、1回実行される度に静的変数はにより1が足されます。 結果、 は値が1つずつ増えて「1,2,3,4」となります。
次はローカル変数について説明します。
function関数内で宣言されているはローカル変数です。
ローカル変数は関数が実行される度にデータがクリアにされるので情報を保持することはできません。 結果は以下の通りです。