- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:rubyにおける変数と代入のメモリの様子について)
rubyにおける変数と代入のメモリの様子
このQ&Aのポイント
- Rubyの変数と代入演算は、メモリについてどのような扱いになっているのでしょうか。
- Rubyの代入演算は、アドレスを代入しているのか、新しいオブジェクトを作ってそのアドレスを代入しているのか疑問です。
- 初心者の質問ですが、Rubyにおいて変数に対してどのような仕組みが働いているのか教えていただけないでしょうか。
- みんなの回答 (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; }
お礼
混乱していました(笑) 書いてくださったCのコードを見て分かりました。 ありがとうございます。