DAVID J. Malan: Mari kita menulis sebuah program dalam yang kami mencoba untuk menukar nilai-nilai dua variabel, x dan y. Di muka, saya sudah menulis banyak program ini sudah. Pertama, saya mendeklarasikan variabel, x, dan simpan di dalamnya nilai, 1. Lalu aku mendeklarasikan variabel y dan simpan di dalamnya nilai, 2. Kemudian saya lanjutkan dengan printf untuk menampilkan nilai-nilai dari dua variabel. Lalu aku mengklaim dengan printf lain untuk menukar variabel tersebut. Lalu aku memanggil fungsi yang disebut swap. Dan kemudian saya menyatakan bahwa variabel telah bertukar. Dan kemudian saya mencetak bahwa apa yang saya klaim adalah nilai-nilai baru x dan y. Sekarang apa fungsi ini Swap? Ini bukan sesuatu yang datang dengan C. Memang, jika kita melihat di bagian atas saya berkas, Anda akan melihat bahwa saya telah menyatakan prototipe untuk fungsi ini pertukaran menetapkan bahwa dibutuhkan dua ints, sewenang-wenang disebut a dan b, dan ini Fungsi tidak mengembalikan apa-apa. Jadi mungkin, ia melakukan apa yang tertulis swap a dan nilai b. Mari kita sekarang menerapkan swap. Pertama, aku akan mendeklarasikan sementara variabel dan menetapkan ke nilai dalam, meskipun aku hanya bisa dengan mudah disimpan di dalamnya b. Saya kemudian akan mengubah nilai dari untuk menjadi sama dengan yang di b. Dan kemudian terakhir, aku akan mengubah nilai b menjadi apa itu tapi sekarang di temp. Sekarang saya mengklaim apa yang baru saja dilakukan secara logika benar. Aku sudah disimpan dalam variabel sementara, mengubah nilai untuk menjadi b, dan kemudian mengubah nilai b untuk menjadi apa adalah. Tapi ketika saya mengkompilasi dan menjalankan ini Program, saya khawatir itu tidak akan apa yang saya lihat. Membuat, tidak ada swap. dot slash, tidak ada swap. Dan sayangnya, menurut printf, nilai x dan y, bahkan setelah kami mengaku akan swapping mereka, masih 1 dan 2. Sekarang kenapa begitu? Nah, ternyata bahwa dalam utama, ketika kita memanggil fungsi ini swap, lewat di x dan y sebagai argumen, itu sebenarnya salinan x dan y yang dilewatkan ke swap. Yakni, nilai-nilai mereka 1 dan 2 dilewatkan ke dalam swap karena a dan b. Dan itu a dan b bahwa kita akhirnya menukar utama. Artinya, 1 menjadi 2, 2 menjadi 1. Tetapi karena swap tidak memiliki nilai kembali dan karena itu menerima salinan x dan y, itu perilaku telah tidak berpengaruh pada x dan y. Memang, a dan b scoped, sehingga untuk berbicara, untuk swap, sedangkan x dan y tetap scoped to main. Jadi kita punya masalah. Tapi bagaimana untuk memperbaikinya?