- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ポインタについて。)
ポインタについての問題
このQ&Aのポイント
- ポインタについての問題について考えた結果として、各変数にはそれぞれ以下の値が入っていると考えられます。
- n1には10が入っており、n2には20が入っています。
- p1には変数n1のアドレス0x3000が入っており、p2には変数n2のアドレス0x4000が入っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
★回答者 No.1 です。→間違った解答をしてしまいました。修正します。 ・間違った箇所は上から、3行目で以下のようになります。 これが正しい→「正しくは『20』、『20』、『0x1000』、『0x2000』になります。」 ・ごめんなさい。
その他の回答 (1)
- Oh-Orange
- ベストアンサー率63% (854/1345)
回答No.1
★間違っていますね! ・『*p1 = *p2』は『p1』のアドレス(0x1000番地)に、『p2』のアドレス(0x2000番地)の内容(数値)を代入します。 ・よって、正しくは『20』、『20』、『0x2000』、『0x2000』になりますよ。 ・もしも、間違った『10』、『20』、『0x2000』、『0x2000』にするためには『p1 = p2;』となります。 ・分かりますか? ・『*』はポインタの内容(数値)を参照したり、代入したりするのですよ。アドレス(番地)ではありません。 最後に: ・ポインタは『*』を付けたらアドレスの内容を参照または、代入します。よって、ポインタのアドレスは そのまま p1、p2 を操作すれば良いのです。 ・C言語は、『*』文字を付けるかどうかで、アドレス参照か、アドレス操作か分かれます。 ・以上。短いですが回答アドバイスを終わります。参考になりましたか?
お礼
ありがとうございます。 一応自分でプログラムを組んでやってみた結果が先に書いた結果だったのですが、回答を読ませていただいてよく分かりました! どうもありがとうございました。