C++ 変数のスコープ
スコープはプログラムの領域です。一般的に、変数を宣言できる場所は 3 つあります。
関数またはコード ブロック内で宣言された変数はローカル変数と呼ばれます。
関数のパラメータの定義で宣言された変数を仮パラメータといいます。
すべての関数の外で宣言された変数はグローバル変数と呼ばれます。
次の章で関数とパラメータについて学びます。この章では、まずローカル変数とグローバル変数の宣言について説明します。
ローカル変数
関数またはコードブロック内で宣言された変数はローカル変数と呼ばれます。これらは、関数またはコード ブロック内のステートメントでのみ使用できます。次の例ではローカル変数を使用しています。
#include <iostream> using namespace std; int main () { // 局部变量声明 int a, b; int c; // 实际初始化 a = 10; b = 20; c = a + b; cout << c; return 0; }
グローバル変数
すべての関数の外側 (通常はプログラムの先頭) で定義された変数は、グローバル変数と呼ばれます。グローバル変数の値は、プログラムのライフサイクル全体を通じて有効です。
グローバル変数にはどの関数からもアクセスできます。つまり、グローバル変数を宣言すると、プログラム全体でその変数を使用できるようになります。次の例では、グローバル変数とローカル変数を使用しています。
#include <iostream> using namespace std; // 全局变量声明 int g; int main () { // 局部变量声明 int a, b; // 实际初始化 a = 10; b = 20; g = a + b; cout << g; return 0; }
プログラムでは、ローカル変数とグローバル変数の名前を同じにすることができますが、関数内では、ローカル変数の値がグローバル変数の値をオーバーライドします。以下に例を示します:
#include <iostream> using namespace std; // 全局变量声明 int g = 20; int main () { // 局部变量声明 int g = 10; cout << g; return 0; }
上記のコードをコンパイルして実行すると、次の結果が生成されます:
10
ローカル変数とグローバル変数を初期化します
ローカル変数が定義されている場合、システムはそれらを初期化しません。自分で初期化する必要があります。グローバル変数を定義すると、システムは自動的に次の値に初期化します:
データ型 | 初期化デフォルト値 |
---|---|
int | 0 |
char | ' |