>> ZVUČNIK 1: Ispada možemo uspješno zamijeniti vrijednosti u dva
varijable tako da ih se pusti u funkcionirati ne po vrijednosti ili po primjerku, ali
pozivanjem ili njihove adrese.
Drugim riječima, moramo iskoristiti nešto poznat kao pokazivač.
Pointer, zapravo, samo adresu neke varijable.
I tako, ako ćemo osigurati funkciju zove, recimo, zamijeniti s adresom
promjenjiva i adresu drugog promjenjiva, zamjena bi trebao biti ovlašten
Na svakom od tih adresa i zapravo promijeniti
Vrijednosti koje su tamo.
>> Pogledajmo to u kontekstu.
Idemo reimplement zamjenu na sljedeći način.
Prvo, neka je promijeniti ne biti int , ali da se kazaljka na int ili
adresa int.
Onda ćemo napraviti isto za B, mijenjanje to od int biti pokazivač
int ili adresu int.
>> Zatim unutar swapa, neka je i dalje izjavljujem tmp tako da imamo
privremeno mjesto za vrijednost.
Ali je vrijednost nije sama po sebi, jer je, opet, sada je adresa
neke int.
Dakle, ako želimo ići na tu adresu i dobili int na toj adresi, imamo
dereference ovog pokazivača, također putem Operater zvijezda, pisanje zvijezda a..
>> Dalje, ja ne želim mijenjati vrijednost.
Želim promijeniti vrijednost na , imajući u vidu, opet,
da je adresa.
Tako da to učini, opet je potrebno reći zvijezda dobiva.
A sada želim staviti u vrijednosti to je na B, ne vrijednost b, koji
također je adresa.
>> Dakle, opet kažem, zvijezda b..
Tada je u mojoj posljednjoj liniji, moram prebrisati ono što je na adresu s b
ono što je u izvornom mjestu.
Da biste to postigli, ja zvijezda b dobiva tmp.
>> Sada je na kraju dan, ovaj Funkcija je još uvijek samo
tri linije koda.
Ali zato što je manipuliranja vrijednosti putem njihove adrese i ne
sirovo vrijednosti koje su prošli u funkcija, ja tvrdim da swap je sad
ovlašten da promijenite vrijednosti koje su doneseni u preko njihove adrese.
>> No, moram napraviti jednu promjenu dalje.
Ja više ne mogu proći u X i Y se.
Moram proći u adrese x i y.
A za to, trebam neki malo drugačije oznake do vrha.
Želim da zamijene xiy propuštanjem adresa X, označeno
znak za struju x, i adresu godina, pokazuje Ampersand y.
>> Isto tako, do vrha sada trebam promijeniti funkciju je prototip za
odgovaraju promjene koje sam napravio, tako da je, opet, pokazivač na int.
b je, opet, pokazivač na int.
I sada mogu spasiti moj dosje.
I neka je kompilirati i pokrenuti ga.
>> Provjerite Swap dot kose crte swap.
I ovaj put, xiy su doista sada Zamijenio kao da su njihove vrijednosti nisu
1 i 2, ali i 2 1.