引数
PL/Iでは、どちらの方法で実装しても良いと規定されている。
原始的な言語であるFORTRANは機械語のアドレス操作を反映した参照渡ししか持たなかった。これは特にcall by indexと呼ばれている。
他に変数渡しをサポートする言語としては、Pascal、Perl、C++、C#、Quick BASIC等の構造化BASICなどが挙げられる。
なお変数渡しの関数・サブルーチンに、実引数として変数以外(右辺値)を渡した場合にどうなるかは、言語によって異なる。そのような操作が禁止されており、エラーが発生する言語(Pascal等)、テンポラリな変数を作成し、リターン時にそれを捨ててしまうため、値渡しと同じことができる言語(Quick BASIC等)、「未定義の動作」をひきおこし、何が起こるか全く予測がつかない言語(FORTRAN等)がある。C++ではconst修飾されていない型への参照に右辺値を渡すとエラーになるが、const修飾されていれば一時オブジェクトが作成され、また右辺値のみを参照できる「右辺値参照」が存在する。
仮引数(かりひきすう、かびきすう、parameter、formal parameter (formal argument))とは、手続き(プロシージャー)で定義される変数のうち、実行時に呼び出し元から渡される(実引数の)値を受けるものをいう。例としてC言語系言語における定義を挙げる:
上の定義では、
int 型の仮引数 addend1
int 型の仮引数 addend2
2つを伴った関数 sum を定義している。定義の中で addend1 と addend2 が変数のように使用されていることに注目されたい。