皆さん、プログラミングを勉強していてこんな壁にぶち当たったことありませんか?
値渡しと参照渡しって何?
違いと使い分け方を詳しく知りたい!
本記事では、このような方の悩み・要望を解決するべく値渡しと参照渡しの説明を画像を用いて分かりやすく解決いたします。
基本的な内容から事細かに説明しているので、知識ほぼ0という方でも安心して最後まで見られる内容になっていると思います。
ぜひ、理解に役立ててみてください。
この記事でわかること
- 代入のイメージ
- 値渡しの使い方
- 参照渡しの使い方
変数への値の代入
まず、値渡しや参照渡しの説明をする前に、変数への代入のイメージをつかんでもらおうと思います。
これを理解していないと、値渡しや参照渡しの理解が難しいので、ちょっと微妙かもという方は必ず確認していきましょう。
代入のイメージを図を用いて確認
まず、プログラミングを行う上で知っておくべき代入のイメージについてです。
図のようなイメージで代入を行っていると思ってもらえれば大丈夫です。
基本的には、変数名をプログラム内で宣言すると、コンピュータ内にある空白スペースのどこかに、その変数用の箱が用意されます。
その箱は変数に値が代入されたときに、その値を入れておく箱となっているんです。
実際に上の図では『X=10』を行っているので、Xという箱に10が入っていることになります。
「こんなことを考えるのめんどくさくない?」と思うかもしれませんが、値渡しと参照渡しを理解するうえで非常に重要なので覚えておきましょう。
値渡しと参照渡し
代入のイメージがつかめたところで、値渡しや参照渡しの話に入っていこうと思います。
値渡しとは?
まず、値渡しについて図を用いて説明していきたいと思います。
値渡しでは、Xの箱の中に入っている値をコピーして、新たに用意したYの箱にそのまま入れるといった操作が行われています。
もちろん、X用の箱とY用の箱は別の場所に設置されているので、Yに10が代入された後はXとYに関係性は一切ありません。
そのため、『Y=5』という風にYに5を代入するとYの箱の中身のみが変化するといった形になっています。
Xに入っている値をYに渡すので値渡しと覚えておきましょう。
参照渡しとは?
続いて、参照渡しについてです。
こちらも同じように図を用いて説明していきたいと思います。
参照渡しでは、新たに用意したYの箱にXの箱が置いてある『住所(Xの箱が置いてある場所、いわゆる0のことです)』を入れることによって実現します。
なので、『print(Y)』を用いてYの箱の中身を見ようとすると、そこにはXの住所が入っているのでその住所まで飛ぶことが出来ます。
その住所まで飛ぶとXの箱の中身を見ることが出来るので、Xと同じ値が出力されます。
つまり、Yの箱に直接値を入れる必要がないというわけですね。
まとめ
今回は、値渡しと参照渡しの違いについて説明してきましたがいかがだったでしょうか。
値渡しと参照渡しは様々な言語で登場する用語で、どちらかの渡し方を避けて通るといったことはできません。
ぜひ、この機会に二つの値の渡し方のイメージをつかんでしまって、さまざまなプログラミング学習に生かしていきましょう。