名前渡し
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/20 07:25 UTC 版)
ALGOLで採用されていた特徴的な機能の一つである。名前渡しでは値でも参照でもなく、式がそのまま渡される。基本的には参照渡しのように振る舞うが、式を参照するごとに値を計算して取り出す事が特徴である。C言語のプリプロセッサのマクロ展開と似ているが、引数と、ローカル変数が衝突しないように配慮はされる。次のような例は名前渡しに特徴的な動作と言われる。 swap(x,y) { tmp = x; x = y; y = tmp;} この例に対し、x=i, y=a[i]という"式"を渡すとする。仮にi=2だったとすると、 tmp = x; x=i=2 なのでtmpは2になる。 x = y; xはiを渡されているのでiがyの値になる。yはa[i]だから、iはaの2番目の値になる。 y = tmp; yはaのi番目の値だが、前手順によりiはa[2]になっている。従ってy=a[a[2]]になる。 このような複雑さもあって、ALGOL以外で名前渡しが採用された事例はほとんどない。
※この「名前渡し」の解説は、「引数」の解説の一部です。
「名前渡し」を含む「引数」の記事については、「引数」の概要を参照ください。
- 名前渡しのページへのリンク