C++ の変数スコープ
スコープはプログラムの領域であり、大まかに言えば、変数を宣言できる 3 つの場所があります −
- <リ>
ローカル変数と呼ばれる関数またはブロック内で、
<リ>仮パラメータと呼ばれる関数パラメータの定義。
<リ>グローバル変数と呼ばれるすべての関数の外。
関数とは何か、およびそのパラメーターについては、後続の章で学習します。ここで、ローカル変数とグローバル変数とは何かを説明しましょう。
ローカル変数
関数またはブロック内で宣言された変数は、ローカル変数です。それらは、その関数またはコード ブロック内にあるステートメントでのみ使用できます。ローカル変数は、それ自体の外部の関数には認識されません。以下は、ローカル変数を使用した例です-
ライブデモ#include <iostream> using namespace std; int main () { // Local variable declaration: int a, b; int c; // actual initialization a = 10; b = 20; c = a + b; cout << c; return 0; }
グローバル変数
グローバル変数は、すべての関数の外で、通常はプログラムの上で定義されます。グローバル変数は、プログラムの存続期間中、その値を保持します。
グローバル変数は、どの関数からもアクセスできます。つまり、グローバル変数は、宣言後にプログラム全体で使用できます。以下は、グローバル変数とローカル変数を使用した例です-
ライブデモ#include <iostream> using namespace std; // Global variable declaration: int g; int main () { // Local variable declaration: int a, b; // actual initialization a = 10; b = 20; g = a + b; cout << g; return 0; }
プログラムはローカル変数とグローバル変数に同じ名前を付けることができますが、関数内のローカル変数の値が優先されます。たとえば-
ライブデモ#include <iostream> using namespace std; // Global variable declaration: int g = 20; int main () { // Local variable declaration: int g = 10; cout << g; return 0; }
上記のコードをコンパイルして実行すると、次の結果が生成されます −
10
ローカル変数とグローバル変数の初期化
ローカル変数が定義されている場合、システムによって初期化されないため、自分で初期化する必要があります。グローバル変数は、次のように定義すると、システムによって自動的に初期化されます −
データ型 | 初期化子 |
---|---|
整数 | 0 |
文字 | '\0' |
フロート | 0 |
ダブル | 0 |
ポインター | NULL |
変数を適切に初期化することは、プログラミングの良い習慣です。そうしないと、プログラムが予期しない結果を生成することがあります。
C言語