青山です。 On Fri, 5 Nov 1999 20:35:43 +0900, 堀川 久<vzw00011 / nifty.ne.jp> wrote: > >void foo(int obj) { > > int *n; > > n = &obj; > > *n = 1; > >} > >main() { > > int obj; > > int &n = obj; > > n = 0; > > foo(n); // n=>1 > >} > > 何がしたいのか分かりませんけど。main()の最後,n = 1になりません。 あら、やはり。 ああ、なるほど。foo() の中の n = &obj (参照のアドレスを取る)は、やはり 出来ない(禁止されている)んですね。ポインタでいくと、こんな感じのつもり でした。 void foo(int *n) { *n = 1; } main() { int obj; int *n = &obj; /* int *n; n = &obj; */ *n = 0; foo(n); /* *n => 1 */ } 参照の値渡し。(C++ での参照を使った書き方はわかりません。というか、書 けないような気も。) で、これが、C++ の例(参照の参照渡し)よりも、Ruby に近い。と、そういう 話でした。 void foo(int &n) { n = 1; } main() { int obj; int &n = obj; n = 0; foo(n); // n=>1 } おそらく、こういう意味で、参照渡しではなく、値渡しと言いたかったのです よね?>原さん ----- しかし、C++ の参照呼び出し(受け取り)関数は、引数が変数の場合は、その変 数への参照を渡すものの、引数が参照の場合には、その参照の値を渡している のでしょうね。引数の型によって挙動が変わる、ハイブリッドタイプとも言え るかも。ややこしい。 -- 青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>