ポインタのアドレスを入れ替えることで 参照するアドレスを変更する形に作り直すものなのですが、
&…アドレスをあらわす *…中身をあらわす ことはわかるのですが、
入れ替えで *workの様にしてみてもエラーになるだけで、 全然思いつきません。
アドバイスお願いします。
アドレスを用いた数値の入れ替え
Re: アドレスを用いた数値の入れ替え
ぱっと見、ポインタの入れ替えの処理に問題は見あたりません。
こういう場合は、どんなエラーが出たか、エラーメッセージがあるならそれを貼り付けてくれると大変助かります。
こういう場合は、どんなエラーが出たか、エラーメッセージがあるならそれを貼り付けてくれると大変助かります。
Re: アドレスを用いた数値の入れ替え
最初のプログラムにはエラーがありません。
後で書いてある
work = *p_a;
は、もちろんエラーです。
p_aにアドレスが格納されており、
*p_aはその指しているアドレスに格納されているintです。
で、やりたいことは、何でしょうか?
aとbの中身をp_aとp_bを使っての入れ替えでしょうか?
後で書いてある
work = *p_a;
は、もちろんエラーです。
p_aにアドレスが格納されており、
*p_aはその指しているアドレスに格納されているintです。
で、やりたいことは、何でしょうか?
aとbの中身をp_aとp_bを使っての入れ替えでしょうか?
non
Re: アドレスを用いた数値の入れ替え
違いますよ。tape さんが書きました:&…アドレスをあらわす *…中身をあらわす ことはわかるのですが、
*…ポインタの中身が指し示す先の値をあらわす
ですね。
ポインタであろうとなかろうと、変数の中身は変数名であらわします。
ポインタ型の変数に何が入っているのかをじっくり考えてみてください。
Re: アドレスを用いた数値の入れ替え
すいません。 ポインタはつい最近習い始めたもので、まだあまりよく理解できていません。
この問題の前に、ポインタを使って2つの数を入れ替えなさいというプログラムを作りました。
それが最初のソースなんですが、
何がしたいかというより
ポインタのアドレスを入れ替えることで 参照するアドレスを変更する形に変更する
という問題の意味自体がわかっていません
ポインタはアドレスしか入らないと習ったのですが、最初のソースで正解ですか?
この問題の前に、ポインタを使って2つの数を入れ替えなさいというプログラムを作りました。
それが最初のソースなんですが、
何がしたいかというより
ポインタのアドレスを入れ替えることで 参照するアドレスを変更する形に変更する
という問題の意味自体がわかっていません
ポインタはアドレスしか入らないと習ったのですが、最初のソースで正解ですか?
Re: アドレスを用いた数値の入れ替え
見た限り最初のソースで正解です。
問題の意味は、
値そのものだけ値を交換しているのではなく、
アドレスを交換することにより値を交換しています。
仮にp_aのアドレスを10番地、p_bのアドレスを20番地とすると、
値そのものだけ値を交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:10番地→200
p_b:20番地→100
一方、
アドレスを交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:20番地→200
p_b:10番地→100
となります。
問題の意味は、
値そのものだけ値を交換しているのではなく、
アドレスを交換することにより値を交換しています。
仮にp_aのアドレスを10番地、p_bのアドレスを20番地とすると、
値そのものだけ値を交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:10番地→200
p_b:20番地→100
一方、
アドレスを交換の場合は
交換前
p_a:10番地→100
p_b:20番地→200
交換後
p_a:20番地→200
p_b:10番地→100
となります。