1 00:00:00,000 --> 00:00:03,080 >> SPEAKER 1: Rezultas ni povas sukcese interŝanĝas la valorojn en du 2 00:00:03,080 --> 00:00:07,670 variablojn per preterpasas ilin enen funkcias ne per valoro aŭ per kopio, sed 3 00:00:07,670 --> 00:00:10,390 per referenco aux laux iliaj adresoj. 4 00:00:10,390 --> 00:00:12,740 En aliaj vortoj, ni devas utiligi iu konata kiel montrilo. 5 00:00:12,740 --> 00:00:15,580 A montrilon, vere, estas nur la adreso de iu variablo. 6 00:00:15,580 --> 00:00:19,660 Kaj do, se ni ofertas funkcio vokita, diru, interŝanĝu kun la adreso de 7 00:00:19,660 --> 00:00:23,550 variablo kaj la adreson de alia variablo, swap devus esti rajtigita 8 00:00:23,550 --> 00:00:26,090 iru al ĉiu el tiuj adresoj kaj efektive ŝanĝas la 9 00:00:26,090 --> 00:00:27,360 valorojn kiuj estas tie. 10 00:00:27,360 --> 00:00:28,890 >> Ni vidas ĉi tion en kunteksto. 11 00:00:28,890 --> 00:00:31,360 Ni reimplement swap jene. 12 00:00:31,360 --> 00:00:35,810 Unue, ni ŝanĝas oni ne esti int sed esti montrilo al int aŭ la 13 00:00:35,810 --> 00:00:36,920 adreso de int. 14 00:00:36,920 --> 00:00:40,820 Do ni faru la saman por b, ŝanĝante opon de int esti montrilo al 15 00:00:40,820 --> 00:00:42,780 int aŭ la adreso de int. 16 00:00:42,780 --> 00:00:45,860 >> Tiam ene de interŝanĝo, ni ankoraŭ deklari tmp tiel ke ni havas 17 00:00:45,860 --> 00:00:47,810 provizora loko por la valoro. 18 00:00:47,810 --> 00:00:52,430 Sed la valoro ne estas mem, ĉar, denove, nun estas la adreso 19 00:00:52,430 --> 00:00:53,270 de iu int. 20 00:00:53,270 --> 00:00:57,320 Do, se ni volas iri al tiu adreso kaj get int en tiu adreso, ni havas 21 00:00:57,320 --> 00:01:03,020 dereference ĉi montrilon, ankaŭ por vojo de la stelon operatoro, skribante stelo al. 22 00:01:03,020 --> 00:01:05,470 >> Tuj poste, mi ne volas ŝanĝi la valoro de a. 23 00:01:05,470 --> 00:01:08,770 Mi volas ŝanĝi la valoron ĉe a, konsiderante, denove, 24 00:01:08,770 --> 00:01:10,350 ke a estas adreso. 25 00:01:10,350 --> 00:01:14,050 Do fari tion, mi ankoraux bezonas diri stelon oni ricevas. 26 00:01:14,050 --> 00:01:18,360 Kaj nun mi volas meti en la valoro tio estas je b, ne la valoron de b, kio 27 00:01:18,360 --> 00:01:19,720 Ankaŭ estas adreso. 28 00:01:19,720 --> 00:01:22,280 >> Do denove mi diros: stelo b. 29 00:01:22,280 --> 00:01:26,690 Tiam en mia lasta linio, mi bezonas anstataŭigi kio estas cxe adreso b kun 30 00:01:26,690 --> 00:01:28,970 kio estis en la originala situo. 31 00:01:28,970 --> 00:01:32,910 Por tion fari, mi faros stelo b gets tmp. 32 00:01:32,910 --> 00:01:34,820 >> Nun je la fino de la tago, tiu funkcio estas ankoraŭ nur 33 00:01:34,820 --> 00:01:35,950 tri linioj de kodo. 34 00:01:35,950 --> 00:01:39,860 Sed ĉar ĝi estas manipulanta valoroj pere de ilia adreso kaj ne la 35 00:01:39,860 --> 00:01:43,700 kruda valoroj kiuj transiris en la funkcio, mi asertas ke swap nun estas 36 00:01:43,700 --> 00:01:47,670 fortigitaj ŝanĝi la valoroj kiu ili pasis en tra iliaj adresoj. 37 00:01:47,670 --> 00:01:49,510 >> Sed mi bezonos fari unu ŝanĝo ankoraŭ. 38 00:01:49,510 --> 00:01:52,190 Mi ne plu povas pasi en x kaj y sin. 39 00:01:52,190 --> 00:01:55,030 Mi bezonas Iam en la adresoj de x kaj y. 40 00:01:55,030 --> 00:01:58,160 Kaj fari tion, mi bezonas iom iomete malsama skribmaniero supren top. 41 00:01:58,160 --> 00:02:02,510 Mi volas interŝanĝi x kaj y per pasante en la adreso de x, indikitaj de 42 00:02:02,510 --> 00:02:07,190 ampersand x, kaj la adreso de y, indikitaj de ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Simile, supren supro nun mi bezonas ŝanĝi la funkcia prototipo por 44 00:02:10,570 --> 00:02:14,980 kongruas al la ŝanĝo kiun mi faris, por ke a estas, denove, montrilon al int. 45 00:02:14,980 --> 00:02:17,190 b estas, denove, montrilon al int. 46 00:02:17,190 --> 00:02:18,770 Kaj nun mi povas savi mian dosieron. 47 00:02:18,770 --> 00:02:20,680 Kaj ni rekompili kaj ruli ĝin. 48 00:02:20,680 --> 00:02:25,330 >> Faru swap dot oblikvo swap. 49 00:02:25,330 --> 00:02:29,660 Kaj cxi tiu tempo, x kaj y estas ja nun interŝanĝis tiaj ke ilia valoroj ne estas 50 00:02:29,660 --> 00:02:31,950 1 kaj 2, sed 2 kaj 1. 51 00:02:31,950 --> 00:02:34,900