1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> DAVID MALAN: Hello, dan selamat datang kembali ke CS50. 3 00:00:13,260 --> 00:00:14,860 Jadi ini adalah hujung minggu empat. 4 00:00:14,860 --> 00:00:16,680 Hanya satu pengumuman pertama. 5 00:00:16,680 --> 00:00:19,600 Jadi yang dipanggil kelima Isnin adalah datang pada hari Isnin akan datang. 6 00:00:19,600 --> 00:00:22,800 Ini adalah peluang untuk berubah dari Sab / UNSAT kepada gred surat, atau dari 7 00:00:22,800 --> 00:00:24,130 gred surat Sab / UNSAT. 8 00:00:24,130 --> 00:00:27,130 Annoyingly, proses yang tidak memerlukan tandatangan, kerana anda perlu mengisi 9 00:00:27,130 --> 00:00:28,770 keluar salah satu add / drop merah jambu bentuk. 10 00:00:28,770 --> 00:00:31,680 >> Kerana teknikal, SAT / UNSAT versi dan versi gred surat 11 00:00:31,680 --> 00:00:33,320 mempunyai nombor katalog yang berbeza. 12 00:00:33,320 --> 00:00:34,240 Tetapi tidak ada masalah besar. 13 00:00:34,240 --> 00:00:36,620 Hanya datang kepada saya atau kepada Rob atau Lauren pada bila-bila. 14 00:00:36,620 --> 00:00:39,550 Atau email kami jika anda tidak mempunyai jenis kertas kerja yang anda perlukan hari ini, dan kami 15 00:00:39,550 --> 00:00:43,410 pasti akan membantu anda mengambil menjaga bahawa sebelum Isnin. 16 00:00:43,410 --> 00:00:45,780 >> Baiklah, jadi hari ini - 17 00:00:45,780 --> 00:00:47,630 sebenarnya, ada sedikit gema. 18 00:00:47,630 --> 00:00:51,070 Bolehkah kita nada saya ke bawah sedikit? 19 00:00:51,070 --> 00:00:51,730 OK. 20 00:00:51,730 --> 00:00:54,850 Jadi hari ini, kita memperkenalkan topik dikenali sebagai petunjuk. 21 00:00:54,850 --> 00:00:57,770 Dan saya akan mengakui bahawa ini adalah salah satu daripada topik yang lebih kompleks yang kita cenderung untuk 22 00:00:57,770 --> 00:01:00,960 meliputi di dalam kelas ini, atau benar-benar apa-apa kursus pengenalan yang menggunakan C. 23 00:01:00,960 --> 00:01:05,510 >> Tetapi mengambil kata-kata saya untuk itu, terutamanya jika fikiran anda berasa sedikit lebih bengkok 24 00:01:05,510 --> 00:01:07,100 hari ini dan pada minggu-minggu akan datang. 25 00:01:07,100 --> 00:01:10,340 Ia bukan wakil anda mendapat apa-apa lebih teruk pada ini, ia hanya bermaksud bahawa 26 00:01:10,340 --> 00:01:13,360 ia adalah satu topik yang amat canggih yang saya janji, beberapa minggu 27 00:01:13,360 --> 00:01:17,610 oleh itu, akan kelihatan terlalu menakjubkan mudah jika ditinjau kembali. 28 00:01:17,610 --> 00:01:18,720 >> Saya masih ingat hingga ke hari ini. 29 00:01:18,720 --> 00:01:22,190 Saya sedang duduk di Elliott Dewan Makan, duduk di sebelah saya TF Nishat Mehta, 30 00:01:22,190 --> 00:01:24,070 yang merupakan seorang penduduk Elliott rumah. 31 00:01:24,070 --> 00:01:26,340 Dan untuk sebab-sebab tertentu, ini topik hanya klik. 32 00:01:26,340 --> 00:01:29,430 Yang mengatakan bahawa saya juga berjuang dengannya untuk beberapa jumlah masa, tetapi saya 33 00:01:29,430 --> 00:01:33,610 akan melakukan yang terbaik untuk membantu mengelakkan sebarang seperti perjuangan dengan topik yang akhirnya 34 00:01:33,610 --> 00:01:34,580 agak kuat. 35 00:01:34,580 --> 00:01:37,350 >> Malah, salah satu topik yang kita akan membincangkan pada minggu-minggu akan datang ialah 36 00:01:37,350 --> 00:01:41,130 keselamatan, dan bagaimana anda boleh sebenarnya mengeksploitasi mesin dengan cara yang 37 00:01:41,130 --> 00:01:42,320 yang tidak bertujuan. 38 00:01:42,320 --> 00:01:45,850 Dan orang-orang exploitations biasanya hasil daripada pepijat, kesilapan yang kita 39 00:01:45,850 --> 00:01:49,740 orang membuat dengan tidak memahami beberapa pelaksanaan asas 40 00:01:49,740 --> 00:01:52,250 maklumat melalui program-program yang dibuat. 41 00:01:52,250 --> 00:01:55,410 >> Sekarang untuk membuat ini kelihatan semua pengguna yang lebih mesra, saya fikir saya akan memainkan 10 42 00:01:55,410 --> 00:01:59,680 preview kedua claymation yang sedikit angka dinamakan Binky yang telah dibawa ke 43 00:01:59,680 --> 00:02:03,020 hidup oleh seorang kawan kita di Stanford, profesor Nick Parlante. 44 00:02:03,020 --> 00:02:06,753 Jadi izinkan saya untuk memberikan anda ini teaser of Binky di sini. 45 00:02:06,753 --> 00:02:09,520 >> [MAIN SEMULA VIDEO] 46 00:02:09,520 --> 00:02:10,380 >> -Hey, Binky. 47 00:02:10,380 --> 00:02:11,050 Bangun. 48 00:02:11,050 --> 00:02:13,610 Ia adalah masa untuk bersenang-senang penunjuk. 49 00:02:13,610 --> 00:02:14,741 >> -Apa itu? 50 00:02:14,741 --> 00:02:16,440 Belajar mengenai petunjuk? 51 00:02:16,440 --> 00:02:17,928 Oh, cenderahati. 52 00:02:17,928 --> 00:02:18,920 >> [AKHIR VIDEO MAIN SEMULA] 53 00:02:18,920 --> 00:02:20,670 >> DAVID MALAN: Itulah Stanford sains komputer. 54 00:02:20,670 --> 00:02:23,194 Jadi lebih pada yang akan datang. 55 00:02:23,194 --> 00:02:24,930 >> [Tepuk tangan] 56 00:02:24,930 --> 00:02:26,660 >> DAVID MALAN: Maaf, Nick. 57 00:02:26,660 --> 00:02:30,680 >> Jadi ingat bahawa kali terakhir kita berakhir pada cliffhanger ini benar-benar menarik 58 00:02:30,680 --> 00:02:32,960 mana fungsi ini hanya tidak bekerja. 59 00:02:32,960 --> 00:02:34,960 Sekurang-kurangnya intuitif, ia berasa seperti ia harus bekerja. 60 00:02:34,960 --> 00:02:37,600 Hanya bertukar-tukar nilai dua integer. 61 00:02:37,600 --> 00:02:40,915 Tetapi ingat bahawa apabila kita dicetak keluar nilai-nilai asal dalam utama, satu dan 62 00:02:40,915 --> 00:02:44,210 dua, mereka masih satu dan dua dan bukan dua dan satu. 63 00:02:44,210 --> 00:02:46,070 >> Jadi biarlah saya sebenarnya menukar kepada perkakas. 64 00:02:46,070 --> 00:02:50,180 Dan saya menulis sehingga sedikit kod dalam rangka maju di sini, di mana saya mendakwa bahawa x 65 00:02:50,180 --> 00:02:52,500 akan 1, y akan 2. 66 00:02:52,500 --> 00:02:54,810 Saya kemudian mencetak kedua-dua mereka nilai dengan cap f. 67 00:02:54,810 --> 00:02:57,540 >> Saya kemudian mendakwa turun di sini bahawa kita akan menukar mereka. 68 00:02:57,540 --> 00:03:00,800 Saya meninggalkan tempat kosong di sini untuk kita mengisi hari ini dalam seketika. 69 00:03:00,800 --> 00:03:03,380 Kemudian, saya akan mendakwa bahawa dua pembolehubah telah bertukar. 70 00:03:03,380 --> 00:03:04,770 Kemudian saya akan mencetak mereka keluar lagi. 71 00:03:04,770 --> 00:03:07,090 Dan supaya mudah-mudahan, saya dapat melihat 1, 2. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 Itulah yang mudah super Matlamat sekarang. 74 00:03:09,830 --> 00:03:12,430 >> Jadi bagaimana kita pergi tentang bertukar-tukar dua pembolehubah? 75 00:03:12,430 --> 00:03:17,220 Baik jika saya mencadangkan di sini bahawa cawan mungkin mewakili memori dalam komputer. 76 00:03:17,220 --> 00:03:19,070 Ini adalah gigitan beberapa, ini merupakan satu lagi beberapa gigitan. 77 00:03:19,070 --> 00:03:23,260 Bolehkah kita telah sukarelawan datang dan campuran beberapa minuman kita, jika biasa? 78 00:03:23,260 --> 00:03:23,920 Ayuh up. 79 00:03:23,920 --> 00:03:24,815 Apa nama anda? 80 00:03:24,815 --> 00:03:25,260 >> JESS: Jess. 81 00:03:25,260 --> 00:03:25,690 >> DAVID MALAN: Jess? 82 00:03:25,690 --> 00:03:26,540 Datang pada sehingga, Jess. 83 00:03:26,540 --> 00:03:29,180 Jika anda tidak keberatan, kita perlu meletakkan Google Glass kepada anda supaya kita boleh 84 00:03:29,180 --> 00:03:30,430 mengabadikan ini. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 OK, kaca. 87 00:03:34,670 --> 00:03:37,250 Merakam video. 88 00:03:37,250 --> 00:03:43,103 Dan OK, kita adalah baik untuk pergi dengan Jess sini. 89 00:03:43,103 --> 00:03:43,810 Baiklah. 90 00:03:43,810 --> 00:03:45,120 Nice untuk bertemu dengan kamu. 91 00:03:45,120 --> 00:03:47,720 >> Jadi apa yang saya ingin anda lakukan di sini - jika anda boleh, agak cepat - 92 00:03:47,720 --> 00:03:51,040 hanya menuangkan kita setengah gelas oren jus dan setengah gelas susu, 93 00:03:51,040 --> 00:03:55,710 mewakili berkesan nombor 1 dalam satu cawan dan 2 dalam cawan yang lain. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> Ini akan menjadi rakaman yang baik. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> JESS: Maaf. 98 00:04:05,860 --> 00:04:06,330 >> DAVID MALAN: Tidak, tidak. 99 00:04:06,330 --> 00:04:08,703 Ia adalah OK. 100 00:04:08,703 --> 00:04:10,120 Nice. 101 00:04:10,120 --> 00:04:12,950 Baiklah, jadi kita perlu empat bait bernilai jus oren. 102 00:04:12,950 --> 00:04:14,460 Kami akan memanggilnya nilai 1. 103 00:04:14,460 --> 00:04:16,579 Sekarang empat lagi bait bernilai susu. 104 00:04:16,579 --> 00:04:18,519 Akan memanggilnya nilai 2. 105 00:04:18,519 --> 00:04:20,440 Jadi x dan y, yang masing-masing. 106 00:04:20,440 --> 00:04:23,450 >> Baiklah, jadi sekarang jika tugas di tangan - untuk anda, Jess, di hadapan semua 107 00:04:23,450 --> 00:04:24,270 rakan sekelas anda - 108 00:04:24,270 --> 00:04:28,510 adalah untuk menukar nilai-nilai x dan y seperti yang kita mahu jus oren dalam 109 00:04:28,510 --> 00:04:32,070 cawan lain dan susu di dalam cawan ini, bagaimana mungkin anda - sebelum anda benar-benar melakukan 110 00:04:32,070 --> 00:04:34,020 ia - tidak melakukan ini? 111 00:04:34,020 --> 00:04:35,220 >> OK, bijak keputusan. 112 00:04:35,220 --> 00:04:36,340 Jadi, anda memerlukan memori yang lebih sedikit. 113 00:04:36,340 --> 00:04:38,190 Jadi mari kita memperuntukkan sementara cawan, jika anda akan. 114 00:04:38,190 --> 00:04:40,540 Dan kini meneruskan untuk menukar x dan y. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> Excellent. 117 00:04:53,530 --> 00:04:54,420 Jadi sangat baik dilakukan. 118 00:04:54,420 --> 00:04:55,670 Terima kasih banyak, Jess. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 Di sini anda. 121 00:05:00,020 --> 00:05:01,950 A cenderamata kecil. 122 00:05:01,950 --> 00:05:04,350 >> OK, jadi jelas, idea super mudah. 123 00:05:04,350 --> 00:05:07,500 Sepenuhnya intuitif bahawa kita perlu sedikit lebih banyak ruang penyimpanan - dalam borang ini, 124 00:05:07,500 --> 00:05:09,750 cawan - jika kita benar-benar mahu menukar kedua-dua pembolehubah. 125 00:05:09,750 --> 00:05:11,110 Jadi mari kita melakukan perkara tersebut. 126 00:05:11,110 --> 00:05:14,330 Di sini di antara mana saya menuntut saya akan melakukan beberapa bertukar-tukar, saya akan 127 00:05:14,330 --> 00:05:15,720 pergi ke hadapan dan mengisytiharkan temp. 128 00:05:15,720 --> 00:05:17,980 Dan saya akan menetapkan sama, berkata, x. 129 00:05:17,980 --> 00:05:21,110 >> Kemudian saya akan menukar nilai x seperti Jess lakukan di sini dengan 130 00:05:21,110 --> 00:05:23,200 susu dan jus oren menjadi sama dengan y. 131 00:05:23,200 --> 00:05:27,460 Dan saya akan berubah y menjadi sama bukan x, kerana sekarang kita akan 132 00:05:27,460 --> 00:05:29,530 terperangkap di dalam bulatan, tetapi sementara. 133 00:05:29,530 --> 00:05:33,170 Di mana saya buat sementara waktu - atau mana Jess sementara meletakkan jus oren 134 00:05:33,170 --> 00:05:35,460 sebelum clobbering bahawa cawan dengan susu. 135 00:05:35,460 --> 00:05:37,250 >> Jadi biarlah saya pergi ke hadapan sekarang dan membuat ini. 136 00:05:37,250 --> 00:05:39,210 Ia dipanggil noswap.c. 137 00:05:39,210 --> 00:05:41,190 Dan sekarang mari saya menjalankan tiada swap. 138 00:05:41,190 --> 00:05:43,910 Dan sesungguhnya saya lihat, jika saya mengembangkan tingkap sedikit, yang 139 00:05:43,910 --> 00:05:45,160 x 1, y ialah 2. 140 00:05:45,160 --> 00:05:47,230 Dan kemudian x 2, y ialah 1. 141 00:05:47,230 --> 00:05:51,910 >> Tetapi ingat bahawa pada hari Isnin kita melakukan perkara-perkara sedikit berbeza di mana saya 142 00:05:51,910 --> 00:05:56,760 bukannya melaksanakan fungsi penolong, jika anda akan, yang sebenarnya tidak sah. 143 00:05:56,760 --> 00:05:58,010 Saya memanggilnya menukar. 144 00:05:58,010 --> 00:06:01,600 Saya berikan dua parameter, dan saya dipanggil mereka dan saya memanggil mereka b. 145 00:06:01,600 --> 00:06:04,380 >> Terus terang, saya boleh memanggil mereka x dan y. 146 00:06:04,380 --> 00:06:06,040 Tidak ada yang berhenti saya dari berbuat demikian. 147 00:06:06,040 --> 00:06:08,140 Tetapi saya akan berhujah ia kemudian yang kabur sedikit. 148 00:06:08,140 --> 00:06:11,910 Kerana ingat untuk Isnin bahawa kita mendakwa bahawa parameter ini adalah 149 00:06:11,910 --> 00:06:13,650 salinan nilai berlalu masuk 150 00:06:13,650 --> 00:06:15,640 Jadi ia hanya messes dengan anda fikiran, saya fikir, jika anda menggunakan 151 00:06:15,640 --> 00:06:17,370 tepat pemboleh ubah yang sama. 152 00:06:17,370 --> 00:06:20,150 >> Jadi saya bukannya akan memanggil mereka dan b, hanya untuk kejelasan. 153 00:06:20,150 --> 00:06:21,840 Tetapi kita boleh memanggil mereka yang paling apa-apa yang kita mahu. 154 00:06:21,840 --> 00:06:26,280 Dan saya akan copy dan paste berkesan kod ini dari sana 155 00:06:26,280 --> 00:06:27,170 turun ke sini. 156 00:06:27,170 --> 00:06:29,110 Kerana saya hanya melihat bahawa ia berfungsi. 157 00:06:29,110 --> 00:06:30,790 Jadi, itu dalam keadaan cukup baik. 158 00:06:30,790 --> 00:06:37,390 Dan saya akan menukar x saya kepada saya, x kepada, y saya untuk b dan y saya untuk b. 159 00:06:37,390 --> 00:06:39,130 >> Jadi, dalam erti kata lain, logik yang tepat sama. 160 00:06:39,130 --> 00:06:40,850 Perkara yang sama yang tepat bahawa Jess lakukan. 161 00:06:40,850 --> 00:06:44,350 Dan kemudian satu perkara yang saya lakukan sehingga di sini, sudah tentu, kini sembah ini 162 00:06:44,350 --> 00:06:45,990 fungsi, atau memanggil fungsi ini. 163 00:06:45,990 --> 00:06:50,430 Jadi, saya akan memanggil fungsi ini dengan dua input, x dan y, dan tekan Simpan. 164 00:06:50,430 --> 00:06:52,300 >> Baiklah, jadi asasnya perkara yang sama. 165 00:06:52,300 --> 00:06:55,570 Malah, saya mungkin telah dibuat program tidak perlu kompleks oleh 166 00:06:55,570 --> 00:07:00,820 menulis fungsi yang hanya mengambil kira-kira enam baris kod sedangkan saya 167 00:07:00,820 --> 00:07:02,970 sebelum ini telah dilaksanakan ini dalam hanya tiga. 168 00:07:02,970 --> 00:07:06,230 >> Jadi biarlah saya pergi ke hadapan sekarang dan membentuk semula ini, tidak membuat swap. 169 00:07:06,230 --> 00:07:07,920 Baiklah, saya diskrukan di sini. 170 00:07:07,920 --> 00:07:11,290 Ini harus menjadi satu kesilapan yang anda mungkin lihat semakin biasa sebagai anda 171 00:07:11,290 --> 00:07:12,380 program mendapatkan lebih kompleks. 172 00:07:12,380 --> 00:07:13,470 Tetapi ada satu menetapkan mudah. 173 00:07:13,470 --> 00:07:15,650 Biar saya skrol kembali di sini. 174 00:07:15,650 --> 00:07:18,190 >> Dan apa yang kesilapan yang pertama yang saya lihat? 175 00:07:18,190 --> 00:07:19,520 Pengakuan tersirat. 176 00:07:19,520 --> 00:07:21,466 Apa yang biasanya menunjukkan? 177 00:07:21,466 --> 00:07:22,830 Oh, saya terlupa prototaip. 178 00:07:22,830 --> 00:07:26,900 Saya terlupa untuk mengajar pengkompil bahawa swap akan wujud walaupun dia 179 00:07:26,900 --> 00:07:28,920 tidak wujud pada awal-awal program. 180 00:07:28,920 --> 00:07:35,780 Jadi, saya hanya akan mengatakan tidak sah, swap, int, b int, koma bertitik. 181 00:07:35,780 --> 00:07:37,280 >> Jadi, saya tidak akan reimplement itu. 182 00:07:37,280 --> 00:07:39,140 Tetapi sekarang ia sepadan dengan apa yang turun di sini. 183 00:07:39,140 --> 00:07:42,530 Dan notis, ketiadaan koma bertitik di sini, yang tidak perlu apabila 184 00:07:42,530 --> 00:07:43,200 melaksanakan. 185 00:07:43,200 --> 00:07:46,010 >> Jadi biarlah saya membentuk semula ini, tidak membuat swap. 186 00:07:46,010 --> 00:07:46,910 Bentuk yang lebih baik. 187 00:07:46,910 --> 00:07:48,130 Main tiada swap. 188 00:07:48,130 --> 00:07:48,740 Dan sialan. 189 00:07:48,740 --> 00:07:51,650 Sekarang kita kembali di mana kita berada pada hari Isnin, di mana perkara yang tidak menukar. 190 00:07:51,650 --> 00:07:55,410 >> Dan apa yang penjelasan yang intuitif mengapa ini berlaku? 191 00:07:55,410 --> 00:07:56,380 Ya? 192 00:07:56,380 --> 00:07:57,630 >> PELAJAR: [didengar]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> DAVID MALAN: Tepat sekali. 195 00:08:05,230 --> 00:08:07,330 Jadi a dan b adalah salinan x dan y. 196 00:08:07,330 --> 00:08:10,680 Dan sebenarnya, bila-bila masa anda telah memanggil fungsi setakat yang 197 00:08:10,680 --> 00:08:12,540 pas pembolehubah seperti Ints - 198 00:08:12,540 --> 00:08:14,470 seperti swap menjangkakan di sini - 199 00:08:14,470 --> 00:08:16,270 anda semua telah lulus dalam salinan. 200 00:08:16,270 --> 00:08:19,150 >> Sekarang ini bermakna ia mengambil masa sedikit masa, kedua berpecah, bagi 201 00:08:19,150 --> 00:08:23,270 komputer untuk menyalin dari satu bit berubah-ubah ke dalam bit yang lain. 202 00:08:23,270 --> 00:08:24,610 Tetapi itu bukan satu masalah besar. 203 00:08:24,610 --> 00:08:25,920 Tetapi mereka tetap satu salinan. 204 00:08:25,920 --> 00:08:30,020 >> Dan sehingga kini, dalam konteks swap, Saya sebenarnya berjaya 205 00:08:30,020 --> 00:08:31,180 berubah dan b. 206 00:08:31,180 --> 00:08:33,000 Malah, mari kita buat cepat kewarasan cek. 207 00:08:33,000 --> 00:08:36,830 Cetak f ialah% i, baris baru. 208 00:08:36,830 --> 00:08:38,770 Dan plug mari dalam. 209 00:08:38,770 --> 00:08:41,830 Sekarang mari kita lakukan perkara yang sama dengan b. 210 00:08:41,830 --> 00:08:43,640 Dan mari kita melakukan perkara yang sama di sini. 211 00:08:43,640 --> 00:08:47,260 >> Dan sekarang, saya tulis mereka garis yang sama sekali lagi di bahagian bawah fungsi 212 00:08:47,260 --> 00:08:51,250 selepas tiga baris saya menarik boleh dilaksanakan, dan 213 00:08:51,250 --> 00:08:53,270 mencetak dan b sekali lagi. 214 00:08:53,270 --> 00:08:56,030 Jadi sekarang mari kita membuat ini, tidak membuat swap. 215 00:08:56,030 --> 00:08:58,430 Izinkan saya membuat tetingkap terminal suatu sedikit lebih tinggi, supaya kita dapat melihat 216 00:08:58,430 --> 00:08:59,520 lebih dari itu sekaligus. 217 00:08:59,520 --> 00:09:00,860 >> Dan menjalankan tiada swap. 218 00:09:00,860 --> 00:09:04,000 x 1, y ialah 2. ialah 1, b ialah 2. 219 00:09:04,000 --> 00:09:06,070 Dan kemudian, ialah 2, b ialah 1. 220 00:09:06,070 --> 00:09:09,390 Jadi ia sedang bekerja, seperti Jess lakukan di sini dalam swap. 221 00:09:09,390 --> 00:09:13,090 Tetapi sudah tentu, ia mempunyai kesan pada pembolehubah utama. 222 00:09:13,090 --> 00:09:15,360 >> Jadi kita lihat helah di mana kita boleh menetapkan ini, bukan? 223 00:09:15,360 --> 00:09:19,560 Apabila anda berhadapan dengan skop ini isu, anda hanya boleh menyepak bola dan membuat x 224 00:09:19,560 --> 00:09:22,400 dan y jenis pembolehubah bukan? 225 00:09:22,400 --> 00:09:23,390 >> Anda boleh membuat mereka global. 226 00:09:23,390 --> 00:09:27,560 Meletakkan mereka di bahagian paling atas fail seperti yang kita lakukan, walaupun dalam permainan 15. 227 00:09:27,560 --> 00:09:28,890 Kami menggunakan ubah global. 228 00:09:28,890 --> 00:09:32,420 Tetapi dalam konteks permainan 15, adalah wajar untuk mempunyai global 229 00:09:32,420 --> 00:09:37,170 pembolehubah yang mewakili lembaga, kerana keseluruhan daripada 15.c adalah 230 00:09:37,170 --> 00:09:38,650 kira-kira melaksanakan permainan itu. 231 00:09:38,650 --> 00:09:41,470 Itulah yang fail wujud lakukan. 232 00:09:41,470 --> 00:09:44,170 >> Tetapi dalam kes ini di sini, saya memanggil swap berfungsi. 233 00:09:44,170 --> 00:09:45,380 Saya mahu untuk menukar dua pembolehubah. 234 00:09:45,380 --> 00:09:48,950 Dan ia harus bermula untuk berasa ceroboh jika penyelesaian kepada semua kami 235 00:09:48,950 --> 00:09:51,300 masalah apabila kita masuk ke dalam skop isu ini menjadikan ia global. 236 00:09:51,300 --> 00:09:54,730 Kerana dengan cepat program kami akan menjadi agak kacau-bilau. 237 00:09:54,730 --> 00:09:57,760 Dan kita lakukan yang sangat berhati-hati akibat di 15.c. 238 00:09:57,760 --> 00:10:00,470 >> Tetapi ternyata ada cara yang lebih baik sama sekali. 239 00:10:00,470 --> 00:10:05,600 Biar saya benar-benar pergi ke belakang dan memadam mencetak f itu, hanya untuk memudahkan kod ini. 240 00:10:05,600 --> 00:10:09,160 Dan biarlah saya mencadangkan supaya ini, sesungguhnya, yang buruk. 241 00:10:09,160 --> 00:10:15,990 Tetapi jika saya bukan menambah dalam beberapa asterisk dan bintang, saya bukannya boleh menjadikan ini 242 00:10:15,990 --> 00:10:18,670 fungsi ke dalam satu yang sebenarnya operasi. 243 00:10:18,670 --> 00:10:25,020 >> Jadi biarlah saya kembali di sini dan mengakui mengatakan asterisk sentiasa sukar, 244 00:10:25,020 --> 00:10:26,170 jadi saya akan berkata bintang. 245 00:10:26,170 --> 00:10:27,660 Saya hanya akan mengaku kepada yang satu. 246 00:10:27,660 --> 00:10:28,190 Baiklah. 247 00:10:28,190 --> 00:10:30,190 Dan kini, apa yang saya akan untuk melakukan sebaliknya? 248 00:10:30,190 --> 00:10:34,130 >> Jadi pertama sekali, saya akan nyatakan bahawa bukan lulus int ke dalam 249 00:10:34,130 --> 00:10:37,980 fungsi swap ini, saya bukan pergi untuk mengatakan int bintang. 250 00:10:37,980 --> 00:10:39,170 Kini, apa yang bintang menunjukkan? 251 00:10:39,170 --> 00:10:41,970 Ini adalah bahawa konsep penunjuk bahawa Binky, watak claymation, adalah 252 00:10:41,970 --> 00:10:43,465 merujuk kepada masa lalu. 253 00:10:43,465 --> 00:10:47,610 >> Jadi, jika kita katakan int bintang, makna sekarang ini adalah bahawa tidak akan menjadi 254 00:10:47,610 --> 00:10:49,110 diluluskan oleh nilainya. 255 00:10:49,110 --> 00:10:50,350 Ia tidak akan disalin masuk 256 00:10:50,350 --> 00:10:54,700 Sebaliknya, alamat adalah akan berlalu masuk 257 00:10:54,700 --> 00:10:57,840 >> Jadi ingat bahawa di dalam komputer anda adalah sejumlah besar memori, jika 258 00:10:57,840 --> 00:10:58,760 dikenali sebagai RAM. 259 00:10:58,760 --> 00:11:00,520 Dan RAM yang hanya keseluruhan sekumpulan bait. 260 00:11:00,520 --> 00:11:03,320 Jadi, jika Mac atau PC anda mempunyai dua gigabait, anda mempunyai 2 261 00:11:03,320 --> 00:11:05,760 bilion bait ingatan. 262 00:11:05,760 --> 00:11:08,440 >> Sekarang mari kita hanya menganggap bahawa hanya untuk menjaga perkara-perkara yang baik dan teratur, kita 263 00:11:08,440 --> 00:11:09,450 memberikan alamat - 264 00:11:09,450 --> 00:11:10,170 beberapa - 265 00:11:10,170 --> 00:11:12,270 kepada tiap-tiap bait RAM dalam komputer anda. 266 00:11:12,270 --> 00:11:15,410 Bait pertama mereka 2 bilion dengan bilangan sifar. 267 00:11:15,410 --> 00:11:18,572 Yang seterusnya adalah nombor satu bait, bilangan dua, semua cara di atas, dot dot 268 00:11:18,572 --> 00:11:20,530 dot, untuk kira-kira 2 bilion. 269 00:11:20,530 --> 00:11:23,640 >> Jadi, anda boleh nombor satu bait memori dalam komputer anda. 270 00:11:23,640 --> 00:11:26,460 Jadi mari kita menganggap bahawa itulah yang kita maksudkan dengan alamat. 271 00:11:26,460 --> 00:11:31,360 Oleh itu, apabila saya melihat int bintang, apa yang berlaku akan diluluskan ke swap sekarang ialah 272 00:11:31,360 --> 00:11:32,830 alamat a. 273 00:11:32,830 --> 00:11:37,150 Bukan nilai, tetapi apa sahaja yang posnya alamat adalah, jadi untuk bercakap - 274 00:11:37,150 --> 00:11:38,810 lokasi dalam RAM. 275 00:11:38,810 --> 00:11:41,250 >> Dan juga untuk b, saya akan untuk mengatakan perkara yang sama. 276 00:11:41,250 --> 00:11:42,720 Int, bintang, b. 277 00:11:42,720 --> 00:11:46,350 Sebagai mengetepikan, teknikal bintang boleh pergi di lokasi lain. 278 00:11:46,350 --> 00:11:50,140 Tetapi kita akan menyeragamkan pada bintang yang sedang betul-betul bersebelahan dengan jenis data. 279 00:11:50,140 --> 00:11:54,080 >> Jadi menukar tandatangan sekarang bermakna, memberi saya alamat int, dan panggilan 280 00:11:54,080 --> 00:11:55,400 yang alamat. 281 00:11:55,400 --> 00:11:58,690 Dan memberikan saya alamat yang lain daripada int dan hubungi alamat yang b. 282 00:11:58,690 --> 00:12:01,120 >> Tetapi sekarang kod saya di sini telah berubah. 283 00:12:01,120 --> 00:12:03,470 Kerana jika saya mengisytiharkan int temp - 284 00:12:03,470 --> 00:12:05,580 yang masih jenis int - 285 00:12:05,580 --> 00:12:08,700 tetapi saya menyimpan di dalamnya, apa jenis nilai? 286 00:12:08,700 --> 00:12:12,870 Untuk menjadi jelas, saya meletakkan satu dengan kod yang ditulis sekarang? 287 00:12:12,870 --> 00:12:14,360 >> Saya meletakkan lokasi dalam. 288 00:12:14,360 --> 00:12:16,500 Tetapi saya tidak mengambil berat tentang lokasi sekarang, betul? 289 00:12:16,500 --> 00:12:21,940 Suhu wujud hanya cawan ketiga Jess ' wujud, untuk tujuan apa? 290 00:12:21,940 --> 00:12:23,090 Untuk menyimpan nilai. 291 00:12:23,090 --> 00:12:24,830 Susu atau jus oren. 292 00:12:24,830 --> 00:12:28,520 Tidak benar-benar menyimpan alamat sama ada perkara-perkara, yang merasakan 293 00:12:28,520 --> 00:12:31,200 sedikit tidak masuk akal dalam hal ini sebenar konteks dunia juga. 294 00:12:31,200 --> 00:12:34,990 >> Jadi benar-benar, apa yang saya mahu dimasukkan ke dalam temp bukan alamat, tetapi 295 00:12:34,990 --> 00:12:36,180 kandungan. 296 00:12:36,180 --> 00:12:41,930 Jadi, jika adalah satu nombor seperti 123, ini adalah bait yang ke-123 memori yang hanya 297 00:12:41,930 --> 00:12:45,090 berlaku kepada penjajah, bahawa nilai dalam berlaku kepada penjajah. 298 00:12:45,090 --> 00:12:49,040 >> Jika saya mahu pergi ke alamat itu, Saya perlu mengatakan bintang. 299 00:12:49,040 --> 00:12:52,610 Begitu juga, jika saya mengubah apa yang di alamat, saya menukar 300 00:12:52,610 --> 00:12:53,570 ini untuk memulakan. 301 00:12:53,570 --> 00:12:58,185 Jika saya mahu menyimpan dalam apa yang di lokasi dengan apa yang di lokasi 302 00:12:58,185 --> 00:13:02,180 di b, bintang b bintang. 303 00:13:02,180 --> 00:13:05,340 >> Jadi ringkasnya, walaupun ini adalah tidak cukup tenggelam dalam lagi - dan saya tidak akan mengharapkan 304 00:13:05,340 --> 00:13:06,560 bahawa ia akan begitu pantas - 305 00:13:06,560 --> 00:13:11,100 menyedari bahawa semua yang saya lakukan adalah awalan bintang-bintang kepada pembolehubah saya, 306 00:13:11,100 --> 00:13:13,350 kata tidak merebut nilai. 307 00:13:13,350 --> 00:13:14,520 Jangan menukar nilai-nilai. 308 00:13:14,520 --> 00:13:17,600 Tetapi sebaliknya, mereka pergi ke alamat dan mendapatkan nilai. 309 00:13:17,600 --> 00:13:21,430 Pergi ke alamat itu dan perubahan nilai di sana. 310 00:13:21,430 --> 00:13:25,500 >> Jadi sekarang biarlah saya skrol kembali ke atas, hanya untuk menetapkan garis ini di sini, untuk 311 00:13:25,500 --> 00:13:27,690 menukar prototaip kepada perlawanan. 312 00:13:27,690 --> 00:13:30,280 Tetapi sekarang saya perlu untuk melakukan satu perkara yang lain. 313 00:13:30,280 --> 00:13:35,500 Dengan kata lain, jika saya telah mengubah jenis hujah swap yang menjangkakan, 314 00:13:35,500 --> 00:13:37,245 apa lagi yang saya perlu perubahan dalam kod saya? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> Apabila saya memanggil swap. 317 00:13:40,840 --> 00:13:43,340 Kerana sekarang, apa yang saya Saya lulus untuk menukar masih? 318 00:13:43,340 --> 00:13:47,450 Nilai x dan nilai y, atau susu dan jus oren. 319 00:13:47,450 --> 00:13:48,510 Tetapi saya tidak mahu berbuat demikian. 320 00:13:48,510 --> 00:13:51,060 Saya bukan mahu lulus dalam apa? 321 00:13:51,060 --> 00:13:53,050 Lokasi x dan lokasi y. 322 00:13:53,050 --> 00:13:55,300 Apakah alamat pos mereka, jadi untuk bercakap. 323 00:13:55,300 --> 00:13:57,600 >> Jadi untuk berbuat demikian, ada Ampersand An. 324 00:13:57,600 --> 00:13:59,260 Ampersand jenis bunyi seperti alamat. 325 00:13:59,260 --> 00:14:03,240 jadi n, Ampersand, alamat x, dan alamat y. 326 00:14:03,240 --> 00:14:06,790 Jadi ia sengaja yang kita gunakan ampersands apabila memanggil fungsi, 327 00:14:06,790 --> 00:14:10,230 dan bintang apabila mengisytiharkan dan apabila melaksanakan fungsi tersebut. 328 00:14:10,230 --> 00:14:14,220 >> Dan hanya memikirkan Ampersand sebagai alamat pengendali, dan bintang sebagai 329 00:14:14,220 --> 00:14:15,490 pergi ke sana operator - 330 00:14:15,490 --> 00:14:18,640 atau lebih dengan betul, operator dereference. 331 00:14:18,640 --> 00:14:23,480 Jadi itulah banyak keseluruhan perkataan hanya untuk mengatakan bahawa kini, mudah-mudahan, swap akan 332 00:14:23,480 --> 00:14:24,440 betul. 333 00:14:24,440 --> 00:14:26,550 >> Biar saya pergi ke hadapan dan membuat - 334 00:14:26,550 --> 00:14:30,940 mari kita sebenarnya menamakan semula fail, supaya program ini masih boleh dipanggil tidak swap. 335 00:14:30,940 --> 00:14:33,240 Saya mendakwa bahawa kita akan memanggilnya swap.c sekarang. 336 00:14:33,240 --> 00:14:35,670 Oleh itu, menukar. 337 00:14:35,670 --> 00:14:37,520 Dot, slash, menukar. 338 00:14:37,520 --> 00:14:40,210 >> Dan sekarang sesungguhnya, x 1, y ialah 2. 339 00:14:40,210 --> 00:14:44,040 Dan kemudian, x 2, y adalah satu. 340 00:14:44,040 --> 00:14:46,500 Nah mari kita lihat jika kita tidak boleh melakukan ini sedikit berbeza tentang apa yang 341 00:14:46,500 --> 00:14:47,180 berlaku di sini. 342 00:14:47,180 --> 00:14:51,250 Pertama, izinkan saya mengezum masuk pada kami lukisan skrin di sini. 343 00:14:51,250 --> 00:14:54,160 Dan biarlah saya mencadangkan untuk seketika - dan setiap kali saya menarik di sini akan mencerminkan 344 00:14:54,160 --> 00:14:58,660 di sana sekarang - izinkan saya mencadangkan supaya di sini adalah sejumlah besar memori, atau 345 00:14:58,660 --> 00:15:00,540 RAM, di dalam komputer saya. 346 00:15:00,540 --> 00:15:04,140 >> Dan ini akan menjadi nombor menggigit, katakan, 1. 347 00:15:04,140 --> 00:15:05,720 Ini akan menjadi bait nombor 2. 348 00:15:05,720 --> 00:15:08,220 Dan saya akan melakukan sejumlah lebih, dan maka sekumpulan dot dot titik untuk 349 00:15:08,220 --> 00:15:10,880 menunjukkan bahawa terdapat 2 bilion perkara-perkara ini. 350 00:15:10,880 --> 00:15:13,520 4, 5, dan sebagainya. 351 00:15:13,520 --> 00:15:17,055 >> Jadi ada yang pertama lima bait memori komputer saya. 352 00:15:17,055 --> 00:15:17,560 Semua betul? 353 00:15:17,560 --> 00:15:19,060 Sangat sedikit daripada 2 bilion. 354 00:15:19,060 --> 00:15:21,120 Tetapi sekarang saya akan mencadangkan berikut. 355 00:15:21,120 --> 00:15:27,490 Saya akan mencadangkan supaya x akan menyimpan nombor 1, dan y akan 356 00:15:27,490 --> 00:15:29,690 untuk menyimpan nombor 2. 357 00:15:29,690 --> 00:15:35,000 Dan biarlah saya pergi ke hadapan sekarang dan mewakili nilai-nilai seperti berikut. 358 00:15:35,000 --> 00:15:41,510 >> Mari kita buat ini seperti berikut. 359 00:15:41,510 --> 00:15:42,870 Berikan saya hanya satu kedua. 360 00:15:42,870 --> 00:15:44,150 Yang kedua. 361 00:15:44,150 --> 00:15:45,680 OK. 362 00:15:45,680 --> 00:15:47,560 Saya mahu membuat ini sedikit - 363 00:15:47,560 --> 00:15:50,440 mari kita buat ini lagi. 364 00:15:50,440 --> 00:15:53,250 Jika tidak, saya akan dan menggunakan nombor yang sama, tidak sengaja, 365 00:15:53,250 --> 00:15:54,230 berkali-kali. 366 00:15:54,230 --> 00:15:57,320 >> Jadi hanya jadi kita mempunyai nombor yang berlainan untuk bercakap tentang, mari kita memanggilnya bait ini 367 00:15:57,320 --> 00:16:03,391 nombor 123, 124, 125, 126, dan dot dot dot. 368 00:16:03,391 --> 00:16:08,400 Dan biarlah saya menuntut sekarang bahawa saya akan meletakkan nilai 1 di sini, dan nilai 2 369 00:16:08,400 --> 00:16:11,990 di sini, atau dikenali sebagai x dan y. 370 00:16:11,990 --> 00:16:15,300 Jadi ia hanya kebetulan bahawa ini x, ini adalah y. 371 00:16:15,300 --> 00:16:18,180 >> Dan hanya dengan beberapa peluang rawak, komputer, sistem operasi, 372 00:16:18,180 --> 00:16:21,890 berlaku untuk meletakkan x di lokasi nombor 123. 373 00:16:21,890 --> 00:16:25,590 Dan y berakhir di lokasi 124 - 374 00:16:25,590 --> 00:16:26,330 sialan. 375 00:16:26,330 --> 00:16:28,700 Saya sepatutnya ditetapkan ini. 376 00:16:28,700 --> 00:16:34,040 Oh lelaki, adakah saya benar-benar mahu untuk melakukan ini? 377 00:16:34,040 --> 00:16:37,340 Ya, saya mahu untuk menetapkan ini dan b yang betul kira-kira hari ini. 378 00:16:37,340 --> 00:16:39,950 Maaf, baru di ini. 379 00:16:39,950 --> 00:16:45,020 >> 127, 131, dan saya tidak mahu menjadi ini kompleks, tetapi kenapa saya menukar 380 00:16:45,020 --> 00:16:46,340 nombor di sana? 381 00:16:46,340 --> 00:16:48,360 Kerana saya mahu Ints untuk sebenarnya empat bait. 382 00:16:48,360 --> 00:16:49,810 Jadi mari kita dubur super tentang perkara ini. 383 00:16:49,810 --> 00:16:53,800 Supaya jika 1 berlaku ditangani 123, 2 akan berada di alamat 384 00:16:53,800 --> 00:16:55,730 127 kerana ia adalah hanya 4 bye dari sini. 385 00:16:55,730 --> 00:16:56,210 Itu sahaja. 386 00:16:56,210 --> 00:16:58,640 Dan kita akan lupa tentang semua alamat lain di dunia. 387 00:16:58,640 --> 00:17:03,320 >> Jadi x adalah di lokasi 123, y adalah di lokasi 127. 388 00:17:03,320 --> 00:17:05,770 Dan kini, apa yang saya benar-benar mahu lakukan? 389 00:17:05,770 --> 00:17:10,099 Apabila saya memanggil swap sekarang, apa yang sebenarnya berlaku? 390 00:17:10,099 --> 00:17:14,920 Nah, apabila saya panggil swap, saya lulus dalam alamat x dan alamat y. 391 00:17:14,920 --> 00:17:18,540 Jadi untuk contoh, jika kedua-dua keping kertas kini mewakili dua 392 00:17:18,540 --> 00:17:23,510 hujah-hujah dan b untuk menukar, apa yang saya akan menulis pada hari pertama ini, 393 00:17:23,510 --> 00:17:27,720 yang saya akan memanggil merujuk kepada sebagai? 394 00:17:27,720 --> 00:17:30,610 >> Tepat sekali, 123. 395 00:17:30,610 --> 00:17:31,905 Jadi ini saya menuntut adalah. 396 00:17:31,905 --> 00:17:32,955 Ini adalah parameter a. 397 00:17:32,955 --> 00:17:35,856 Saya meletakkan alamat x di sana. 398 00:17:35,856 --> 00:17:38,152 >> Apa itu? 399 00:17:38,152 --> 00:17:40,890 >> Apa itu? 400 00:17:40,890 --> 00:17:41,190 >> Tidak, tidak. 401 00:17:41,190 --> 00:17:41,720 Itu OK. 402 00:17:41,720 --> 00:17:42,570 Masih baik, masih baik. 403 00:17:42,570 --> 00:17:43,530 Jadi ini adalah satu. 404 00:17:43,530 --> 00:17:46,240 Dan kini pada bahagian kedua kertas, ini akan menjadi b, dan apa yang saya 405 00:17:46,240 --> 00:17:49,010 akan menulis mengenai ini sekeping kertas? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> Jadi satu-satunya perkara itu berubah sejak ketara sekali kami sebelum ini cerita ini adalah, 408 00:17:53,720 --> 00:17:58,590 dan bukannya benar-benar 1 dan 2, saya akan lulus dalam 123 dan 127. 409 00:17:58,590 --> 00:18:02,130 Dan saya kini akan diletakkan di dalam ini kotak ini, betul? 410 00:18:02,130 --> 00:18:04,640 Supaya kotak hitam kini mewakili fungsi swap. 411 00:18:04,640 --> 00:18:07,230 >> Sementara itu, mari kita kini mempunyai seseorang melaksanakan fungsi swap. 412 00:18:07,230 --> 00:18:09,090 Adakah seseorang di sini suka secara sukarela? 413 00:18:09,090 --> 00:18:09,560 Ayuh up. 414 00:18:09,560 --> 00:18:11,080 Apa nama anda? 415 00:18:11,080 --> 00:18:11,460 Charlie. 416 00:18:11,460 --> 00:18:12,080 Baiklah, Charlie. 417 00:18:12,080 --> 00:18:14,810 Ayuh up. 418 00:18:14,810 --> 00:18:17,310 >> Jadi Charlie akan bermain peranan kotak hitam kita. 419 00:18:17,310 --> 00:18:21,460 Dan Charlie, apa yang saya ingin anda lakukan kini melaksanakan swap dalam apa-apa cara 420 00:18:21,460 --> 00:18:25,320 bahawa, memandangkan kedua-dua alamat, anda sebenarnya akan 421 00:18:25,320 --> 00:18:26,330 untuk menukar nilai-nilai. 422 00:18:26,330 --> 00:18:28,290 Dan saya akan berbisik di telinga anda bagaimana untuk menjalankan TV di sini. 423 00:18:28,290 --> 00:18:29,930 >> Oleh itu, pergilah ke hadapan, dan anda kotak hitam. 424 00:18:29,930 --> 00:18:30,920 Sampai di sana. 425 00:18:30,920 --> 00:18:34,054 Apakah nilai-nilai yang anda lihat, dan nilai apa yang anda lihat untuk b? 426 00:18:34,054 --> 00:18:36,740 >> CHARLIE: adalah 123 dan b adalah 127. 427 00:18:36,740 --> 00:18:37,530 >> DAVID MALAN: OK, betul-betul. 428 00:18:37,530 --> 00:18:38,940 Sekarang berhenti di sana untuk seketika. 429 00:18:38,940 --> 00:18:41,680 Perkara pertama yang anda akan lakukan sekarang, mengikut kod - yang 430 00:18:41,680 --> 00:18:43,220 Saya kini akan tarik sehingga pada skrin - 431 00:18:43,220 --> 00:18:46,750 akan menjadi untuk memperuntukkan sedikit sedikit ingatan dipanggil temp. 432 00:18:46,750 --> 00:18:48,850 Jadi, saya akan pergi ke hadapan dan memberi ingatan itu. 433 00:18:48,850 --> 00:18:52,210 >> Jadi ini akan menjadi pembolehubah ketiga bahawa anda mempunyai akses kepada 434 00:18:52,210 --> 00:18:54,080 anda dipanggil temp. 435 00:18:54,080 --> 00:18:57,120 Dan apa yang anda akan menulis di atas sekeping menggoda kertas? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> CHARLIE: Penunjuk, bukan? 438 00:19:03,470 --> 00:19:04,790 >> DAVID MALAN: OK, juga tidak semestinya petunjuk. 439 00:19:04,790 --> 00:19:07,230 Jadi garis kod yang saya telah diserlahkan pada sebelah kanan, 440 00:19:07,230 --> 00:19:07,900 mari kita mulakan di sana. 441 00:19:07,900 --> 00:19:08,890 Ia mengatakan bintang. 442 00:19:08,890 --> 00:19:11,670 Jadi kini menyimpan nombor 123. 443 00:19:11,670 --> 00:19:16,660 Dan hanya intuitif, apa adakah bintang 123 maksudkan? 444 00:19:16,660 --> 00:19:21,630 >> Tetapi secara khusus, jika adalah 123, bintang bermaksud apa? 445 00:19:21,630 --> 00:19:22,560 Nilai sesuatu. 446 00:19:22,560 --> 00:19:24,580 Atau lebih bersahaja, pergi ke sana. 447 00:19:24,580 --> 00:19:28,620 Jadi biarlah saya mencadangkan, memegang di tangan anda, teruskan dan merawat bahawa 448 00:19:28,620 --> 00:19:29,430 seolah-olah ia adalah peta. 449 00:19:29,430 --> 00:19:32,940 Dan berjalan sendiri ke komputer yang ingatan, dan mencari kami apa yang 450 00:19:32,940 --> 00:19:36,520 di lokasi 123. 451 00:19:36,520 --> 00:19:37,720 Tepat sekali. 452 00:19:37,720 --> 00:19:41,100 >> Jadi kita lihat di lokasi 123 apa, jelas? 453 00:19:41,100 --> 00:19:44,240 OK, jadi apa nilai kini anda akan dimasukkan ke dalam menggoda? 454 00:19:44,240 --> 00:19:44,750 Tepat sekali. 455 00:19:44,750 --> 00:19:45,600 Jadi teruskan dan berbuat demikian. 456 00:19:45,600 --> 00:19:51,280 Dan menulis nombor 1 di atas sekeping kertas yang saat ini bertajuk temp. 457 00:19:51,280 --> 00:19:53,540 >> Dan kini langkah seterusnya yang anda akan melaksanakan 458 00:19:53,540 --> 00:19:54,310 akan menjadi apa. 459 00:19:54,310 --> 00:19:57,820 Nah, di sebelah kanan Barisan seterusnya kod adalah bintang b. b, daripada 460 00:19:57,820 --> 00:19:59,260 Sudah tentu, menyimpan alamat. 461 00:19:59,260 --> 00:20:02,270 Yang menangani 127. 462 00:20:02,270 --> 00:20:06,620 Star b bermaksud apa, bersahaja bercakap? 463 00:20:06,620 --> 00:20:08,700 >> Pergi ke lokasi tersebut. 464 00:20:08,700 --> 00:20:14,988 Oleh itu, pergilah ke hadapan dan mencari kami apa yang di lokasi 127. 465 00:20:14,988 --> 00:20:15,480 OK. 466 00:20:15,480 --> 00:20:19,170 Sudah tentu, di lokasi 127, masih nilai 2. 467 00:20:19,170 --> 00:20:24,060 Jadi apa yang anda akan kini kedai di apa yang di lokasi yang dalam? 468 00:20:24,060 --> 00:20:26,860 Jadi bintang cara pergi ke lokasi a. 469 00:20:26,860 --> 00:20:29,770 Apakah lokasi yang? 470 00:20:29,770 --> 00:20:30,430 >> Tepat sekali. 471 00:20:30,430 --> 00:20:34,190 Jadi sekarang, jika anda mahu menukar apa yang di lokasi itu - 472 00:20:34,190 --> 00:20:36,470 Saya akan pergi ke hadapan dan menjalankan pemadam berada di sini. 473 00:20:36,470 --> 00:20:37,760 Dan kini meletakkannya kembali pada berus. 474 00:20:37,760 --> 00:20:42,190 Apakah nombor yang anda akan menulis dalam kotak kosong sekarang? 475 00:20:42,190 --> 00:20:42,850 >> Tepat sekali. 476 00:20:42,850 --> 00:20:46,470 Jadi garis kod ini, jelas - mari saya berhenti apa Charlie lakukan dan 477 00:20:46,470 --> 00:20:51,730 menegaskan di sini, apa yang dia hanya dilakukan adalah menulis ke dalam kotak yang di lokasi 123 478 00:20:51,730 --> 00:20:55,150 nilai yang sebelum ini di b. 479 00:20:55,150 --> 00:20:59,140 Dan supaya kita kini telah dilaksanakan memang baris kedua ini kod. 480 00:20:59,140 --> 00:21:01,920 >> Sekarang malangnya, ada masih satu baris yang tinggal. 481 00:21:01,920 --> 00:21:04,900 Sekarang apa yang ada dalam temp, betul-betul? 482 00:21:04,900 --> 00:21:06,200 Ia adalah jelas nombor satu. 483 00:21:06,200 --> 00:21:07,020 Itu bukan alamat. 484 00:21:07,020 --> 00:21:09,380 Ia hanya nombor, jenis berubah-ubah dari satu minggu. 485 00:21:09,380 --> 00:21:13,520 >> Dan sekarang apabila anda mengatakan bintang b, yang bermakna pergi ke alamat b, yang merupakan satu 486 00:21:13,520 --> 00:21:15,090 kursus di sini. 487 00:21:15,090 --> 00:21:16,020 Jadi apabila anda sampai ke sana - 488 00:21:16,020 --> 00:21:18,320 Saya akan pergi ke hadapan dan memadam apa yang sebenarnya ada - dan apa yang anda 489 00:21:18,320 --> 00:21:20,820 akan menulis di 127 lokasi? 490 00:21:20,820 --> 00:21:22,010 >> CHARLIE: Suhu, yang merupakan salah. 491 00:21:22,010 --> 00:21:23,430 >> DAVID MALAN: Suhu, yang merupakan salah. 492 00:21:23,430 --> 00:21:25,670 Dan apa yang berlaku kepada suhu pada akhirnya? 493 00:21:25,670 --> 00:21:26,600 Nah, kita tidak benar-benar tahu. 494 00:21:26,600 --> 00:21:27,420 Kami tidak benar-benar peduli. 495 00:21:27,420 --> 00:21:31,090 Mana-mana masa yang kita telah melaksanakan fungsi setakat ini, apa-apa pembolehubah tempatan anda mempunyai 496 00:21:31,090 --> 00:21:31,890 memang tempatan. 497 00:21:31,890 --> 00:21:33,060 Dan mereka hanya hilang. 498 00:21:33,060 --> 00:21:35,040 Mereka dituntut oleh operasi sistem akhirnya. 499 00:21:35,040 --> 00:21:39,800 >> Jadi hakikat bahawa sementara masih mempunyai nilai 1 adalah jenis asas 500 00:21:39,800 --> 00:21:41,150 tidak menarik kepada kami. 501 00:21:41,150 --> 00:21:43,100 Baiklah, jadi pusingan tepukan jika kita boleh bagi Charlie. 502 00:21:43,100 --> 00:21:46,400 Sangat baik dilakukan. 503 00:21:46,400 --> 00:21:51,520 >> Baiklah, jadi apa lagi yang tidak ini bermakna kita boleh buat? 504 00:21:51,520 --> 00:21:54,400 Jadi ia ternyata bahawa kita telah memberitahu beberapa pembohongan putih 505 00:21:54,400 --> 00:21:55,540 untuk sekian lama. 506 00:21:55,540 --> 00:21:59,990 Malah, ia ternyata bahawa rentetan, semua masa ini, tidak benar-benar 507 00:21:59,990 --> 00:22:02,190 jujukan aksara per se. 508 00:22:02,190 --> 00:22:03,980 Ia jenis adalah intuitif. 509 00:22:03,980 --> 00:22:08,270 >> Tetapi dari segi teknikal bercakap, rentetan adalah Jenis data yang kita diisytiharkan di dalam 510 00:22:08,270 --> 00:22:12,170 perpustakaan CS50 untuk memudahkan dunia untuk beberapa minggu pertama kelas. 511 00:22:12,170 --> 00:22:20,130 Apakah tali benar-benar adalah alamat yang bersifat suatu tempat di RAM. 512 00:22:20,130 --> 00:22:25,530 Tali adalah benar-benar nombor, seperti 123 atau 127, yang berlaku kepada menanda 513 00:22:25,530 --> 00:22:28,420 mana rentetan bermula pada memori komputer anda. 514 00:22:28,420 --> 00:22:31,870 >> Tetapi ia tidak mewakili tali, per se, sendiri. 515 00:22:31,870 --> 00:22:33,460 Dan kita boleh melihat ini sebagai berikut. 516 00:22:33,460 --> 00:22:35,980 Biar saya pergi ke hadapan dan membuka beberapa kod itu di kalangan 517 00:22:35,980 --> 00:22:38,340 contoh kod sumber hari ini. 518 00:22:38,340 --> 00:22:42,225 Dan saya akan pergi ke hadapan dan membuka up, katakan, bandingkan 0.c. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 Ini adalah program kereta yang akan yang akan dilaksanakan seperti berikut. 521 00:22:48,790 --> 00:22:49,040 >> Pertama. 522 00:22:49,040 --> 00:22:50,420 Saya akan mengatakan sesuatu. 523 00:22:50,420 --> 00:22:52,660 Kemudian saya akan pergi ke hadapan dan mendapatkan rentetan daripada pengguna 524 00:22:52,660 --> 00:22:53,750 di garis depan. 525 00:22:53,750 --> 00:22:55,370 Kemudian saya akan mengatakan ia sekali lagi. 526 00:22:55,370 --> 00:22:57,540 Kemudian saya akan mendapat satu lagi rentetan daripada pengguna. 527 00:22:57,540 --> 00:23:00,390 >> Dan notis, saya menunjukkan salah satu daripada rentetan dalam pembolehubah yang dipanggil s, dan 528 00:23:00,390 --> 00:23:03,040 satu lagi rentetan ini di ubah dipanggil t. 529 00:23:03,040 --> 00:23:07,480 Dan sekarang saya akan mendakwa, sangat munasabah, bahawa jika s sama sama t, 530 00:23:07,480 --> 00:23:08,940 tali adalah sama. 531 00:23:08,940 --> 00:23:09,970 Anda menaip perkara yang sama. 532 00:23:09,970 --> 00:23:11,830 Lagi, tali adalah bukan perkara yang sama. 533 00:23:11,830 --> 00:23:15,440 >> Lagipun, jika kita input dua Ints, dua aksara, dua terapung, dua beregu, mana-mana 534 00:23:15,440 --> 00:23:18,400 jenis data kita telah berbincang mengenai setakat ini untuk membandingkan mereka - 535 00:23:18,400 --> 00:23:22,070 ingat kami membuat sangat jelas manakala yang lalu bahawa anda tidak melakukan ini, kerana 536 00:23:22,070 --> 00:23:25,840 tanda sama tunggal sudah tentu pengendali tugasan. 537 00:23:25,840 --> 00:23:26,820 Jadi yang akan menjadi bug. 538 00:23:26,820 --> 00:23:29,260 >> Kami menggunakan tanda sama sama, yang sememangnya membandingkan 539 00:23:29,260 --> 00:23:31,050 perkara untuk kesaksamaan benar. 540 00:23:31,050 --> 00:23:32,275 Tetapi saya menuntut ini adalah kereta. 541 00:23:32,275 --> 00:23:37,400 Jika saya pergi ke hadapan dan membuat membandingkan sifar, dan maka dot slash membandingkan sifar. 542 00:23:37,400 --> 00:23:39,700 Dan saya menaip, katakan, hello. 543 00:23:39,700 --> 00:23:41,590 Dan kemudian mari kita bertanya khabar sekali lagi. 544 00:23:41,590 --> 00:23:46,040 Benar-benar perkara yang sama, komputer tuntutan saya menaip perkara yang berbeza. 545 00:23:46,040 --> 00:23:47,640 >> Sekarang mungkin saya hanya disebabkan oleh kesalahan menaip sesuatu. 546 00:23:47,640 --> 00:23:49,910 Saya akan menaip nama saya kali ini. 547 00:23:49,910 --> 00:23:52,580 Maksud saya, hello. 548 00:23:52,580 --> 00:23:54,770 Hello. 549 00:23:54,770 --> 00:23:57,360 Ia berbeza setiap kali tunggal. 550 00:23:57,360 --> 00:23:58,430 >> Nah, mengapa itu? 551 00:23:58,430 --> 00:24:00,140 Apa yang benar-benar berlaku di bawah hood? 552 00:24:00,140 --> 00:24:03,270 Nah, apa yang benar-benar berlaku di bawah hud adalah rentetan maka 553 00:24:03,270 --> 00:24:07,410 Saya menaip dalam masa pertama misalnya adalah perkataan hello, sudah tentu. 554 00:24:07,410 --> 00:24:11,660 Tetapi jika kita mewakili ini di bawah hud, ingat bahawa 555 00:24:11,660 --> 00:24:13,470 rentetan dalam array. 556 00:24:13,470 --> 00:24:15,040 Dan kita telah berkata banyak pada masa lalu. 557 00:24:15,040 --> 00:24:20,200 >> Jadi, jika saya menarik array yang seperti ini, saya akan mewakili sesuatu yang agak 558 00:24:20,200 --> 00:24:23,030 sama dengan apa yang kita lakukan sebentar tadi. 559 00:24:23,030 --> 00:24:25,390 Dan ada sesuatu yang benar-benar khas di sini juga. 560 00:24:25,390 --> 00:24:28,090 Apa yang kita telah menentukan di akhir setiap rentetan? 561 00:24:28,090 --> 00:24:30,760 Ya, sifar backslash ini, yang hanya cara yang mewakili, 562 00:24:30,760 --> 00:24:33,610 secara literal, 00000000. 563 00:24:33,610 --> 00:24:35,680 Lapan 0 bit berturut-turut. 564 00:24:35,680 --> 00:24:37,610 >> Saya tidak tahu, terus-terang, apa selepas ini. 565 00:24:37,610 --> 00:24:40,090 Itu hanya RAM sekumpulan lebih di dalam komputer saya. 566 00:24:40,090 --> 00:24:40,970 Tetapi ini adalah array. 567 00:24:40,970 --> 00:24:42,260 Kita bercakap tentang pameran sebelum ini. 568 00:24:42,260 --> 00:24:45,010 Dan kita biasanya bercakap mengenai barisan sebagai lokasi sifar, 569 00:24:45,010 --> 00:24:46,580 maka satu, maka dua. 570 00:24:46,580 --> 00:24:47,950 Tetapi itu hanya untuk kemudahan. 571 00:24:47,950 --> 00:24:49,380 Dan yang sepenuhnya relatif. 572 00:24:49,380 --> 00:24:53,010 >> Apabila anda sebenarnya mendapat memori daripada komputer, ia sudah tentu apa-apa 573 00:24:53,010 --> 00:24:55,450 2 bilion beberapa bait ganjil, yang berpotensi. 574 00:24:55,450 --> 00:24:59,100 Jadi benar-benar di bawah hud, semua masa ini, ya. 575 00:24:59,100 --> 00:25:01,670 Ini sangat baik mungkin sifar kurungan. 576 00:25:01,670 --> 00:25:04,780 Tetapi jika anda menggali lebih mendalam di bawah hud, yang benar-benar 577 00:25:04,780 --> 00:25:07,000 menangani bilangan 123. 578 00:25:07,000 --> 00:25:09,150 Ini adalah alamat 124. 579 00:25:09,150 --> 00:25:11,040 Ini adalah alamat 125. 580 00:25:11,040 --> 00:25:12,540 >> Dan saya tidak skru sehingga masa ini. 581 00:25:12,540 --> 00:25:15,840 Ini adalah kini satu bait selain atas sebab apa? 582 00:25:15,840 --> 00:25:17,930 Bagaimana besar adalah char? 583 00:25:17,930 --> 00:25:19,170 Char adalah hanya satu bait. 584 00:25:19,170 --> 00:25:20,570 Int Satu biasanya empat bait. 585 00:25:20,570 --> 00:25:24,850 Jadi sebab itulah saya berjaya 123, 127, 131 dan sebagainya. 586 00:25:24,850 --> 00:25:27,560 Sekarang saya boleh menjaga matematik mudah dan hanya melakukan campur 1. 587 00:25:27,560 --> 00:25:30,510 Dan ini adalah apa yang kini benar-benar berlaku di bawah hood. 588 00:25:30,510 --> 00:25:37,760 >> Oleh itu, apabila anda menyatakan sesuatu seperti ini, rentetan s, ini sebenarnya - 589 00:25:37,760 --> 00:25:39,170 Ternyata - 590 00:25:39,170 --> 00:25:41,190 bintang char. 591 00:25:41,190 --> 00:25:44,640 Star, sudah tentu, ertinya alamat, penunjuk aka. 592 00:25:44,640 --> 00:25:46,200 Jadi ia adalah alamat sesuatu. 593 00:25:46,200 --> 00:25:47,510 Apakah alamat? 594 00:25:47,510 --> 00:25:47,760 >> Well - 595 00:25:47,760 --> 00:25:51,680 Saya satu-satunya yang boleh lihat sangat Perkara yang penting saya membuat, atau berfikir 596 00:25:51,680 --> 00:25:52,560 Saya membuat. 597 00:25:52,560 --> 00:25:55,270 Jadi tali - 598 00:25:55,270 --> 00:25:57,180 Perkara yang menyedihkan adalah saya mempunyai monitor di sana di mana saya 599 00:25:57,180 --> 00:25:58,100 dapat dilihat bahawa. 600 00:25:58,100 --> 00:26:00,990 >> Baiklah, jadi rentetan s adalah apa yang Saya dilaporkan sebelum ini. 601 00:26:00,990 --> 00:26:04,600 Tetapi ternyata, terima kasih kepada sedikit sihir dalam perpustakaan CS50, semua ini 602 00:26:04,600 --> 00:26:08,780 rentetan masa telah benar-benar menjadi bintang char. 603 00:26:08,780 --> 00:26:11,310 Bintang itu lagi bermakna penunjuk atau alamat. 604 00:26:11,310 --> 00:26:14,180 Hakikat bahawa ia mengapitnya yang perkataan char bermakna ia adalah 605 00:26:14,180 --> 00:26:15,970 alamat watak. 606 00:26:15,970 --> 00:26:23,100 >> Jadi, jika mendapatkan rentetan dipanggil, dan saya menaip di H-E-L-L-O, mencadangkan kini apa yang telah mendapatkan 607 00:26:23,100 --> 00:26:27,330 tali benar-benar telah kembali semua masa ini, walaupun kita telah agak 608 00:26:27,330 --> 00:26:29,980 terlalu dipermudahkan dunia? 609 00:26:29,980 --> 00:26:33,310 Apa yang tidak mendapat tali sebenarnya kembali sebagai nilai pulangan? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> 123 dalam kes ini, misalnya. 612 00:26:38,720 --> 00:26:42,630 Sebelum ini kami telah berkata bahawa mendapatkan tali hanya mengembalikan rentetan, satu turutan 613 00:26:42,630 --> 00:26:43,300 watak-watak. 614 00:26:43,300 --> 00:26:44,790 Tetapi itu sedikit dusta putih. 615 00:26:44,790 --> 00:26:48,010 Cara mendapatkan tali benar-benar berkesan di bawah hud adalah ia mendapat 616 00:26:48,010 --> 00:26:48,930 rentetan daripada pengguna. 617 00:26:48,930 --> 00:26:51,530 Ia plops watak-watak yang dia jenis dalam ingatan. 618 00:26:51,530 --> 00:26:54,680 Ia meletakkan sifar garis sendeng terbalik di hujung mereka jujukan aksara. 619 00:26:54,680 --> 00:26:57,310 >> Tetapi apa yang tidak mendapat tali benar-benar kembali? 620 00:26:57,310 --> 00:27:02,710 Ia benar-benar kembali alamat bait pertama dalam RAM yang 621 00:27:02,710 --> 00:27:04,130 ia digunakan untuk kekuatan itu. 622 00:27:04,130 --> 00:27:07,500 Dan ternyata bahawa hanya dengan kembali alamat tunggal 623 00:27:07,500 --> 00:27:12,120 aksara pertama dalam rentetan, iaitu yang mencukupi untuk mencari keseluruhannya 624 00:27:12,120 --> 00:27:12,630 tali. 625 00:27:12,630 --> 00:27:16,930 >> Dalam erti kata lain, dapatkan tali tidak mempunyai untuk kembali 123 dan 124 dan 125. 626 00:27:16,930 --> 00:27:19,950 Ia tidak perlu untuk memberikan saya yang panjang senarai semua bait yang 627 00:27:19,950 --> 00:27:20,740 rentetan saya menggunakan. 628 00:27:20,740 --> 00:27:22,670 Kerana satu, mereka semua kembali ke belakang. 629 00:27:22,670 --> 00:27:28,160 Dan dua, berdasarkan alamat yang pertama, saya boleh memikirkan di mana tali berakhir. 630 00:27:28,160 --> 00:27:29,910 Bagaimana? 631 00:27:29,910 --> 00:27:33,490 >> Watak null khas, backslash sifar pada akhir. 632 00:27:33,490 --> 00:27:35,430 Jadi, dalam erti kata lain, jika anda meninggal sekitar - 633 00:27:35,430 --> 00:27:36,530 dalam pembolehubah - 634 00:27:36,530 --> 00:27:41,300 alamat yang char, dan anda menganggap bahawa pada akhir mana-mana tali, apa-apa 635 00:27:41,300 --> 00:27:45,040 jujukan aksara seperti yang kita manusia berfikir tali, jika anda menganggap bahawa 636 00:27:45,040 --> 00:27:48,600 pada akhir mana-mana tali itu tidak sifar backslash, anda emas. 637 00:27:48,600 --> 00:27:52,430 Kerana anda sentiasa boleh mencari akhir rentetan. 638 00:27:52,430 --> 00:27:54,870 >> Sekarang apa yang benar-benar kemudian pergi di dalam program ini? 639 00:27:54,870 --> 00:27:59,990 Mengapa program ini, istimewa-0.c, kereta? 640 00:27:59,990 --> 00:28:01,690 Apa yang sebenarnya sedang berbanding? 641 00:28:01,690 --> 00:28:02,420 Ya? 642 00:28:02,420 --> 00:28:05,000 >> PELAJAR: [didengar]. 643 00:28:05,000 --> 00:28:05,730 >> DAVID MALAN: Tepat sekali. 644 00:28:05,730 --> 00:28:08,350 Ia membandingkan lokasi daripada tali-tali. 645 00:28:08,350 --> 00:28:12,420 Jadi, jika pengguna telah ditaip dalam hello sekali, seperti yang saya lakukan, ingatan mungkin berakhir 646 00:28:12,420 --> 00:28:13,430 kelihatan seperti ini. 647 00:28:13,430 --> 00:28:18,210 Jika pengguna itu jenis dalam hello lagi, tetapi dengan memanggil mendapatkan tali lagi, c ialah 648 00:28:18,210 --> 00:28:21,800 tidak begitu bijak melainkan jika anda mengajar ia menjadi pandai dengan menulis kod. 649 00:28:21,800 --> 00:28:22,430 >> C - 650 00:28:22,430 --> 00:28:23,860 dan komputer secara umum - 651 00:28:23,860 --> 00:28:27,370 jika anda menaip perkataan hello lagi, anda tahu apa yang anda akan mendapat. 652 00:28:27,370 --> 00:28:31,480 Anda hanya akan mendapat pelbagai kedua ingatan bahawa, ya, yang berlaku menjadi 653 00:28:31,480 --> 00:28:35,510 menyimpan H-E-L-L-O dan sebagainya. 654 00:28:35,510 --> 00:28:38,240 >> Ia akan kelihatan sama untuk kita manusia, tetapi alamat ini 655 00:28:38,240 --> 00:28:39,460 mungkin tidak 123. 656 00:28:39,460 --> 00:28:42,470 Ia mungkin hanya begitu berlaku bahawa sistem operasi mempunyai beberapa didapati 657 00:28:42,470 --> 00:28:45,430 ruang untuk contoh di lokasi - 658 00:28:45,430 --> 00:28:49,820 mari kita mengatakan sesuatu yang sewenang-wenangnya, seperti ini adalah lokasi 200. 659 00:28:49,820 --> 00:28:51,620 Dan ini adalah lokasi 201. 660 00:28:51,620 --> 00:28:53,060 Dan ini adalah lokasi 202. 661 00:28:53,060 --> 00:28:55,730 Kami tidak tahu di mana itu akan berada dalam ingatan. 662 00:28:55,730 --> 00:28:59,110 >> Tetapi apa yang ini bermakna adalah bahawa apa yang akan disimpan akhirnya di s? 663 00:28:59,110 --> 00:29:00,750 Nombor 123. 664 00:29:00,750 --> 00:29:04,860 Apa yang akan disimpan di dalam t, dalam contoh ini sewenang-wenangnya? 665 00:29:04,860 --> 00:29:06,300 Nombor 200. 666 00:29:06,300 --> 00:29:11,410 Dan semua ini bermakna maka adalah jelas, 123 tidak sama 200. 667 00:29:11,410 --> 00:29:14,940 Dan sebagainya ini jika keadaan tidak dinilai sebagai benar. 668 00:29:14,940 --> 00:29:18,430 Kerana tali get menggunakan berbeza ketulan memori setiap kali. 669 00:29:18,430 --> 00:29:20,360 >> Sekarang kita boleh melihat ini lagi dalam contoh yang lain. 670 00:29:20,360 --> 00:29:23,764 Biar saya pergi ke hadapan dan membuka salinan 0.c. 671 00:29:23,764 --> 00:29:28,770 Saya menuntut bahawa contoh ini akan cuba - tetapi gagal - untuk menyalin dua tali 672 00:29:28,770 --> 00:29:29,910 seperti berikut. 673 00:29:29,910 --> 00:29:31,730 >> Saya akan mengatakan sesuatu kepada pengguna. 674 00:29:31,730 --> 00:29:34,490 Saya kemudian pergi untuk mendapatkan tali dan memanggilnya s. 675 00:29:34,490 --> 00:29:36,400 Dan kini, saya melakukan pemeriksaan ini di sini. 676 00:29:36,400 --> 00:29:37,990 Yang telah dinyatakan ini kembali sementara. 677 00:29:37,990 --> 00:29:42,490 Tetapi apabila mungkin mendapat tali pulangan batal, lain aksara khas, atau khas 678 00:29:42,490 --> 00:29:45,050 simbol mari kita katakan. 679 00:29:45,050 --> 00:29:45,900 Jika ia daripada ingatan. 680 00:29:45,900 --> 00:29:48,970 >> Sebagai contoh, jika pengguna adalah benar-benar menjadi sukar dan jenis yang kejam 681 00:29:48,970 --> 00:29:51,220 beberapa watak-watak di papan kekunci dan hits Enter. 682 00:29:51,220 --> 00:29:54,580 Jika nombor yang watak-watak tidak boleh dimuatkan dalam RAM untuk apa gila 683 00:29:54,580 --> 00:29:57,820 sebab, dan mendapatkan tali mungkin baik kembali null. 684 00:29:57,820 --> 00:30:01,080 >> Atau jika program anda sendiri melakukan banyak perkara-perkara lain dan tidak hanya 685 00:30:01,080 --> 00:30:03,790 tidak memori yang cukup untuk rentetan get untuk berjaya, Ia mungkin berakhir 686 00:30:03,790 --> 00:30:05,240 sehingga kembali null. 687 00:30:05,240 --> 00:30:07,160 Tetapi mari kita lebih tepat tentang apa ini. 688 00:30:07,160 --> 00:30:10,280 Apakah s ini jenis data benar-benar? 689 00:30:10,280 --> 00:30:11,610 Bintang Char. 690 00:30:11,610 --> 00:30:14,560 >> Jadi ternyata kini kita boleh mengupas menyokong lapisan null. 691 00:30:14,560 --> 00:30:17,500 Rupa-rupanya, adalah batal - ya, jelas simbol khas. 692 00:30:17,500 --> 00:30:19,190 Tetapi apa yang ia benar-benar? 693 00:30:19,190 --> 00:30:25,220 Benar-benar, batal hanya simbol yang kita manusia digunakan untuk mewakili sifar juga. 694 00:30:25,220 --> 00:30:29,010 >> Jadi pengarang C, dan komputer lebih umum, memutuskan tahun yang lalu 695 00:30:29,010 --> 00:30:30,010 bahawa, anda tahu apa. 696 00:30:30,010 --> 00:30:34,850 Mengapa kita tidak memastikan bahawa tidak ada pengguna data yang pernah, pernah, pernah 697 00:30:34,850 --> 00:30:36,730 disimpan pada sifar bye? 698 00:30:36,730 --> 00:30:39,610 Malah, dalam contoh saya sewenang-wenangnya sebelum ini, saya tidak bermula penomboran 699 00:30:39,610 --> 00:30:40,390 bait pada sifar. 700 00:30:40,390 --> 00:30:41,540 Saya mula pada satu. 701 00:30:41,540 --> 00:30:44,950 Kerana saya tahu bahawa orang-orang di dunia telah membuat keputusan untuk menempah sifar 702 00:30:44,950 --> 00:30:47,970 bait dalam RAM sesiapa sahaja sebagai sesuatu yang istimewa. 703 00:30:47,970 --> 00:30:52,020 >> Sebab itu, bila-bila masa anda mahu isyarat bahawa sesuatu telah silapnya 704 00:30:52,020 --> 00:30:55,960 berkenaan dengan alamat, anda kembali null - atau dikenali sebagai sifar - 705 00:30:55,960 --> 00:30:59,410 dan kerana anda tahu bahawa tidak ada legit data di alamat sifar, jelas 706 00:30:59,410 --> 00:31:00,400 yang bermaksud ralat. 707 00:31:00,400 --> 00:31:04,080 Dan itulah sebabnya kita, oleh konvensyen, daftar for null dan pulangan sesuatu 708 00:31:04,080 --> 00:31:06,260 seperti dalam kes-kes. 709 00:31:06,260 --> 00:31:09,300 >> Jadi, jika kita tatal ke bawah sekarang, ini adalah hanya maka beberapa pemeriksaan ralat, hanya dalam kes 710 00:31:09,300 --> 00:31:10,610 sesuatu yang tidak kena dengan [? menyelamatkan?] 711 00:31:10,610 --> 00:31:13,470 sama sekali dan berhenti program dengan kembali awal. 712 00:31:13,470 --> 00:31:19,030 Keturunan ini kini boleh ditulis semula seperti ini, yang bermaksud apa? 713 00:31:19,030 --> 00:31:23,155 Pada sebelah kiri, memberi saya satu lagi penunjuk kepada watak, dan memanggilnya t. 714 00:31:23,155 --> 00:31:26,935 Apa yang saya menyimpan dalam t, berdasarkan on-line ini salah satu kod? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> Saya menyimpan lokasi. 717 00:31:32,170 --> 00:31:34,742 Khususnya lokasi yang berada di s. 718 00:31:34,742 --> 00:31:39,000 Jadi, jika pengguna telah ditaip dalam hello, dan yang pertama hello berlaku berakhir 719 00:31:39,000 --> 00:31:42,567 di sini, kemudian 123 nombor adalah akan kembali dari mendapatkan 720 00:31:42,567 --> 00:31:43,810 rentetan dan disimpan - 721 00:31:43,810 --> 00:31:44,780 seperti yang kita katakan tadi - 722 00:31:44,780 --> 00:31:45,440 dalam s. 723 00:31:45,440 --> 00:31:50,560 >> Apabila saya kini mengisytiharkan penunjuk lain untuk t char dan memanggilnya, apa nombor adalah 724 00:31:50,560 --> 00:31:53,940 benar-benar akan berakhir pada t mengikut cerita? 725 00:31:53,940 --> 00:31:55,420 Jadi 123. 726 00:31:55,420 --> 00:32:00,310 >> Jadi secara teknikal kini kedua-dua s dan t menunjuk kepada yang tepat 727 00:32:00,310 --> 00:32:02,410 ketulan sama ingatan. 728 00:32:02,410 --> 00:32:06,140 Jadi notis apa yang saya akan lakukan sekarang untuk membuktikan bahawa program ini adalah kereta. 729 00:32:06,140 --> 00:32:08,820 >> Pertama saya akan mendakwa, dengan f cetak, kesempatan 730 00:32:08,820 --> 00:32:10,080 salinan tali. 731 00:32:10,080 --> 00:32:11,660 Kemudian saya akan melakukan sedikit Ralat menyemak. 732 00:32:11,660 --> 00:32:12,160 Saya akan memastikan. 733 00:32:12,160 --> 00:32:16,710 Mari kita pastikan bahawa rentetan adalah pada t kurangnya lebih besar daripada sifar panjang, 734 00:32:16,710 --> 00:32:19,190 jadi ada beberapa watak terdapat untuk benar-benar mengambil kesempatan. 735 00:32:19,190 --> 00:32:22,840 >> Dan kemudian anda mungkin ingat ini dari contoh sebelumnya. 736 00:32:22,840 --> 00:32:25,630 2 atas - yang berada dalam fail ctype.h. 737 00:32:25,630 --> 00:32:30,800 T sifar kurungan memberikan saya sifar watak rentetan t. 738 00:32:30,800 --> 00:32:34,360 Dan 2 atas nilai yang sama, daripada Sudah tentu, menukarkan kepada huruf besar. 739 00:32:34,360 --> 00:32:38,230 >> Jadi intuitif, ini selaras diketengahkan kod adalah kesempatan pertama 740 00:32:38,230 --> 00:32:40,250 surat dalam t. 741 00:32:40,250 --> 00:32:44,485 Tetapi ia tidak mengambil kesempatan, intuitif, huruf pertama dalam s. 742 00:32:44,485 --> 00:32:48,130 Tetapi jika anda berfikir ke hadapan, apa yang saya kira-kira untuk melihat apabila saya menjalankan program ini 743 00:32:48,130 --> 00:32:54,220 dan mencetak kedua-dua asal, s, dan salinan yang dipanggil, t? 744 00:32:54,220 --> 00:32:55,350 >> Mereka sebenarnya akan sama. 745 00:32:55,350 --> 00:32:56,600 Dan mengapa mereka akan sama? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 Mereka kedua-dua menunjuk ke betul-betul perkara yang sama. 748 00:33:01,020 --> 00:33:01,610 Jadi mari kita buat ini. 749 00:33:01,610 --> 00:33:03,160 >> Buat sifar salinan. 750 00:33:03,160 --> 00:33:04,070 Ia menyusun OK. 751 00:33:04,070 --> 00:33:06,500 Izinkan saya menjalankan sifar salinan. 752 00:33:06,500 --> 00:33:10,110 Izinkan saya menaip sesuatu seperti hello dalam semua huruf kecil kemudian tekan Enter. 753 00:33:10,110 --> 00:33:16,520 Dan ia mendakwa bahawa kedua-dua s asal dan salinan memang serupa. 754 00:33:16,520 --> 00:33:17,920 >> Jadi apa yang sebenarnya berlaku di sini? 755 00:33:17,920 --> 00:33:20,100 Biar saya melukis gambar ini hanya untuk memberitahu cerita dalam 756 00:33:20,100 --> 00:33:21,340 cara yang sedikit berbeza. 757 00:33:21,340 --> 00:33:26,060 Apa yang benar-benar berlaku di bawah hud apabila saya mengisytiharkan sesuatu seperti 758 00:33:26,060 --> 00:33:30,410 char permulaan s, atau tali s, Saya mendapat penunjuk - 759 00:33:30,410 --> 00:33:33,090 yang berlaku kepada empat bait dalam perkakas CS50 760 00:33:33,090 --> 00:33:34,410 dan dalam banyak komputer. 761 00:33:34,410 --> 00:33:36,008 Dan saya akan memanggil s ini. 762 00:33:36,008 --> 00:33:39,810 Dan ini kini mempunyai beberapa nilai yang tidak diketahui. 763 00:33:39,810 --> 00:33:43,900 >> Apabila anda mengisytiharkan pembolehubah, melainkan jika anda diri anda meletakkan nilai di sana, yang 764 00:33:43,900 --> 00:33:44,570 tahu apa yang ada. 765 00:33:44,570 --> 00:33:48,110 Ia boleh menjadi beberapa urutan rawak bit dari pelaksanaan sebelumnya. 766 00:33:48,110 --> 00:33:52,490 Oleh itu, apabila saya, selaras saya kod lakukan mendapat tali, dan kemudian menyimpan kembali 767 00:33:52,490 --> 00:33:54,800 nilai s mendapatkan tali entah bagaimana - 768 00:33:54,800 --> 00:33:58,520 dan akhirnya kita akan mengupas kembali bagaimana mendapatkan kerja-kerja tali, entah bagaimana memperuntukkan 769 00:33:58,520 --> 00:34:00,480 array yang mungkin kelihatan sedikit seperti ini. 770 00:34:00,480 --> 00:34:05,390 H-E-L-L-O, backslash sifar. 771 00:34:05,390 --> 00:34:09,510 >> Mari kita andaikan bahawa ini adalah alamat 123 hanya konsisten pertama. 772 00:34:09,510 --> 00:34:13,000 Jadi mendapatkan pulangan tali, dalam line diketengahkan di sana, ia mengembalikan 773 00:34:13,000 --> 00:34:15,000 bilangan kita berkata, 123. 774 00:34:15,000 --> 00:34:17,420 Jadi apa yang benar-benar berlaku di dalam s di sini? 775 00:34:17,420 --> 00:34:26,590 >> Nah, apa yang benar-benar pergi dalam s adalah 123. 776 00:34:26,590 --> 00:34:29,250 Tetapi terus-terang, saya mendapat sedikit keliru dengan semua alamat-alamat ini, 777 00:34:29,250 --> 00:34:30,320 semua nombor-nombor ini sewenang-wenangnya. 778 00:34:30,320 --> 00:34:32,290 123, 124, 127. 779 00:34:32,290 --> 00:34:34,570 Jadi mari kita sebenarnya memudahkan dunia yang sedikit. 780 00:34:34,570 --> 00:34:38,800 >> Apabila kita bercakap mengenai petunjuk, terus-terang, untuk kita manusia, yang palang pintu yang peduli di mana 781 00:34:38,800 --> 00:34:39,870 perkara-perkara yang dalam ingatan? 782 00:34:39,870 --> 00:34:41,080 Itu benar-benar sewenang-wenangnya. 783 00:34:41,080 --> 00:34:43,370 Ia akan bergantung kepada berapa banyak RAM pengguna mempunyai. 784 00:34:43,370 --> 00:34:46,590 Ia akan bergantung kepada apabila pada hari anda menjalankan program ini, mungkin, dan 785 00:34:46,590 --> 00:34:48,250 apa input pengguna memberikan anda. 786 00:34:48,250 --> 00:34:50,060 Kami kediaman pada butiran penting. 787 00:34:50,060 --> 00:34:54,230 >> Jadi mari kita abstrak jauh dan mengatakan bahawa, apabila anda menjalankan baris kod seperti ini, 788 00:34:54,230 --> 00:34:57,320 char bintang s mendapat pulangan nilai rentetan get. 789 00:34:57,320 --> 00:35:02,720 Mengapa tidak kita bukan hanya menarik apa yang kita menyimpan memanggil penunjuk seolah-olah ia 790 00:35:02,720 --> 00:35:04,140 menghala ke arah sesuatu? 791 00:35:04,140 --> 00:35:07,000 Jadi saya menuntut sekarang bahawa s sehingga terdapat penunjuk - 792 00:35:07,000 --> 00:35:08,480 bawah hud ia alamat. 793 00:35:08,480 --> 00:35:11,330 Tetapi ia hanya menunjuk ke bait yang pertama di 794 00:35:11,330 --> 00:35:12,780 tali itu telah dikembalikan. 795 00:35:12,780 --> 00:35:16,710 >> Jika saya kini kembali kepada kod di sini, apa yang berlaku di garisan ini? 796 00:35:16,710 --> 00:35:20,020 Nah, di dalam bidang ini menekankan sekarang, Saya mengisytiharkan nampaknya lain 797 00:35:20,020 --> 00:35:21,070 ubah dipanggil t. 798 00:35:21,070 --> 00:35:25,700 Tetapi ia juga penunjuk, jadi saya akan untuk menarik sebagai, dalam teori, yang tepat 799 00:35:25,700 --> 00:35:26,710 kotak saiz yang sama. 800 00:35:26,710 --> 00:35:28,160 Dan saya akan memanggilnya t. 801 00:35:28,160 --> 00:35:33,500 >> Dan sekarang jika kita kembali kepada kod sekali lagi, apabila saya menyimpan s dalam t, 802 00:35:33,500 --> 00:35:36,920 apa yang saya secara teknikal meletakkan dalam t? 803 00:35:36,920 --> 00:35:39,350 Secara teknikal, ini adalah 123 nombor. 804 00:35:39,350 --> 00:35:42,270 Jadi benar-benar saya perlu menulis 123 bilangan sana. 805 00:35:42,270 --> 00:35:43,900 Tetapi mari kita mengambil tahap yang lebih tinggi. 806 00:35:43,900 --> 00:35:48,090 t, jika ia hanya penunjuk, intuitif, hanya itu. 807 00:35:48,090 --> 00:35:49,800 Itu semua itu menjadi disimpan di sana. 808 00:35:49,800 --> 00:35:54,970 >> Jadi sekarang dalam barisan yang menarik lepas kod, apabila saya benar-benar pergi kira-kira 809 00:35:54,970 --> 00:36:00,680 kesempatan watak sifar dalam t, apa yang berlaku? 810 00:36:00,680 --> 00:36:06,310 Nah, t kurungan sifar kini menunjuk apa watak, mungkin? 811 00:36:06,310 --> 00:36:07,460 >> Ia menunjuk ke h. 812 00:36:07,460 --> 00:36:08,870 Kerana t kurungan sifar - 813 00:36:08,870 --> 00:36:12,490 ingat, ini adalah sintaks lama. t kurungan sifar hanya bermakna jika t adalah rentetan, t 814 00:36:12,490 --> 00:36:15,590 kurungan sifar bermakna mendapat sifar watak dalam kekuatan itu. 815 00:36:15,590 --> 00:36:18,650 Jadi apa yang benar-benar bermakna adalah pergi ke pelbagai ini - 816 00:36:18,650 --> 00:36:21,520 dan ya, ini mungkin 123, ini mungkin 124. 817 00:36:21,520 --> 00:36:22,790 Tetapi itu semua relatif, ingat. 818 00:36:22,790 --> 00:36:25,640 Apabila bercakap tentang pelbagai, kita mempunyai kelebihan bercakap tentang 819 00:36:25,640 --> 00:36:27,000 indeks relatif. 820 00:36:27,000 --> 00:36:31,120 >> Dan sekarang kita hanya boleh menganggap yang t kurungan sifar adalah h. 821 00:36:31,120 --> 00:36:35,090 Jadi jika saya memanggil 2 atas pada itu, apa yang adalah benar-benar lakukan adalah kesempatan 822 00:36:35,090 --> 00:36:38,290 h huruf kecil kepada huruf besar H. Tetapi sudah tentu, apa yang s? 823 00:36:38,290 --> 00:36:41,010 Ia menunjuk kepada rentetan yang sama darn. 824 00:36:41,010 --> 00:36:44,200 >> Jadi ini adalah semua itu telah berlaku dalam kod ini setakat ini. 825 00:36:44,200 --> 00:36:45,960 Jadi apa yang kemudian implikasi? 826 00:36:45,960 --> 00:36:48,300 Bagaimana kita menetapkan kedua-dua masalah? 827 00:36:48,300 --> 00:36:50,870 Bagaimana kita bandingkan dengan tali sebenar? 828 00:36:50,870 --> 00:36:53,720 >> Well intuitif, bagaimana akan kamu pergi membandingkan dua 829 00:36:53,720 --> 00:36:55,090 tali untuk kesaksamaan benar? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> Apa maknanya jika dua rentetan adalah sama? 832 00:37:00,750 --> 00:37:04,330 Jelas tidak bahawa alamat mereka sama dalam ingatan, kerana itulah yang rendah 833 00:37:04,330 --> 00:37:06,590 tahap pelaksanaan terperinci. 834 00:37:06,590 --> 00:37:08,360 Semua watak-watak yang sama. 835 00:37:08,360 --> 00:37:12,810 Jadi biarlah saya mencadangkan, dan biarlah saya memperkenalkan dalam versi salah satu compare.c 836 00:37:12,810 --> 00:37:14,970 di sini, jadi bandingkan-1.c. 837 00:37:14,970 --> 00:37:19,590 >> Biar saya mencadangkan bahawa kita masih mendapat penunjuk dipanggil s, dan kedai di dalamnya 838 00:37:19,590 --> 00:37:20,610 mengembalikan nilai rentetan get. 839 00:37:20,610 --> 00:37:21,750 Mari kita buat perkara yang sama dengan t. 840 00:37:21,750 --> 00:37:23,230 Jadi tiada kod adalah berbeza. 841 00:37:23,230 --> 00:37:25,420 Saya akan menambah sedikit lebih ralat memeriksa sekarang. 842 00:37:25,420 --> 00:37:29,390 Jadi sekarang bahawa kita jenis mengupas kembali ini lapisan dalam CS50 apa tali 843 00:37:29,390 --> 00:37:33,520 sebenarnya, kita perlu lebih dubur mengenai memastikan kita tidak menyalahgunakan 844 00:37:33,520 --> 00:37:35,330 nilai yang tidak sah seperti null. 845 00:37:35,330 --> 00:37:36,440 >> Jadi, saya hanya akan menyemak. 846 00:37:36,440 --> 00:37:41,490 Jika s tidak batal sama dan t tidak batal sama, yang bererti kita OK. 847 00:37:41,490 --> 00:37:44,460 Dapatkan tali tidak skru sehingga mendapat sama ada mereka tali. 848 00:37:44,460 --> 00:37:51,270 Dan anda mungkin boleh meneka sekarang, apa tidak STR CMP mungkin lakukan? 849 00:37:51,270 --> 00:37:52,000 Rentetan membandingkan. 850 00:37:52,000 --> 00:37:55,470 >> Jadi jika anda telah dalam program java sebelum ini, ini adalah seperti kaedah yang sama dalam 851 00:37:55,470 --> 00:37:56,490 kelas tali. 852 00:37:56,490 --> 00:37:57,890 Tetapi bagi mereka yang tidak mempunyai diprogramkan sebelum ini, 853 00:37:57,890 --> 00:37:59,320 ini adalah hanya satu fungsi c. 854 00:37:59,320 --> 00:38:02,180 Ia berlaku kepada datang dalam file dipanggil string.h. 855 00:38:02,180 --> 00:38:03,830 Itulah di mana ia diisytiharkan. 856 00:38:03,830 --> 00:38:05,110 >> Dan rentetan Hotels.com - 857 00:38:05,110 --> 00:38:07,530 Saya sebenarnya lupa penggunaannya, tetapi tidak pernah fikiran itu. 858 00:38:07,530 --> 00:38:10,470 Ingat bahawa kita boleh lakukan manusia, kacau membandingkan. 859 00:38:10,470 --> 00:38:12,590 Dan ini akan membawa sehingga Linux pengaturcara manual. 860 00:38:12,590 --> 00:38:14,060 Dan ia adalah, terus-terang, sedikit samar. 861 00:38:14,060 --> 00:38:15,270 Tetapi saya dapat melihat di sini bahawa, Ya. 862 00:38:15,270 --> 00:38:17,570 Saya perlu termasuk string.h. 863 00:38:17,570 --> 00:38:20,590 >> Dan ia mengatakan di sini di bawah Penerangan, "kata fungsi membandingkan tali membandingkan 864 00:38:20,590 --> 00:38:24,560 dua tali S1 dan S2. "Dan S1 dan S2 adalah jelas kedua-dua 865 00:38:24,560 --> 00:38:26,120 hujah-hujah yang diluluskan masuk 866 00:38:26,120 --> 00:38:28,650 Saya tidak ingat apa yang malar, tetapi kini melihat - 867 00:38:28,650 --> 00:38:31,480 dan anda mungkin telah melihat ini sudah apabila anda telah menggunakan laman lelaki jika anda 868 00:38:31,480 --> 00:38:32,390 mempunyai semua - 869 00:38:32,390 --> 00:38:36,220 bahawa bintang char hanya sinonim dengan tali. 870 00:38:36,220 --> 00:38:40,440 >> Jadi ia membandingkan dua tali, S1 dan S2, dan ia mengembalikan integer yang kurang 871 00:38:40,440 --> 00:38:44,930 daripada atau sama dengan atau lebih besar daripada sifar jika S1 ditemui, masing-masing, untuk menjadi 872 00:38:44,930 --> 00:38:47,450 kurang daripada, atau perlawanan, atau lebih besar daripada S2. 873 00:38:47,450 --> 00:38:51,220 Itu hanya satu cara yang sangat kompleks untuk mengatakan bahawa rentetan membandingkan pulangan 874 00:38:51,220 --> 00:38:55,760 sifar jika dua rentetan intuitif sama, watak bagi 875 00:38:55,760 --> 00:38:57,120 watak untuk watak. 876 00:38:57,120 --> 00:38:59,970 >> Ia mengembalikan nombor negatif jika s, abjad, sepatutnya 877 00:38:59,970 --> 00:39:01,010 datang sebelum t. 878 00:39:01,010 --> 00:39:05,300 Atau mengembalikan nombor positif jika s sepatutnya datang selepas t 879 00:39:05,300 --> 00:39:06,170 abjad. 880 00:39:06,170 --> 00:39:08,360 Jadi dengan fungsi ini mudah, boleh anda, sebagai contoh, menyusun a 881 00:39:08,360 --> 00:39:09,770 keseluruhan sekumpulan kata-kata? 882 00:39:09,770 --> 00:39:13,984 >> Jadi dalam versi baru ini, saya akan untuk pergi ke hadapan dan membuat compare1. 883 00:39:13,984 --> 00:39:15,750 Dot slash membandingkan satu. 884 00:39:15,750 --> 00:39:18,030 Saya akan menaip hello dalam semua kes yang lebih rendah. 885 00:39:18,030 --> 00:39:20,300 Saya akan menaip hello dalam semua huruf kecil lagi. 886 00:39:20,300 --> 00:39:23,340 Dan bersyukur kerana kini ia menyedari Saya menaip perkara yang sama. 887 00:39:23,340 --> 00:39:27,520 >> Sementara itu, jika saya menaip hello yang lebih rendah kes dan HELLO dalam huruf besar dan 888 00:39:27,520 --> 00:39:29,710 membandingkan mereka, saya menaip perkara yang berbeza. 889 00:39:29,710 --> 00:39:32,530 Kerana bukan sahaja alamat yang berbeza, tetapi kita membandingkan 890 00:39:32,530 --> 00:39:35,350 watak yang berbeza lagi dan lagi. 891 00:39:35,350 --> 00:39:37,320 >> Nah mari kita pergi dan menetapkan satu masalah lain sekarang. 892 00:39:37,320 --> 00:39:41,590 Izinkan saya membuka versi salah satu salinan, yang kini menangani 893 00:39:41,590 --> 00:39:42,900 isu ini seperti berikut. 894 00:39:42,900 --> 00:39:45,650 Dan yang satu ini akan kelihatan sedikit lebih kompleks. 895 00:39:45,650 --> 00:39:49,320 Tetapi jika anda berfikir tentang apa masalah yang kita perlu menyelesaikan, mudah-mudahan ini akan menjadi 896 00:39:49,320 --> 00:39:51,870 jelas hanya dalam masa sekarang. 897 00:39:51,870 --> 00:39:57,280 >> Jadi ini baris pertama, char permulaan t, dalam segi orang biasa itu boleh seseorang mencadangkan 898 00:39:57,280 --> 00:39:59,450 apa baris ini di sini bermaksud? 899 00:39:59,450 --> 00:40:01,050 Char bintang t, apakah yang lakukan? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> Baik. 902 00:40:07,210 --> 00:40:09,500 Buat penunjuk kepada beberapa tempat dalam ingatan. 903 00:40:09,500 --> 00:40:10,930 Dan biarlah saya membaikinya sedikit. 904 00:40:10,930 --> 00:40:17,180 Mengisytiharkan pembolehubah yang akan menyimpan alamat beberapa char dalam ingatan, hanya 905 00:40:17,180 --> 00:40:18,480 untuk menjadi sedikit lebih betul. 906 00:40:18,480 --> 00:40:21,210 >> OK, jadi sekarang pada sebelah kanan, saya telah tidak pernah melihat salah satu daripada fungsi-fungsi 907 00:40:21,210 --> 00:40:22,660 sebelum ini, malloc. 908 00:40:22,660 --> 00:40:26,980 Tetapi apa yang mungkin itu bermakna? 909 00:40:26,980 --> 00:40:28,050 Peruntukan ingatan. 910 00:40:28,050 --> 00:40:29,410 Peruntukan ingatan. 911 00:40:29,410 --> 00:40:33,050 >> Jadi ternyata, sehingga sekarang, kita tidak benar-benar mempunyai cara yang kuat 912 00:40:33,050 --> 00:40:36,210 meminta sistem operasi, memberi saya ingatan beberapa. 913 00:40:36,210 --> 00:40:39,980 Sebaliknya, kita kini mempunyai fungsi yang dipanggil malloc yang tidak tepat itu. 914 00:40:39,980 --> 00:40:42,960 Walaupun ini adalah sedikit gangguan sekarang, melihat bahawa di 915 00:40:42,960 --> 00:40:46,200 antara kedua-dua kurungan adalah hanya akan menjadi nombor. 916 00:40:46,200 --> 00:40:48,510 Di mana saya telah ditaip dalam soalan markah boleh menjadi nombor. 917 00:40:48,510 --> 00:40:51,020 >> Dan bilangan yang bermaksud, memberi saya 10 bait. 918 00:40:51,020 --> 00:40:52,320 Berikan saya 20 bait. 919 00:40:52,320 --> 00:40:53,820 Berikan saya 100 bait. 920 00:40:53,820 --> 00:40:56,500 Dan malloc akan melakukan yang terbaik untuk meminta sistem operasi - 921 00:40:56,500 --> 00:40:57,630 Linux, dalam kes ini - 922 00:40:57,630 --> 00:40:59,630 hey, adalah 100 bait mereka RAM boleh didapati? 923 00:40:59,630 --> 00:41:04,320 Jika ya, mereka kembali bait kepada saya oleh kembali alamat yang mana satu 924 00:41:04,320 --> 00:41:06,610 mereka bait, mungkin? 925 00:41:06,610 --> 00:41:07,610 Yang pertama satu. 926 00:41:07,610 --> 00:41:10,460 >> Jadi di sini juga - dan ini adalah utama dalam C, bila-bila masa anda 927 00:41:10,460 --> 00:41:11,680 berurusan dengan alamat? 928 00:41:11,680 --> 00:41:15,830 Anda hampir sentiasa berurusan dengan alamat yang mula-mula, tidak kira berapa besar 929 00:41:15,830 --> 00:41:19,490 sebahagian memori anda sedang diserahkan kembali, jadi untuk bercakap. 930 00:41:19,490 --> 00:41:20,880 >> Jadi mari menyelam di sini. 931 00:41:20,880 --> 00:41:23,940 Saya cuba untuk memperuntukkan bagaimana banyak bait, sebenarnya? 932 00:41:23,940 --> 00:41:24,080 Well. 933 00:41:24,080 --> 00:41:26,090 Panjang rentetan s - mari melakukan satu contoh yang konkrit. 934 00:41:26,090 --> 00:41:30,700 Jika s hello, H-E-L-L-O, apa panjang rentetan s, jelas? 935 00:41:30,700 --> 00:41:32,010 Jadi ia adalah lima. 936 00:41:32,010 --> 00:41:34,590 Tetapi saya melakukan campur 1 pada itu, mengapa? 937 00:41:34,590 --> 00:41:37,700 Mengapa saya mahu enam bait dan bukannya lima? 938 00:41:37,700 --> 00:41:38,790 Watak null. 939 00:41:38,790 --> 00:41:41,210 >> Saya tidak mahu meninggalkan off ini watak null khas. 940 00:41:41,210 --> 00:41:45,160 Kerana jika saya membuat salinan Hello dan hanya melakukan H-E-L-L-O, tetapi saya tidak meletakkan 941 00:41:45,160 --> 00:41:50,160 watak yang istimewa, komputer mungkin tidak mempunyai, secara kebetulan, backslash a 942 00:41:50,160 --> 00:41:51,730 sifar di sana untuk saya. 943 00:41:51,730 --> 00:41:55,570 Dan jadi jika saya cuba untuk memikirkan panjang salinan itu, saya mungkin berfikir bahawa 944 00:41:55,570 --> 00:41:59,360 ia adalah 20 perkataan, atau satu juta huruf jika saya hanya tidak pernah berlaku 945 00:41:59,360 --> 00:42:01,050 mencecah sifar garis sendeng terbalik. 946 00:42:01,050 --> 00:42:05,780 >> Jadi, kita perlu enam bait untuk menyimpan H-E-L-L-O, backslash sifar. 947 00:42:05,780 --> 00:42:07,870 Dan kemudian ini hanya menjadi dubur super. 948 00:42:07,870 --> 00:42:10,700 Katakan yang saya lupa apa saiz char adalah. 949 00:42:10,700 --> 00:42:12,020 Kami terus mengatakan ia satu bait. 950 00:42:12,020 --> 00:42:12,860 Dan ia biasanya. 951 00:42:12,860 --> 00:42:15,425 Secara teori, ia boleh menjadi sesuatu yang berbeza, pada Mac yang berbeza atau 952 00:42:15,425 --> 00:42:16,250 PC yang berbeza. 953 00:42:16,250 --> 00:42:19,650 >> Jadi ternyata ada operator ini dipanggil sizeof bahawa jika anda meninggal ia 954 00:42:19,650 --> 00:42:22,680 nama jenis data - seperti char, atau int, float atau - 955 00:42:22,680 --> 00:42:26,930 ia akan memberitahu anda, dinamik, berapa banyak bait char mengambil di atas ini 956 00:42:26,930 --> 00:42:28,090 komputer tertentu. 957 00:42:28,090 --> 00:42:31,360 >> Jadi ini adalah berkesan hanya seperti mengatakan masa 1 atau 958 00:42:31,360 --> 00:42:32,440 kali apa-apa. 959 00:42:32,440 --> 00:42:36,340 Tetapi saya melakukannya hanya untuk dubur super, bahawa hanya dalam kes char yang berbeza 960 00:42:36,340 --> 00:42:40,610 pada komputer berbanding lombong anda, cara ini matematik sentiasa akan menyemak. 961 00:42:40,610 --> 00:42:43,720 >> Akhir sekali, ke sini saya memeriksa batal, yang sentiasa amalan yang baik - sekali lagi, 962 00:42:43,720 --> 00:42:44,920 bila-bila masa kita berurusan dengan petunjuk. 963 00:42:44,920 --> 00:42:47,520 Jika malloc tidak dapat memberikan saya enam bye - yang 964 00:42:47,520 --> 00:42:49,210 tidak mungkin, tetapi hanya dalam kes - 965 00:42:49,210 --> 00:42:50,730 kembali satu dengan segera. 966 00:42:50,730 --> 00:42:53,290 Dan sekarang, teruskan dan salinan rentetan seperti berikut. 967 00:42:53,290 --> 00:42:57,240 Dan ini adalah sintaks biasa, walaupun dalam peranan yang berbeza. 968 00:42:57,240 --> 00:43:01,210 >> Saya akan pergi ke hadapan dan mendapatkan tali panjang s dan menyimpannya dalam n. 969 00:43:01,210 --> 00:43:06,620 Saya kemudian akan melelar dari i sama sifar sehingga dan termasuk n, 970 00:43:06,620 --> 00:43:08,410 lebih besar daripada atau sama dengan. 971 00:43:08,410 --> 00:43:13,540 Supaya pada setiap lelaran, saya meletakkan watak i s dalam i 972 00:43:13,540 --> 00:43:15,380 watak t. 973 00:43:15,380 --> 00:43:18,190 >> Jadi apa yang benar-benar berlaku di bawah hud di sini? 974 00:43:18,190 --> 00:43:22,140 Baik jika ini, sebagai contoh, adalah s - 975 00:43:22,140 --> 00:43:26,400 dan saya telah ditaip dalam perkataan H-E-L-L-O dan ada sifar garis sendeng terbalik. 976 00:43:26,400 --> 00:43:29,020 Dan sekali lagi, ini adalah s menunjuk sini. 977 00:43:29,020 --> 00:43:30,830 Dan di sini sekarang ialah t. 978 00:43:30,830 --> 00:43:34,860 >> Dan ini menunjukkan sekarang untuk salinan ingatan, betul? 979 00:43:34,860 --> 00:43:37,340 Malloc telah memberikan saya satu keseluruhan sebahagian memori. 980 00:43:37,340 --> 00:43:41,440 Saya tidak tahu apa yang pada mulanya dalam mana-mana lokasi ini. 981 00:43:41,440 --> 00:43:44,340 Jadi, saya akan berfikir ini sebagai sejumlah besar tanda tanya. 982 00:43:44,340 --> 00:43:50,190 >> Tetapi sebaik sahaja saya mula gelung dari sifar di atas melalui panjang s, t 983 00:43:50,190 --> 00:43:52,790 kurungan sifar dan t kurungan 1 - 984 00:43:52,790 --> 00:43:55,080 dan saya akan meletakkan ini kini di atas itu - 985 00:43:55,080 --> 00:44:04,190 t kurungan sifar dan s kurungan sifar bermakna bahawa saya akan menyalin 986 00:44:04,190 --> 00:44:09,875 iterative h di sini, E-L-L-O. Plus, kerana saya tidak campur 987 00:44:09,875 --> 00:44:12,370 1, backslash sifar. 988 00:44:12,370 --> 00:44:19,060 >> Jadi sekarang dalam kes-bandingkan 1.c, pada akhirnya, jika saya mencetak 989 00:44:19,060 --> 00:44:24,760 Permodalan t, kita harus melihat bahawa s adalah tidak berubah. 990 00:44:24,760 --> 00:44:26,090 Biar saya pergi ke hadapan sekarang dan melakukan ini. 991 00:44:26,090 --> 00:44:28,630 Oleh itu, copy1. 992 00:44:28,630 --> 00:44:30,860 Dot slash copy1. 993 00:44:30,860 --> 00:44:33,670 Saya akan menaip hello, Enter. 994 00:44:33,670 --> 00:44:37,430 Dan kini melihat, hanya salinan telah dipermodalkan. 995 00:44:37,430 --> 00:44:40,890 Kerana saya benar-benar mempunyai dua ketulan ingatan. 996 00:44:40,890 --> 00:44:44,390 >> Malangnya, anda boleh melakukan beberapa cantik perkara-perkara buruk dan cukup berbahaya di sini. 997 00:44:44,390 --> 00:44:49,290 Biar saya tarik contoh di sini sekarang, yang memberikan kita satu contoh daripada beberapa 998 00:44:49,290 --> 00:44:51,540 laluan yang berbeza. 999 00:44:51,540 --> 00:44:56,040 Jadi hanya intuitif di sini, baris pertama kod, int bintang x, mengisytiharkan 1000 00:44:56,040 --> 00:44:57,340 berubah-ubah yang dipanggil x. 1001 00:44:57,340 --> 00:44:58,810 Dan apa jenis data pembolehubah itu? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 Apakah jenis data yang berubah-ubah? 1004 00:45:04,290 --> 00:45:06,980 Yang tidak cliffhanger itu. 1005 00:45:06,980 --> 00:45:08,350 >> Jenis-jenis data int bintang. 1006 00:45:08,350 --> 00:45:12,600 Jadi apa maksudnya? x akan menyimpan alamat int an. 1007 00:45:12,600 --> 00:45:13,520 Semudah itu. 1008 00:45:13,520 --> 00:45:16,220 Y akan menyimpan alamat int an. 1009 00:45:16,220 --> 00:45:18,390 Apakah baris ketiga kod lakukan di sana? 1010 00:45:18,390 --> 00:45:21,850 Ia memperuntukkan berapa banyak bait, kemungkinan besar? 1011 00:45:21,850 --> 00:45:22,350 Empat. 1012 00:45:22,350 --> 00:45:25,460 Oleh kerana saiz adalah int umumnya empat, malloc empat memberikan 1013 00:45:25,460 --> 00:45:29,950 saya menyokong alamat sebahagian daripada memori, yang pertama bait yang merupakan 1014 00:45:29,950 --> 00:45:32,110 disimpan kini dalam x. 1015 00:45:32,110 --> 00:45:34,410 >> Sekarang kita bergerak sedikit cepat. 1016 00:45:34,410 --> 00:45:35,760 Bintang x bermaksud apa? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 Ia bermaksud pergi ke alamat yang dan meletakkan apa nombor di sana? 1019 00:45:42,590 --> 00:45:43,870 Meletakkan nombor 42 di sana. 1020 00:45:43,870 --> 00:45:47,590 Bintang y bermakna pergi ke apa yang di y dan meletakkan nombor 13 di sana. 1021 00:45:47,590 --> 00:45:48,600 >> Tetapi tunggu satu minit. 1022 00:45:48,600 --> 00:45:51,640 Apa yang ada dalam y pada masa ini? 1023 00:45:51,640 --> 00:45:54,950 Apa yang alamat ialah y menyimpan? 1024 00:45:54,950 --> 00:45:55,770 Kita tidak tahu, kan? 1025 00:45:55,770 --> 00:45:59,230 Kami tidak pernah sekali menggunakan tugasan operator melibatkan y. 1026 00:45:59,230 --> 00:46:03,370 Jadi y seperti yang diisytiharkan pada baris kedua kod hanya beberapa nilai sampah, besar 1027 00:46:03,370 --> 00:46:04,760 tanda tanya jadi untuk bercakap. 1028 00:46:04,760 --> 00:46:07,230 Ia boleh menunjukkan secara rawak apa-apa jua dalam ingatan, yang 1029 00:46:07,230 --> 00:46:08,340 umumnya buruk. 1030 00:46:08,340 --> 00:46:13,540 >> Jadi sebaik sahaja kita mencapai garis yang ada, bintang y sama dengan 13, sesuatu yang buruk, 1031 00:46:13,540 --> 00:46:17,220 sesuatu yang sangat buruk adalah kira-kira berlaku kepada Binky. 1032 00:46:17,220 --> 00:46:25,810 Jadi mari kita lihat apa yang akan berakhir berlaku kepada Binky di sini di saat ini 1033 00:46:25,810 --> 00:46:26,200 atau lebih melihat. 1034 00:46:26,200 --> 00:46:26,490 >> [MAIN SEMULA VIDEO] 1035 00:46:26,490 --> 00:46:26,745 >> -Hey, Binky. 1036 00:46:26,745 --> 00:46:27,000 Bangun. 1037 00:46:27,000 --> 00:46:29,296 Ia adalah masa untuk bersenang-senang penunjuk. 1038 00:46:29,296 --> 00:46:30,680 >> -Apa itu? 1039 00:46:30,680 --> 00:46:31,980 Belajar mengenai petunjuk? 1040 00:46:31,980 --> 00:46:34,010 Oh, cenderahati. 1041 00:46:34,010 --> 00:46:37,220 >> -Nah, untuk memulakan, saya rasa kami akan memerlukan beberapa petunjuk. 1042 00:46:37,220 --> 00:46:37,930 >> -OK. 1043 00:46:37,930 --> 00:46:41,650 Kod ini memperuntukkan dua petunjuk yang boleh menunjukkan kepada integer. 1044 00:46:41,650 --> 00:46:43,760 >> -OK, baik, saya melihat kedua-dua petunjuk. 1045 00:46:43,760 --> 00:46:45,850 Tetapi mereka tidak seolah-olah menunjuk ke apa-apa. 1046 00:46:45,850 --> 00:46:46,490 >> -Itu betul. 1047 00:46:46,490 --> 00:46:48,630 Pada mulanya, petunjuk tidak menunjukkan apa-apa. 1048 00:46:48,630 --> 00:46:51,700 Perkara-perkara yang mereka menunjukkan dipanggil pointees, dan menetapkan mereka adalah 1049 00:46:51,700 --> 00:46:52,850 langkah berasingan. 1050 00:46:52,850 --> 00:46:53,740 >> -Oh, betul, betul. 1051 00:46:53,740 --> 00:46:54,500 Saya tahu bahawa. 1052 00:46:54,500 --> 00:46:56,270 The pointees adalah berasingan. 1053 00:46:56,270 --> 00:46:58,553 Jadi bagaimana anda memperuntukkan pointee a? 1054 00:46:58,553 --> 00:46:59,480 >> -OK. 1055 00:46:59,480 --> 00:47:03,707 Nah, kod ini memperuntukkan integer baru pointee, dan bahagian ini menetapkan x 1056 00:47:03,707 --> 00:47:05,520 untuk menunjukkan untuk itu. 1057 00:47:05,520 --> 00:47:06,760 >> -Hey, yang kelihatan lebih baik. 1058 00:47:06,760 --> 00:47:08,520 Oleh itu, ia melakukan sesuatu. 1059 00:47:08,520 --> 00:47:09,530 >> -OK. 1060 00:47:09,530 --> 00:47:14,110 Saya akan dereference penunjuk x untuk menyimpan nombor 42 ke pointee itu. 1061 00:47:14,110 --> 00:47:17,660 Untuk silap mata ini, saya akan perlu sihir saya tongkat penyahrujukan. 1062 00:47:17,660 --> 00:47:20,695 >> -Anda tongkat sihir penyahrujukan? 1063 00:47:20,695 --> 00:47:22,632 Eh, itu hebat. 1064 00:47:22,632 --> 00:47:24,620 >> -Ini adalah apa kod kelihatan seperti. 1065 00:47:24,620 --> 00:47:27,526 Saya hanya akan menubuhkan nombor, dan - 1066 00:47:27,526 --> 00:47:28,250 >> -Hey, melihat. 1067 00:47:28,250 --> 00:47:29,680 Terdapat ia pergi. 1068 00:47:29,680 --> 00:47:34,520 Jadi melakukan dereference pada x berikut anak panah untuk mengakses pointee itu. 1069 00:47:34,520 --> 00:47:36,690 Dalam kes ini, untuk menyimpan 42 di sana. 1070 00:47:36,690 --> 00:47:40,890 Hey, cuba menggunakan ia untuk menyimpan nombor 13 melalui penunjuk lain, y. 1071 00:47:40,890 --> 00:47:42,125 >> -OK. 1072 00:47:42,125 --> 00:47:46,810 Saya hanya akan pergi ke sini untuk y dan mendapatkan nombor 13 ditubuhkan. 1073 00:47:46,810 --> 00:47:50,890 Dan kemudian mengambil tongkat penyahrujukan dan hanya - 1074 00:47:50,890 --> 00:47:52,430 wah! 1075 00:47:52,430 --> 00:47:53,030 >> -Oh, hey. 1076 00:47:53,030 --> 00:47:54,610 Yang tidak bekerja. 1077 00:47:54,610 --> 00:47:58,200 Katakanlah, Binky, saya tidak fikir penyahrujukan y adalah idea yang baik, 1078 00:47:58,200 --> 00:48:01,370 kerana penubuhan pointee yang adalah satu langkah yang berasingan. 1079 00:48:01,370 --> 00:48:03,460 Dan saya tidak fikir kita pernah ia lakukan. 1080 00:48:03,460 --> 00:48:03,810 >> -Hmm. 1081 00:48:03,810 --> 00:48:05,160 Titik yang baik. 1082 00:48:05,160 --> 00:48:07,410 >> -Ya, kita diperuntukkan y penunjuk. 1083 00:48:07,410 --> 00:48:10,045 Tetapi kita tidak pernah menetapkan untuk menunjukkan pointee a. 1084 00:48:10,045 --> 00:48:10,490 >> -Hmm. 1085 00:48:10,490 --> 00:48:12,170 Sangat tajam. 1086 00:48:12,170 --> 00:48:13,790 >> -Hey, anda sedang mencari baik di sana, Binky. 1087 00:48:13,790 --> 00:48:16,920 Bolehkah anda menetapkan supaya y mata untuk pointee yang sama x? 1088 00:48:16,920 --> 00:48:17,810 >> -Pasti. 1089 00:48:17,810 --> 00:48:20,300 Saya akan menggunakan tongkat sakti saya tugasan penunjuk. 1090 00:48:20,300 --> 00:48:22,240 >> -Adakah itu akan menjadi masalah seperti sebelum ini? 1091 00:48:22,240 --> 00:48:22,665 >> -No. 1092 00:48:22,665 --> 00:48:24,300 Ini tidak menyentuh pointees. 1093 00:48:24,300 --> 00:48:27,880 Ia hanya menukar satu penunjuk untuk menunjukkan untuk perkara yang sama seperti yang lain. 1094 00:48:27,880 --> 00:48:28,970 >> -Oh, saya melihat. 1095 00:48:28,970 --> 00:48:31,730 Sekarang y mata kepada tempat yang sama dengan x. 1096 00:48:31,730 --> 00:48:32,450 Jadi tunggu. 1097 00:48:32,450 --> 00:48:33,490 Sekarang y ditetapkan. 1098 00:48:33,490 --> 00:48:34,630 Ia mempunyai pointee a. 1099 00:48:34,630 --> 00:48:36,520 Jadi, anda boleh cuba tongkat daripada penyahrujukan lagi 1100 00:48:36,520 --> 00:48:39,200 untuk menghantar 13 lebih. 1101 00:48:39,200 --> 00:48:39,840 >> -OK. 1102 00:48:39,840 --> 00:48:41,570 Di sini pergi. 1103 00:48:41,570 --> 00:48:42,870 >> -Hey, melihat itu. 1104 00:48:42,870 --> 00:48:44,320 Sekarang penyahrujukan kerja-kerja pada y. 1105 00:48:44,320 --> 00:48:47,020 Dan kerana petunjuk berkongsian pointee yang satu, mereka 1106 00:48:47,020 --> 00:48:48,585 kedua-dua melihat 13 itu. 1107 00:48:48,585 --> 00:48:49,040 >> -Ya. 1108 00:48:49,040 --> 00:48:49,670 Berkongsi. 1109 00:48:49,670 --> 00:48:50,380 Apa sahaja. 1110 00:48:50,380 --> 00:48:52,290 Jadi kita akan bertukar tempat ini? 1111 00:48:52,290 --> 00:48:52,970 >> -Oh, melihat. 1112 00:48:52,970 --> 00:48:54,150 Kami berada di luar masa. 1113 00:48:54,150 --> 00:48:55,200 >> -Tetapi - 1114 00:48:55,200 --> 00:48:57,060 >> -Hanya ingat tiga peraturan penunjuk. 1115 00:48:57,060 --> 00:49:00,100 Nombor satu, struktur asas adalah bahawa anda mempunyai penunjuk. 1116 00:49:00,100 --> 00:49:02,170 Dan ia menunjukkan kepada pointee a. 1117 00:49:02,170 --> 00:49:04,160 Tetapi penunjuk dan pointee adalah berasingan. 1118 00:49:04,160 --> 00:49:06,460 Dan kesilapan yang sama adalah untuk menubuhkan penunjuk, tetapi untuk 1119 00:49:06,460 --> 00:49:08,540 lupa untuk diberikan pointee a. 1120 00:49:08,540 --> 00:49:12,460 >> Nombor dua, penunjuk penyahrujukan bermula pada penunjuk dan berikut yang 1121 00:49:12,460 --> 00:49:14,570 arrow kepada mengakses pointee itu. 1122 00:49:14,570 --> 00:49:18,640 Seperti yang kita semua tahu, ini hanya berfungsi jika terdapat adalah pointee, yang mendapat kembali ke 1123 00:49:18,640 --> 00:49:19,790 memerintah nombor satu. 1124 00:49:19,790 --> 00:49:23,670 >> Nombor tiga, tugasan penunjuk mengambil salah satu penunjuk dan perubahan untuk menunjukkan 1125 00:49:23,670 --> 00:49:25,850 pointee sama dengan penunjuk lain. 1126 00:49:25,850 --> 00:49:27,840 Jadi selepas tugasan, kedua-dua petunjuk akan 1127 00:49:27,840 --> 00:49:29,430 menunjukkan pointee yang sama. 1128 00:49:29,430 --> 00:49:31,600 Kadang-kadang yang dipanggil perkongsian. 1129 00:49:31,600 --> 00:49:33,430 Dan itu semua ada padanya, benar-benar. 1130 00:49:33,430 --> 00:49:33,840 Bye bye sekarang. 1131 00:49:33,840 --> 00:49:34,300 >> [AKHIR VIDEO MAIN SEMULA] 1132 00:49:34,300 --> 00:49:36,940 >> DAVID MALAN: Jadi lebih kepada petunjuk, lanjut mengenai Binky minggu depan. 1133 00:49:36,940 --> 00:49:38,190 Kami akan melihat anda pada hari Isnin. 1134 00:49:38,190 --> 00:49:42,187