- # C言語/C++入門 > 関数と変数のスコープ
グローバル変数とローカル変数
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
グローバル変数とローカル変数の違いの理解は、プログラミングを行ううえでは大事です。
変数は、それが有効となるスコープ(プログラムの範囲)を持ちます。
スポンサーリンク
グローバル変数とは、それが宣言された箇所から、プログラムの終わりまで、ずっと有効となる変数のことです。
ローカル変数のスコープは、宣言されたブロック({ }で囲まれた部分)となります。
#include <iostream> int count; int main() { count = 0; // グローバル変数を初期化 // ローカルのスコープ { int count = 0; // ローカル変数の初期化 while (true) { if (count > 10) break; std::cout << count << "\n"; count++; } std::cout << "1. count? : " << count << "\n"; } ++count; std::cout << "2. count? : " << count << "\n"; return(0); }
ここで、「1. count? :」と「2. count? : 」で表示されるcountは、何になるでしょうか?
実行結果。
0 1 2 3 4 5 6 7 8 9 10 1. count? : 11 2. count? : 1
「1. count? : 11」となっていることから、while文のすぐ外側でも、変数の値が有効となっていることが分かります。
「if (count > 10)」がbreakの条件であることから、while文を最後に抜けた後は、countの値は「11」となります。
さらに外側の、「// ローカルのスコープ」({ }で囲まれた部分)のスコープを抜けた後、つまり、「2. count? : 」の部分では、今度は「2. count? : 1」と、countの値は「1」になっています。
この段階では、ローカルスコープのcountは、もはや有効ではなく、「count = 0; // グローバル変数を初期化」が、グローバルスコープで「++count;」により1だけインクリメントされた値が表示されていることになります。
スポンサーリンク
>> 次の記事 : 変数の記憶クラス
- - 関連記事 -
- 再帰関数
- 関数の引数型/値呼び出し(値渡し)・参照呼出し(参照渡し)・配列
- インライン関数・inline
- デフォルト引数・定義された引数を使用しない関数
- 関数のオーバーロード
- 参照型の戻り値で関数定義・参照戻し
- 参照型の引数で関数定義
- const宣言の引数を持つ関数
- 引数のない関数(void)・voidの戻り値
- 関数の定義
- using文・using namespace
- 名前空間・namespace
- 変数の記憶クラス
スポンサーリンク