1 00:00:00,000 --> 00:00:03,080 >> SPEAKER 1: Ternyata kita bisa berhasil menukar nilai-nilai dalam dua 2 00:00:03,080 --> 00:00:07,670 variabel dengan melewatkan mereka ke dalam berfungsi bukan oleh nilai atau copy, tapi 3 00:00:07,670 --> 00:00:10,390 dengan referensi atau dengan alamat mereka. 4 00:00:10,390 --> 00:00:12,740 Dengan kata lain, kita perlu meningkatkan sesuatu yang dikenal sebagai pointer. 5 00:00:12,740 --> 00:00:15,580 Sebuah pointer, benar-benar, hanyalah alamat beberapa variabel. 6 00:00:15,580 --> 00:00:19,660 Dan jadi jika kita memberikan fungsi yang disebut, katakanlah, menukar dengan alamat 7 00:00:19,660 --> 00:00:23,550 variabel dan alamat lain variabel, pertukaran harus diberdayakan untuk 8 00:00:23,550 --> 00:00:26,090 pergi ke masing-masing alamat dan benar-benar mengubah 9 00:00:26,090 --> 00:00:27,360 nilai-nilai yang ada. 10 00:00:27,360 --> 00:00:28,890 >> Mari kita melihat ini dalam konteks. 11 00:00:28,890 --> 00:00:31,360 Mari kita reimplement Swap sebagai berikut. 12 00:00:31,360 --> 00:00:35,810 Pertama, mari kita mengubah tidak menjadi int tetapi untuk menjadi pointer ke int atau 13 00:00:35,810 --> 00:00:36,920 alamat int. 14 00:00:36,920 --> 00:00:40,820 Kemudian mari kita melakukan hal yang sama untuk b, mengubah dari int menjadi pointer ke 15 00:00:40,820 --> 00:00:42,780 int atau alamat dari sebuah int. 16 00:00:42,780 --> 00:00:45,860 >> Kemudian dalam swap, mari kita masih menyatakan tmp sehingga kita memiliki 17 00:00:45,860 --> 00:00:47,810 tempat sementara untuk nilai itu. 18 00:00:47,810 --> 00:00:52,430 Tapi itu bukanlah nilai itu sendiri, karena, lagi, sekarang alamat 19 00:00:52,430 --> 00:00:53,270 beberapa int. 20 00:00:53,270 --> 00:00:57,320 Jadi jika kita ingin pergi ke alamat tersebut dan mendapatkan int di alamat itu, kita harus 21 00:00:57,320 --> 00:01:03,020 dereference pointer ini, juga dengan cara operator star, menulis sebuah bintang. 22 00:01:03,020 --> 00:01:05,470 >> Selanjutnya, saya tidak ingin mengubah nilai a. 23 00:01:05,470 --> 00:01:08,770 Saya ingin mengubah nilai pada a, mengingat, sekali lagi, 24 00:01:08,770 --> 00:01:10,350 yang merupakan alamat. 25 00:01:10,350 --> 00:01:14,050 Jadi untuk melakukannya, saya lagi butuh mengatakan star mendapat. 26 00:01:14,050 --> 00:01:18,360 Dan sekarang saya ingin dimasukkan ke dalam nilai itu pada b, bukan nilai b, yang 27 00:01:18,360 --> 00:01:19,720 juga adalah alamat. 28 00:01:19,720 --> 00:01:22,280 >> Jadi sekali lagi saya katakan, bintang b. 29 00:01:22,280 --> 00:01:26,690 Kemudian pada baris terakhir saya, saya perlu menimpa apa yang di alamat b dengan 30 00:01:26,690 --> 00:01:28,970 apa yang di lokasi asli. 31 00:01:28,970 --> 00:01:32,910 Untuk melakukan itu, saya melakukan star b mendapat tmp. 32 00:01:32,910 --> 00:01:34,820 >> Sekarang pada akhir hari, ini Fungsi masih saja 33 00:01:34,820 --> 00:01:35,950 tiga baris kode. 34 00:01:35,950 --> 00:01:39,860 Tetapi karena itu memanipulasi nilai-nilai dengan cara alamat mereka dan bukan 35 00:01:39,860 --> 00:01:43,700 nilai-nilai baku yang dilewatkan ke dalam fungsi, saya menyatakan bahwa swap sekarang 36 00:01:43,700 --> 00:01:47,670 diberdayakan untuk mengubah nilai-nilai yang yang disahkan pada melalui alamat mereka. 37 00:01:47,670 --> 00:01:49,510 >> Tapi aku harus membuat satu perubahan masih. 38 00:01:49,510 --> 00:01:52,190 Saya tidak bisa lagi lewat di x dan y sendiri. 39 00:01:52,190 --> 00:01:55,030 Saya harus lulus dalam alamat x dan y. 40 00:01:55,030 --> 00:01:58,160 Dan untuk melakukan itu, aku butuh sedikit berbeda atas notasi up. 41 00:01:58,160 --> 00:02:02,510 Saya ingin menukar x dan y dengan melewati di alamat x, ditunjukkan dengan 42 00:02:02,510 --> 00:02:07,190 ampersand x, dan alamat y, ditunjukkan dengan ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Demikian pula, di bagian atas sekarang harus saya mengubah prototipe fungsi untuk 44 00:02:10,570 --> 00:02:14,980 sesuai dengan perubahan yang saya buat, sehingga adalah, sekali lagi, pointer ke int. 45 00:02:14,980 --> 00:02:17,190 b adalah, sekali lagi, pointer ke int. 46 00:02:17,190 --> 00:02:18,770 Dan sekarang aku bisa menyimpan file saya. 47 00:02:18,770 --> 00:02:20,680 Dan mari kita ulang dan menjalankannya. 48 00:02:20,680 --> 00:02:25,330 >> Membuat Swap dot slash swap. 49 00:02:25,330 --> 00:02:29,660 Dan kali ini, x dan y memang sekarang bertukar rupa sehingga nilai-nilai mereka tidak 50 00:02:29,660 --> 00:02:31,950 1 dan 2, tetapi 2 dan 1. 51 00:02:31,950 --> 00:02:34,900