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.