1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> DAVID J. MALAN: Dezagun idatzi programa batean horietatik balioak trukatu saiatzen gara 3 00:00:02,700 --> 00:00:04,970 bi aldagai, x eta y. 4 00:00:04,970 --> 00:00:07,490 Aldez aurretik, asko idatzi dut dagoeneko programa honen. 5 00:00:07,490 --> 00:00:11,130 Lehenik eta behin, aldagai bat, x deklaratzen dut, eta bertan gordetzeko balioa, 1. 6 00:00:11,130 --> 00:00:14,120 Ondoren aldagai y deklaratzen dut eta bertan gordetzeko balioa, 2. 7 00:00:14,120 --> 00:00:17,700 >> Ondoren, jarraitu printf dut erakutsi bi aldagai horien balioak. 8 00:00:17,700 --> 00:00:21,090 Ondoren aldarrikatzen dut printf beste batekin beharreko aldagai horiek trukea egiteko. 9 00:00:21,090 --> 00:00:23,690 Ondoren swap izeneko funtzio bat deitzen dut. 10 00:00:23,690 --> 00:00:26,100 Eta gero, aldarrikatzen dut duten aldagaiak dute trukatuko dira. 11 00:00:26,100 --> 00:00:30,610 Eta ondoren, inprimatu dut zer I erreklamatzeko x eta y-ren balio berriak. 12 00:00:30,610 --> 00:00:32,030 >> Orain zer da swap funtzioa hau? 13 00:00:32,030 --> 00:00:34,970 Ez dela dator C. zerbait Izan ere, begiratzen dugu goialdean bada nire 14 00:00:34,970 --> 00:00:38,850 fitxategia, hori deklaratu dut nabarituko duzu funtzioa swap honen prototipoa 15 00:00:38,850 --> 00:00:42,750 bi ints hartzen duen zehaztuz, arbitrarioki eta b deitzen zaio, eta honek 16 00:00:42,750 --> 00:00:44,300 funtzioa ez du ezer itzuli. 17 00:00:44,300 --> 00:00:48,370 Beraz, ustez, zer esan du trukeak ren eta b-ren balioak ere. 18 00:00:48,370 --> 00:00:50,170 Dezagun swap ezartzeko en orain. 19 00:00:50,170 --> 00:00:53,820 >> Lehenik eta behin, nik behin-behineko bat aldarrikatu nahi dut aldakorra eta horri esleitu 20 00:00:53,820 --> 00:00:57,260 bateko balioa, nahiz eta, besterik gabe, ezin izan nuen bezain erraz b gordeta. 21 00:00:57,260 --> 00:01:00,925 Naiz gero balioa aldatuko baten b dela berdina izango. 22 00:01:00,925 --> 00:01:04,849 Eta gero, azkenik, naiz aldatu egingo dut b balioa zer izan zen, baina ez da izan 23 00:01:04,849 --> 00:01:06,340 orain temp in. 24 00:01:06,340 --> 00:01:08,910 >> Orain zer besterik ez dut egin aldarrikatzen dut da logikoki zuzena. 25 00:01:08,910 --> 00:01:12,780 Gordetako dut tenporala aldagai batean bat, baten b-ren balioa izango da aldatu, eta, ondoren, 26 00:01:12,780 --> 00:01:15,580 b-ren balioa aldatu a zer zen izan. 27 00:01:15,580 --> 00:01:18,620 Baina konpilatu dut eta hau exekutatu programa, kezkatzen nau hori ez da 28 00:01:18,620 --> 00:01:20,140 zer ikusten dut joan. 29 00:01:20,140 --> 00:01:21,625 >> Egiteko, trukatzeko gabe. 30 00:01:21,625 --> 00:01:24,350 dot barrarik, trukatzeko gabe. 31 00:01:24,350 --> 00:01:27,560 Eta, zoritxarrez, printf arabera, x eta y balioa, nahiz 32 00:01:27,560 --> 00:01:31,560 beharreko aldaketa aldarrikatzen dugu ondoren horiek, oraindik 1 eta 2. 33 00:01:31,560 --> 00:01:32,630 >> Orain zergatik da hori? 34 00:01:32,630 --> 00:01:36,160 Beno, bihurtzen da nagusian, noiz dugu deitu funtzioa swap honetan, pasatzen 35 00:01:36,160 --> 00:01:39,960 x eta y argudio gisa, benetan da x eta y kopia duten 36 00:01:39,960 --> 00:01:41,310 daude swap pasa. 37 00:01:41,310 --> 00:01:45,430 Hain zuzen ere, 2 eta 1 balioen beren dira a eta b bezala swap pasa. 38 00:01:45,430 --> 00:01:48,590 Eta a eta b, azken finean gaude da nagusian aldaketa. 39 00:01:48,590 --> 00:01:50,810 >> Hau da, 1 bilakatzen 2, 2 bilakatzen 1. 40 00:01:50,810 --> 00:01:54,630 Baina swap no bueltan balioa duelako eta x kopiak jaso duelako 41 00:01:54,630 --> 00:01:58,220 eta y, portaera da ha x eta y ez dute eraginik. 42 00:01:58,220 --> 00:02:02,610 Izan ere, a eta b scoped dira, nolabait esateko, , swap x eta y jarraituko berriz 43 00:02:02,610 --> 00:02:03,990 nagusira scoped. 44 00:02:03,990 --> 00:02:05,070 >> Beraz, arazo bat dugu. 45 00:02:05,070 --> 00:02:06,320 Baina nola konpondu? 46 00:02:06,320 --> 00:02:08,312