==== 変数の有効範囲 ==== 変数の有効範囲のことをスコープといいます。\\ * ファイルスコープ * ファイルの中だけで有効なスコープ * ブロックスコープ * {}の中で有効なスコープ * 関数スコープ * 関数の引数の受け取りから、関数ブロックの最後まで有効なスコープ * for文スコープ * for文のカウンタ宣言から、forブロックの中だけで有効なスコープ === 局所変数と大域変数 === #include //scope 変数がどこから見えてどこから見えないかという分類 using namespace std; //どこのブロックにも属さない部分 //ファイルスコープ int d = 10;//d爆誕 大域変数、グローバル変数 //このへん int foo() { //変数宣言 コンパイラにa,bという整数の変数 //を使うことを伝える //変数は書いた順番通りに宣言さえる //宣言から下でしか使えない //ブロックスコープ int a = 5;//a爆誕 局所変数、ローカル変数 int b = 6;//b爆誕 return (a + b + d); }//a,b死亡 int main() { cout << foo() << endl; //fooはmainから可視 visible int c = foo();//c爆誕 cout << foo() << endl; }//c死亡 int foo2() { return(d); } //d死亡 === スコープの話 === #include using namespace std; //何回もやる処理などをまとめて書いて、後で呼び出す int plusAB(int a , int b)//関数スコープ { a = a + 8; return (a + b); }//引数a,b死亡 //aとbの値を入れ替える関数 void swap(int a, int b) { cout << "a:" << a << endl; cout << "b:" << b << endl; int c; c = a; a = b; b = c; cout << "a:" << a << endl; cout << "b:" << b << endl; }//a,b死亡 int main() { int input; int c = 3; cin >> input; //inputとcの値が、引数のaとbにコピーされて別物になってわたっている //cout << plusAB(input, c) << endl; cout << "input:" << input << endl; cout << "c=" << c << endl; swap(input, c); cout << "input:" << input << endl; cout << "c=" << c << endl; }