青山です。 なかなかまとまらず済みません。C++ で間違った記述をするとさらにややこし くなるので、C でいきます。 On Fri, 5 Nov 1999 22:50:04 +0900, Wakou Aoyama <wakou / fsinet.or.jp> wrote: > void foo(int *n) { > *n = 1; > } > main() { > int obj; > int *n = &obj; /* int *n; n = &obj; */ > *n = 0; > foo(n); /* *n => 1 */ > } > > 参照の値渡し。(C++ での参照を使った書き方はわかりません。というか、書 > けないような気も。) ちょっと違いますね。やはり参照の参照渡しと言うべきのような。いや、参照 *を*参照渡しですね。 で、参照を値渡し。(値返し) int foo(int n) { n = 1; return n; } main() { int obj; int *n = &obj; *n = 0; *n = foo(*n); } 値を参照渡し。 void foo(int *n) { *n = 1; } main() { int n = 0; foo(&n); } 値を値渡し。(値返し) int foo(int n) { n = 1; return n; } main() { int n = 0; n = foo(n); } で、Ruby は、参照を参照渡し、参照返し。 int* foo(int *n) { *n = 1; return n; } main() { int obj; int *n = &obj; *n = 0; foo(n); /* n = foo(n); などなど */ } すべての操作がリファレンスベース。 -- 青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>