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

ローカル変数とグローバル変数の初期化

ローカル変数が定義されている場合、システムによって初期化されないため、自分で初期化する必要があります。グローバル変数は、次のように定義すると、システムによって自動的に初期化されます。

データ・タイプ イニシャライザー
int 0
char '\ 0'
浮く 0
ダブル 0
ポインター ヌル

変数を適切に初期化することは良いプログラミング手法です。そうしないと、プログラムが予期しない結果を生成することがあります。