>> スピーカ1：それは私たちが解決できます 首尾よく2で値を交換
にそれらを渡すことによって、変数 値ではなく、コピーすることで機能しますが、
参照するか、またはそのアドレスによって。
言い換えれば、我々は活用する必要があります ポインタとして知られているもの。
ポインタは、実際には、単にある いくつかの変数のアドレス。
そして私たちは、呼び出された関数を提供する場合 たとえば、アドレスを交換する
変数と別のアドレス 変数、スワップに権限を与えられるべきである
それらのアドレスのそれぞれに行く そして、実際に変更
ある値。
>> のコンテキストでこれを見てみましょう。
次のようにのスワップを再実装してみましょう。
最初に、int型ではないと変更してみましょう しかし、int型へのポインタまたはすべき
int型のアドレス。
そして、変化する、のはBのために同じことをやってみましょう int型から、体へのポインタであると
intまたはint型のアドレス。
>> 次に、スワップの内側に、まだみましょう 我々が持っているように、TMPを宣言
の値の一時的な場所。
しかし、の値は、それ自体ではない、なぜなら、 もう一度、Aは今のアドレスです
いくつかのint型の。
だから我々はそのアドレスに移動する場合や そのアドレスにint型を取得し、我々は持っている
このポインタを間接参照、また経由で スターオペレーター、スターAを書いて。
>> 次に、私は変更したくない の値。
Iは、ある値を変更する 再度、覚えておいて、
そのAがアドレスです。
そうそのためには、私は再び必要に 回答をスターAが取得します。
そして今、私は値を入れたい すなわち、b項にbの値ではないもの
また、アドレスです。
>> だからもう一度、私は、スターのBと言う。
その後、私の最後の行で、私のことを行う必要があり bとアドレスにあるものに上書き
Aの元の場所にあったもの。
そのためには、私はスターBはTMPを取得しております。
>> 今、一日の終わりに、この この関数は単にまだある
3行のコード。
しかし、それはだから値を操作する それらのアドレスを経由してではない
に渡された生の値 機能、私はスワップが今であることを主張
その値を変更する権限を与え そのアドレスを経由して渡されます。
>> しかし、私はまだ1変更を加える必要があります。
私はもはや渡すことはできません xとyの自分自身。
私はアドレスを渡す必要があり xとyの。
そしてそのためには、私は少しいくつかを必要とする 異表記までトップ。
私は渡すことによって、xとyを交換したい で示される、xのアドレス、
アンパサンドxおよびアドレス yは、アンパサンドyによって示される。
>> 同様に、トップまで、今私がする必要がありますか への関数のプロトタイプを変更する
私が行った変更と一致し、その結果、 再び、int型へのポインタである。
Bは、再び、int型へのポインタである。
そして今、私は私のファイルを保存することができます。
とのは、それを再コンパイルして実行してみましょう。
>> スワップドットスラッシュスワップを行います。
このとき、x、yは現在確かである それらの値がないことを、このようなスワップ
図1及び図2が、2と1。