青山です。

On Sat, 6 Nov 1999 12:56:15 +0900,
Shin-ichiro HARA <sinara / blade.nagaokaut.ac.jp> wrote:

>   C言語では変数の参照渡しは存在しない
> 
> というのを定説としてFIXしませんか?K&Rにもそうい
> う意味の記述があるし。従って、

わかりました。話がややこしくなっていたのは、参照渡しという、存在しない
物の話をしていたからですね。C での話に限定するならば、もう一つの定説
(?)として、これが必要ですね。

  ポインタは参照ではない。(アドレス)値である。

ポインタはその名前から参照のように思われがちだが(そう教えている場合が
多そう)アドレスであり、参照ではなく、値である。

ポインタが参照と思われている(教えられている?)ため、最近(?)ではポイン
タ渡しを参照渡しと呼ぶような流れがあるが、元々は単なる(アドレス)値渡し
であり、参照渡しでは無い。

という感じでしょうか。そして、逆にこれがしっかり染み着いているというか、
ポインタをアドレス値としてしか認識していないと、アドレス値(ポインタ)の
演算と、そのアドレスにある値の演算の区別が必要というような、新たな話が
また発生するのですが。(ruby-dev の方で、えぐちさんがこれを指摘)

他言語で説明するのはやはり無理があるという感じでしょうか。根は深そうで
すね。

> したがって、Ruby では参照の値渡しだ、と言う時もCを念
> 頭においてのことと限定すべきかと思います。

上記のような感じで参照渡しという言葉を無くすと、「参照値渡し」という感
じでしょうか。参照値の値渡しですね。(しかし、これだとあまりにも実装よ
りで、普通(?)の人への説明にはちょっと凝りすぎという感じも。C べったり
ではなく、一般的には、やはり「参照渡し」でしょうかね。難しいところです。)


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>