>> SPEAKER 1 Ternyata kita boleh berjaya menukar nilai-nilai dalam dua
pembolehubah dengan melepaskan mereka ke dalam berfungsi bukan dengan nilai atau dengan salinan, tetapi
dengan merujuk atau dengan alamat mereka.
Dalam erti kata lain, kita perlu memanfaatkan sesuatu yang dikenali sebagai penunjuk.
Penunjuk A, benar-benar, hanya alamat beberapa berubah-ubah.
Dan jadi jika kita memberikan fungsi yang dipanggil, katakan, swap dengan alamat
pembolehubah dan alamat lain berubah-ubah, swap perlu diberi kuasa untuk
pergi ke setiap orang alamat dan benar-benar mengubah
nilai-nilai yang ada di sana.
>> Mari kita lihat ini dalam konteks.
Mari kita mengimplemen semula swap seperti berikut.
Pertama, mari kita menukar tidak menjadi int an tetapi untuk menjadi penunjuk kepada int atau yang
alamat int satu.
Kemudian mari kita melakukan perkara yang sama untuk b, berubah dari int untuk menjadi penunjuk kepada
int atau alamat int satu.
>> Kemudian dalam swap, mari kita masih mengisytiharkan tmp supaya kita mempunyai
tempat sementara untuk nilai ini.
Tetapi ini tidak nilai itu sendiri, kerana, sekali lagi, yang kini adalah lokasi
beberapa int.
Jadi, jika kita mahu pergi ke alamat itu dan mendapatkan int di alamat itu, kami mempunyai
dereference penunjuk ini, juga dengan cara pengendali bintang, menulis bintang.
>> Seterusnya, saya tidak mahu berubah nilai a.
Saya ingin menukar nilai di yang, dengan mengingati, sekali lagi,
yang alamat.
Jadi untuk berbuat demikian, saya sekali lagi perlu untuk mengatakan bintang mendapat.
Dan sekarang saya mahu dimasukkan ke dalam nilai itulah di b, tidak nilai b, yang
juga alamat.
>> Jadi sekali lagi saya katakan, bintang b.
Kemudian pada baris terakhir saya, saya perlu menulis ganti apa yang di alamat b dengan
apa yang di lokasi yang ini asal.
Untuk melakukan itu, saya mendapat bintang b tmp.
>> Kini pada akhir hari, ini fungsi masih hanya
tiga baris kod.
Tetapi kerana ia memanipulasi nilai-nilai melalui alamat mereka dan bukan
nilai-nilai mentah yang telah berlalu ke dalam fungsi, saya mendakwa bahawa swap kini
kuasa untuk menukar nilai-nilai yang adalah diluluskan pada melalui alamat mereka.
>> Tetapi saya perlu membuat satu perubahan masih.
Saya tidak lagi boleh lulus dalam x dan y diri mereka sendiri.
Saya perlu lulus dalam alamat x dan y.
Dan untuk berbuat demikian, saya memerlukan sedikit berbeza atas notasi atas.
Saya hendak tukar x dan y dengan lulus dalam alamat x, ditandakan dengan
Ampersand x, dan alamat y, ditandakan dengan Ampersand y.
>> Begitu juga, sehingga atas kini yang perlu saya menukar prototaip fungsi untuk
sepadan dengan perubahan yang saya telah dibuat, supaya adalah, sekali lagi, penunjuk kepada int satu.
b adalah, sekali lagi, penunjuk kepada int satu.
Dan sekarang saya boleh menyimpan fail saya.
Dan mari kita susun semula dan menjalankannya.
>> Buat swap swap dot slash.
Dan kali ini, x dan y memang kini ditukar seperti bahawa nilai-nilai mereka tidak
1 dan 2, tetapi 2 dan 1.