青山です。 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>