SPEAKER 1: Ternyata kita bisa berhasil menukar nilai-nilai dalam dua variabel dengan melewatkan mereka ke dalam berfungsi bukan oleh nilai atau copy, tapi dengan referensi atau dengan alamat mereka. Dengan kata lain, kita perlu meningkatkan sesuatu yang dikenal sebagai pointer. Sebuah pointer, benar-benar, hanyalah alamat beberapa variabel. Dan jadi jika kita memberikan fungsi yang disebut, katakanlah, menukar dengan alamat variabel dan alamat lain variabel, pertukaran harus diberdayakan untuk pergi ke masing-masing alamat dan benar-benar mengubah nilai-nilai yang ada. Mari kita melihat ini dalam konteks. Mari kita reimplement Swap sebagai berikut. Pertama, mari kita mengubah tidak menjadi int tetapi untuk menjadi pointer ke int atau alamat int. Kemudian mari kita melakukan hal yang sama untuk b, mengubah dari int menjadi pointer ke int atau alamat dari sebuah int. Kemudian dalam swap, mari kita masih menyatakan tmp sehingga kita memiliki tempat sementara untuk nilai itu. Tapi itu bukanlah nilai itu sendiri, karena, lagi, sekarang alamat beberapa int. Jadi jika kita ingin pergi ke alamat tersebut dan mendapatkan int di alamat itu, kita harus dereference pointer ini, juga dengan cara operator star, menulis sebuah bintang. Selanjutnya, saya tidak ingin mengubah nilai a. Saya ingin mengubah nilai pada a, mengingat, sekali lagi, yang merupakan alamat. Jadi untuk melakukannya, saya lagi butuh mengatakan star mendapat. Dan sekarang saya ingin dimasukkan ke dalam nilai itu pada b, bukan nilai b, yang juga adalah alamat. Jadi sekali lagi saya katakan, bintang b. Kemudian pada baris terakhir saya, saya perlu menimpa apa yang di alamat b dengan apa yang di lokasi asli. Untuk melakukan itu, saya melakukan star b mendapat tmp. Sekarang pada akhir hari, ini Fungsi masih saja tiga baris kode. Tetapi karena itu memanipulasi nilai-nilai dengan cara alamat mereka dan bukan nilai-nilai baku yang dilewatkan ke dalam fungsi, saya menyatakan bahwa swap sekarang diberdayakan untuk mengubah nilai-nilai yang yang disahkan pada melalui alamat mereka. Tapi aku harus membuat satu perubahan masih. Saya tidak bisa lagi lewat di x dan y sendiri. Saya harus lulus dalam alamat x dan y. Dan untuk melakukan itu, aku butuh sedikit berbeda atas notasi up. Saya ingin menukar x dan y dengan melewati di alamat x, ditunjukkan dengan ampersand x, dan alamat y, ditunjukkan dengan ampersand y. Demikian pula, di bagian atas sekarang harus saya mengubah prototipe fungsi untuk sesuai dengan perubahan yang saya buat, sehingga adalah, sekali lagi, pointer ke int. b adalah, sekali lagi, pointer ke int. Dan sekarang aku bisa menyimpan file saya. Dan mari kita ulang dan menjalankannya. Membuat Swap dot slash swap. Dan kali ini, x dan y memang sekarang bertukar rupa sehingga nilai-nilai mereka tidak 1 dan 2, tetapi 2 dan 1.