>> DAVID J. MALAN: Dezagun idatzi programa batean horietatik balioak trukatu saiatzen gara
bi aldagai, x eta y.
Aldez aurretik, asko idatzi dut dagoeneko programa honen.
Lehenik eta behin, aldagai bat, x deklaratzen dut, eta bertan gordetzeko balioa, 1.
Ondoren aldagai y deklaratzen dut eta bertan gordetzeko balioa, 2.
>> Ondoren, jarraitu printf dut erakutsi bi aldagai horien balioak.
Ondoren aldarrikatzen dut printf beste batekin beharreko aldagai horiek trukea egiteko.
Ondoren swap izeneko funtzio bat deitzen dut.
Eta gero, aldarrikatzen dut duten aldagaiak dute trukatuko dira.
Eta ondoren, inprimatu dut zer I erreklamatzeko x eta y-ren balio berriak.
>> Orain zer da swap funtzioa hau?
Ez dela dator C. zerbait Izan ere, begiratzen dugu goialdean bada nire
fitxategia, hori deklaratu dut nabarituko duzu funtzioa swap honen prototipoa
bi ints hartzen duen zehaztuz, arbitrarioki eta b deitzen zaio, eta honek
funtzioa ez du ezer itzuli.
Beraz, ustez, zer esan du trukeak ren eta b-ren balioak ere.
Dezagun swap ezartzeko en orain.
>> Lehenik eta behin, nik behin-behineko bat aldarrikatu nahi dut aldakorra eta horri esleitu
bateko balioa, nahiz eta, besterik gabe, ezin izan nuen bezain erraz b gordeta.
Naiz gero balioa aldatuko baten b dela berdina izango.
Eta gero, azkenik, naiz aldatu egingo dut b balioa zer izan zen, baina ez da izan
orain temp in.
>> Orain zer besterik ez dut egin aldarrikatzen dut da logikoki zuzena.
Gordetako dut tenporala aldagai batean bat, baten b-ren balioa izango da aldatu, eta, ondoren,
b-ren balioa aldatu a zer zen izan.
Baina konpilatu dut eta hau exekutatu programa, kezkatzen nau hori ez da
zer ikusten dut joan.
>> Egiteko, trukatzeko gabe.
dot barrarik, trukatzeko gabe.
Eta, zoritxarrez, printf arabera, x eta y balioa, nahiz
beharreko aldaketa aldarrikatzen dugu ondoren horiek, oraindik 1 eta 2.
>> Orain zergatik da hori?
Beno, bihurtzen da nagusian, noiz dugu deitu funtzioa swap honetan, pasatzen
x eta y argudio gisa, benetan da x eta y kopia duten
daude swap pasa.
Hain zuzen ere, 2 eta 1 balioen beren dira a eta b bezala swap pasa.
Eta a eta b, azken finean gaude da nagusian aldaketa.
>> Hau da, 1 bilakatzen 2, 2 bilakatzen 1.
Baina swap no bueltan balioa duelako eta x kopiak jaso duelako
eta y, portaera da ha x eta y ez dute eraginik.
Izan ere, a eta b scoped dira, nolabait esateko, , swap x eta y jarraituko berriz
nagusira scoped.
>> Beraz, arazo bat dugu.
Baina nola konpondu?