• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:rubyにおける変数と代入のメモリの様子について)

rubyにおける変数と代入のメモリの様子

このQ&Aのポイント
  • Rubyの変数と代入演算は、メモリについてどのような扱いになっているのでしょうか。
  • Rubyの代入演算は、アドレスを代入しているのか、新しいオブジェクトを作ってそのアドレスを代入しているのか疑問です。
  • 初心者の質問ですが、Rubyにおいて変数に対してどのような仕組みが働いているのか教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

……えーと、ちっょと混乱してませんか? まず、Ruby で扱ってるのはポインタでもアドレスでもなく参照です。 参照はポインタと違って演算することも直接値を指定することもできません。 というか、そういった危険な動作をできなくしたポインタ「のようなもの」です。 次に、あなたが提示された例ですが、C のポインタでも以下の通り動作は同じです。 int main(int argc, char** argv) { /* ポインタ参照先として用意 */   int a1 = 1;   int a2 = 2; /* 使用するポインタ */   int* p1;   int* p2; /* 1点目 */   p1 = &a1;   p2 = p1;   p1 += 42;   printf("p2が指す先の値 : %d\n", *p2); /* 結果は43 */ /* 2点目 */   p1 = &a1;   p2 = p1;   p1 = &a2;   printf("p2が指す先の値 : %d\n", *p2); /* 結果は 2 ではなく 43 */   return 0; }

denshihakoma
質問者

お礼

混乱していました(笑) 書いてくださったCのコードを見て分かりました。 ありがとうございます。

関連するQ&A