>> SPEAKER 1: Det viser seg at vi kan hell Bytte verdiene i to
variabler ved å sende dem inn i en fungere ikke av verdi eller ved å kopiere, men
ved henvisning, eller ved deres adresser.
Med andre ord, vi må utnytte noe som er kjent som en peker.
En peker, egentlig, er bare adressen til noen variable.
Og så hvis vi gir en funksjon som heter, si, bytte med adressen
en variabel og adressen til en annen variabel, bør swap gis myndighet til
går til hver av disse adresser og faktisk endre
verdier som er der.
>> La oss se dette i sammenheng.
La oss reimplement swap som følger.
Først, la oss endre en ikke å være en int men for å være en peker til en int eller
adressen til en int.
Så la oss gjøre det samme for b, skiftende det fra en int for å være en peker til en
int eller adressen til en int.
>> Deretter innsiden av swap, la oss fortsatt erklære tmp slik at vi har en
midlertidig sted for en verdi.
Men en verdi er ikke en selv, fordi, igjen, er et nå adressen
av noen int.
Så hvis vi ønsker å gå til denne adressen og få int på denne adressen, har vi
deferanseoperasjon denne pekeren, også i form av stjernen operatør, skriver stjerne en.
>> Neste, jeg ønsker ikke å endre verdien av en.
Jeg ønsker å endre verdien på en, husk, igjen,
at en er en adresse.
Så for å gjøre det, jeg igjen trenger å si stjerne en blir.
Og nå ønsker jeg å sette i verdi det er ved b, ikke verdien av b, som
er også en adresse.
>> Så igjen sier jeg, stjerne b.
Så i min siste linje, trenger jeg å overskrive hva som står på adresse b med
hva som sto på en opprinnelige plassering.
For å gjøre det, jeg gjør stjerne b får tmp.
>> Nå ved slutten av dagen, denne Funksjonen er fortsatt bare
tre linjer med kode.
Men fordi det er å manipulere verdier ved hjelp av sin adresse og ikke den
rå-verdier som var gått inn i det funksjon, jeg hevder at swap er nå
myndighet til å endre verdiene som sendes inn via deres adresser.
>> Men jeg trenger å gjøre én endring fortsatt.
Jeg kan ikke lenger passere i x-og y selv.
Jeg trenger å passere i adresser av x og y.
Og for å gjøre det, trenger jeg noen litt forskjellig notasjon opp toppen.
Jeg ønsker å bytte x og y ved å passere i adressen til x, angitt med
ampersand x, og adressen til y, angitt med tegnet y.
>> Tilsvarende opp topp nå må jeg endre funksjonen prototype til
matche den endringen som jeg har gjort, slik at en er, igjen, en peker til en int.
b er, igjen, en peker til en int.
Og nå kan jeg lagre filen.
Og la oss rekompilere og kjøre den.
>> Gjør swap dot slash swap.
Og denne gangen, x og y er faktisk nå byttet slik at deres verdier ikke
1 og 2, men 2 og en.