1 00:00:00,000 --> 00:00:03,080 >> スピーカ1:それは私たちが解決できます 首尾よく2で値を交換 2 00:00:03,080 --> 00:00:07,670 にそれらを渡すことによって、変数 値ではなく、コピーすることで機能しますが、 3 00:00:07,670 --> 00:00:10,390 参照するか、またはそのアドレスによって。 4 00:00:10,390 --> 00:00:12,740 言い換えれば、我々は活用する必要があります ポインタとして知られているもの。 5 00:00:12,740 --> 00:00:15,580 ポインタは、実際には、単にある いくつかの変数のアドレス。 6 00:00:15,580 --> 00:00:19,660 そして私たちは、呼び出された関数を提供する場合 たとえば、アドレスを交換する 7 00:00:19,660 --> 00:00:23,550 変数と別のアドレス 変数、スワップに権限を与えられるべきである 8 00:00:23,550 --> 00:00:26,090 それらのアドレスのそれぞれに行く そして、実際に変更 9 00:00:26,090 --> 00:00:27,360 ある値。 10 00:00:27,360 --> 00:00:28,890 >> のコンテキストでこれを見てみましょう。 11 00:00:28,890 --> 00:00:31,360 次のようにのスワップを再実装してみましょう。 12 00:00:31,360 --> 00:00:35,810 最初に、int型ではないと変更してみましょう しかし、int型へのポインタまたはすべき 13 00:00:35,810 --> 00:00:36,920 int型のアドレス。 14 00:00:36,920 --> 00:00:40,820 そして、変化する、のはBのために同じことをやってみましょう int型から、体へのポインタであると 15 00:00:40,820 --> 00:00:42,780 intまたはint型のアドレス。 16 00:00:42,780 --> 00:00:45,860 >> 次に、スワップの内側に、まだみましょう 我々が持っているように、TMPを宣言 17 00:00:45,860 --> 00:00:47,810 の値の一時的な場所。 18 00:00:47,810 --> 00:00:52,430 しかし、の値は、それ自体ではない、なぜなら、 もう一度、Aは今のアドレスです 19 00:00:52,430 --> 00:00:53,270 いくつかのint型の。 20 00:00:53,270 --> 00:00:57,320 だから我々はそのアドレスに移動する場合や そのアドレスにint型を取得し、我々は持っている 21 00:00:57,320 --> 00:01:03,020 このポインタを間接参照、また経由で スターオペレーター、スターAを書いて。 22 00:01:03,020 --> 00:01:05,470 >> 次に、私は変更したくない の値。 23 00:01:05,470 --> 00:01:08,770 Iは、ある値を変更する 再度、覚えておいて、 24 00:01:08,770 --> 00:01:10,350 そのAがアドレスです。 25 00:01:10,350 --> 00:01:14,050 そうそのためには、私は再び必要に 回答をスターAが取得します。 26 00:01:14,050 --> 00:01:18,360 そして今、私は値を入れたい すなわち、b項にbの値ではないもの 27 00:01:18,360 --> 00:01:19,720 また、アドレスです。 28 00:01:19,720 --> 00:01:22,280 >> だからもう一度、私は、スターのBと言う。 29 00:01:22,280 --> 00:01:26,690 その後、私の最後の行で、私のことを行う必要があり bとアドレスにあるものに上書き 30 00:01:26,690 --> 00:01:28,970 Aの元の場所にあったもの。 31 00:01:28,970 --> 00:01:32,910 そのためには、私はスターBはTMPを取得しております。 32 00:01:32,910 --> 00:01:34,820 >> 今、一日の終わりに、この この関数は単にまだある 33 00:01:34,820 --> 00:01:35,950 3行のコード。 34 00:01:35,950 --> 00:01:39,860 しかし、それはだから値を操作する それらのアドレスを経由してではない 35 00:01:39,860 --> 00:01:43,700 に渡された生の値 機能、私はスワップが今であることを主張 36 00:01:43,700 --> 00:01:47,670 その値を変更する権限を与え そのアドレスを経由して渡されます。 37 00:01:47,670 --> 00:01:49,510 >> しかし、私はまだ1変更を加える必要があります。 38 00:01:49,510 --> 00:01:52,190 私はもはや渡すことはできません xとyの自分自身。 39 00:01:52,190 --> 00:01:55,030 私はアドレスを渡す必要があり xとyの。 40 00:01:55,030 --> 00:01:58,160 そしてそのためには、私は少しいくつかを必要とする 異表記までトップ。 41 00:01:58,160 --> 00:02:02,510 私は渡すことによって、xとyを交換したい で示される、xのアドレス、 42 00:02:02,510 --> 00:02:07,190 アンパサンドxおよびアドレス yは、アンパサンドyによって示される。 43 00:02:07,190 --> 00:02:10,570 >> 同様に、トップまで、今私がする必要がありますか への関数のプロトタイプを変更する 44 00:02:10,570 --> 00:02:14,980 私が行った変更と一致し、その結果、 再び、int型へのポインタである。 45 00:02:14,980 --> 00:02:17,190 Bは、再び、int型へのポインタである。 46 00:02:17,190 --> 00:02:18,770 そして今、私は私のファイルを保存することができます。 47 00:02:18,770 --> 00:02:20,680 とのは、それを再コンパイルして実行してみましょう。 48 00:02:20,680 --> 00:02:25,330 >> スワップドットスラッシュスワップを行います。 49 00:02:25,330 --> 00:02:29,660 このとき、x、yは現在確かである それらの値がないことを、このようなスワップ 50 00:02:29,660 --> 00:02:31,950 図1及び図2が、2と1。 51 00:02:31,950 --> 00:02:34,900