自作関数を使って 変数aに格納されている数値データと 変数bに格納されている数値データを 交換してみよ~う
ソーラー「さあ
次は自作関数を使って
変数aに格納されている数値データと
変数bに格納されている数値データを
交換してみよ~う
tres bien(トレビア~ン)
#include <stdio.h>
void function(int x, int y){
int c;
c=x;
x=y;
y=c;
}
int main(void){
int a=1;
int b=2;
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
function(a,b);
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
return 0;
}
コンパイル結果
(EAZY IDECの場合)
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
ビルド結果
(Visual studioの場合)
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
ソーラー「さあさ、みんな~
なにをやっているのか
さっぱり分からないねぇ~~~😊
僕もわからないんだ~~
ははははは~~~~~」
アレサ「ソーラーさん
今
自作関数を使って
変数aに格納されている数値データと
変数bに格納されている数値データを
交換してみよ~う
といっておられましたが・・・」
ソーラー「確かそんなこともあったよ・・・」
アレサ「前のエピソードでは
変数aと変数bに格納されている数値データの交換をされていました。
#include <stdio.h>
int main(void){
int a=1;
int b=2;
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
int c;
c=a;
a=b;
b=c;
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
return 0;
}
コンパイル結果
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは2です
変数bに格納されている数値データは1です
アレサ「👆この前のエピソードのプログラムを
自作関数を使って書き換えたものが
このエピソードで取り扱っているプログラムとなっています
👇」
#include <stdio.h>
void function(int x, int y){
int c;
c=x;
x=y;
y=c;
}
int main(void){
int a=1;
int b=2;
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
function(a,b);
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
return 0;
}
コンパイル結果
(EAZY IDECの場合)
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
ビルド実行結果
(Visual studioの場合)
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
アレサ「どうでしょうか?」
ソーラー「そこまで解析されるとはおもってもみなかったよ・・・」
アレサ「この前のエピソードのプログラムの
int c;
c=a;
a=b;
b=c;
の部分を
自作関数の定義を
void function(int x, int y){
int c;
c=x;
x=y;
y=c;
}
として
自作関数
function(a,b);
で置き換えたのが
今のエピソードのプログラムとなっています。」
ソーラー「おお娘や・・
tre bien(トレビア~~~ン)」
アレサ「ですが
自作関数functionを使った
今のエピソードのプログラムを
よくご覧ください」
#include <stdio.h>
void function(int x, int y){
int c;
c=x;
x=y;
y=c;
}
int main(void){
int a=1;
int b=2;
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
function(a,b);
printf("変数aに格納されている数値データは%dです\n",a);
printf("変数bに格納されている数値データは%dです\n",b);
return 0;
}
コンパイル結果
(EAZY IDECの場合)
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
ビルド実行結果
(Visual studioの場合)
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
アレサ「コンパイル結果
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
変数aに格納されている数値データは1です
変数bに格納されている数値データは2です
を見てもお分かりいただけますように
前のエピソードのプログラムと違い
今のエピソードのプログラムでは
変数aに格納されている数値データと
変数bに格納されている数値データが交換されていません。」
ソーラー「ふふふ 値渡しがおこなわれているってことかな。
自作関数の定義は
void function(int x, int y){
int c;
c=x;
x=y;
y=c;
}
となっているよね
function(a, b);
が実行されるとき
この自作関数の引数となっているint xとint yに
main関数内で変数宣言された
変数aと変数bが代入されているんだね。
そう ここで 値渡しのシステムが登場してくるんだ
この自作関数の引数となっているint xとint yに
main関数内で変数宣言された
変数aと変数bが代入されているんだけど
実際には
この自作関数の引数となっている
int xには
変数aに格納されている数値データ1
が
int yには
変数bに格納されている数値データ2
が代入されているんだ。
そう 変数a,変数bが格納している数値データだけが
int x
int y
にわたされているんだね。
つまり
その状態では
x=1;
y=2;
が実行されていることに等しいわけだ
ここで
int c;
c=x;
x=y;
y=c;
が実行されると
変数cに格納される数値データは1
変数xに格納される数値データは2
変数yに格納される数値データは1
となります
つまり
x=2;
y=1;
が実行されています」
アレサ「ソーラーさん
変数x
変数y
に格納されている数値データが
x=1
y=2
から
x=2
y=1
に変更されています(*´▽`*)」
ソーラー「本当だね。
変
ということはもちろん
変数aに格納されてい|る数値データ1と変数bに格納されている数値データ2は《💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖》
つまり
変数aという名前の付いたメモリと
変数bという名前の付いたメモリとは
独立した
変数xという名前の付いたメモリに格納されている数値データと
変数yという名前の付いたメモリに格納されている数値データが
交換されても
変数aという名前の付いたメモリに格納されている数値データと
変数bという名前の付いたメモリに格納されている数値データは
交換されないってわけだね」
アレサ「function(a, b);
が実行されるとき
この自作関数の引数となっているint xとint yに
main関数内で変数宣言された
変数aの格納している数値データ1
と
変数bの格納している数値データ2
が
代入されている。
すなわち
というわけですね。」
ソーラー「やったね
これにて完了だね!」
アレサ「ソーラーさん・・・
このままでは
自作関数を実行しても
変数aに格納されている数値データ1
と
変数bに格納されている数値データ2
が交換されていません」
ソーラー「なんだってぇぇぇ!」
アレサ「ソーラーさん
また ボケる場所を
間違えられておられますの」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます