1-05. 変数スコープ

公開日: 0:53 1. 基本編/1-05. 変数スコープ

スコープはプログラムの領域、有効範囲であり、一般的に3つの変数が宣言できる場所を指します。
  • ローカル変数となる関数またはブロックの中
  • 仮引数となる関数定義内の引数
  • グローバル変数となるすべての関数の外
関数と、その引数については跡のページで学びます。まずはローカル変数とグローバル変数について説明します。

ローカル変数

関数またはブロック内で宣言された変数はローカル変数となります。ローカル変数は関数またはブロック内でのみ構文に利用できます。ローカル変数は外の関数にからは見えません。次にローカル変数の使用例を示します。
#include 
using namespace std;

int main ()
{
  // ローカル変数の宣言
  int a, b;
  int c;

  // 初期化
  a = 10;
  b = 20;
  c = a + b;

  cout << c;

  return 0;
}

グローバル変数

グローバル変数はすべての関数の外で定義され、一般的にはプログラムの先頭で定義されます。グローバル変数はプログラムが実行されている間その値を保持します。 
グローバル変数はあらゆる関数からアクセスすることが可能です。つまり、グローバル変数は宣言した後はプログラム全体から利用することができます。次にグローバル変数とローカル変数の使用例を示します。
#include 
using namespace std;

// グローバル変数の宣言
int g;

int main ()
{
  // ローカル変数の宣言
  int a, b;

  // 初期化
  a = 10;
  b = 20;
  g = a + b;

  cout << g;

  return 0;
}
プログラムはローカル変数とグローバル変数で同じ名前を持つことが可能ですが、関数内のローカル変数の値が優先されます。
#include 
using namespace std;

// グローバル変数の宣言
int g = 20;

int main ()
{
  // ローカル変数の宣言
  int g = 10;

  cout << g;

  return 0;
}
上のコードはコンパイルし実行すると、次の結果を返します。

10

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

ローカル変数が定義されると、システムには初期化されないので、自身で初期化しなければなりません。グローバル変数は定義した時にシステムによって自動的に初期化されます。
初期化子
int0
char'\0'
float0
double0
pointerNULL

適切に変数を初期化することは良いプログラミングの練習であり、そうしないとプログラムは稀に予期せぬ結果を返します。
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿