1 00:00:00,000 --> 00:00:03,080 >> SPEAKER 1: Izrādās, mēs varam veiksmīgi mijmaiņas vērtības divās 2 00:00:03,080 --> 00:00:07,670 mainīgie, nododot tos darbojas nevis vērtības vai kopiju, bet 3 00:00:07,670 --> 00:00:10,390 atsaucoties vai to adresēm. 4 00:00:10,390 --> 00:00:12,740 Citiem vārdiem sakot, mums ir nepieciešams, lai piesaistītu kaut kas pazīstams kā rādītājs. 5 00:00:12,740 --> 00:00:15,580 Rādītājs, tiešām, ir tikai adresi dažu mainīgo. 6 00:00:15,580 --> 00:00:19,660 Un tāpēc, ja mēs nodrošinām funkciju sauc, teiksim, mijmaiņas ar adresi 7 00:00:19,660 --> 00:00:23,550 mainīgo un adresi cita mainīgs, swap būtu jāpilnvaro 8 00:00:23,550 --> 00:00:26,090 iet uz katru no šīm adresēm un reāli mainīt 9 00:00:26,090 --> 00:00:27,360 vērtības, kas ir tur. 10 00:00:27,360 --> 00:00:28,890 >> Let 's redzēt to kontekstā. 11 00:00:28,890 --> 00:00:31,360 Pieņemsim reimplement mijmaiņas šādi. 12 00:00:31,360 --> 00:00:35,810 Pirmkārt, pieņemsim mainīt nebūt int , bet, lai būtu rādītājs int vai 13 00:00:35,810 --> 00:00:36,920 adresi int. 14 00:00:36,920 --> 00:00:40,820 Tad pieņemsim darīt to pašu B, mainot tas no int būt rādītājs 15 00:00:40,820 --> 00:00:42,780 int vai adresi int. 16 00:00:42,780 --> 00:00:45,860 >> Tad iekšpusē swap, pieņemsim vēl atzīt, tmp tāpēc, ka mums ir 17 00:00:45,860 --> 00:00:47,810 pagaidu vieta vērtību. 18 00:00:47,810 --> 00:00:52,430 Bet ir vērtība nav pati, jo atkal, tagad adrese 19 00:00:52,430 --> 00:00:53,270 daži int. 20 00:00:53,270 --> 00:00:57,320 Tātad, ja mēs gribam iet uz šo adresi un get int šajā adresē, mēs esam 21 00:00:57,320 --> 00:01:03,020 dereference šo rādītāju, arī, izmantojot zvaigzne operators, rakstot zvaigzne. 22 00:01:03,020 --> 00:01:05,470 >> Tālāk, es nevēlos, lai mainītu vērtību. 23 00:01:05,470 --> 00:01:08,770 Es gribu, lai mainītu vērtību , paturot prātā, atkal, 24 00:01:08,770 --> 00:01:10,350 , kas ir adrese. 25 00:01:10,350 --> 00:01:14,050 Tātad, lai to izdarītu, man atkal vajadzēs teikt zvaigzne izpaužas. 26 00:01:14,050 --> 00:01:18,360 Un tagad es gribu, lai vērtības , kas ir pie B, ne b vērtību, kas 27 00:01:18,360 --> 00:01:19,720 ir arī adresi. 28 00:01:19,720 --> 00:01:22,280 >> Tāpēc es vēlreiz saku, zvaigzne b. 29 00:01:22,280 --> 00:01:26,690 Tad manā pēdējā rindā, man ir nepieciešams, lai pārrakstīt to, kas ir pēc adreses b ar 30 00:01:26,690 --> 00:01:28,970 kāda bija sākotnējā atrašanās vietā. 31 00:01:28,970 --> 00:01:32,910 Lai to izdarītu, man zvaigžņu b izpaužas tmp. 32 00:01:32,910 --> 00:01:34,820 >> Tagad beigās, dienā, tas funkcija ir vēl tikai 33 00:01:34,820 --> 00:01:35,950 trīs rindas kods. 34 00:01:35,950 --> 00:01:39,860 Bet tāpēc, ka tas ir manipulējot vērtības veidā to adresi un ne 35 00:01:39,860 --> 00:01:43,700 izejvielu vērtības, kas tika nodotas uz funkcija, es apgalvot, ka mijmaiņas tagad 36 00:01:43,700 --> 00:01:47,670 tiesīgas mainīt vērtības, kas tiek pieņemts, izmantojot to adreses. 37 00:01:47,670 --> 00:01:49,510 >> Bet man ir nepieciešams veikt vienu izmaiņas joprojām. 38 00:01:49,510 --> 00:01:52,190 Es vairs nevar pāriet x un y paši. 39 00:01:52,190 --> 00:01:55,030 Man vajag, lai iet ar adresēm x un y. 40 00:01:55,030 --> 00:01:58,160 Un, lai to izdarītu, man vajag dažas nedaudz atšķirīgs notācija up top. 41 00:01:58,160 --> 00:02:02,510 Es gribu apmainīt x un y, laižot in adrese, x, kas apzīmēta 42 00:02:02,510 --> 00:02:07,190 zīme & x, un adresi y, kas apzīmēta ar Ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Tāpat, līdz top tagad man ir nepieciešams, lai mainīt funkciju ir prototipu, lai 44 00:02:10,570 --> 00:02:14,980 saskaņot izmaiņas, ka es esmu darījis, lai ir, atkal, rādītājs uz int. 45 00:02:14,980 --> 00:02:17,190 b ir, atkal, rādītājs uz int. 46 00:02:17,190 --> 00:02:18,770 Un tagad es varu saglabāt manu failu. 47 00:02:18,770 --> 00:02:20,680 Un pieņemsim recompile un palaist to. 48 00:02:20,680 --> 00:02:25,330 >> Veikt mijmaiņas dot slash swap. 49 00:02:25,330 --> 00:02:29,660 Un šajā laikā, x un y ir patiešām tagad aizstāja tāds, ka to vērtība nav 50 00:02:29,660 --> 00:02:31,950 1 un 2, bet 2 un 1. 51 00:02:31,950 --> 00:02:34,900