1 00:00:00,000 --> 00:00:03,080 >> SPEAKER 1: Izkazalo se je, smo lahko Uspešno swap vrednosti v dveh 2 00:00:03,080 --> 00:00:07,670 spremenljivke po njih prehaja v delovati, ne glede na vrednost ali kopija, vendar 3 00:00:07,670 --> 00:00:10,390 glede ali njihovih naslovov. 4 00:00:10,390 --> 00:00:12,740 Z drugimi besedami, moramo vzvod Nekaj ​​znan kot kazalec. 5 00:00:12,740 --> 00:00:15,580 Kazalec, res, je samo naslov neke spremenljivke. 6 00:00:15,580 --> 00:00:19,660 In tako, če želimo zagotoviti funkcijo imenovano, recimo, zamenjali z naslovom 7 00:00:19,660 --> 00:00:23,550 spremenljivka in naslov drugo spremenljivka je treba swap podeliti pooblastila za 8 00:00:23,550 --> 00:00:26,090 pojdi na vsakega od teh naslovov in dejansko spremenili 9 00:00:26,090 --> 00:00:27,360 vrednote, ki so tam. 10 00:00:27,360 --> 00:00:28,890 >> Poglejmo to v kontekstu. 11 00:00:28,890 --> 00:00:31,360 Oglejmo reimplement zamenjave, kot sledi. 12 00:00:31,360 --> 00:00:35,810 Najprej, kaj je spremenilo, ne da bi int ampak da se kazalec na int ali 13 00:00:35,810 --> 00:00:36,920 naslov notr. 14 00:00:36,920 --> 00:00:40,820 Potem pa naredite enako za b, spreminjanje da iz notr, da bo kazalec 15 00:00:40,820 --> 00:00:42,780 int ali naslov notr. 16 00:00:42,780 --> 00:00:45,860 >> Potem notri zamenjave, dajmo še razglasi tmp, tako da imamo 17 00:00:45,860 --> 00:00:47,810 začasno mesto za vrednostne. 18 00:00:47,810 --> 00:00:52,430 Vendar je vrednost ne samo, ker Ponovno, je zdaj naslov 19 00:00:52,430 --> 00:00:53,270 nekaterih int. 20 00:00:53,270 --> 00:00:57,320 Torej, če želimo iti na ta naslov in dobili int na tem naslovu, imamo 21 00:00:57,320 --> 00:01:03,020 dereference ta kazalec, tudi s pomočjo Operater zvezda, pisanje STAR. 22 00:01:03,020 --> 00:01:05,470 >> Dalje, ne želim, da spremenite vrednost. 23 00:01:05,470 --> 00:01:08,770 Hočem, da spremenite vrednost na , vodenje v mislih, še enkrat, 24 00:01:08,770 --> 00:01:10,350 da je naslov. 25 00:01:10,350 --> 00:01:14,050 Tako, da to stori, spet potrebujem reči zvezda bolnikih. 26 00:01:14,050 --> 00:01:18,360 In zdaj bi rad dal v vrednosti da je pri B, ne vrednosti b, ki 27 00:01:18,360 --> 00:01:19,720 je tudi naslov. 28 00:01:19,720 --> 00:01:22,280 >> Še enkrat ponavljam, zvezda b. 29 00:01:22,280 --> 00:01:26,690 Potem je v moji zadnji vrstici, moram prepisati kaj je na naslovu b z 30 00:01:26,690 --> 00:01:28,970 kaj je bilo na prvotnem mestu je. 31 00:01:28,970 --> 00:01:32,910 Da bi to dosegli, jaz zvezda b dobi tmp. 32 00:01:32,910 --> 00:01:34,820 >> Sedaj na koncu dneva, to funkcija je še vedno samo 33 00:01:34,820 --> 00:01:35,950 tri vrstice kode. 34 00:01:35,950 --> 00:01:39,860 Ampak zato, ker je to manipulacijo vrednosti s pomočjo njihove naslove in ne 35 00:01:39,860 --> 00:01:43,700 surove vrednote, ki so bili sprejeti v Funkcija, trdim, da je zamenjava zdaj 36 00:01:43,700 --> 00:01:47,670 pooblaščena za spreminjanje vrednosti, ki se prenesejo v preko njihovih naslovov. 37 00:01:47,670 --> 00:01:49,510 >> Ampak moram narediti eno spremembo vedno. 38 00:01:49,510 --> 00:01:52,190 Ne morem več prenesti v x in y same. 39 00:01:52,190 --> 00:01:55,030 Moram opraviti v naslovih x in y. 40 00:01:55,030 --> 00:01:58,160 In za to, rabim malo drugačen zapis up top. 41 00:01:58,160 --> 00:02:02,510 Želim, da bi zamenjali X in Y s prehodom v naslov X, ki ga označuje 42 00:02:02,510 --> 00:02:07,190 ampersand x in naslov y, ki ga označuje znak & y. 43 00:02:07,190 --> 00:02:10,570 >> Podobno, do vrha zdaj moram Spremenite funkcijo v prototip za 44 00:02:10,570 --> 00:02:14,980 ujema s spremembo, ki sem jo naredila, tako da je, še enkrat, kazalec na int. 45 00:02:14,980 --> 00:02:17,190 b je, še enkrat, kazalec na int. 46 00:02:17,190 --> 00:02:18,770 In zdaj sem lahko shranite mojo kartoteko. 47 00:02:18,770 --> 00:02:20,680 In kaj je prevesti in zagnati ga. 48 00:02:20,680 --> 00:02:25,330 >> Naredite swap dot slash swap. 49 00:02:25,330 --> 00:02:29,660 Tokrat x in y so dejansko zdaj zamenjale, tako da so njihove vrednosti ni 50 00:02:29,660 --> 00:02:31,950 1 in 2, vendar 2 in 1. 51 00:02:31,950 --> 00:02:34,900