void f(int x)型の自作関数の()内で変数宣言された変数xのスコープも自作関数の定義のブロック内となります

さあvoid f(int x)型の自作関数があらわれました。


この自作関数の()内で変数宣言された変数xのスコープ(変数宣言された変数xの使用可能範囲)は


どうなっているのでしょうか?



#include <iostream>


using namespace std;


void f(int x){


cout << x << "をとりこみました。\n";


}


int main(){


f(1);

f(1);

f(1);

return 0;

}


ビルド実行結果


1をとりこみました。

1をとりこみました。

1をとりこみました。



マックス「void f(int x){}型の自作関数はブロック{}内で


xの変数宣言int xがおこなわれていないが


変数xのスコープは


void f(int x){👉


cout << x << "をとりこみました。\n";


👈}



👉👈内なんだろう😊」




てんC「そうなんです。


ですので


先程のプログラムのmain関数内に


命令文


cout << x << "をとりこみました。\n";


を追加した次のプログラム

👇


#include <iostream>


using namespace std;


void f(int x){


cout << x << "をとりこみました。\n";


}


int main(){


f(1);

f(1);

f(1);


cout << x << "をとりこみました。\n";


/*ここに変数xを含んだ命令文を追加しました*/


return 0;


}


をビルド実行しようとしても


エラー C2065 'x': 定義されていない識別子です。

エラー (アクティブ) E0020 識別子 "x" が定義されていません


と表示されます。


つまり


自作関数の()内でxの変数宣言が行われると


void f(int x){👉


cout << x << "をとりこみました。\n";


👈}


👉👈で示す範囲が変数xのスコープとなります。


ですので


main関数内の


cout << x << "をとりこみました。\n";



xは


変数xのスコープの外で使用されていることになり


cout << x << "をとりこみました。\n";


をビルド実行しようとすると


このxが定義されていないというビルドエラー表示が


でてくることになります。


main関数内で変数xを使用するには


やはり


main関数のブロック{}内でxの変数宣言を実行する必要があります」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る