Cplusplus-cpp-variable-scope

提供:Dev Guides
移動先:案内検索

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

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

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

Data Type Initializer
int 0
char '\0'
float 0
double 0
pointer NULL

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