void f(int x)型の自作関数fの()内で変数宣言された変数xのスコープも自作関数fの定義のブロック{}内となります
void f(int x)型の自作関数fの()内で変数宣言された変数xのスコープも
自作関数fの定義のブロック{}内となります
(ようは変数xの使用可能範囲は自作関数fの定義のブロック{}内となります)
さあvoid f(int x)型の自作関数があらわれました。
この自作関数fの()内で変数宣言された変数xのスコープ(変数宣言された変数xの使用可能範囲)は
どうなっているのでしょうか?
#include <stdio.h>
void f(int x){
printf("%dをとりこみました。\n",x);
}
int main(void){
f(1);
f(1);
f(1);
return 0;
}
プログラムの実行結果
1をとりこみました。
1をとりこみました。
1をとりこみました。
マックス「void f(int x){}型の自作関数fは自作関数fの定義のブロック{}内で
変数宣言int xがおこなわれていないが
変数xのスコープは
void f(int x){👉
printf("%dをとりこみました。\n",x);
👈}
👉👈内なんだろう😊」
アレサ「そのとおりなんです。
ですので
今のプログラム内の
main関数内に
命令文
printf("%dをとりこみました。\n",x);
を
追加した次のプログラム
#include <stdio.h>
void f(int x){
printf("%dをとりこみました。\n",x);
}
int main(void){
f(1);
f(1);
f(1);
printf("%dをとりこみました。\n",x);
/*👆ここに変数xを含んだ命令文を追加しました*/
return 0;
}
を実行しても
(Visual Studioの場合)
識別子 "x" が定義されていません
(EAZY IDECの場合)
x が定義されていません
とエラーが表示されます。
つまり
自作関数fの()内でxの変数宣言が行われると
void f(int x){👉
printf("%dをとりこみました。\n",x);
👈}
👉👈で示す範囲が変数xのスコープとなります。
ですので
main関数内の
printf("%dをとりこみました。\n",x);
の
printf関数の第2引数であるxは
変数xのスコープの外で使用されていることになり
printf("%dをとりこみました。\n",x);
を実行しようとすると
このxが定義されていないというエラーが表示されることになります
main関数のブロック{}内で変数xを使用するには
やはり
main関数のブロック{}内でxの変数宣言を実行する必要があります」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます