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.