まずは変数のスコープについて学んでみましょう。変数のスコープとは変数宣言された変数が使用可能な範囲のことです

🌞自作関数10 main関数内で自作関数f(int a)がf(1);と記述されている場合 1は《《自作関数の引数内で変数宣言されたint a;》》に代入されています。

ソーラー「まだまだ いくよアレサ!


次はfor文をつかって


次のように定義された自作関数void f(void)

👇

void f(void){

int a=1;

printf("%dをとりこみました。\n",a);

}

を


繰り返し実行してみよう。


#include <stdio.h>


void f(void){

int a=1;

printf("%dをとりこみました。\n",a);

}


int main(void){

int b;

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

{

f();

printf("%dをとりこみました。\n",b);

}

return 0;

}

コンパイル結果


1をとりこみました。

1をとりこみました。

1をとりこみました。

2をとりこみました。

1をとりこみました。

3をとりこみました。

1をとりこみました。

4をとりこみました。



このプログラムでは


             f(); の命令文と


数値を1回目から4回目まで


b=1からb=4まで変えながら


       printf("%dをとりこみました。\n",b);の命令文の


2つの命令文が


for文により4回繰り返して実行されているよね。


簡単だったかな




では では


あらたなプログラムに挑戦します



      🌞void f(void)をvoid f(int a)にきりかえた🌞



次のプログラムのコンパイル結果はどうなるかな?


#include <stdio.h>


void f(int a){

printf("%dをとりこみました。\n",a);

}


int main(void){

int b;

for(b=1;b<5;b++){

f(1);

printf("%dをとりこみました。\n",b);

}

return 0;

}


アレサ

「f(1);ですか・・・


この1は自作関数


void f(int a){

printf("%dをとりこみました。\n",a);

}

の中の 🍅int a🍅に代入されています。


となると

f(1);の

コンパイル結果は

1をとりこみました。

と表示されます。



🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓

そうmain関数内でf(1);と記述されていても


1は自作関数の定義の()内のint a;に代入されています。

🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓



ですので


このプログラムのコンパイル結果は


             f(1); の命令文と


数値を1回目から4回目まで変えながら


       printf("%dをとりこみました。\n",b);の命令文の


2つの命令文が


4回くりかえして実行されて


コンパイル結果は


1をとりこみました。

1をとりこみました。

1をとりこみました。

2をとりこみました。

1をとりこみました。

3をとりこみました。

1をとりこみました。

4をとりこみました。


となります。」



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

作者を応援しよう!

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

応援したユーザー

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