DAVID J. Malan: Pieņemsim uzrakstīt programmu ko mēs cenšamies mijmaiņas vērtības divi mainīgie, x un y. Iepriekš, es esmu uzrakstījis daudz Šīs programmas jau. Pirmkārt, es apliecinu, mainīgu, X, un uzglabāt to vērtību, 1. Tad es apliecinu, mainīgo y un uzglabāt to vērtību, 2. Tad es turpināt printf lai parādītu vērtības šiem diviem mainīgajiem. Tad es varu pieprasīt ar citu printf kas pārnešana tos faktorus. Tad es aicinu funkciju sauc swap. Un tad es apgalvo, ka mainīgie Ir aizstāja. Un tad es izdrukāt ka tas, ko es varu pieprasīt ir jaunas vērtības x un y. Tagad to, kas ir šī funkcija swap? Tas nav kaut kas, kas nāk ar C. Patiešām, ja mēs skatāmies uz augšā manu failu, jūs ievērosiet, ka es esmu deklarēts prototips šīs funkcijas swap norādot, ka tas aizņem divas Ints, patvaļīgi sauc a un b, un šis funkcija neatgriež neko. Tātad, iespējams, tas, ko tā saka ar mijmaiņas darījumiem ir pienācis un B vērtībām. Pieņemsim tagad īstenot swap. Pirmkārt, es esmu gatavojas pasludināt pagaidu mainīga un piešķirt tai vērtība, lai gan es varētu tikai kā viegli uzglabāt tajā b. Es tad iet, lai mainītu vērtību gada ir vienāda ar to b. Un tad visbeidzot, es esmu gatavojas mainīt b vērtību, lai būtu, kas bija, bet ir tagad temp. Tagad es pieprasīt to, ko es esmu tikko veikts ir loģiski pareizs. Esmu uzglabā ar pagaidu mainīgo, mainījusies vērtību būt b s, un pēc tam mainīja B vērtību, lai būtu, kas ir bijis. Bet, kad es apkopot un palaist šo programmu, es jāuztraucas, ka tas nav notiek tas, ko es redzu. Veikt, nav swap. dot slash, bez swap. Un Diemžēl, saskaņā ar printf, vērtība x un y, pat kad mēs apgalvot, ka pārnešana tos, joprojām ir 1 un 2. Tagad, kāpēc tā? Nu, izrādās, ka galvenais, kad mēs nosaukt šo funkciju swap, kas iet x un y kā argumenti, tas ir faktiski kopijas, x un y, ka ir pagājis uz swap. Proti, to vērtības 1 un 2 nonākt swap kā a un b. Un tas ir, un b, ka mēs esam galu galā pārnešana galvenais. Tas nozīmē, ka 1 kļūst par 2, 2 kļūst par 1. Bet tāpēc, ka swap nav atgriezto vērtību un tāpēc, ka tā ir saņēmusi kopijas x un y, tā uzvedība ir Ietekmi uz x un y. Patiešām, un b ir scoped, tā sakot, swap, bet x un y paliek scoped uz galveno. Tāpēc mums ir problēma. Bet kā to salabot?