David J. Malan: Ajmo napisati program u koje ćemo pokušati zamijeniti vrijednosti dvije varijable, x i y. U unaprijed, ja sam napisao mnogo ovog programa već. Prvo, sam proglasi varijablu, X, i pohraniti u njemu vrijednost, jednom. Onda sam proglasiti varijabla y i pohraniti u njemu vrijednost, 2. Onda sam nastaviti s printf prikazati vrijednosti tih dviju varijabli. Onda ja tvrdim s drugim printf biti zamjene tih varijabli. Onda sam pozvati funkciju nazvanu swapa. I onda ja tvrdim da su varijable su zamijenili. A onda sam se ispisati da je ono što ja tvrdim su nove vrijednosti za X i Y. Sada ono što je ova funkcija swapa? To nije nešto što dolazi s C. Zapravo, ako ćemo gledati na vrhu moje file, primijetit ćete da sam proglasio Prototip ove funkcije swapa navodeći da je potrebno dva Ints, proizvoljno naziva A i B, a to funkcija ne vraća ništa. Pa valjda, čini ono što govori u swaps A-ih i vrijednosti B-a. Ajmo sad provesti zamjenu. Prvo, ja ću proglasiti privremeno promjenjiva i dodijeliti ga vrijednost, iako sam mogao samo lako pohranjeni u njemu b. Ja sam tada će se promijeniti vrijednost u biti jednaka onoj u B. I onda na kraju, ja ću promijeniti Vrijednost b da bude ono što je bio, ali je sada u temp. Sad ja tvrdim ono što sam upravo učinio je logički ispravan. Ja sam pohranjeni u privremenu varijablu, promijenila vrijednost da bi B-a, a zatim promijenila vrijednost B je da se ono što je bilo. Ali kad sam sastaviti i pokrenuti ovaj Program, brinem se da to nije događa se ono što vidim. Napravite, nema zamjenu. dot udarac, nema zamjenu. I, nažalost, prema printf, vrijednost x i y, čak nakon što tvrdimo da se zamjene ih, još uvijek je 1 i 2. Sad zašto je to tako? Pa, ispada da se u glavnom, kad smo nazvati ovu funkciju swap, prolazi u x i y kao argument, to je zapravo kopije xiy da uvodi se u swapa. Naime, njihove vrijednosti 1 i 2 su prešao u zamjeni kao i b. A to je i b da smo u konačnici zamjene u glavnom. To je, 1 postaje 2, 2 postaje 1. Ali zato Swap nema povratnu vrijednost i zato je dobio kopije x i y, to je ponašanje nema utjecaja na xiy. Doista, i b su scoped, da se tako izrazim, swap, a x i y ostane scoped na glavni. Dakle, imamo problem. No, kako to popraviti?