>> DAVID J. Malan: Le të shkruaj një program në të cilat ne përpiqemi që të bie në ujdi vlerat e
dy variablat, x dhe y.
Që më parë, unë kam shkruar shumë e këtij programi tashmë.
Së pari, unë deklaroj një ndryshueshme, x, dhe dyqan në të vlerën, 1.
Pastaj unë deklaroj y ndryshueshme dhe dyqan në të vlerën, 2.
>> Pastaj unë të vazhdojë me printf për të shfaqur vlerat e këtyre dy variablave.
Pastaj unë pretendojnë me një tjetër printf që do të shkëmbejnë ato variablave.
Pastaj unë e quaj një funksion të quajtur swap.
Dhe atëherë unë pretendojnë se variablat janë swapped.
Dhe atëherë unë të shtypura nga se ajo që unë pretendojnë jane vlerat reja e x dhe y.
>> Tani çfarë është kjo swap funksion?
Kjo nuk është diçka që vjen me C. Në të vërtetë, në qoftë se ne e shikojmë në krye të mia
fotografi, ju do të vëreni se unë kam deklaruar një prototip për këtë shkëmbim funksion
specifikuar që ai merr dy ints, quajtur arbitrarisht a dhe b, dhe kjo
Funksioni nuk ka kthim asgjë.
Pra, me sa duket, ai bën atë që thotë në këmbime të A-së dhe vlerat e B-së.
Le të zbatuar tani swap.
>> Së pari, unë jam duke shkuar për të shpallur një të përkohshme ndryshueshme dhe të caktojë atë
vlera në një, edhe pse unë mund vetëm të si ruhen lehtë në atë të b.
Po pastaj do të ndryshojë vlerën e një të jenë të barabartë me atë në b.
Dhe pastaj së fundi, unë jam duke shkuar për të ndryshuar Vlera e b të jetë ajo një ishte, por është
tani në temp.
>> Tani unë pretendojnë atë që unë kam bërë vetëm është logjikisht e saktë.
Unë e kam ruajtur një në një variabël të përkohshëm, ndryshuar së vlerës për të qenë b-së, dhe më pas
ndryshuar vlerën e b-së që të jetë ajo një të ishte.
Por kur unë përpilojnë dhe të drejtuar këtë Programi, I shqetësuar se nuk është e
duke shkuar atë që unë shoh.
>> Bëni, nuk ka swap.
dot çaj, nuk ka swap.
Dhe për fat të keq, sipas printf, vlera e x dhe y, madje edhe
pasi ne pretendojnë të jenë të shkëmbejnë tyre, është ende 1 dhe 2.
>> Tani pse është se?
E pra, ajo rezulton se në kryesore, kur ne e quajnë këtë shkëmbim funksion, duke kaluar në
x dhe y si argumente, është e vërtetë kopjet e x dhe y se
janë miratuar në shkëmbim.
Në të vërtetë, vlerat e tyre 1 dhe 2 janë kaluar në shkëmbim si dhe b.
Dhe kjo është një dhe b se ne jemi në fund të fundit shkëmbejnë në kryesore.
>> Dmth 1 bëhet 2, 2 bëhet 1.
Por për shkak se swap nuk ka vlerë të kthimit dhe për shkak se ajo ka marrë kopje të x
dhe y, kjo është sjellje e ka nuk ka efekt në x dhe y.
Në të vërtetë, a dhe b janë të scoped, si të thuash, të bie në ujdi, ndërsa x dhe y të mbetet
scoped të kryesore.
>> Pra, ne kemi një problem.
Por se si të rregullohet?