DAVID J. Malan: Við skulum skrifa forrit í sem við reynum að skipta á gildum tvær breytur, x og y. Fyrirfram, hef ég skrifað mikið af þessu forriti þegar. Fyrst, ég staðfesti breytu, x, og geyma í henni verðmæti, 1. Þá er ég að lýsa breytu y og geyma í henni verðmæti, 2. Þá vil ég halda áfram með printf að sýna gildin þessum tveimur breytum. Þá vil ég halda því fram með öðru printf að skipta þeim breytum. Þá kalla ég fall sem kallast skipti. Og þá er ég halda því fram að breyturnar hafa verið skipti. Og þá prenta ég út að það sem ég segist eru nýju gildin á x og y. Nú er það þessi aðgerð skipti? Það er ekki eitthvað sem kemur með C. Reyndar, ef við lítum efst minn skrá, youll 'taka eftir að ég hef lýst frumgerð fyrir þessa aðgerð skipti tilgreina að það tekur tvo ints, geðþótta kallað A og B, og þetta virka ekki aftur neitt. Svo væntanlega, er það hvað það segir skiptasamninga a og gildi b er. Skulum framkvæma nú skipti. Fyrst ætla ég að lýsa tímabundið breytilegir og úthluta henni gildi í, þó að ég gæti bara eins auðveldlega geymt í honum b. Ég ætla þá að fara að breyta gildi af a til að vera jöfn að í b. Og þá loks, ég ætla að breyta gildið b að vera hvað var en er nú í afleysingamanneskja. Nú ég kröfu sem ég hef bara gert er rökrétt. Ég hef geymt í tímabundna breytu, breytt úr gildi til að vera,, B, og þá breytt gildi b er að vera hvað var. En þegar ég safna saman og keyra þetta program, áhyggjur ég það er ekki fara það sem ég sé. Gera, engin skipti. punktur rista, engin skipti. Og því miður, í samræmi við printf, gildi af X og Y, jafnvel eftir að við segjast vera að skipta þá er enn 1 og 2. Nú er ástæðan fyrir því? Jæja, kemur í ljós að í helstu, þegar við kalla þessa aðgerð skipti, sem liggur í x og y sem rök, það er í raun afrit af x og y sem eru liðin skiptasamninga. Nefnilega, eru gildi þeirra 1 og 2 lentu í skipti sem a og b. Og það er a og b að við erum á endanum skipta í aðal. Það er að segja 1 verður 2, 2 verður 1. Heldur vegna skipti hefur ekkert skilagildi og vegna þess að það fékk afrit af x og y, er það hegðun hefur engin áhrif á x og y. Reyndar, a og b eru scoped, svo að segja, að skipta, en x og y eru scoped að helstu. Þannig að við höfum vandamál. En hvernig á að laga það?