DAVID J. Malan: Napišimo program ki se trudimo, da bi zamenjali vrednote dve spremenljivki, x in y. Vnaprej, sem napisal veliko že tega programa. Prvič, izjavljam, spremenljivo, X, in shranite v njem vrednosti, 1. Potem izjavljam veličino Y in shranite v njem vrednosti, 2. Potem sem se nadaljuje z printf prikazati vrednosti teh dveh spremenljivk. Potem sem trdijo, z drugo printf da je treba zamenjavo teh spremenljivk. Potem sem poklical funkcijo imenovano swap. In potem sem trdijo, da so spremenljivke so bile zamenjane. In potem sem izpisal, da je tisto, kar trdijo so nove vrednosti x in y. Zdaj, kaj je ta funkcija swap? To ni nekaj, kar prihaja z C. Pravzaprav, če pogledamo na vrhu mojega datoteka, boste opazili, da sem izjavila prototip za to funkcijo swap navedbo, da je potrebno dve Ints, poljubno imenuje in B, in to funkcija ne vrne ničesar. Torej, verjetno pa ne, kaj piše v zamenjavah a in vrednot B je. Pojdimo zdaj izvajajo zamenjave. Najprej bom razglasi začasno spremenljivka in ji naloži vrednost, čeprav sem lahko samo tako enostavno shranjena v njej b. Jaz pa bom za spremembo vrednosti v biti enaka kot v b. In potem na koncu, bom spremenila vrednost B v kar je vendar zdaj v temp. Zdaj sem po tisto, kar sem pravkar storil je logično pravilna. Sem shranjeni v začasne spremenljivke, spremenili vrednost je biti b-ih, nato pa spremenilo B je vrednost, da bo tisto, kar je bil. Toda, ko sem pripravijo in vodijo to Program, me skrbi, da to ni dogaja tisto, kar vidim. Poskrbite, nobene zamenjave. dot poševnica, brez zamenjave. In na žalost, po printf, vrednost za x in y, celo po tem, ko trdimo, da se menjava jim je še vedno 1 in 2. Zdaj zakaj je to? No, izkazalo se je, da je v glavnem, ko smo oklic to funkcijo zamenjave, ki poteka v x in y kot argument, da je dejansko kopije izmed X in Y, ki se prenesejo v zamenjavo. Namreč, njihove vrednosti 1 in 2 sta prešla v zamenjave kot a in b. In to je in b, da smo na koncu zamenjavo v glavnem. To pomeni, da 1 postane 2, 2 postane 1. Ampak zato, ker je swap brez vrnitve vrednosti in ker je prejela izvode x in y, to vedenje je nobenega vpliva na x in y. Dejansko, so zajeta in b, tako rekoč da bi zamenjali, ker se x in y ostajajo zajeta na glavno. Torej imamo problem. Ampak kako to popraviti?