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?