SPEAKER 1: Rezultas ni povas sukcese interŝanĝas la valorojn en du variablojn per preterpasas ilin enen funkcias ne per valoro aŭ per kopio, sed per referenco aux laux iliaj adresoj. En aliaj vortoj, ni devas utiligi iu konata kiel montrilo. A montrilon, vere, estas nur la adreso de iu variablo. Kaj do, se ni ofertas funkcio vokita, diru, interŝanĝu kun la adreso de variablo kaj la adreson de alia variablo, swap devus esti rajtigita iru al ĉiu el tiuj adresoj kaj efektive ŝanĝas la valorojn kiuj estas tie. Ni vidas ĉi tion en kunteksto. Ni reimplement swap jene. Unue, ni ŝanĝas oni ne esti int sed esti montrilo al int aŭ la adreso de int. Do ni faru la saman por b, ŝanĝante opon de int esti montrilo al int aŭ la adreso de int. Tiam ene de interŝanĝo, ni ankoraŭ deklari tmp tiel ke ni havas provizora loko por la valoro. Sed la valoro ne estas mem, ĉar, denove, nun estas la adreso de iu int. Do, se ni volas iri al tiu adreso kaj get int en tiu adreso, ni havas dereference ĉi montrilon, ankaŭ por vojo de la stelon operatoro, skribante stelo al. Tuj poste, mi ne volas ŝanĝi la valoro de a. Mi volas ŝanĝi la valoron ĉe a, konsiderante, denove, ke a estas adreso. Do fari tion, mi ankoraux bezonas diri stelon oni ricevas. Kaj nun mi volas meti en la valoro tio estas je b, ne la valoron de b, kio Ankaŭ estas adreso. Do denove mi diros: stelo b. Tiam en mia lasta linio, mi bezonas anstataŭigi kio estas cxe adreso b kun kio estis en la originala situo. Por tion fari, mi faros stelo b gets tmp. Nun je la fino de la tago, tiu funkcio estas ankoraŭ nur tri linioj de kodo. Sed ĉar ĝi estas manipulanta valoroj pere de ilia adreso kaj ne la kruda valoroj kiuj transiris en la funkcio, mi asertas ke swap nun estas fortigitaj ŝanĝi la valoroj kiu ili pasis en tra iliaj adresoj. Sed mi bezonos fari unu ŝanĝo ankoraŭ. Mi ne plu povas pasi en x kaj y sin. Mi bezonas Iam en la adresoj de x kaj y. Kaj fari tion, mi bezonas iom iomete malsama skribmaniero supren top. Mi volas interŝanĝi x kaj y per pasante en la adreso de x, indikitaj de ampersand x, kaj la adreso de y, indikitaj de ampersand y. Simile, supren supro nun mi bezonas ŝanĝi la funkcia prototipo por kongruas al la ŝanĝo kiun mi faris, por ke a estas, denove, montrilon al int. b estas, denove, montrilon al int. Kaj nun mi povas savi mian dosieron. Kaj ni rekompili kaj ruli ĝin. Faru swap dot oblikvo swap. Kaj cxi tiu tempo, x kaj y estas ja nun interŝanĝis tiaj ke ilia valoroj ne estas 1 kaj 2, sed 2 kaj 1.