値渡し 【call by value】 値呼び出し
概要
値渡し(call by value)とは、コンピュータプログラム中で関数やプロシージャなどに渡す引数として変数などを指定する際、その値のみを引き渡す方式。渡された引数の値を変更しても呼び出し元の変数の値は更新されない。プログラム中で関数などを呼び出す際に、処理に反映させるパラメータなどを呼び出し元が指定することができる。呼び出し元が呼び出し文中で指定するものを実引数、呼び出された側が実引数を受け取るために用いる変数などを仮引数という。
実引数として定数やリテラルを渡す場合には、仮引数にその値が代入されて処理に用いられるだけだが、実引数に呼び出し側が使用している変数やオブジェクトなどを指定する場合、実引数の変数名で表される実体と仮引数の変数名で表される実体との関係をどのように扱うかという問題がある。
値渡しはリテラルなどを渡すのと同じように値が仮引数に複製されて処理に用いられる方法で、仮引数の変数の内容を変更しても、呼び出し元の実引数の変数には何の影響も及ぼさない。
一方、実引数と仮引数が完全に同じ実体を表すように引数を受け渡すことを「参照渡し」(call by reference)という。参照渡しされた仮引数へ加えられた変更はすべて呼び出し元の実引数にも反映されている。
(2018.12.16更新)