>> SPEAKER 1: Izrādās, mēs varam veiksmīgi mijmaiņas vērtības divās
mainīgie, nododot tos darbojas nevis vērtības vai kopiju, bet
atsaucoties vai to adresēm.
Citiem vārdiem sakot, mums ir nepieciešams, lai piesaistītu kaut kas pazīstams kā rādītājs.
Rādītājs, tiešām, ir tikai adresi dažu mainīgo.
Un tāpēc, ja mēs nodrošinām funkciju sauc, teiksim, mijmaiņas ar adresi
mainīgo un adresi cita mainīgs, swap būtu jāpilnvaro
iet uz katru no šīm adresēm un reāli mainīt
vērtības, kas ir tur.
>> Let 's redzēt to kontekstā.
Pieņemsim reimplement mijmaiņas šādi.
Pirmkārt, pieņemsim mainīt nebūt int , bet, lai būtu rādītājs int vai
adresi int.
Tad pieņemsim darīt to pašu B, mainot tas no int būt rādītājs
int vai adresi int.
>> Tad iekšpusē swap, pieņemsim vēl atzīt, tmp tāpēc, ka mums ir
pagaidu vieta vērtību.
Bet ir vērtība nav pati, jo atkal, tagad adrese
daži int.
Tātad, ja mēs gribam iet uz šo adresi un get int šajā adresē, mēs esam
dereference šo rādītāju, arī, izmantojot zvaigzne operators, rakstot zvaigzne.
>> Tālāk, es nevēlos, lai mainītu vērtību.
Es gribu, lai mainītu vērtību , paturot prātā, atkal,
, kas ir adrese.
Tātad, lai to izdarītu, man atkal vajadzēs teikt zvaigzne izpaužas.
Un tagad es gribu, lai vērtības , kas ir pie B, ne b vērtību, kas
ir arī adresi.
>> Tāpēc es vēlreiz saku, zvaigzne b.
Tad manā pēdējā rindā, man ir nepieciešams, lai pārrakstīt to, kas ir pēc adreses b ar
kāda bija sākotnējā atrašanās vietā.
Lai to izdarītu, man zvaigžņu b izpaužas tmp.
>> Tagad beigās, dienā, tas funkcija ir vēl tikai
trīs rindas kods.
Bet tāpēc, ka tas ir manipulējot vērtības veidā to adresi un ne
izejvielu vērtības, kas tika nodotas uz funkcija, es apgalvot, ka mijmaiņas tagad
tiesīgas mainīt vērtības, kas tiek pieņemts, izmantojot to adreses.
>> Bet man ir nepieciešams veikt vienu izmaiņas joprojām.
Es vairs nevar pāriet x un y paši.
Man vajag, lai iet ar adresēm x un y.
Un, lai to izdarītu, man vajag dažas nedaudz atšķirīgs notācija up top.
Es gribu apmainīt x un y, laižot in adrese, x, kas apzīmēta
zīme & x, un adresi y, kas apzīmēta ar Ampersand y.
>> Tāpat, līdz top tagad man ir nepieciešams, lai mainīt funkciju ir prototipu, lai
saskaņot izmaiņas, ka es esmu darījis, lai ir, atkal, rādītājs uz int.
b ir, atkal, rādītājs uz int.
Un tagad es varu saglabāt manu failu.
Un pieņemsim recompile un palaist to.
>> Veikt mijmaiņas dot slash swap.
Un šajā laikā, x un y ir patiešām tagad aizstāja tāds, ka to vērtība nav
1 un 2, bet 2 un 1.