三連単マルチ

プログラミングについての備忘録代わりに活用します。趣味の競馬予想も気が向けば。

参照渡し・値渡しについて

技術質問対策の一環として、技術用語に関して簡潔にまとめてアウトプットしていきます。

今回は「参照渡し・値渡し」について。

 

はじめに、「値渡し」や「参照渡し」とは、関数やメソッドにおける引数の渡し方の種類を表す用語です。

簡単に説明すると、

「値渡し (call by value)」は、変数の値をコピーする渡し方のことを言い、
「参照渡し (call by reference)」は、変数を共有するような渡し方のことを言います。

値渡しの場合は実引数の値がコピーされるため、仮引数に変更を加えても実引数には影響がありませんが、
参照渡しの場合は実引数と仮引数がメモリ上の同じ場所を指すため、仮引数が変更されると実引数も変更される、という違いがあります。

Rubyや多くのプログラミング言語は値渡しですが、「参照渡しというものがある」ということを知っておけばそれで十分な気もします。
ちなみに、「参照の値渡し(共有渡し)」というものもあるので、興味のある方は調べてみてはいかがでしょうか?