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

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

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


むふふ


int a;

int b;

int c;


はmain関数内で変数宣言されているので


変数

a

b

c


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


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


#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は


グローバル変数でなく


ローカル変数なんです😊


ところで


ローカル変数宣言

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(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で共有
  • はてなブックマークでブックマーク

作者を応援しよう!

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

応援したユーザー

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