1 00:00:00,000 --> 00:00:03,080 >> ZVUČNIK 1: Ispada možemo uspješno zamijeniti vrijednosti u dva 2 00:00:03,080 --> 00:00:07,670 varijable tako da ih se pusti u funkcionirati ne po vrijednosti ili po primjerku, ali 3 00:00:07,670 --> 00:00:10,390 pozivanjem ili njihove adrese. 4 00:00:10,390 --> 00:00:12,740 Drugim riječima, moramo iskoristiti nešto poznat kao pokazivač. 5 00:00:12,740 --> 00:00:15,580 Pointer, zapravo, samo adresu neke varijable. 6 00:00:15,580 --> 00:00:19,660 I tako, ako ćemo osigurati funkciju zove, recimo, zamijeniti s adresom 7 00:00:19,660 --> 00:00:23,550 promjenjiva i adresu drugog promjenjiva, zamjena bi trebao biti ovlašten 8 00:00:23,550 --> 00:00:26,090 Na svakom od tih adresa i zapravo promijeniti 9 00:00:26,090 --> 00:00:27,360 Vrijednosti koje su tamo. 10 00:00:27,360 --> 00:00:28,890 >> Pogledajmo to u kontekstu. 11 00:00:28,890 --> 00:00:31,360 Idemo reimplement zamjenu na sljedeći način. 12 00:00:31,360 --> 00:00:35,810 Prvo, neka je promijeniti ne biti int , ali da se kazaljka na int ili 13 00:00:35,810 --> 00:00:36,920 adresa int. 14 00:00:36,920 --> 00:00:40,820 Onda ćemo napraviti isto za B, mijenjanje to od int biti pokazivač 15 00:00:40,820 --> 00:00:42,780 int ili adresu int. 16 00:00:42,780 --> 00:00:45,860 >> Zatim unutar swapa, neka je i dalje izjavljujem tmp tako da imamo 17 00:00:45,860 --> 00:00:47,810 privremeno mjesto za vrijednost. 18 00:00:47,810 --> 00:00:52,430 Ali je vrijednost nije sama po sebi, jer je, opet, sada je adresa 19 00:00:52,430 --> 00:00:53,270 neke int. 20 00:00:53,270 --> 00:00:57,320 Dakle, ako želimo ići na tu adresu i dobili int na toj adresi, imamo 21 00:00:57,320 --> 00:01:03,020 dereference ovog pokazivača, također putem Operater zvijezda, pisanje zvijezda a.. 22 00:01:03,020 --> 00:01:05,470 >> Dalje, ja ne želim mijenjati vrijednost. 23 00:01:05,470 --> 00:01:08,770 Želim promijeniti vrijednost na , imajući u vidu, opet, 24 00:01:08,770 --> 00:01:10,350 da je adresa. 25 00:01:10,350 --> 00:01:14,050 Tako da to učini, opet je potrebno reći zvijezda dobiva. 26 00:01:14,050 --> 00:01:18,360 A sada želim staviti u vrijednosti to je na B, ne vrijednost b, koji 27 00:01:18,360 --> 00:01:19,720 također je adresa. 28 00:01:19,720 --> 00:01:22,280 >> Dakle, opet kažem, zvijezda b.. 29 00:01:22,280 --> 00:01:26,690 Tada je u mojoj posljednjoj liniji, moram prebrisati ono što je na adresu s b 30 00:01:26,690 --> 00:01:28,970 ono što je u izvornom mjestu. 31 00:01:28,970 --> 00:01:32,910 Da biste to postigli, ja zvijezda b dobiva tmp. 32 00:01:32,910 --> 00:01:34,820 >> Sada je na kraju dan, ovaj Funkcija je još uvijek samo 33 00:01:34,820 --> 00:01:35,950 tri linije koda. 34 00:01:35,950 --> 00:01:39,860 Ali zato što je manipuliranja vrijednosti putem njihove adrese i ne 35 00:01:39,860 --> 00:01:43,700 sirovo vrijednosti koje su prošli u funkcija, ja tvrdim da swap je sad 36 00:01:43,700 --> 00:01:47,670 ovlašten da promijenite vrijednosti koje su doneseni u preko njihove adrese. 37 00:01:47,670 --> 00:01:49,510 >> No, moram napraviti jednu promjenu dalje. 38 00:01:49,510 --> 00:01:52,190 Ja više ne mogu proći u X i Y se. 39 00:01:52,190 --> 00:01:55,030 Moram proći u adrese x i y. 40 00:01:55,030 --> 00:01:58,160 A za to, trebam neki malo drugačije oznake do vrha. 41 00:01:58,160 --> 00:02:02,510 Želim da zamijene xiy propuštanjem adresa X, označeno 42 00:02:02,510 --> 00:02:07,190 znak za struju x, i adresu godina, pokazuje Ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Isto tako, do vrha sada trebam promijeniti funkciju je prototip za 44 00:02:10,570 --> 00:02:14,980 odgovaraju promjene koje sam napravio, tako da je, opet, pokazivač na int. 45 00:02:14,980 --> 00:02:17,190 b je, opet, pokazivač na int. 46 00:02:17,190 --> 00:02:18,770 I sada mogu spasiti moj dosje. 47 00:02:18,770 --> 00:02:20,680 I neka je kompilirati i pokrenuti ga. 48 00:02:20,680 --> 00:02:25,330 >> Provjerite Swap dot kose crte swap. 49 00:02:25,330 --> 00:02:29,660 I ovaj put, xiy su doista sada Zamijenio kao da su njihove vrijednosti nisu 50 00:02:29,660 --> 00:02:31,950 1 i 2, ali i 2 1. 51 00:02:31,950 --> 00:02:34,900