>> 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.