ポインタ渡し 【call by pointer】 参照の値渡し
概要
ポインタ渡し(call by pointer)とは、コンピュータプログラム中で関数やプロシージャなどに渡す引数として変数などを指定する際、その参照を表す値を複製して引き渡す方式。参照渡しにほぼ相当する機能として用意される。変数などを引き渡す際に呼び出し先でも同じ実体を表すように渡す方式を「参照渡し」(call by reference)というが、C言語では変数への参照をメモリ上のアドレス値で表す「ポインタ」(pointer)で、Javaではオブジェクトへの参照を参照型の値として管理しており、これらの言語では参照渡しに相当する機能をこの参照値を渡すことによって実現している。
呼び出し先で仮引数を操作すると呼び出し元の実引数にも反映される点は参照渡しと同じだが、新しいオブジェクトを生成して代入するなど、仮引数が指し示す参照先自体を変更するような操作を行うと、参照渡しと異なる動作となる(新しい参照先は呼び出し元に返却されない)。
本来の参照渡しは、実体の所在を表す値を格納した内部的な変数(ポインタに相当するもの)の所在を表す値(参照の参照)を渡すように実装されることもあるため、「参照の値渡し」の表現を借りて「参照の参照の値渡し」と説明されることもある。
(2021.8.9更新)