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