KAIHATSUGIKEN GROUP
*********************************************************************************
12 局所変数とスコープ
局所変数とはある関数中で定義された変数です。
ある特定の関数からのみその変数が認識されるので、その変数は局所変数と呼ばれます。
局所変数は関数の最初の中括弧の後ろに続けて宣言します。
***********
#include <iostream.h>
int add_values(int a, intb )
{
int value;
value = a + b;
return(value);
}
void main(void) //ここから始まる
{
int value = 1001; //int型変数valueを準備して1001を代入
int other_value = 2002; //int型変数other_valueを準備して2002を代入
cout << value << " + " << other_value << " = " << //valueとother_valueを代入
add_values(values, other_value) << endl;
//関数add_valuesの引き数int a,int bに値を渡す
}
********
1001 + 2002 = 3003
*******************
#include <iostream.h>
int add_values(int a, intb ) //valueとother_valueの値を引き数a,bに渡す
{
int value; //関数add_valuesの中だけ扱われる局所変数 value
value = a + b; //1001 + 2002 の合計がvalueに代入される
return(value); //脱出してmainのadd_valuesへ戻る
} //valueの値は関数を終了すると破棄される
//変数名が同じであってもそれぞれの関数に
//局所的なものなので衝突はしない
void main(void)
{
int value = 1001;
int other_value = 2002;
cout << value << " + " << other_value << " = " <<
add_values(values, other_value) << endl; //3003が代入されて出力
}
*********************
1001 + 2002 = 3003
********************************************************************************
大域変数
局所変数はある特定の関数の中で宣言され、その中でのみ有効です。
プログラム全体に有効なすなわち全ての関数に対して大域的に有効な変数大域変数があります。
大域変数を宣言するにはプログラムの最初でどの関数に対しても内部にならないように
関数の外で変数宣言します。
プログラムの中では :: で参照することが出来る
********
#include <iostream.h>
int number = 1001;
void show_numbers(int number)
{
cout << " Local vaeiable number contains "
<< number << endl;
cout << " Global variable number contains "
<< ::number << endl;
}
void main(void) //ここから始まる
{
int some_value = 2002; //int型変数some_valueを準備して2002を代入
show_numbers(some_value);
//関数show_numbersの引き数numberにsome_valueの値を渡す
}
********
Local variable number contains 2002
Global variable number contains 1001
********
#include <iostream.h>
int number = 1001; //これが大域変数 このあと"::"で表される
void show_numbers(int number)
{
cout << " Local vaeiable number contains "
<< number << endl; //main関数から渡された2002をnumberに代入
cout << " Global variable number contains "
<< ::number << endl; //ここで大域変数の1001を::numberに代入
}
void main(void)
{
int some_value = 2002;
show_numbers(some_value);
}
********
Local variable number contains 2002
Global variable number contains 1001
********