天国にいけるC言語入門 ヘキサ構造体 ver3.2128
🌞自作関数15 自作関数void f(int x)のint xにmain関数で定義された変数aを代入してf(a);を実行しても変数aはmain関数のローカル変数のままです。
🌞自作関数15 自作関数void f(int x)のint xにmain関数で定義された変数aを代入してf(a);を実行しても変数aはmain関数のローカル変数のままです。
ソーラー 「ねえ、アレサ 次のプログラムをみてみよう
#include <stdio.h>
// 👇このint x
void f(int x){
printf("%dをとりこみました。\n",x);
}
int main(void){
f(1);
f(1);
f(1);
return 0;
}
プログラムの実行結果
1をとりこみました。
1をとりこみました。
1をとりこみました。
この自作関数f内のint xはどの関数の
ローカル変数になるのかな?
自作関数fのローカル変数になるのかな?
main関数のローカル変数になるのかな?
main関数内で
f(1);と数値1を代入してるよね
それともint xはグローバル変数なのかな?
👇このint xは・・・
#include <stdio.h>
👇このint x
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の変数宣言、定義がされていますね
この場合
xは
自作関数fのローカル変数になります
main関数内で
f(1);
が実行されるときは
int xに1が代入された状態で
printf("%dをとりこみました。\n",x);
が実行されることになります
f(1);
は
int x=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は自作関数fの定義の
👇
void f(int x){
printf("%dをとりこみました。\n",x);
}
void f()内で変数宣言されているので
自作関数fのローカル変数です
f(a);と記述されても
変数aは自作関数fのローカル変数でなく
main関数のローカル変数のままです
f(a);では
int xに
変数aを代入して数値10を
変数xにわたしているのですが
main関数のローカル変数aが自作関数fのローカル変数となったわけではありません
(int x=a; が実行されて変数ⅹに変数aの格納している値が代入されているだけです)
どうかな、どうかな ソーラーさん(^^)」
ソーラー 「ローカル変数同士は
お互い 別の関数の変数だけど
このように
main関数で変数宣言された変数aを
自作関数fで変数宣言された変数xに代入して
変数aが格納している数値データをわたすことができるんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます