>> SPEAKER 1: Izkazalo se je, smo lahko Uspešno swap vrednosti v dveh
spremenljivke po njih prehaja v delovati, ne glede na vrednost ali kopija, vendar
glede ali njihovih naslovov.
Z drugimi besedami, moramo vzvod Nekaj ​​znan kot kazalec.
Kazalec, res, je samo naslov neke spremenljivke.
In tako, če želimo zagotoviti funkcijo imenovano, recimo, zamenjali z naslovom
spremenljivka in naslov drugo spremenljivka je treba swap podeliti pooblastila za
pojdi na vsakega od teh naslovov in dejansko spremenili
vrednote, ki so tam.
>> Poglejmo to v kontekstu.
Oglejmo reimplement zamenjave, kot sledi.
Najprej, kaj je spremenilo, ne da bi int ampak da se kazalec na int ali
naslov notr.
Potem pa naredite enako za b, spreminjanje da iz notr, da bo kazalec
int ali naslov notr.
>> Potem notri zamenjave, dajmo še razglasi tmp, tako da imamo
začasno mesto za vrednostne.
Vendar je vrednost ne samo, ker Ponovno, je zdaj naslov
nekaterih int.
Torej, če želimo iti na ta naslov in dobili int na tem naslovu, imamo
dereference ta kazalec, tudi s pomočjo Operater zvezda, pisanje STAR.
>> Dalje, ne želim, da spremenite vrednost.
Hočem, da spremenite vrednost na , vodenje v mislih, še enkrat,
da je naslov.
Tako, da to stori, spet potrebujem reči zvezda bolnikih.
In zdaj bi rad dal v vrednosti da je pri B, ne vrednosti b, ki
je tudi naslov.
>> Še enkrat ponavljam, zvezda b.
Potem je v moji zadnji vrstici, moram prepisati kaj je na naslovu b z
kaj je bilo na prvotnem mestu je.
Da bi to dosegli, jaz zvezda b dobi tmp.
>> Sedaj na koncu dneva, to funkcija je še vedno samo
tri vrstice kode.
Ampak zato, ker je to manipulacijo vrednosti s pomočjo njihove naslove in ne
surove vrednote, ki so bili sprejeti v Funkcija, trdim, da je zamenjava zdaj
pooblaščena za spreminjanje vrednosti, ki se prenesejo v preko njihovih naslovov.
>> Ampak moram narediti eno spremembo vedno.
Ne morem več prenesti v x in y same.
Moram opraviti v naslovih x in y.
In za to, rabim malo drugačen zapis up top.
Želim, da bi zamenjali X in Y s prehodom v naslov X, ki ga označuje
ampersand x in naslov y, ki ga označuje znak & y.
>> Podobno, do vrha zdaj moram Spremenite funkcijo v prototip za
ujema s spremembo, ki sem jo naredila, tako da je, še enkrat, kazalec na int.
b je, še enkrat, kazalec na int.
In zdaj sem lahko shranite mojo kartoteko.
In kaj je prevesti in zagnati ga.
>> Naredite swap dot slash swap.
Tokrat x in y so dejansko zdaj zamenjale, tako da so njihove vrednosti ni
1 in 2, vendar 2 in 1.