ローカル変数のスコープ(変数の使用可能な範囲)は そのローカル変数が宣言された{}(ブロック)内となります

複数のローカル変数のスコープ(変数宣言により作製された変数の使用可能な範囲)を考察してみましょう。


マックス「次のプログラムは~


むふふ


int a;

int b;

int c;


はmain関数のブロック{}内で変数宣言されているので


変数

a

b

c


main関数のローカル変数だ(^_-)-☆


はははあ 簡単だなあ~~」


#include <stdio.h>


int main(void){

int a;

int b;

int c;

for(a=1;a<3;a++)

{

for(b=1;b<4;b++)

{

for(c=1;c<5;c++)

{

printf("%d回目のご飯はNouvel de かつおです\n",c);

}

}

}

return 0;

}


ソーラー 「そうなんです。


int a;

int b;

int c;


はmain関数のブロック{}内で変数宣言されているので


変数a、b、cは


グローバル変数でなく


main関数のローカル変数なんです😊


ところで


ローカル変数宣言

int a;

int b;

int c;

によって作成された


ローカル変数a

ローカル変数b

ローカル変数c

のスコープ(変数の使用可能な範囲)は


どこからどこまでなのでしょうか?


ローカル変数は


ローカル変数が宣言されたブロック内が


スコープ(変数の使用可能な範囲)となります


ですので


ローカル変数a

ローカル変数b

ローカル変数c

のスコープ(変数の使用可能な範囲)は


main関数のブロック{}内の


👉と👈で示された範囲が


スコープ(変数の使用可能な範囲)


となります。」


#include <stdio.h>

int main(void){

int a;👉

int b;👉

int c;👉


for(a=1;a<3;a++)

{

for(b=1;b<4;b++)

{

for(c=1;c<5;c++)

{

printf("%d回目のご飯はNouvel de かつおです\n",c);

}

}

}

return 0;👈👈👈

}



このプログラムでは


for(a=1;a<3;a++)

for(b=1;b<4;b++)

for(c=1;c<5;c++)

が記述されている


同じブロック{}内で


先に

ローカル変数宣言

int a;

int b;

int c;

が行われているので


変数a

変数b

変数c

が変数宣言されていないので


for(a=1;a<3;a++)

for(b=1;b<4;b++)

for(c=1;c<5;c++)


のfor文

が機能しないということはないんですね。」



マックス「まあ そうだろう」


ソーラー「


for(a=1;a<3;a++)

for(b=1;b<4;b++)

for(c=1;c<5;c++)

事前に

変数a

変数b

変数c

が変数宣言されて作製されていないと


プログラムを実行した場合


プログラムの実行結果(EAZY IDECの場合)

aは定義されていません

bは定義されていません

cは定義されていません


ビルド実行結果(Visual Studioの場合)

識別子 "a" が定義されていません

識別子 "b" が定義されていません

識別子 "c" が定義されていません


と表示され機能しないのです


変数のスコープには注意する必要があるわけだね」







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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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