🌞自作関数15 自作関数void f(int x)のint xにmain関数で定義された変数aを代入しても変数aはmain関数のローカル変数のままです。


ソーラー 「ねえ、アレサ 次のプログラムをみてみよう


#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をとりこみました。


この自作関数内のint xはどの関数の


ローカル変数になるのかな?


自作関数のローカル変数になるのかな?

main関数のローカル変数になるのかな?


main関数内で


f(1);と数値1を代入してるよね


それともグローバル変数なのかな?



👇このint 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をとりこみました。


アレサ 「この場合のint xは


main関数内でxの変数宣言、定義されておらず


自作関数void f(int x)の()内でxの変数宣言、定義がされているので


自作関数void f(int x)のローカル変数になります


そのローカル変数であるint xに1が代入されて


その後


main関数内でf(1);が実行されています」


ソーラー「では 次のプログラムをみてみようっかな?」



#include <stdio.h>


void f(int x){

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

}


int main(void){

int a=10;

f(a);

f(a);

f(a);


return 0;

}


コンパイル結果


10をとりこみました。

10をとりこみました。

10をとりこみました。



ソーラー「

f(a);

f(a);

f(a);

ってなってるよね。


この場合


変数a、変数xはどの関数のローカル変数になるのかな?」



アレサ「ソーラーさん、こうやってお話してると楽しいです。😊😊😊


この場合

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


main関数のローカル変数です


変数xは自作関数の定義の


void f(int x){

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

}


内の()で変数宣言されているので


自作関数のローカル変数です


f(a);と記述されても


変数aは自作関数のローカル変数でなく


main関数のローカル変数のままです


f(a);では


int xに


変数aを代入して数値10を


変数xにわたしているのですが


変数aが自作関数のローカル変数となったわけではありません


どうかな、どうかな ソーラーさん(^^)」


ソーラー 「ローカル変数同士は


お互い 別の関数の変数だけど


このように


main関数で変数宣言された変数を


自作関数で変数宣言された変数に代入して


格納している数値データをわたすことができるんだね」

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

作者を応援しよう!

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

応援したユーザー

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