C++変数のスコープを理解する:ローカル変数とグローバル変数
スコープとはプログラムの領域のことで、大まかに言うと変数を宣言できる場所は3つあります:
関数またはブロックの内部(ローカル変数)
関数パラメータの定義内(仮パラメータ)
すべての関数の外部(グローバル変数)
関数とそのパラメータについては以降の章で学びます。ここではローカル変数とグローバル変数について説明します。
ローカル変数
関数またはブロック内で宣言された変数をローカル変数と呼びます。それらは、その関数またはコードブロック内の文によってのみ使用できます。ローカル変数は自分自身の関数の外部には知られていません。ローカル変数を使用した例:
Live Demo#include <iostream>
using namespace std;
int main () {
// ローカル変数宣言:
int a, b;
int c;
// 実際の初期化
a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
グローバル変数
グローバル変数は、通常プログラムの冒頭で、すべての関数の外部で定義されます。グローバル変数はプログラムのライフタイム全体を通じて値を保持します。
グローバル変数はどの関数からもアクセスできます。つまり、宣言後、プログラム全体で使用可能になります。グローバル変数とローカル変数を使用した例:
Live Demo#include <iostream>
using namespace std;
// グローバル変数宣言:
int g;
int main () {
// ローカル変数宣言:
int a, b;
// 実際の初期化
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
プログラムはローカル変数とグローバル変数で同じ名前を持つことができますが、関数内ではローカル変数の値が優先されます。例:
Live Demo#include <iostream>
using namespace std;
// グローバル変数宣言:
int g = 20;
int main () {
// ローカル変数宣言:
int g = 10;
cout << g;
return 0;
}
上記コードをコンパイルして実行すると、以下の結果が得られます:
10
ローカル変数とグローバル変数の初期化
ローカル変数が定義されると、システムによって初期化されません。自分で初期化する必要があります。グローバル変数は定義時にシステムによって自動的に初期化されます:
| データ型 | 初期値 |
|---|---|
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointer | NULL |
変数を適切に初期化することは良いプログラミング習慣です。そうしないと、プログラムが予期しない結果を生むことがあります。
C言語
- C# 変数とプリミティブデータ型:完全マスターガイド
- C# 変数のスコープを理解する:クラス、メソッド、ブロックレベル
- C++変数・リテラル・定数完全ガイド:基礎から実践まで
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C言語変数・定数・リテラル完全ガイド
- C言語ストレージクラス完全理解:スコープ・ライフタイム・パフォーマンス
- C++変数とデータ型:int、double、char、string、boolを徹底解説
- C++ポインタをマスター:概念、例、実践的応用
- Python グローバル・ローカル・非ローカル変数を理解する
- Java変数の種類:ローカル、インスタンス、クラス変数を徹底解説