🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
main関数内で配列宣言された配列の配列変数に格納されている数値データを配列でなく配列変数を自作関数の引数に用いることにより自作関数に値渡しすることができます。
main関数内で配列宣言された配列の配列変数に格納されている数値データを配列でなく配列変数を自作関数の引数に用いることにより自作関数に値渡しすることができます。
ソーラー「自作関数の引数となっているint hairetu[]に
main関数内で定義された配列newhairetuの配列変数に
格納されているデータをわたすときは
配列newhairetuのアドレスを格納したポインタ変数newhairetuを
int hairetu[]に代入していました。
つまり
配列newhairetuのアドレスを自作関数の引数に渡すことになるので
参照渡し(ポインタ渡し)となっていました。
そして
自作関数の引数となっているint hairetu[]に配列newhairetuのデータをわたす方法は
配列newhairetuのアドレスを格納したポインタ変数newhairetuを
int hairetu[]にわたす
この参照渡し(ポインタ渡し)の方法しかなく
値渡しはできなかったね。
では😊
main関数内で定義された配列の配列変数に
格納されている数値データを
配列変数を
自作関数の引数に直接代入することにより
値渡しすることは可能なのでしょうか?
どう 思う?」
てんC「普通に考えると
次のようにプログラムを構成して確かめてみればよいのではないですか?
まず
void newmadefunction(int x)のように
👆
自作関数の
引数をint xに設定します
次に
main関数内の配列宣言、初期化
int newhairetu={1,2,3,4,5};
により
配列newhairetu内に生成された
配列変数
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
に
newhairetu[0]=1;
newhairetu[1]=2;
newhairetu[2]=3;
newhairetu[3]=4;
newhairetu[4]=5;
と数値データを格納します
あとは自作関数の引数int xに
配列変数
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
を直接
代入することにより
数値データ
1
2
3
4
5
を
自作関数の引数int xに
渡してあげればいいのです
そのプログラムは
次のようになります。」
#include <iostream>
using namespace std;
void newmadefunction(int x) {
x = x * 2;
cout<<x<<"\n";
}
int main() {
int newhairetu[] = { 1,2,3,4,5 };
newmadefunction(newhairetu[0]);
newmadefunction(newhairetu[1]);
newmadefunction(newhairetu[2]);
newmadefunction(newhairetu[3]);
newmadefunction(newhairetu[4]);
/*自作関数newmadefunction(int x)の引数であるint xに
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
を代入しています*/
cout<<newhairetu[0]<<"\n";
cout<<newhairetu[1]<<"\n";
cout<<newhairetu[2]<<"\n";
cout<<newhairetu[3]<<"\n";
cout<<newhairetu[4]<<"\n";
return 0;
}
ビルド実行結果
2
4
6
8
10
1
2
3
4
5
てんC「
自作関数の引数であるint xに
直接
配列newhairetu内の配列変数
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
を代入
つまり
値渡しをして
自作関数の引数であるint xに
数値データ
1
2
3
4
5
だけを渡して
自作関数による操作を加え
ビルド実行結果
2
4
6
8
10
を表示することができました。
配列変数
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
をつかっての
数値データの
値渡しに成功です。
値渡しされているので
main関数内で定義された
配列newhairetu内の配列変数
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
に格納されている数値データは
ビルド実行結果をみてもわかるように
newhairetu[0]=1
newhairetu[1]=2
newhairetu[2]=3
newhairetu[3]=4
newhairetu[4]=5
のまま変化していません」
ソーラー「やったね
配列変数を自作関数の引数に代入すると
値渡しになるんだね😊
このとき
void newmadefunction(int x){
x=x*2;
printf("%d\n",x);
}
の定義を見ても分かるように
newmadefunction(newhairetu[0]);
newmadefunction(newhairetu[1]);
newmadefunction(newhairetu[2]);
newmadefunction(newhairetu[3]);
newmadefunction(newhairetu[4]);
が実行されると
それぞれの命令文の実行ごとに
変数xが作製され
変数xに
配列newhairetu内の配列変数
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
が代入されることにより
変数xに
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
に格納されている数値データ
1
2
3
4
5
が代入されています。
そして
自作関数の定義の
x=x*2;
が実行されて
変数xに格納されている数値データが2倍にされても
newhairetu[0]
newhairetu[1]
newhairetu[2]
newhairetu[3]
newhairetu[4]
に格納されている数値データは
1
2
3
4
5
のままかわらないんだね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます