- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ポインタなどからの比較。)
ポインタなどからの比較
このQ&Aのポイント
- この質問では、ポインタを使用して変数の値やアドレスを比較するプログラムが示されています。
- 最初のプログラムでは、変数aと変数bの値とアドレスが表示されます。変数bには変数aのアドレスが代入されています。
- 2つ目のプログラムでは、変数aとポインタbの値とアドレスが表示されます。bは変数aのアドレスを指すポインタです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
上のほうは、floatの値を入れる領域a、bの値とアドレスを表示していますね。 floatを格納できるaの箱とbの箱を書いて見て下さい。 a = 10.0; ではaの箱に10.0を代入するだけですからaの中身だけが変わってそのほかは変更されませんよね。 b = 20.0; もbが変わるだけで同様ですね。 最後の a = b; では aにbの「内容を」代入するわけですからaは20となりますよね。 下のほうは、floatの値を入れる領域aとfloatの領域を指すポインタbがあります。 floatを格納できるaの箱とポインタを格納できるbの箱を書いてください。 aの箱には0.0が代入されて、bの箱にはaのアドレスが代入されていますよね。 a = 10.0; は上の例と同様ですよね。 *b = 20.0; は ポインタbが指すアドレスへ20.0を代入するわけですから、bの指すアドレスの内容が20.0になります。 bはaのアドレスを指していますので、結果的にはaの内容が20.0になります。 よって、下のアドレスはどちらも同じアドレスを指しますし、結果も同じ値となるわけです。 こんな感じでいかがでしょうか?
その他の回答 (1)
- jacta
- ベストアンサー率26% (845/3158)
回答No.1
いずれも、書式指定と実引数が矛盾しているので、それらの動作は未定義です。処理系を特定するのならともかく、一般論で言えば、それぞれの結果は「たまたま」そうなっただけです。
お礼
あいrがとうございます。 すごい親切に教えていただきありがとうございました。 とても参考になりました。 これでレポートが書けそうです。