1 00:00:00,000 --> 00:00:04,875 2 00:00:04,875 --> 00:00:05,750 ANDI PENG: Baiklah. 3 00:00:05,750 --> 00:00:08,240 Selamat datang ke minggu empat bahagian. 4 00:00:08,240 --> 00:00:10,280 Ia adalah hari yang indah di sini di New Haven 5 00:00:10,280 --> 00:00:14,370 jadi saya benar-benar berfikir jarang hamburan anak-anak yang 6 00:00:14,370 --> 00:00:17,530 menyertai saya untuk seksyen hari ini, terima kasih. 7 00:00:17,530 --> 00:00:21,517 >> Begitu cepat, sebelum kita memulakan, agenda untuk hari ini. 8 00:00:21,517 --> 00:00:23,600 Kami akan pergi ke satu Beberapa pengumuman ringkas. 9 00:00:23,600 --> 00:00:26,224 Kami mempunyai jadual yang benar-benar aneh datang dalam dua minggu akan datang 10 00:00:26,224 --> 00:00:28,010 atau lebih jadi kita akan pergi ke atas itu. 11 00:00:28,010 --> 00:00:30,410 Kedua, saya tahu topic-- kegemaran semua orang 12 00:00:30,410 --> 00:00:33,572 Saya pasti ini cair fikiran anda semasa kuliah, jangan bimbang, 13 00:00:33,572 --> 00:00:34,780 Saya masih jenis tidak mendapatkannya. 14 00:00:34,780 --> 00:00:35,444 Tidak mengapa. 15 00:00:35,444 --> 00:00:36,110 Itu adalah jenaka. 16 00:00:36,110 --> 00:00:37,450 Saya benar-benar melakukan mendapatkannya. 17 00:00:37,450 --> 00:00:40,234 Tetapi saya akan memastikan bahawa anda semua mendapatkannya, juga. 18 00:00:40,234 --> 00:00:42,400 Jadi, kita akan menghabiskan benar-benar, benar-benar baik jumlah 19 00:00:42,400 --> 00:00:44,020 masa bercakap mengenai penunjuk hari ini. 20 00:00:44,020 --> 00:00:47,012 Seperti yang anda lihat, gula-gula bercakap adalah besar hari ini. 21 00:00:47,012 --> 00:00:49,220 Kami benar-benar akan menjaga bahawa- yeah, betul. 22 00:00:49,220 --> 00:00:49,890 Terus mengambil gula-gula. 23 00:00:49,890 --> 00:00:51,556 Saya akan lulus mereka di sekitar sekarang. 24 00:00:51,556 --> 00:00:55,150 25 00:00:55,150 --> 00:00:56,510 Tidak risau. 26 00:00:56,510 --> 00:00:59,570 Kita akan benar-benar cuba untuk menjaga gula darah rakyat 27 00:00:59,570 --> 00:01:04,390 sehingga kerana otak yang akan membakar sedikit oksigen hari ini kerana petunjuk 28 00:01:04,390 --> 00:01:05,652 benar-benar, benar-benar keras. 29 00:01:05,652 --> 00:01:08,360 Kemudian kita akan bercakap tentang pengurusan ingatan yang jenis adalah 30 00:01:08,360 --> 00:01:09,487 dalam bidang yang sama. 31 00:01:09,487 --> 00:01:11,570 Dan kami akan bergerak ke penghalaan semula dan fail 32 00:01:11,570 --> 00:01:15,297 I / O yang hanya sintaks, nice perkara-perkara yang kita perlu bercakap tentang. 33 00:01:15,297 --> 00:01:17,130 Dan kemudian akhir sekali, saya akan sekali lagi cuba 34 00:01:17,130 --> 00:01:19,070 untuk meninggalkan seperti 10, 15 minit untuk pset4. 35 00:01:19,070 --> 00:01:21,820 Itulah kerana dalam beberapa hari jadi kami akan benar-benar sejenis memberikan anda 36 00:01:21,820 --> 00:01:24,850 beberapa petunjuk membantu jika anda sudah mendapat bermula pada itu. 37 00:01:24,850 --> 00:01:26,141 Sejuk. 38 00:01:26,141 --> 00:01:26,640 OKAY. 39 00:01:26,640 --> 00:01:30,710 Jadi beberapa pengumuman untuk minggu ini akan datang. 40 00:01:30,710 --> 00:01:31,805 Penggredan. 41 00:01:31,805 --> 00:01:33,930 Saya sebenarnya tidak tahu pada ketika ini berapa ramai daripada anda 42 00:01:33,930 --> 00:01:37,180 lelaki yang sebenarnya dalam saya seksyen ini- anda OK di sana? 43 00:01:37,180 --> 00:01:38,020 OKAY. 44 00:01:38,020 --> 00:01:40,150 Tetapi, bagi anda yang berada di bahagian saya, 45 00:01:40,150 --> 00:01:42,180 hanya pasangan Komen pada penggredan. 46 00:01:42,180 --> 00:01:44,899 >> Pertama, kerja benar-benar baik mengulas. 47 00:01:44,899 --> 00:01:47,940 Orang-orang yang tidak mengulas, anda tahu siapa anda kerana anda mungkin 48 00:01:47,940 --> 00:01:50,610 mendapat beberapa mata gaya dinged minggu ini. 49 00:01:50,610 --> 00:01:53,920 Pastikan bahawa dalam semua anda program menambah beberapa komen. 50 00:01:53,920 --> 00:01:56,960 Benar-benar, gaya adalah benar-benar mudah untuk mendapatkan mata betul skop yang. 51 00:01:56,960 --> 00:01:58,710 Jadi bagi kita, hanya membuat memastikan bahawa anda jenis 52 00:01:58,710 --> 00:02:03,770 menambah penerangan ringkas dalam semua program anda tentang apa yang anda lakukan. 53 00:02:03,770 --> 00:02:09,190 >> Secondly-- ini adalah isu besar bagi banyak daripada TA week-- yang lepas 54 00:02:09,190 --> 00:02:12,020 jadi pastikan anda memuat naik ke folder yang betul dengan betul 55 00:02:12,020 --> 00:02:13,370 dinamakan program. 56 00:02:13,370 --> 00:02:16,820 Dan sebab mengapa kami meminta untuk ini adalah kerana kita, dalam perjalanan penggredan, 57 00:02:16,820 --> 00:02:20,820 sebenarnya menjalankan skrip pada anda Kod yang memuat turun secara automatik 58 00:02:20,820 --> 00:02:24,780 semua psets anda, berjalan ujian betulnya pada semua daripada mereka, 59 00:02:24,780 --> 00:02:27,550 dan kemudian memuat naik skor anda terus ke dalam gradebook itu. 60 00:02:27,550 --> 00:02:32,140 Walau bagaimanapun, pada bila-bila, jika anda dinamakan program anda dengan tidak betul, 61 00:02:32,140 --> 00:02:34,510 ia skru sehingga keseluruhan program untuk semua orang. 62 00:02:34,510 --> 00:02:37,280 >> Dan sebagainya, secara sah, skrip yang indah ini 63 00:02:37,280 --> 00:02:40,260 bahawa kita telah menulis yang tidak semua ini bagi kami, benar-benar 64 00:02:40,260 --> 00:02:43,070 crash jika anda tidak mempunyai program anda dinamakan dengan betul. 65 00:02:43,070 --> 00:02:46,020 Jadi hanya memuat naik ke yang betul folder, telah mereka dinamakan dengan betul, 66 00:02:46,020 --> 00:02:47,372 dan kemudian kehidupan yang baik. 67 00:02:47,372 --> 00:02:49,080 Saya mendapat psets anda kembali kepada anda semua sebelum ini 68 00:02:49,080 --> 00:02:51,110 kerana saya dapat gred mereka dengan cepat. 69 00:02:51,110 --> 00:02:52,461 Yeah. 70 00:02:52,461 --> 00:02:52,960 OKAY. 71 00:02:52,960 --> 00:02:57,870 Dan juga kita akan bercakap about-- Yale mempunyai benar-benar, benar-benar 72 00:02:57,870 --> 00:02:59,950 jadual aneh dalam dua minggu akan datang. 73 00:02:59,950 --> 00:03:02,460 Maka orang-orang di antara kamu seorang lelaki di Harvard, ini tidak terpakai. 74 00:03:02,460 --> 00:03:05,585 Tetapi bagi kami anak-anak yang indah di Yale kita ada sesuatu yang dinamakan jatuh break-- maaf, 75 00:03:05,585 --> 00:03:08,430 Harvard-- di mana kita mempunyai lima hari cuti sekolah. 76 00:03:08,430 --> 00:03:12,270 Dan selama ini adalah indah, ia jenis messes irama pset kami 77 00:03:12,270 --> 00:03:14,104 kerana psets adalah disebabkan Khamis, Jumaat. 78 00:03:14,104 --> 00:03:16,020 Dan jadi jika kita tidak di sini Khamis, Jumaat, kita 79 00:03:16,020 --> 00:03:18,640 tidak boleh mempunyai kerja-kerja untuk anda semua kerana pada hari Khamis, Jumaat. 80 00:03:18,640 --> 00:03:23,832 >> Jadi apa yang kita akan lakukan is-- kami seperti 99% pasti ini adalah apa yang berlaku, 81 00:03:23,832 --> 00:03:25,540 mungkin ada beberapa berubah tetapi saya fikir ia adalah 82 00:03:25,540 --> 00:03:28,460 subtle-- ini kita akan ada-- minggu ini adalah normal. 83 00:03:28,460 --> 00:03:32,130 Oleh itu, kita mempunyai bahagian kami pada Selasa diikuti dengan waktu pejabat 84 00:03:32,130 --> 00:03:35,190 di seluruh negara lain dalam seminggu dan kemudian pset4 adalah kerana pada hari Jumaat. 85 00:03:35,190 --> 00:03:38,180 Kemudian, seperti yang anda semua sedia maklum, sebagai Saya mengingatkan anda semua minggu lepas, 86 00:03:38,180 --> 00:03:41,700 kita ada kuiz kami 0 datang pada hari Rabu. 87 00:03:41,700 --> 00:03:44,400 >> Dan sebagainya, menjadi seorang pelajar saya, Saya tahu sangat sedikit daripada anda 88 00:03:44,400 --> 00:03:49,110 seorang lelaki benar-benar akan bekerja pada pset5 dua hari sebelum kuiz anda. 89 00:03:49,110 --> 00:03:51,110 Jadi apa yang kita akan mungkin akhirnya melakukan iaitu, 90 00:03:51,110 --> 00:03:54,840 malam Isnin, kita akan untuk benar-benar, 5:30-7:00, 91 00:03:54,840 --> 00:03:59,970 mempunyai kajian ringkas sesi mengenai topik yang dibincangkan. 92 00:03:59,970 --> 00:04:02,040 Jelas jika ia adalah satu sesi atau Q & A mengkaji semula. 93 00:04:02,040 --> 00:04:04,650 Ia akan menjadi beberapa jenis kajian bentuk yang kita akan buat 94 00:04:04,650 --> 00:04:06,640 beberapa topik yang relevan untuk anda semua. 95 00:04:06,640 --> 00:04:09,886 >> Dan kemudian Isnin dan Selasa malam minggu yang 8:00-11:00, 96 00:04:09,886 --> 00:04:11,260 kita akan mempunyai waktu pejabat. 97 00:04:11,260 --> 00:04:14,500 Waktu-waktu pejabat akan paling mungkin lebih daripada hanya datang, 98 00:04:14,500 --> 00:04:17,564 meminta TA soalan anda mengenai konsep-konsep kedudukan yang keliru, 99 00:04:17,564 --> 00:04:20,480 dan mereka jenis akan pergi dengan anda dan konsep ulasan kuiz. 100 00:04:20,480 --> 00:04:22,920 Kuiz 0, jika anda berada dalam Isnin, seksyen Rabu, 101 00:04:22,920 --> 00:04:26,480 akan rabu semasa class-- pada hari Rabu semasa kelas. 102 00:04:26,480 --> 00:04:29,530 Dan kemudian jika anda berada dalam Selasa, seksyen Khamis, 103 00:04:29,530 --> 00:04:32,577 akan juga semasa kelas pada hari Khamis. 104 00:04:32,577 --> 00:04:34,410 Anda tidak boleh benar-benar memilih yang mana yang anda pergi ke. 105 00:04:34,410 --> 00:04:35,640 Jika anda seorang Isnin, Rabu, anda perlu pergi ke hari ini. 106 00:04:35,640 --> 00:04:38,056 Jika anda berada di Selasa, Khamis anda perlu pergi hingga Khamis. 107 00:04:38,056 --> 00:04:42,277 Tetapi pada malam itu, kami kakitangan indah, akan 108 00:04:42,277 --> 00:04:45,360 mempunyai kuiz gergasi penggredan pihak dalam yang kita akan mendapat markah itu kepadamu, 109 00:04:45,360 --> 00:04:46,190 malam itu. 110 00:04:46,190 --> 00:04:46,900 Pada waktu apa? 111 00:04:46,900 --> 00:04:51,190 Tidak jelas, siapa tahu, tetapi ia akan kembali kepada anda dalam tempoh 24 jam 112 00:04:51,190 --> 00:04:53,700 supaya anda semua mudah-mudahan mempunyai beberapa maklum balas pada hari Jumaat. 113 00:04:53,700 --> 00:04:55,870 >> Dan kemudian kita mempunyai seminggu benar-benar aneh. 114 00:04:55,870 --> 00:05:00,330 Jadi pset5 adalah salah satu psets paling sukar tahun. 115 00:05:00,330 --> 00:05:03,370 Lelaki minta maaf. 116 00:05:03,370 --> 00:05:06,520 Apa yang kami akan cuba untuk lakukan ialah kita akan mempunyai 117 00:05:06,520 --> 00:05:08,380 sedikit sokongan sebenar hujung minggu itu. 118 00:05:08,380 --> 00:05:12,970 Kerana, seperti yang anda semua boleh lihat, Serangga adalah kerana sebelum rehat jatuh. 119 00:05:12,970 --> 00:05:16,760 Kami tidak mempunyai sokongan untuk anda semua semasa cuti musim gugur 120 00:05:16,760 --> 00:05:18,897 dan dengan itu kita benar-benar jenis mahu frasa seperti ini, 121 00:05:18,897 --> 00:05:21,230 mari kita ini lebih dengan, mari kita bekerja benar-benar, benar-benar keras 122 00:05:21,230 --> 00:05:25,380 dua minggu akan datang, dapatkan kuiz ini dan menambah kedua-dua psets dilakukan dengan 123 00:05:25,380 --> 00:05:29,650 dan kemudian kamu semua mempunyai bagus santai tujuh hari tanpa memikirkan CS. 124 00:05:29,650 --> 00:05:33,750 >> Jadi untuk itu kepada berlaku, kita mungkin 125 00:05:33,750 --> 00:05:36,870 akan bergerak seksyen saya untuk petang Ahad. 126 00:05:36,870 --> 00:05:39,070 Ia akan difilemkan sehingga tidak ada bimbang jika anda tidak boleh datang. 127 00:05:39,070 --> 00:05:41,595 Tetapi penggambaran dalam talian akan berada di sana dan boleh diakses 128 00:05:41,595 --> 00:05:47,630 supaya anda semua mempunyai hari Ahad, Isnin, Selasa, untuk bekerja pada pset5. 129 00:05:47,630 --> 00:05:50,205 Dan kemudian ia jatuh memecahkan dan tiada CS dan kemudian 130 00:05:50,205 --> 00:05:51,830 kita kembali dan belakang dalam mengisar. 131 00:05:51,830 --> 00:05:54,926 >> Tetapi ia akan menjadi minggu yang indah untuk percutian kejatuhan 132 00:05:54,926 --> 00:05:58,050 dan kita benar-benar mahu menjadikannya sebagai tekanan percuma untuk semua orang yang mungkin yang 133 00:05:58,050 --> 00:06:02,620 Sebab itu kita berpindah pset sebagai kena dibayar sebelum rehat kejatuhan dan bukan selepas. 134 00:06:02,620 --> 00:06:07,601 Kerana it's-- Maksud saya, saya jenis rasa seperti ia membawa makna yang mempunyai 135 00:06:07,601 --> 00:06:10,850 tarikh akhir selepas rehat jatuh jika ada tiada sokongan anyways semasa cuti jatuh. 136 00:06:10,850 --> 00:06:14,670 Jadi ia rather-- saya fikir kita lebih suka memberi tumpuan kepada sekarang. 137 00:06:14,670 --> 00:06:16,950 Adakah sesiapa yang mempunyai soalan mengenai jadual itu? 138 00:06:16,950 --> 00:06:17,830 Apa-apa sahaja mengelirukan? 139 00:06:17,830 --> 00:06:18,330 Yeah. 140 00:06:18,330 --> 00:06:20,944 >> PENONTON: Adakah kita masih mempunyai syarahan mengenai ke-21? 141 00:06:20,944 --> 00:06:21,610 ANDI PENG: Ya. 142 00:06:21,610 --> 00:06:26,421 Maka pada 21, terdapat akan menjadi syarahan yang secara langsung dari Harvard. 143 00:06:26,421 --> 00:06:29,170 Saya tidak tahu jika David adalah penggambaran atau jika dia benar-benar syarahan, 144 00:06:29,170 --> 00:06:32,430 tetapi ia akan boleh didapati dalam talian untuk anda semua untuk mengakses. 145 00:06:32,430 --> 00:06:35,510 Jadi pastikan anda mengukir sebuah jam di suatu tempat di rehat kejatuhan 146 00:06:35,510 --> 00:06:39,375 supaya anda semua boleh menangkap pada kuliah itu. 147 00:06:39,375 --> 00:06:39,875 Ya? 148 00:06:39,875 --> 00:06:40,300 >> PENONTON: Ya. 149 00:06:40,300 --> 00:06:40,422 Maaf. 150 00:06:40,422 --> 00:06:41,280 Saya sampai di sini couple-- yang 151 00:06:41,280 --> 00:06:41,640 >> ANDI PENG: Tidak perlu risau. 152 00:06:41,640 --> 00:06:42,556 Di sini, mengambil gula-gula. 153 00:06:42,556 --> 00:06:45,350 154 00:06:45,350 --> 00:06:47,800 >> PENONTON: Hei, saya ditangkap itu. 155 00:06:47,800 --> 00:06:53,869 Jadi hanya untuk menggulung, bukan esok tetapi Rabu selepas itu, kami mempunyai kuiz. 156 00:06:53,869 --> 00:06:54,660 ANDI PENG: Betul. 157 00:06:54,660 --> 00:06:59,207 PENONTON: Dan ia akan adalah- apa yang format kuiz? 158 00:06:59,207 --> 00:06:59,790 ANDI PENG: Oh. 159 00:06:59,790 --> 00:07:03,870 Jadi kami akan menghantar e-mel yang meliputi semua yang lebih mendalam. 160 00:07:03,870 --> 00:07:06,590 Tetapi, pada dasarnya, ia hanya meliputi topik asas telah dilindungi 161 00:07:06,590 --> 00:07:09,042 pada separuh pertama semester. 162 00:07:09,042 --> 00:07:12,250 Kami akan mempunyai sesi kajian dan soalan dan jawapan jadi tidak ada kebimbangan tentang itu. 163 00:07:12,250 --> 00:07:14,107 Tetapi kita akan pergi ke atas itu juga. 164 00:07:14,107 --> 00:07:16,940 PENONTON: Adakah ia akan menjadi, kita membawa komputer dan kod kami there-- 165 00:07:16,940 --> 00:07:17,140 ANDI PENG: No. 166 00:07:17,140 --> 00:07:20,130 Ia akan menjadi kamu menulis dan menjawab soalan dengan tangan. 167 00:07:20,130 --> 00:07:21,160 >> PENONTON: Oh. 168 00:07:21,160 --> 00:07:23,160 >> ANDI PENG: Jadi kami akan memberikan amalan keluar dan barangan 169 00:07:23,160 --> 00:07:26,420 supaya anda semua mungkin mahu mungkin pergi kembali dan menulis semula Mario dengan tangan hanya 170 00:07:26,420 --> 00:07:28,100 memastikan anda semua mempunyai idea bagaimana untuk melakukannya. 171 00:07:28,100 --> 00:07:29,933 Kerana kadang-kadang apabila anda menulis dengan tangan anda 172 00:07:29,933 --> 00:07:32,656 lupa koma bertitik dan barangan dan itu benar-benar buruk. 173 00:07:32,656 --> 00:07:34,156 PENONTON: Tidak akan yang menjadi [didengar]? 174 00:07:34,156 --> 00:07:38,290 Seperti, anda mendapat koma bertitik pada your-- 175 00:07:38,290 --> 00:07:40,270 >> ANDI PENG: Ya dan tidak. 176 00:07:40,270 --> 00:07:43,170 Kami akan bercakap lebih mendalam mengenai bagaimana susun atur kuiz adalah 177 00:07:43,170 --> 00:07:44,550 dan bagaimana kita akan gred. 178 00:07:44,550 --> 00:07:47,425 Tetapi pada dasarnya, hanya tahu bahawa format umum akan menjadi anda 179 00:07:47,425 --> 00:07:49,930 seorang lelaki sama ada mentafsirkan code-- menjawab soalan-soalan asas. 180 00:07:49,930 --> 00:07:51,370 Jika saya bertanya kepada anda, apakah perpustakaan? 181 00:07:51,370 --> 00:07:53,450 Kalian harus tahu apa yang perpustakaan tidak dan tuliskannya. 182 00:07:53,450 --> 00:07:56,283 Atau saya boleh katakan, menulis program yang mencetak Hello World pada skrin. 183 00:07:56,283 --> 00:08:01,140 Kalian akan menulis, int utama tidak sah printf hello koma bertitik dunia. 184 00:08:01,140 --> 00:08:01,908 Yeah. 185 00:08:01,908 --> 00:08:04,398 >> PENONTON: Jadi ia tidak akan berada dimana-mana [didengar] 186 00:08:04,398 --> 00:08:05,900 tahap kesukaran masalah yang ditetapkan? 187 00:08:05,900 --> 00:08:06,170 >> ANDI PENG: No. 188 00:08:06,170 --> 00:08:06,380 No. 189 00:08:06,380 --> 00:08:07,046 Kami won't-- yeah. 190 00:08:07,046 --> 00:08:10,030 Tulis keseluruhan daripada permainan 15 dalam 20 minit, pergi. 191 00:08:10,030 --> 00:08:12,120 Tidak, ia tidak akan itu. 192 00:08:12,120 --> 00:08:12,801 No. 193 00:08:12,801 --> 00:08:13,342 PENONTON: OK. 194 00:08:13,342 --> 00:08:15,326 Jadi itulah Rabu. 195 00:08:15,326 --> 00:08:19,017 Sepanjang minggu kami juga telah masalah yang paling sukar ditetapkan? 196 00:08:19,017 --> 00:08:19,600 ANDI PENG: No. 197 00:08:19,600 --> 00:08:22,970 Jadi masalah yang ditetapkan ia disebabkan hari sebelum rehat jatuh. 198 00:08:22,970 --> 00:08:25,690 The schedule-- e-mel sebenarnya menghantar 199 00:08:25,690 --> 00:08:27,232 20 minit yang lalu mengenai semua ini. 200 00:08:27,232 --> 00:08:28,689 Jadi anda semua hanya memeriksa e-mel anda. 201 00:08:28,689 --> 00:08:29,430 Ia akan berada di sana. 202 00:08:29,430 --> 00:08:30,060 Yeah. 203 00:08:30,060 --> 00:08:31,701 Tidak risau. 204 00:08:31,701 --> 00:08:32,200 Sejuk. 205 00:08:32,200 --> 00:08:34,900 206 00:08:34,900 --> 00:08:38,900 >> Sebarang pertanyaan umum mengenai pengumuman, penggredan, kuiz, 207 00:08:38,900 --> 00:08:41,659 sebelum kita menyelam terus ke dalam petunjuk yang akan menghabiskan makanan 208 00:08:41,659 --> 00:08:45,060 majoriti seksyen zaman kita hari ini? 209 00:08:45,060 --> 00:08:47,030 Sejuk. 210 00:08:47,030 --> 00:08:47,530 Baiklah. 211 00:08:47,530 --> 00:08:50,905 Begitu juga kalian semua menonton lovely-- ini Saya tidak tahu apa yang mereka memanggilnya. 212 00:08:50,905 --> 00:08:53,490 Perkara yang mana claymation yang meniup sendiri sehingga kerana ia 213 00:08:53,490 --> 00:08:54,820 tidak menggunakan penunjuk dengan betul. 214 00:08:54,820 --> 00:08:57,629 Nah, program anda akan mungkin meletupkan dirinya sehingga jika anda 215 00:08:57,629 --> 00:08:59,170 tidak menggunakan petunjuk betul juga. 216 00:08:59,170 --> 00:09:01,250 Oleh itu, kita akan membuat memastikan bahawa tidak berlaku. 217 00:09:01,250 --> 00:09:04,810 >> Hari ini kita akan melakukan berseronok penunjuk. 218 00:09:04,810 --> 00:09:08,970 Saya akan pergi ke atas perkara-perkara lancar seperti yang saya fikir 219 00:09:08,970 --> 00:09:10,790 mungkin dalam tempoh masa yang kecil. 220 00:09:10,790 --> 00:09:14,592 Tetapi terdapat hanya begitu banyak untuk menampung bahawa saya benar-benar mahu anda semua, 221 00:09:14,592 --> 00:09:17,300 jika anda tidak memahami sesuatu, untuk tidak hanya beritahu saya terus pergi. 222 00:09:17,300 --> 00:09:18,580 Kerana jika anda tidak memahami sesuatu, 223 00:09:18,580 --> 00:09:21,329 anda mungkin tidak akan memahami apa-apa yang saya katakan selepas itu. 224 00:09:21,329 --> 00:09:23,310 Oleh itu, sila berhenti saya dan bertanya soalan. 225 00:09:23,310 --> 00:09:25,380 Kerana ia semua jenis daripada bola salji bersama-sama. 226 00:09:25,380 --> 00:09:27,800 Seperti, petunjuk mengarah ke memori utama ke dalam perkara-perkara lain. 227 00:09:27,800 --> 00:09:31,710 Dan jadi jika anda tidak memahami petunjuk, menghalang saya dan kami akan mencari penyelesaiannya 228 00:09:31,710 --> 00:09:35,070 dan kehidupan akan menjadi halus. 229 00:09:35,070 --> 00:09:35,680 >> Sejuk. 230 00:09:35,680 --> 00:09:39,050 Jadi berapa ramai daripada anda semua dalam kuliah, Ketika Daud disebut petunjuk, 231 00:09:39,050 --> 00:09:42,050 otak anda jenis bertukar menjadi Jell-O? 232 00:09:42,050 --> 00:09:42,550 Yeah. 233 00:09:42,550 --> 00:09:44,190 Yang baik. 234 00:09:44,190 --> 00:09:46,900 Kami akan cuba untuk de-agar-agar otak anda hari ini. 235 00:09:46,900 --> 00:09:50,300 Kita akan benar-benar secara sistematik melalui apa sebenarnya penunjuk adalah, 236 00:09:50,300 --> 00:09:52,530 apa yang ia lakukan, dan bagaimana kita menggunakannya. 237 00:09:52,530 --> 00:09:56,620 >> Jadi semua pointers-- supaya biasanya dengan pembolehubah 238 00:09:56,620 --> 00:10:00,920 kita telah menggunakan dalam coding, seperti pembolehubah seperti integer atau tali 239 00:10:00,920 --> 00:10:04,790 atau terapung, mereka semua pada dasarnya nilai yang diberikan kepada mereka 240 00:10:04,790 --> 00:10:06,870 dan juga sebagai alamat menunjuk kepada nilai itu. 241 00:10:06,870 --> 00:10:08,895 Jadi, saya akan menarik ini sekarang. 242 00:10:08,895 --> 00:10:14,270 243 00:10:14,270 --> 00:10:16,140 Kami mempunyai hampir tidak ada kapur tetapi itu OK. 244 00:10:16,140 --> 00:10:25,550 >> Jadi, sebagai contoh, biasanya jalan yang kita ada 245 00:10:25,550 --> 00:10:30,860 telah menggunakan pembolehubah ialah kita mewujudkan nama pembolehubah jenis int, mari kita 246 00:10:30,860 --> 00:10:31,360 katakan. 247 00:10:31,360 --> 00:10:37,360 Jadi di sini kami ada int x dan kami Memulakan int bahawa untuk 50. 248 00:10:37,360 --> 00:10:42,390 Jadi di sini dalam blok ini ingatan pada kita komputer kami telah disimpan beberapa 50. 249 00:10:42,390 --> 00:10:46,170 Jadi di mana petunjuk mula bermain adalah bahawa komputer anda itself-- seperti di sini, 250 00:10:46,170 --> 00:10:48,880 fizikal di dalam pemacu keras dalam RAM computer-- saya 251 00:10:48,880 --> 00:10:51,147 ia hanya mempunyai jumlah terhad memori. 252 00:10:51,147 --> 00:10:53,980 Anda tidak boleh hanya terus menyimpan perkara di atas perkara di atas perkara 253 00:10:53,980 --> 00:10:54,990 dan mereka semua. 254 00:10:54,990 --> 00:10:59,570 >> Jadi cara kita dinamik memperuntukkan memori dapat menyimpan apa yang kita mahu 255 00:10:59,570 --> 00:11:03,150 dan akses, adalah dengan mempunyai petunjuk. 256 00:11:03,150 --> 00:11:06,210 Cuba bayangkan, dalam ruang ingatan anda, betul. 257 00:11:06,210 --> 00:11:10,420 Jika ini adalah RAM anda komputer, anda mempunyai ini bit sedikit 258 00:11:10,420 --> 00:11:14,540 atau blok atau bait memori dalam yang- ini adalah hanya sedikit 259 00:11:14,540 --> 00:11:18,120 blok yang telah diperuntukkan pada cakera keras atau RAM komputer anda, 260 00:11:18,120 --> 00:11:21,950 dan dalam setiap orang-orang blok anda boleh menyimpan perkara yang berbeza. 261 00:11:21,950 --> 00:11:26,990 Jadi, sebagai contoh, satu pelbagai dalam contoh ini 262 00:11:26,990 --> 00:11:29,984 di sini ialah satu bait yang yang terdiri daripada lapan bit. 263 00:11:29,984 --> 00:11:32,900 Bilangan ini berubah berdasarkan kepada sistem operasi komputer anda. 264 00:11:32,900 --> 00:11:35,942 Sebagai contoh, berapa ramai daripada anda mempunyai mendengar 32-bit berbanding 64-bit operasi 265 00:11:35,942 --> 00:11:36,441 sistem? 266 00:11:36,441 --> 00:11:37,070 Tepat sekali. 267 00:11:37,070 --> 00:11:38,860 >> Jadi semua yang berkata adalah bahawa memory-- yang 268 00:11:38,860 --> 00:11:42,420 bahawa cara bahawa komputer anda menguruskan memori adalah berbeza. 269 00:11:42,420 --> 00:11:45,370 Itulah sebabnya ia benar-benar penting untuk memahami 270 00:11:45,370 --> 00:11:49,450 mengapa fungsi memori sendiri dan bukan daripada memberi perhatian kepada nombor. 271 00:11:49,450 --> 00:11:52,400 Oleh itu, kita tidak benar-benar mengambil berat berapa besar array ini 272 00:11:52,400 --> 00:11:55,710 adalah, kita hanya perlu untuk mengambil berat tentang berapa besar yang kita perlukan int menjadi, 273 00:11:55,710 --> 00:11:58,350 berapa besar do kita memerlukan rentetan menjadi, berapa besar adalah penunjuk? 274 00:11:58,350 --> 00:12:00,630 275 00:12:00,630 --> 00:12:01,130 OKAY. 276 00:12:01,130 --> 00:12:03,690 Jadi ia akan menjadi banyak berat, maklumat padat. 277 00:12:03,690 --> 00:12:07,005 Saya akan memberikan anda semua yang beberapa detik-detik pelepasan komik di sini. 278 00:12:07,005 --> 00:12:09,130 Kalian semua akan dapat untuk memahami perkara ini sekarang. 279 00:12:09,130 --> 00:12:12,550 Kerana kita tahu bahawa petunjuk adalah alamat, 280 00:12:12,550 --> 00:12:14,480 dan mereka adalah berbeza daripada pembolehubah. 281 00:12:14,480 --> 00:12:14,980 OKAY. 282 00:12:14,980 --> 00:12:15,610 Sejuk. 283 00:12:15,610 --> 00:12:17,065 Jenaka CS adalah yang terbaik, ya? 284 00:12:17,065 --> 00:12:19,800 285 00:12:19,800 --> 00:12:23,450 >> Jadi cara kita pergi tentang mewujudkan penunjuk 286 00:12:23,450 --> 00:12:25,750 adalah sejenis sangat khusus sintaksis. 287 00:12:25,750 --> 00:12:27,870 Seperti mewujudkan apa-apa jenis pembolehubah, ia 288 00:12:27,870 --> 00:12:30,240 akan menjadi tertentu Sintaks kita gunakan untuk menciptakannya. 289 00:12:30,240 --> 00:12:34,830 Oleh itu, apabila mengisytiharkan apa-apa penunjuk, penunjuk hanya essentially-- 290 00:12:34,830 --> 00:12:37,040 Saya rasa penting sebahagian daripada petunjuk ialah 291 00:12:37,040 --> 00:12:41,650 bahawa manakala pembolehubah yang mempunyai kedua-dua nilai dan alamat, 292 00:12:41,650 --> 00:12:44,100 penunjuk alamat. 293 00:12:44,100 --> 00:12:45,740 Nilainya adalah alamat. 294 00:12:45,740 --> 00:12:48,120 Jadi ia adalah alamat yang disimpan di alamat yang berbeza. 295 00:12:48,120 --> 00:12:49,120 Jika itu membuat apa-apa rasa. 296 00:12:49,120 --> 00:12:52,390 Kami akan pergi ini dengan lebih terperinci, tetapi itulah bentuk generik 297 00:12:52,390 --> 00:12:54,370 daripada why-- bagaimana pencetak yang disimpan. 298 00:12:54,370 --> 00:12:58,900 >> Jadi cara yang anda buat penunjuk adalah dengan melakukan apa sahaja jenis data 299 00:12:58,900 --> 00:13:02,840 bahawa penunjuk yang sedang berlaku sebagai rujukan dan then-- 300 00:13:02,840 --> 00:13:05,324 dengan star-- dan kemudian nama penunjuk. 301 00:13:05,324 --> 00:13:07,240 Jadi di sini, jika kita mahu untuk mewujudkan penunjuk yang 302 00:13:07,240 --> 00:13:11,640 menunjuk ke arah integer, dan kami mahu nama penunjuk sebagai x, 303 00:13:11,640 --> 00:13:13,880 yang kita akan lakukan int bintang x. 304 00:13:13,880 --> 00:13:14,380 Ya? 305 00:13:14,380 --> 00:13:16,680 >> PENONTON: Dan jadi jika baris berikut anda 306 00:13:16,680 --> 00:13:20,045 melakukan int x, akan int bintang x menunjukkan lokasi x 307 00:13:20,045 --> 00:13:21,170 anda menentukan selepas itu? 308 00:13:21,170 --> 00:13:22,000 >> ANDI PENG: Soalan Betul yang baik. 309 00:13:22,000 --> 00:13:23,860 Kami akan pergi ke dalam ini pasangan slaid kemudian. 310 00:13:23,860 --> 00:13:24,920 Yeah. 311 00:13:24,920 --> 00:13:27,610 Dan perkara itu sama dengan char dan perkara terapung sama. 312 00:13:27,610 --> 00:13:29,950 Hanya tahu bahawa pada ketika ini kami telah mencipta penunjuk, 313 00:13:29,950 --> 00:13:32,470 kita belum benar-benar menetapkan ia menyamai apa-apa lagi. 314 00:13:32,470 --> 00:13:34,110 Kami sebenarnya tidak dirujuk itu. 315 00:13:34,110 --> 00:13:36,087 Perkara yang sama di sini apabila anda membuat pembolehubah, 316 00:13:36,087 --> 00:13:39,420 anda telah membuat nama pembolehubah, anda belum benar-benar menetapkan nilai kepadanya. 317 00:13:39,420 --> 00:13:41,410 Perkara yang sama di sini. 318 00:13:41,410 --> 00:13:42,110 >> OKAY. 319 00:13:42,110 --> 00:13:44,670 Jadi bagaimana kita menetapkan nilai kepada petunjuk? 320 00:13:44,670 --> 00:13:47,190 Ia dengan rujukan dan dereferencing. 321 00:13:47,190 --> 00:13:52,260 Jadi cara yang kita boleh rujukan yang varia-- penunjuk, pada dasarnya 322 00:13:52,260 --> 00:13:56,630 kita kembali alamat dalam ingatan yang berubah-ubah yang disimpan. 323 00:13:56,630 --> 00:14:02,550 Jadi, jika saya mempunyai pointer-- Saya akan menarik ini sekali kita dapat slaid seterusnya, 324 00:14:02,550 --> 00:14:05,760 tetapi hanya tahu bahawa, pada dasarnya, yang dan- Ampersand 325 00:14:05,760 --> 00:14:10,240 dan variable-- semua yang tidak adalah memberitahu anda alamat 326 00:14:10,240 --> 00:14:11,780 di mana sesuatu yang disimpan. 327 00:14:11,780 --> 00:14:15,730 Dan dereferencing adalah sebaliknya itu, yang hanya bintang. 328 00:14:15,730 --> 00:14:18,950 Bintang itu hanya memberikan anda yang sebenar data yang disimpan di alamat itu. 329 00:14:18,950 --> 00:14:21,090 >> Jadi salah memberikan anda alamat disimpan di alamat, 330 00:14:21,090 --> 00:14:23,945 yang lain memberikan anda yang sebenar nilai yang disimpan di alamat. 331 00:14:23,945 --> 00:14:25,820 Jadi kedua-dua mereka memberi kamu perkara-perkara yang berbeza. 332 00:14:25,820 --> 00:14:27,755 333 00:14:27,755 --> 00:14:29,880 Sekali lagi, slaid adalah semua dalam talian jadi tidak ada kebimbangan 334 00:14:29,880 --> 00:14:33,200 jika anda semua tidak boleh menyalin bawah ini dalam masa. 335 00:14:33,200 --> 00:14:36,330 >> Jadi mari kita lihat pada contoh ini di sini. 336 00:14:36,330 --> 00:14:40,530 Jadi kita telah mendapat gergasi pelbagai memori di sini, bukan? 337 00:14:40,530 --> 00:14:42,920 Di mana kita hanya perlu blok memori, atau bait ingatan, 338 00:14:42,920 --> 00:14:45,060 di mana kita boleh menyimpan perkara yang berbeza. 339 00:14:45,060 --> 00:14:47,310 Mari kita katakan ini adalah mata alamat dalam ingatan. 340 00:14:47,310 --> 00:14:51,350 Jadi bila-bila masa anda mempunyai - lihat 0x itu, semua yang memberitahu anda adalah bahawa 341 00:14:51,350 --> 00:14:52,930 itu adalah satu digit perenambelasan. 342 00:14:52,930 --> 00:14:56,310 Seperti yang anda semua sedia maklum, nombor boleh ditempatkan di pangkalan yang berbeza. 343 00:14:56,310 --> 00:14:58,770 Asas 10 adalah bagaimana kita biasanya mentafsir nombor. 344 00:14:58,770 --> 00:15:00,550 Terdapat juga asas 2, yang merupakan binari. 345 00:15:00,550 --> 00:15:03,366 Dan dalam kes ini, perenambelasan adalah asas 16. 346 00:15:03,366 --> 00:15:06,240 Ia hanya cara yang berbeza untuk mengatakan dari sifar hingga 10-- atau sifar hingga sembilan 347 00:15:06,240 --> 00:15:10,904 dan kemudian juga A, B, C, D, E, F. Juga rujukan nombor yang berlainan. 348 00:15:10,904 --> 00:15:12,570 Daud lebih ini dalam kuliah secara ringkas. 349 00:15:12,570 --> 00:15:14,280 Jika anda semua keliru, hanya google ia. 350 00:15:14,280 --> 00:15:17,370 Ada cara yang benar-benar mudah untuk belajar apa digit perenambelasan adalah. 351 00:15:17,370 --> 00:15:19,510 Semua itu benar-benar berkaitan sekarang adalah untuk anda 352 00:15:19,510 --> 00:15:24,170 semua untuk tahu bahawa digit perenambelasan dalam C 353 00:15:24,170 --> 00:15:27,090 memberitahu atasmu, yang biasanya memberitahu anda bahawa itu penunjuk. 354 00:15:27,090 --> 00:15:29,150 Atau itulah lokasi. 355 00:15:29,150 --> 00:15:33,310 >> Jadi dalam contoh ini di sini, int x sama 5. 356 00:15:33,310 --> 00:15:36,350 Kami mewujudkan integer-- yang maaf, pembolehubah jenis 357 00:15:36,350 --> 00:15:39,090 integer dan kami Memulakan ia hingga 5. 358 00:15:39,090 --> 00:15:47,040 Jadi di sini di atas kapal ingatan kita, kita boleh melihat bahawa x ialah di alamat 0x0 359 00:15:47,040 --> 00:15:50,550 dan nilai yang telah anda ' yang disimpan di dalamnya adalah 5. 360 00:15:50,550 --> 00:15:52,370 Yang perlu masuk akal kepada semua orang, bukan? 361 00:15:52,370 --> 00:15:53,030 OKAY. 362 00:15:53,030 --> 00:15:56,520 >> Kemudian apa yang telah kami lakukan dalam baris kedua kod 363 00:15:56,520 --> 00:16:00,290 adalah bahawa kita telah membuat penunjuk jenis int. 364 00:16:00,290 --> 00:16:02,750 Itulah yang int penunjuk bintang lakukan. 365 00:16:02,750 --> 00:16:07,320 Dan yang sama dengan yang Ampersand x adalah memberi anda alamat sesuatu. 366 00:16:07,320 --> 00:16:12,120 Jadi alamat x dalam contoh ini adalah 0x0. 367 00:16:12,120 --> 00:16:15,630 Dan sebagainya alamat yang sedang disimpan dalam penunjuk itu. 368 00:16:15,630 --> 00:16:17,360 Adakah ini masuk akal untuk semua orang? 369 00:16:17,360 --> 00:16:19,965 >> Jadi berfikir this-- memikirkan pointers-- sini 370 00:16:19,965 --> 00:16:24,780 di Yale kami mempunyai sistem Peti Surat di mana setiap pelajar mempunyai mailing yang 371 00:16:24,780 --> 00:16:26,960 menangani mana anda boleh pergi ke dalam ruangan bawah tanah LW 372 00:16:26,960 --> 00:16:30,492 dan anda hanya boleh pergi dan merebut apa sahaja yang anda perlukan dari alamat tersebut. 373 00:16:30,492 --> 00:16:32,450 Perkara yang sama berlaku di sini di komputer. 374 00:16:32,450 --> 00:16:36,770 Anda mempunyai ini bytes memori yang anda boleh menyimpan maklumat ke dalam, 375 00:16:36,770 --> 00:16:39,529 tetapi untuk mengetahui cebisan maklumat 376 00:16:39,529 --> 00:16:42,570 Perlawanan daripada apa yang anda cuba untuk mencari dan di mana, anda perlu penunjuk yang 377 00:16:42,570 --> 00:16:43,740 memberitahu anda bagaimana untuk pergi ke sana. 378 00:16:43,740 --> 00:16:47,270 >> Jadi, sebagai contoh, bagi saya, Peti Surat saya, Saya mempunyai nombor lima digit tertentu. 379 00:16:47,270 --> 00:16:48,400 Itulah alamat saya. 380 00:16:48,400 --> 00:16:51,880 Jadi saya secara fizikal boleh pergi ke ingatan, Saya boleh melihat alamat, 381 00:16:51,880 --> 00:16:54,507 Saya boleh pergi ke bahawa Peti Surat dan mengakses data di dalam. 382 00:16:54,507 --> 00:16:57,090 Adakah ini masuk akal untuk Semua orang Komputer anda pada dasarnya 383 00:16:57,090 --> 00:16:59,000 melakukan perkara yang sama. 384 00:16:59,000 --> 00:17:02,750 >> Jadi semua penunjuk lakukan ialah ia hanya mewujudkan ingatan yang 385 00:17:02,750 --> 00:17:06,099 dan data ingatan sebenarnya alamat sesuatu yang lain. 386 00:17:06,099 --> 00:17:08,210 Kemudian anda boleh pergi dan mendapati bahawa. 387 00:17:08,210 --> 00:17:09,060 Semua orang yang baik? 388 00:17:09,060 --> 00:17:10,720 Semua orang baik dengan saya setakat ini? 389 00:17:10,720 --> 00:17:11,360 OKAY. 390 00:17:11,360 --> 00:17:11,859 Sejuk. 391 00:17:11,859 --> 00:17:14,311 392 00:17:14,311 --> 00:17:14,810 Baiklah. 393 00:17:14,810 --> 00:17:19,160 Jadi hampir perkara yang sama seperti sebelum ini. 394 00:17:19,160 --> 00:17:23,849 Oleh itu, kita perlu, pertama, pembolehubah dipanggil x di mana case-- 395 00:17:23,849 --> 00:17:27,700 Saya akan menukar nilai ini hingga 5. 396 00:17:27,700 --> 00:17:31,820 Mari kita katakan alamat ini dalam ingatan adalah 0x0. 397 00:17:31,820 --> 00:17:33,070 00. 398 00:17:33,070 --> 00:17:33,570 Yang besar. 399 00:17:33,570 --> 00:17:35,320 >> Sebab itu, pada kedua kami baris kod, kami 400 00:17:35,320 --> 00:17:41,210 akan mewujudkan penunjuk dipanggil penunjuk ptr. 401 00:17:41,210 --> 00:17:45,760 Dan alamat itu, mari kita hanya mengatakan bahawa 0x01 dalam ingatan. 402 00:17:45,760 --> 00:17:48,280 Dan kita benar-benar mahu store-- Ampersand 403 00:17:48,280 --> 00:17:50,620 x memberikan anda alamat apa x adalah. 404 00:17:50,620 --> 00:17:53,990 Dan alamat x adalah 0x00. 405 00:17:53,990 --> 00:17:57,300 Jadi penunjuk ini sekarang sebenarnya mempunyai alamat 406 00:17:57,300 --> 00:18:00,210 disimpan sebagai nilai apa x adalah. 407 00:18:00,210 --> 00:18:01,700 Setiap orang dengan saya setakat ini? 408 00:18:01,700 --> 00:18:02,320 Sejuk. 409 00:18:02,320 --> 00:18:04,670 >> Dan kemudian, jalan yang kita akan menyalin itu, 410 00:18:04,670 --> 00:18:09,650 jika kita akan mengisytiharkan dan memulakan satu lagi blok memori jenis int. 411 00:18:09,650 --> 00:18:10,150 Betul? 412 00:18:10,150 --> 00:18:11,130 Ini akan menjadi int. 413 00:18:11,130 --> 00:18:14,130 Ia akan dipanggil salinan. 414 00:18:14,130 --> 00:18:17,120 Dan anda akan get-- supaya penunjuk bintang memberikan anda 415 00:18:17,120 --> 00:18:19,080 data sebenar dari alamat tersebut. 416 00:18:19,080 --> 00:18:22,490 Ampersand ini memberikan anda alamat, bintang memberikan anda data. 417 00:18:22,490 --> 00:18:24,630 Oleh itu, data pada penunjuk. 418 00:18:24,630 --> 00:18:29,420 Penunjuk ini menunjuk ke 5. 419 00:18:29,420 --> 00:18:33,140 Dan supaya fungsi ini sini-- bintang pointer-- 420 00:18:33,140 --> 00:18:39,740 pergi, mendapat apa yang di blok ini dan kedai di sini. 421 00:18:39,740 --> 00:18:41,730 Semua orang yang jelas mengenai bagaimana yang berlaku? 422 00:18:41,730 --> 00:18:45,490 >> There-- jadi kedua-dua pengendali betul yang Ampersand dan star-- yang 423 00:18:45,490 --> 00:18:48,250 hanya melakukan perkara yang berbeza apabila digunakan pada petunjuk. 424 00:18:48,250 --> 00:18:50,837 Satu mendapat anda alamat, satu membawa anda nilai sebenar. 425 00:18:50,837 --> 00:18:53,670 Jadi pastikan apabila anda semua coding yang anda tidak mengelirukan dua 426 00:18:53,670 --> 00:18:55,650 kerana mereka jauh berbeza. 427 00:18:55,650 --> 00:18:58,880 Di sini kita mempunyai contoh yang bagus 0x01 a. 428 00:18:58,880 --> 00:19:01,207 Itu benar-benar baik sebilangan kecil untuk diingati. 429 00:19:01,207 --> 00:19:03,040 Dalam komputer anda yang sebenarnya anda akan mempunyai 430 00:19:03,040 --> 00:19:06,740 beberapa keldai gergasi itu adalah sesuatu itu bukan bagus, tidak menyenangkan. 431 00:19:06,740 --> 00:19:08,280 Ia akan menjadi beberapa nilai sampah. 432 00:19:08,280 --> 00:19:10,920 Dan sebagainya ia akan benar-benar, benar-benar merosakkan program anda. 433 00:19:10,920 --> 00:19:12,670 Ia amat penting sekarang yang kita ada 434 00:19:12,670 --> 00:19:16,150 asas-asas selama why-- seperti, apa yang secara fizikal berlaku apabila 435 00:19:16,150 --> 00:19:18,270 anda menjalankan orang-orang blok kod. 436 00:19:18,270 --> 00:19:19,120 Everyone-- ya? 437 00:19:19,120 --> 00:19:21,425 >> PENONTON: Jadi int x sama int salinan? 438 00:19:21,425 --> 00:19:24,650 439 00:19:24,650 --> 00:19:34,970 >> ANDI PENG: Tiada kerana, dalam kes ini, int x-- nilai x-- sama dengan 5, bukan? 440 00:19:34,970 --> 00:19:40,546 Dan kemudian int salinan sama dengan 5. 441 00:19:40,546 --> 00:19:43,420 Jadi jika anda adalah untuk menyamakan mereka untuk antara satu sama lain kerana mereka integer, 442 00:19:43,420 --> 00:19:46,379 ya, mereka akan menilai kepada benar. 443 00:19:46,379 --> 00:19:49,670 Tetapi jika mereka tali dalam ingatan, seperti salah satu yang dilakukan Daud, ketika contoh, 444 00:19:49,670 --> 00:19:51,670 itu berbeza kerana mereka rujukan 445 00:19:51,670 --> 00:19:54,920 alamat tempat dalam ingatan dan mereka akan sama dengan yang salah. 446 00:19:54,920 --> 00:20:00,070 >> Jadi di sini akan menjadi kenyataan kerana anda perbandingan langsung values-- integers-- 447 00:20:00,070 --> 00:20:02,240 tetapi yang lain anda titik rujukan. 448 00:20:02,240 --> 00:20:05,290 Kerana tali adalah dalam array, dan all-- kita akan bercakap tentang ini later-- 449 00:20:05,290 --> 00:20:09,940 tetapi lokasi pada dasarnya hanya penunjuk kepada sekumpulan aksara dalam ingatan. 450 00:20:09,940 --> 00:20:11,610 Jadi mereka adalah sedikit berbeza. 451 00:20:11,610 --> 00:20:14,642 Tetapi dalam kes ini, ya, anda boleh berbuat demikian. 452 00:20:14,642 --> 00:20:17,354 >> PENONTON: Bolehkah anda menjelaskan alamat salinan? 453 00:20:17,354 --> 00:20:18,020 ANDI PENG: Ya. 454 00:20:18,020 --> 00:20:20,030 Jadi itulah saya just-- tidak mengisi dalam nilai 455 00:20:20,030 --> 00:20:23,022 tetapi ia hanya beberapa rawak lain nilai sampah yang kita tidak mengambil berat tentang. 456 00:20:23,022 --> 00:20:25,730 Kerana apabila anda memulakan program anda sedar bahawa kita tidak benar-benar 457 00:20:25,730 --> 00:20:28,150 benar-benar peduli apa yang alamat sebenar adalah, 458 00:20:28,150 --> 00:20:30,470 kita hanya perlu tahu apa yang di alamat. 459 00:20:30,470 --> 00:20:31,608 Yeah. 460 00:20:31,608 --> 00:20:36,034 >> PENONTON: Bintang itu sebelah int pada baris kedua, itu than-- berbeza 461 00:20:36,034 --> 00:20:36,700 ANDI PENG: Ya. 462 00:20:36,700 --> 00:20:39,015 PENONTON: --Di penyahrujukan dan rujukan bintang? 463 00:20:39,015 --> 00:20:39,681 ANDI PENG: Ya. 464 00:20:39,681 --> 00:20:43,180 Jadi pengarang C-- sesiapa memutuskan untuk menulis bahasa C-- 465 00:20:43,180 --> 00:20:44,200 tidak begitu pintar. 466 00:20:44,200 --> 00:20:46,830 Mereka tidak begitu bijak dalam usaha untuk memahami mengapa kita perlu melakukan ini. 467 00:20:46,830 --> 00:20:49,413 Jika ia adalah saya, saya akan pasti menggunakan dua watak yang berbeza. 468 00:20:49,413 --> 00:20:52,100 Tetapi mereka telah memilih untuk menggunakan salah satu yang sama. 469 00:20:52,100 --> 00:20:56,607 >> Jadi bintang selepas int, yang memberitahu komputer 470 00:20:56,607 --> 00:20:58,190 yang anda kira-kira untuk mewujudkan penunjuk. 471 00:20:58,190 --> 00:21:00,820 Tetapi jika anda cuba untuk dereference something-- dengan kata lain, 472 00:21:00,820 --> 00:21:03,780 pergi ke alamat dan tarik data dari somewhere-- 473 00:21:03,780 --> 00:21:05,070 bintang yang digunakan berbeza. 474 00:21:05,070 --> 00:21:08,750 Jadi anda semua hanya berhati-hati kira-kira bukan main-main sehingga kedua-dua kegunaan. 475 00:21:08,750 --> 00:21:09,870 Sejuk. 476 00:21:09,870 --> 00:21:10,605 Ya? 477 00:21:10,605 --> 00:21:14,680 >> PENONTON: Jadi hanya memberitahu pihak memastikan bahawa saya following-- 478 00:21:14,680 --> 00:21:16,252 >> ANDI PENG: Totally halus. 479 00:21:16,252 --> 00:21:20,491 >> PENONTON: --in sebelah kiri untuk slaid itu, kita melakukan satu perkara yang kita tahu. 480 00:21:20,491 --> 00:21:23,124 Kami mengaku integer [Didengar] yang sama dengan 5. 481 00:21:23,124 --> 00:21:23,790 ANDI PENG: Ya. 482 00:21:23,790 --> 00:21:24,456 PENONTON: Betul. 483 00:21:24,456 --> 00:21:28,960 Dan kemudian kita mempunyai satu perkara int bintang dan yang mengatakan bahawa, OK, jenis suka kita 484 00:21:28,960 --> 00:21:31,235 diisytiharkan integer, sekarang kita mengisytiharkan penunjuk. 485 00:21:31,235 --> 00:21:32,110 ANDI PENG: Betul. 486 00:21:32,110 --> 00:21:32,410 Betul. 487 00:21:32,410 --> 00:21:32,710 >> PENONTON: Betul? 488 00:21:32,710 --> 00:21:33,870 Dan penunjuk kita ptr. 489 00:21:33,870 --> 00:21:34,080 >> ANDI PENG: Ya. 490 00:21:34,080 --> 00:21:35,460 Nama penunjuk adalah ptr. 491 00:21:35,460 --> 00:21:35,959 Penunjuk. 492 00:21:35,959 --> 00:21:39,000 PENONTON: Dan kemudian ia sama nx yang hanya memberitahu C 493 00:21:39,000 --> 00:21:44,667 bahawa ia mahu untuk mengakses nilai pada integer x-- nilai yang integer x 494 00:21:44,667 --> 00:21:45,800 telah diberikan. 495 00:21:45,800 --> 00:21:49,050 >> ANDI PENG: Berhati-hati kerana Ampersand x sebenarnya 496 00:21:49,050 --> 00:21:53,120 memberitahu atasmu, komputer yang anda mahu tarik alamat apa x ialah. 497 00:21:53,120 --> 00:21:56,350 Jadi Ampersand memberikan anda alamat, bintang memberikan anda nilai. 498 00:21:56,350 --> 00:21:58,255 >> PENONTON: Oleh itu, kita mahu alamat. 499 00:21:58,255 --> 00:22:02,075 Katakan x adalah at-- 500 00:22:02,075 --> 00:22:03,950 ANDI PENG: Kami sebenarnya tahu apa yang x ialah, bukan? 501 00:22:03,950 --> 00:22:06,790 Kerana kita tahu bahawa x was-- Saya membuat ini ke atas tetapi mari kita hanya mengatakan, 502 00:22:06,790 --> 00:22:08,760 sewenang-wenangnya, ia adalah 0x00. 503 00:22:08,760 --> 00:22:09,590 Betul? 504 00:22:09,590 --> 00:22:14,120 Jadi kita tahu alamat adalah 0x00, Dan setelah kita pergi dan Ampersand x, 505 00:22:14,120 --> 00:22:17,050 kita tahu bahawa yang perlu menilai kepada 0x00. 506 00:22:17,050 --> 00:22:20,810 Itulah sebabnya kami disimpan yang sebagai nilai penunjuk kami. 507 00:22:20,810 --> 00:22:21,924 Adakah ini masuk akal? 508 00:22:21,924 --> 00:22:22,832 >> PENONTON: Ya. 509 00:22:22,832 --> 00:22:28,057 Dan salinan pergi ke dereference ptr-- 510 00:22:28,057 --> 00:22:28,765 ANDI PENG: Betul. 511 00:22:28,765 --> 00:22:30,473 PENONTON: --which adalah penunjuk yang kami telah 512 00:22:30,473 --> 00:22:35,220 mengisytiharkan bahawa memberitahu kita alamat integer x. 513 00:22:35,220 --> 00:22:36,160 >> ANDI PENG: Ya. 514 00:22:36,160 --> 00:22:39,272 >> PENONTON: Dan dalam hal ini satu kes, ptr bintang ini 515 00:22:39,272 --> 00:22:41,256 bersamaan dengan nilai x yang sama dengan 5. 516 00:22:41,256 --> 00:22:42,744 >> ANDI PENG: Betul. 517 00:22:42,744 --> 00:22:44,728 >> PENONTON: Cool. 518 00:22:44,728 --> 00:22:49,382 Dan itu adalah cara yang lebih mudah untuk mendapatkan itu atau ialah bahawa satu-satunya way-- 519 00:22:49,382 --> 00:22:51,840 ANDI PENG: Jadi sekarang ia tidak kelihatan sangat logik untuk kita 520 00:22:51,840 --> 00:22:54,690 menghabiskan semua masa ini melakukan ini perkara super rumit apabila 521 00:22:54,690 --> 00:22:57,606 semua yang kita lakukan hanya membuat dua integer dengan nilai 5, bukan? 522 00:22:57,606 --> 00:22:58,900 Ia tidak masuk akal. 523 00:22:58,900 --> 00:23:03,060 Tetapi apabila kita akan pergi ke atas peruntukan memori dan- kita akan 524 00:23:03,060 --> 00:23:06,067 pergi mengapa ini mungkin berguna dan bermanfaat di kemudian hari. 525 00:23:06,067 --> 00:23:09,150 Percayalah apabila saya mengatakan bahawa kita tidak hanya mewujudkan fungsi-fungsi ini sewenang-wenangnya untuk anda 526 00:23:09,150 --> 00:23:11,340 lelaki untuk belajar kerana kami cuba untuk main-main dengan anda. 527 00:23:11,340 --> 00:23:14,550 Ada sebenarnya menggunakan untuk semua ini perkara dan kita akan bercakap tentang mereka. 528 00:23:14,550 --> 00:23:14,950 >> PENONTON: Awesome. 529 00:23:14,950 --> 00:23:15,350 >> ANDI PENG: Ya. 530 00:23:15,350 --> 00:23:16,150 >> PENONTON: [didengar]. 531 00:23:16,150 --> 00:23:16,450 >> ANDI PENG: Soalan yang baik. 532 00:23:16,450 --> 00:23:17,510 >> PENONTON: [didengar]. 533 00:23:17,510 --> 00:23:18,000 >> ANDI PENG: Ia bukan. 534 00:23:18,000 --> 00:23:18,666 Ia benar-benar tidak. 535 00:23:18,666 --> 00:23:21,050 PENONTON: pembolehubah --two yang juga sama [didengar]. 536 00:23:21,050 --> 00:23:22,400 OKAY. 537 00:23:22,400 --> 00:23:23,070 >> ANDI PENG: Ya. 538 00:23:23,070 --> 00:23:23,570 OKAY. 539 00:23:23,570 --> 00:23:25,249 Sebelum saya bergerak ke atas, semua orang jelas? 540 00:23:25,249 --> 00:23:26,790 Saya tahu Taylor, anda mendapat dalam sedikit lewat. 541 00:23:26,790 --> 00:23:27,490 Tidak mengapa. 542 00:23:27,490 --> 00:23:28,100 Ia dalam talian. 543 00:23:28,100 --> 00:23:30,600 Anda akan menonton 20 pertama minit dan anda akan menjadi semua yang baik. 544 00:23:30,600 --> 00:23:31,190 OKAY. 545 00:23:31,190 --> 00:23:31,690 Sejuk. 546 00:23:31,690 --> 00:23:35,597 547 00:23:35,597 --> 00:23:37,140 >> Baiklah. 548 00:23:37,140 --> 00:23:41,270 Jadi ini adalah asasnya sejenis perkara yang sama bahawa kita hanya lakukan. 549 00:23:41,270 --> 00:23:43,100 Ia hanya dalam bentuk grafik. 550 00:23:43,100 --> 00:23:47,070 Jika anda untuk mengesan apa yang Kebetulan, int x sama 5, 551 00:23:47,070 --> 00:23:52,159 semua yang kita lakukan pada ketika ini adalah mewujudkan pemboleh ubah bernama x jenis int. 552 00:23:52,159 --> 00:23:54,200 Kami akan menyimpan nilai 5 dalamnya. 553 00:23:54,200 --> 00:23:57,366 Tidak ada penunjuk kerana kita tidak mempunyai sebenarnya dicipta penunjuk lagi, bukan? 554 00:23:57,366 --> 00:24:00,302 Dan kemudian di akhirat line, penunjuk int bintang, 555 00:24:00,302 --> 00:24:02,760 itulah di mana kita sebenarnya fizikal mewujudkan penunjuk 556 00:24:02,760 --> 00:24:05,010 dan kami menetapkan bahawa sama dengan, atau rujukan 557 00:24:05,010 --> 00:24:07,250 penunjuk, untuk Ampersand x. 558 00:24:07,250 --> 00:24:10,002 Yang mana mana sahaja di memori ini kebetulan berada. 559 00:24:10,002 --> 00:24:12,210 Saya tidak benar-benar mengganggu membentuk nilai masa ini. 560 00:24:12,210 --> 00:24:14,900 Tetapi dalam kes ini, ketika itu anda akan sama dengan itu. 561 00:24:14,900 --> 00:24:18,060 >> Dan kemudian di bawah sana, bintang penunjuk adalah penyahrujukan itu. 562 00:24:18,060 --> 00:24:20,310 Itulah di mana kita berada menarik maklumat. 563 00:24:20,310 --> 00:24:24,170 Jadi nilai yang pada x sebenarnya akan menjadi sama dengan 35. 564 00:24:24,170 --> 00:24:30,390 Jadi pada ketika ini, kami telah pada dasarnya hanya reinitialized x 35 565 00:24:30,390 --> 00:24:32,320 tanpa benar-benar menyentuh x. 566 00:24:32,320 --> 00:24:34,560 Hanya melalui penunjuk yang menunjuk ke x, 567 00:24:34,560 --> 00:24:36,910 kita sebenarnya boleh mengubah apa yang x adalah. 568 00:24:36,910 --> 00:24:38,420 Saya akan menarik ini keluar juga. 569 00:24:38,420 --> 00:24:52,200 >> Jadi di sini kita telah membuat alamat beberapa rawak di sini. 570 00:24:52,200 --> 00:24:54,734 Mari kita katakan 0x00 lagi. 571 00:24:54,734 --> 00:24:56,150 Mari kita hanya mengatakan bahawa alamat. 572 00:24:56,150 --> 00:25:00,830 Dan kami telah membuat integer bernama x dan nilai yang saya telah diberikan kepadanya adalah 5. 573 00:25:00,830 --> 00:25:03,840 Dalam baris kedua, int pointer-- jadi sekarang kita ada 574 00:25:03,840 --> 00:25:07,820 mendapat perkara kedua ini di sini dipanggil pointer-- yang 575 00:25:07,820 --> 00:25:14,310 dan kita akan supaya- mari kita hanya mengatakan itu beberapa lain alamat ingatan rawak. 576 00:25:14,310 --> 00:25:18,460 >> Oleh itu, kita akan menetapkan ini sama dengan apa yang. 577 00:25:18,460 --> 00:25:21,540 578 00:25:21,540 --> 00:25:25,880 Dan penunjuk ini akan menunjuk ke arah nilai x 579 00:25:25,880 --> 00:25:30,090 Kemudian, jika kita mengubah the-- jika kita melakukan penunjuk bintang, 580 00:25:30,090 --> 00:25:32,800 yang akan di nilai penunjuk kami. 581 00:25:32,800 --> 00:25:36,979 Dalam kes ini, ia akan mengesan ini arrow kepada nilai ini x 582 00:25:36,979 --> 00:25:38,395 dan ia akan berubah kepada 35. 583 00:25:38,395 --> 00:25:41,400 584 00:25:41,400 --> 00:25:44,760 Berkesan, kita hanya berubah x tanpa menyentuh x. 585 00:25:44,760 --> 00:25:48,970 Melalui hanya rujukan petunjuk, kita boleh pergi dan menukar nilai x. 586 00:25:48,970 --> 00:25:50,050 Adakah ini masuk akal? 587 00:25:50,050 --> 00:25:55,200 >> Jadi dengan cara ini, kita sebenarnya boleh menamakan semula dan rechange dan memberi semula nilai-nilai 588 00:25:55,200 --> 00:25:57,750 kepada perkara-perkara yang kita tidak benar-benar membuat diri kita sendiri. 589 00:25:57,750 --> 00:26:00,925 Adakah ini masuk akal untuk semua orang? 590 00:26:00,925 --> 00:26:01,425 Sejuk. 591 00:26:01,425 --> 00:26:04,450 592 00:26:04,450 --> 00:26:05,310 OKAY. 593 00:26:05,310 --> 00:26:08,210 Grafik begitu kompleks di sini. 594 00:26:08,210 --> 00:26:09,360 Pergi baris demi baris. 595 00:26:09,360 --> 00:26:12,055 Pada asasnya, hanya melakukan yang tepat Perkara yang sama bahawa saya hanya lakukan. 596 00:26:12,055 --> 00:26:15,977 597 00:26:15,977 --> 00:26:17,810 Sebelum saya meneruskan, saya benar-benar mahu untuk hanya membuat 598 00:26:17,810 --> 00:26:19,370 memastikan semua orang benar-benar jelas mengenai perkara ini. 599 00:26:19,370 --> 00:26:26,260 Jadi di sini, kod yang kita ada adalah int yang bersamaan 3, b sama dengan 4, c sama dengan 5. 600 00:26:26,260 --> 00:26:33,130 Oleh itu, kita telah membuat tiga integer bernama a, b dan c yang sama dengan 3, 4 dan 5. 601 00:26:33,130 --> 00:26:38,460 Dan kemudian kami mewujudkan tiga petunjuk ketika itu kepada setiap pembolehubah-pembolehubah. 602 00:26:38,460 --> 00:26:41,760 >> Dan sekarang kita akan untuk pergi ke dasarnya 603 00:26:41,760 --> 00:26:44,240 apa yang berlaku apabila anda beroperasi pada mereka. 604 00:26:44,240 --> 00:26:45,490 Jadi menarik mereka keluar. 605 00:26:45,490 --> 00:26:48,156 Ambil sehelai paper-- saya tidak tahu jika anda semua semua mempunyai kertas, 606 00:26:48,156 --> 00:26:50,930 tetapi orang-orang di antara kamu yang tidak, mungkin meminjam dari orang-orang di antara kamu yang melakukan. 607 00:26:50,930 --> 00:26:53,580 Mengambil helaian kertas dan pergi baris demi baris. 608 00:26:53,580 --> 00:26:59,390 Dan pada setiap operasi yang anda lakukan, Saya mahu anda semua untuk benar-benar menulis 609 00:26:59,390 --> 00:27:00,800 apa yang a, b dan c pada ketika ini. 610 00:27:00,800 --> 00:27:03,550 Dan apakah alamat, apakah petunjuk yang menunjukkan a, b dan c 611 00:27:03,550 --> 00:27:04,410 pada ketika ini? 612 00:27:04,410 --> 00:27:07,150 >> Dan kemudian mudah-mudahan ini akan jenis langkah anda semua 613 00:27:07,150 --> 00:27:08,900 melalui bagaimana untuk berfikir tentang petunjuk. 614 00:27:08,900 --> 00:27:10,650 Kami tidak akan pergi melalui semua daripada mereka. 615 00:27:10,650 --> 00:27:13,450 Mungkin saya akan memberikan anda five-- seperti, tiga minit. 616 00:27:13,450 --> 00:27:14,660 Bermula pada hari pertama sahaja. 617 00:27:14,660 --> 00:28:10,410 618 00:28:10,410 --> 00:28:10,959 Oh. 619 00:28:10,959 --> 00:28:11,459 Maaf. 620 00:28:11,459 --> 00:28:20,940 621 00:28:20,940 --> 00:28:26,950 >> PENONTON: Dalam baris kedua, mengapa bukan bintang [didengar] berubah-ubah? 622 00:28:26,950 --> 00:28:29,410 >> ANDI PENG: Ingat dalam pengendali, pada minggu pertama, 623 00:28:29,410 --> 00:28:31,730 kita bercakap tentang bagaimana jika anda melakukan setaraf plus, 624 00:28:31,730 --> 00:28:35,320 yang hanya bermakna yang sama tambah c. 625 00:28:35,320 --> 00:28:39,370 Dalam ini case-- jadi ini adalah satu lagi cara di mana bintang boleh digunakan. 626 00:28:39,370 --> 00:28:42,040 Selain rujukan dan mengisytiharkan petunjuk, 627 00:28:42,040 --> 00:28:44,440 ingat bahawa ia juga sebagai pendaraban. 628 00:28:44,440 --> 00:28:46,575 Jadi dalam kes ini, ia akan hanya menjadi sama kali c. 629 00:28:46,575 --> 00:28:48,450 Itu hanya kerana berbeza cara bertulis itu. 630 00:28:48,450 --> 00:28:49,776 >> PENONTON: a sama kali c. 631 00:28:49,776 --> 00:28:50,442 ANDI PENG: Ya. 632 00:28:50,442 --> 00:30:43,488 633 00:30:43,488 --> 00:30:47,130 >> PENONTON: Apa maknanya jika ia berkata surat Ampersand? 634 00:30:47,130 --> 00:30:50,900 >> ANDI PENG: cara Ampersand anda akan bahawa- anda 635 00:30:50,900 --> 00:30:54,760 pergi ke tempat yang penunjuk adalah menunjuk dan menarik alamat. 636 00:30:54,760 --> 00:31:01,270 Jadi Ampersand memberikan anda alamat, bintang memberikan anda nilai sebenar di sana. 637 00:31:01,270 --> 00:31:03,090 >> PENONTON: Adakah kita membina baris demi baris? 638 00:31:03,090 --> 00:31:04,881 >> ANDI PENG: Anda membina baris demi baris. 639 00:31:04,881 --> 00:31:07,260 Jadi hanya pergi satu baris pada masa dan then-- anda 640 00:31:07,260 --> 00:31:08,470 tidak perlu bimbang tentang penamat segala-galanya. 641 00:31:08,470 --> 00:31:10,428 Mari kita cuba untuk mendapatkan melalui mungkin dua, tiga baris 642 00:31:10,428 --> 00:31:12,445 dan kemudian kami akan mengadakan dan menyelesaikan ini. 643 00:31:12,445 --> 00:31:15,530 644 00:31:15,530 --> 00:31:17,470 >> Ia sama sekali OK jika anda semua hilang. 645 00:31:17,470 --> 00:31:19,334 Ini adalah satu konsep yang benar-benar keras. 646 00:31:19,334 --> 00:31:22,500 Jika anda semua bimbang kelas pergi seperti ini seperti Daud berkata, 647 00:31:22,500 --> 00:31:23,190 ia tidak. 648 00:31:23,190 --> 00:31:25,949 Kami mencapai puncak konsep kesukaran 649 00:31:25,949 --> 00:31:27,740 dan kemudian ia akan mencerun ke bawah. 650 00:31:27,740 --> 00:31:29,110 Jadi anda semua berada hampir di sana. 651 00:31:29,110 --> 00:31:31,080 Kami mempunyai banyak gula-gula untuk mendapatkan anda semua melalui bonggol. 652 00:31:31,080 --> 00:31:32,940 Saya rasa cukup banyak selepas kejatuhan memecahkan kami akan lebih bonggol 653 00:31:32,940 --> 00:31:34,220 dan kehidupan akan menjadi baik lagi. 654 00:31:34,220 --> 00:31:36,580 Jadi tidak ada kebimbangan sama sekali. 655 00:31:36,580 --> 00:32:30,732 656 00:32:30,732 --> 00:32:31,232 Baiklah. 657 00:32:31,232 --> 00:32:33,650 Saya akan memberikan anda semua 20 saat lagi untuk mengakhiri. 658 00:32:33,650 --> 00:33:12,560 659 00:33:12,560 --> 00:33:13,330 OKAY. 660 00:33:13,330 --> 00:33:13,830 Baiklah. 661 00:33:13,830 --> 00:33:16,370 Mari kita tikaman di ini. 662 00:33:16,370 --> 00:33:19,430 Seperti yang anda semua memberi saya jawapan, Saya hanya akan menaip mereka masuk. 663 00:33:19,430 --> 00:33:22,140 Dan mudah-mudahan we-- boleh? 664 00:33:22,140 --> 00:33:23,317 Saya benar-benar tidak boleh taipkan ia di dalam. 665 00:33:23,317 --> 00:33:24,400 Saya akan menarik ia di atas kapal. 666 00:33:24,400 --> 00:33:31,420 667 00:33:31,420 --> 00:33:35,900 >> Jadi di sini selaras pertama ini kita mempunyai sama b bintang c. 668 00:33:35,900 --> 00:33:38,060 Juga Elliot dibesarkan benar-benar, benar-benar tempat yang baik. 669 00:33:38,060 --> 00:33:42,500 Oleh kerana saya terlupa bahawa di samping dua cara yang boleh kita menggunakan simbol bintang, 670 00:33:42,500 --> 00:33:43,750 ada sebenarnya cara yang ketiga. 671 00:33:43,750 --> 00:33:44,990 Pendaraban. 672 00:33:44,990 --> 00:33:51,380 Dan jadi hanya tidak terkeliru kerana itu adalah cara pertama menggunakan bintang. 673 00:33:51,380 --> 00:33:54,470 Ia hanya memberitahu komputer yang saya kira-kira untuk mewujudkan penunjuk. 674 00:33:54,470 --> 00:34:00,600 >> Cara kedua dengan melakukan bintang penunjuk anda, 675 00:34:00,600 --> 00:34:04,320 yang memberitahu penunjuk yang anda mahu untuk mengakses data pada penunjuk itu. 676 00:34:04,320 --> 00:34:06,710 Dan kemudian, sudah tentu, ada pendaraban hanya mudah 677 00:34:06,710 --> 00:34:09,564 antara dua nombor yang memberitahu anda yang saya mahu membiak kedua-dua. 678 00:34:09,564 --> 00:34:11,730 Jadi ada banyak cara kita boleh menggunakan simbol bintang. 679 00:34:11,730 --> 00:34:13,830 Jangan keliru. 680 00:34:13,830 --> 00:34:16,991 Hanya pastikan bahawa anda semua faham apa yang ketiga-tiga mereka 681 00:34:16,991 --> 00:34:18,630 lakukan. 682 00:34:18,630 --> 00:34:22,920 >> Jadi dalam baris pertama ini, yang sama b kali c. 683 00:34:22,920 --> 00:34:26,850 Jadi mari kita pergi melalui apa ialah, apakah b, apa yang c? 684 00:34:26,850 --> 00:34:32,600 Dan apakah penunjuk daripada itu, penunjuk kepada b, dan penunjuk kepada c? 685 00:34:32,600 --> 00:34:34,050 Apakah mereka semua menyamai? 686 00:34:34,050 --> 00:34:34,600 OKAY. 687 00:34:34,600 --> 00:34:38,650 >> Oleh itu, kita mulakan dengan bersamaan 3, b sama dengan 4, dan c sama dengan 5, bukan? 688 00:34:38,650 --> 00:34:42,230 Jadi selepas itu baris pertama, boleh seseorang beritahu saya apa yang adalah? 689 00:34:42,230 --> 00:34:42,730 Yeah. 690 00:34:42,730 --> 00:34:44,229 Jangan ragu untuk hanya melaungkan jawapan. 691 00:34:44,229 --> 00:34:44,929 20. 692 00:34:44,929 --> 00:34:45,550 Yang baik. 693 00:34:45,550 --> 00:34:46,410 Apa yang b? 694 00:34:46,410 --> 00:34:47,777 >> PENONTON: 4. 695 00:34:47,777 --> 00:34:48,610 ANDI PENG: Apa c? 696 00:34:48,610 --> 00:34:49,659 PENONTON: 5. 697 00:34:49,659 --> 00:34:50,770 ANDI PENG: Yay. 698 00:34:50,770 --> 00:34:51,639 Yang baik. 699 00:34:51,639 --> 00:34:55,707 Apakah pa, pb, dan pc? 700 00:34:55,707 --> 00:34:58,564 >> PENONTON: 000.001 dan 002? 701 00:34:58,564 --> 00:34:59,230 ANDI PENG: Ya. 702 00:34:59,230 --> 00:35:02,390 Hati supaya sesuatu soal silap mata tetapi tidak benar-benar kerana di sini saya 703 00:35:02,390 --> 00:35:04,760 menarik keluar kenangan yang sebenar. 704 00:35:04,760 --> 00:35:08,520 Tetapi kerana, sebagai contoh, kita tidak benar-benar tahu apa nombor-nombor tersebut adalah, 705 00:35:08,520 --> 00:35:10,326 kita hanya boleh mengatakan Ampersand. 706 00:35:10,326 --> 00:35:12,200 Saya tidak tahu jika saya boleh menarik Ampersand yang. 707 00:35:12,200 --> 00:35:18,022 Ia like-- bagaimana anda melakukannya? 708 00:35:18,022 --> 00:35:19,790 >> PENONTON: Seperti yang menerima lapan. 709 00:35:19,790 --> 00:35:20,870 >> ANDI PENG: Seperti yang lapan. 710 00:35:20,870 --> 00:35:21,580 Macam itu. 711 00:35:21,580 --> 00:35:22,080 OKAY. 712 00:35:22,080 --> 00:35:23,446 PENONTON: Bingo. 713 00:35:23,446 --> 00:35:25,350 >> ANDI PENG: Killing ia. 714 00:35:25,350 --> 00:35:28,202 Jadi Ampersand, anda hanya boleh berbuat demikian. 715 00:35:28,202 --> 00:35:30,410 Kerana kita tidak benar-benar peduli apa nilai yang 716 00:35:30,410 --> 00:35:32,880 adalah, dan ia beberapa lama nilai keldai anyways, 717 00:35:32,880 --> 00:35:35,220 kita menggunakan hanya giong untuk mengatakan Ampersand a. 718 00:35:35,220 --> 00:35:37,024 Kemudian apa yang pb? 719 00:35:37,024 --> 00:35:37,940 PENONTON: [didengar]. 720 00:35:37,940 --> 00:35:38,606 ANDI PENG: Ya. 721 00:35:38,606 --> 00:35:42,490 722 00:35:42,490 --> 00:35:43,500 Sejuk. 723 00:35:43,500 --> 00:35:44,010 Baiklah. 724 00:35:44,010 --> 00:35:44,770 Baris pertama mudah. 725 00:35:44,770 --> 00:35:45,270 Kami mendapat ini. 726 00:35:45,270 --> 00:35:46,330 Penunjuk mudah. 727 00:35:46,330 --> 00:35:47,450 Tidak mengapa. 728 00:35:47,450 --> 00:35:48,740 >> Baris kedua. 729 00:35:48,740 --> 00:35:52,400 Dan sebagainya bintang sama adalah sama Perkara sebagai berkata yang sama kali c. 730 00:35:52,400 --> 00:35:54,730 Ia hanya cara yang lebih mudah daripada menulis. 731 00:35:54,730 --> 00:35:57,170 Oleh itu, kita tidak cuba untuk membuat titik atau apa-apa di sini. 732 00:35:57,170 --> 00:36:00,600 Yang dilakukan dengan baris pertama. 733 00:36:00,600 --> 00:36:05,144 Apakah itu pada baris kedua selepas anda melakukan sama kali c? 734 00:36:05,144 --> 00:36:05,777 >> PENONTON: 100? 735 00:36:05,777 --> 00:36:06,610 ANDI PENG: Ia 100. 736 00:36:06,610 --> 00:36:07,795 Yang baik. 737 00:36:07,795 --> 00:36:08,864 Bagaimana pula b? 738 00:36:08,864 --> 00:36:10,256 >> PENONTON: [didengar]. 739 00:36:10,256 --> 00:36:11,335 >> ANDI PENG: Bagaimana pula c? 740 00:36:11,335 --> 00:36:12,490 >> PENONTON: [didengar]. 741 00:36:12,490 --> 00:36:14,530 >> ANDI PENG: Dan bagaimana pula petunjuk? 742 00:36:14,530 --> 00:36:15,800 Adakah they-- yang sama, bukan? 743 00:36:15,800 --> 00:36:20,640 744 00:36:20,640 --> 00:36:21,940 OKAY. 745 00:36:21,940 --> 00:36:23,820 Sekarang garis ketiga. 746 00:36:23,820 --> 00:36:26,400 747 00:36:26,400 --> 00:36:27,350 Sedikit lebih sukar. 748 00:36:27,350 --> 00:36:29,760 b sama bintang pa. 749 00:36:29,760 --> 00:36:34,189 Bolehkah seseorang beritahu saya, pertama, apakah bintang pa sama? 750 00:36:34,189 --> 00:36:36,159 >> PENONTON: Ia adalah nilai yang disimpan di. 751 00:36:36,159 --> 00:36:36,950 ANDI PENG: Tepat sekali. 752 00:36:36,950 --> 00:36:38,070 Dan apa yang nilai yang disimpan di? 753 00:36:38,070 --> 00:36:38,860 >> PENONTON: 100. 754 00:36:38,860 --> 00:36:39,660 >> ANDI PENG: OK. 755 00:36:39,660 --> 00:36:43,462 Jadi apa yang akan selepas melaksanakan bahawa baris kod? 756 00:36:43,462 --> 00:36:44,760 >> PENONTON: [didengar]. 757 00:36:44,760 --> 00:36:45,870 >> ANDI PENG: Bagaimana dengan b? 758 00:36:45,870 --> 00:36:46,780 >> PENONTON: 100. 759 00:36:46,780 --> 00:36:47,620 >> ANDI PENG: Ya. 760 00:36:47,620 --> 00:36:49,995 Dan kemudian semua yang lain adalah cukup banyak berubah, bukan? 761 00:36:49,995 --> 00:36:51,239 Kerana kami tidak disentuh. 762 00:36:51,239 --> 00:36:55,370 763 00:36:55,370 --> 00:36:57,010 Sejuk. 764 00:36:57,010 --> 00:36:58,390 Baris keempat. 765 00:36:58,390 --> 00:37:00,390 Kompleks lebih sedikit. 766 00:37:00,390 --> 00:37:06,910 Jadi pc-- sekali lagi, pc adalah penunjuk yang menunjuk kepada c-- sama pa. 767 00:37:06,910 --> 00:37:11,520 768 00:37:11,520 --> 00:37:12,360 Apakah itu? 769 00:37:12,360 --> 00:37:14,525 >> PENONTON: 100. 770 00:37:14,525 --> 00:37:15,400 ANDI PENG: Apakah b? 771 00:37:15,400 --> 00:37:17,920 PENONTON: 100. 772 00:37:17,920 --> 00:37:18,862 ANDI PENG: Apakah c? 773 00:37:18,862 --> 00:37:19,993 PENONTON: 5. 774 00:37:19,993 --> 00:37:20,867 ANDI PENG: Apa pa? 775 00:37:20,867 --> 00:37:22,775 PENONTON: Ampersand a. 776 00:37:22,775 --> 00:37:23,730 ANDI PENG: pb? 777 00:37:23,730 --> 00:37:26,010 PENONTON: b Ampersand. 778 00:37:26,010 --> 00:37:27,730 ANDI PENG: Dan sukar, apa yang pc sekarang? 779 00:37:27,730 --> 00:37:28,410 PENONTON: Ampersand a. 780 00:37:28,410 --> 00:37:29,034 ANDI PENG: Yay. 781 00:37:29,034 --> 00:37:31,790 Woo hoo. 782 00:37:31,790 --> 00:37:32,500 Kalian lihat? 783 00:37:32,500 --> 00:37:33,282 Ini adalah hak semua. 784 00:37:33,282 --> 00:37:33,990 Ia tidak terlalu buruk. 785 00:37:33,990 --> 00:37:38,730 Kami mempunyai lebih gula-gula jika bukan semua betul, tetapi saya fikir ia adalah hak semua. 786 00:37:38,730 --> 00:37:41,900 Dan kita akan pergi ke salah satu lagi sebelum kita mencapai orang-orang yang lebih keras. 787 00:37:41,900 --> 00:37:43,710 Jawapan yang saya ada di sini. 788 00:37:43,710 --> 00:37:47,050 >> Pada asasnya, tahu bahawa ini adalah seperti matematik pada ketika ini. 789 00:37:47,050 --> 00:37:53,240 Apabila anda mempunyai persamaan yang mudah seperti + b, kali c, itu mudah untuk dilakukan. 790 00:37:53,240 --> 00:37:56,390 Dan apabila anda mula berkembang apabila ia, hanya pergi perintah operasi. 791 00:37:56,390 --> 00:37:57,830 Perkara yang sama seperti sebelum ini. 792 00:37:57,830 --> 00:38:00,030 >> Mengesan jika anda bintang ini sebelum sesuatu. 793 00:38:00,030 --> 00:38:01,640 Yang memberitahu anda nilai. 794 00:38:01,640 --> 00:38:04,640 Jika anda mempunyai dan sebelum sesuatu, ia memberitahu anda alamat. 795 00:38:04,640 --> 00:38:07,860 Dan anda perlu menetapkan sama ada petunjuk atau nilai itu. 796 00:38:07,860 --> 00:38:11,260 Jadi mari kita pergi lebih ini terkini sangat cepat. 797 00:38:11,260 --> 00:38:12,520 Bukan yang akhir ini, maaf. 798 00:38:12,520 --> 00:38:13,340 Sebenarnya, anda semua boleh pilih. 799 00:38:13,340 --> 00:38:16,006 Yang mana satu yang anda semua mahu pergi lebih daripada baki tiga 800 00:38:16,006 --> 00:38:17,449 yang kita ada? 801 00:38:17,449 --> 00:38:20,490 Saya tidak fikir kita hanya boleh berbuat demikian kerana kita tidak boleh hanya melompat ke baris. 802 00:38:20,490 --> 00:38:21,000 OKAY. 803 00:38:21,000 --> 00:38:25,700 Kalian tidak mempunyai pilihan, ia hanya ketiga untuk bertahan satu. 804 00:38:25,700 --> 00:38:29,228 >> Bintang pc sama b kali c. 805 00:38:29,228 --> 00:38:30,144 >> PENONTON: Star pb? 806 00:38:30,144 --> 00:38:32,117 >> PENONTON: Star pb. 807 00:38:32,117 --> 00:38:32,825 ANDI PENG: Maaf? 808 00:38:32,825 --> 00:38:33,599 PENONTON: Star pb. 809 00:38:33,599 --> 00:38:34,390 ANDI PENG: Star pb. 810 00:38:34,390 --> 00:38:35,100 Oh, tidak baik saya. 811 00:38:35,100 --> 00:38:38,647 Bintang pb sama b kali c. 812 00:38:38,647 --> 00:38:40,230 Saya akan memberikan anda semua 10 saat. 813 00:38:40,230 --> 00:38:41,140 Hanya dengan cepat berfikir. 814 00:38:41,140 --> 00:38:43,450 Ini adalah bahawa kita mempunyai begitu ini, apa yang berlaku selepas kita 815 00:38:43,450 --> 00:38:46,770 melaksanakan garis kelima di sana? 816 00:38:46,770 --> 00:38:54,030 817 00:38:54,030 --> 00:38:55,980 OKAY. 818 00:38:55,980 --> 00:38:58,720 Apakah itu? 819 00:38:58,720 --> 00:38:59,560 >> PENONTON: 100. 820 00:38:59,560 --> 00:39:02,470 >> ANDI PENG: 100. 821 00:39:02,470 --> 00:39:03,610 Apa yang b sekarang? 822 00:39:03,610 --> 00:39:04,330 >> PENONTON: 500. 823 00:39:04,330 --> 00:39:05,250 >> ANDI PENG: Baik. 824 00:39:05,250 --> 00:39:08,570 Adakah seseorang ingin menjelaskan kepada saya mengapa ini adalah 500? 825 00:39:08,570 --> 00:39:10,540 Saya tidak berasa seperti kita sebenarnya pernah disentuh b. 826 00:39:10,540 --> 00:39:13,950 Bagaimana kita menguruskan untuk menukar nilai b tanpa menyentuh b? 827 00:39:13,950 --> 00:39:15,090 Ya? 828 00:39:15,090 --> 00:39:18,239 >> PENONTON: Kerana pb bintang bermakna nilai pada pb-- 829 00:39:18,239 --> 00:39:19,030 ANDI PENG: Tepat sekali. 830 00:39:19,030 --> 00:39:19,790 PENONTON: --which adalah b. 831 00:39:19,790 --> 00:39:20,581 ANDI PENG: Tepat sekali. 832 00:39:20,581 --> 00:39:26,880 Jadi di sini dalam rajah kami, penunjuk kami pb sebenarnya menunjuk kepada hak ini 833 00:39:26,880 --> 00:39:28,690 di sini, yang adalah b fizikal sebenar. 834 00:39:28,690 --> 00:39:31,340 Dan jadi jika anda pergi dan anda lakukan pb bintang, itu 835 00:39:31,340 --> 00:39:36,080 berikut panah anda penunjuk anda dan fizikal mengubah nilai b. 836 00:39:36,080 --> 00:39:39,532 Jadi itulah sebabnya kami telah ditukar kepada B 500 tanpa benar-benar menyentuh b. 837 00:39:39,532 --> 00:39:42,490 Dan kemudian segala sesuatu yang lain tetap sama kerana kita tidak menyentuh itu. 838 00:39:42,490 --> 00:39:47,060 839 00:39:47,060 --> 00:39:48,530 Itulah b. 840 00:39:48,530 --> 00:39:49,420 Sejuk. 841 00:39:49,420 --> 00:39:50,485 Dan then-- 842 00:39:50,485 --> 00:39:51,910 >> PENONTON: Saya hanya mempunyai satu soalan. 843 00:39:51,910 --> 00:39:52,730 >> ANDI PENG: Ya? 844 00:39:52,730 --> 00:39:56,000 >> PENONTON: Oleh kerana we've-- tidak ada lagi Ampersand c, 845 00:39:56,000 --> 00:39:59,620 adakah itu bermakna Ampersand yang mengarahkan kepada perkara yang sama sekarang? 846 00:39:59,620 --> 00:40:00,520 >> ANDI PENG: Ya. 847 00:40:00,520 --> 00:40:01,582 So-- 848 00:40:01,582 --> 00:40:03,540 PENONTON: Jadi anak panah jenis hanya bergerak dan- 849 00:40:03,540 --> 00:40:04,030 ANDI PENG: Jadi essentially-- 850 00:40:04,030 --> 00:40:05,405 PENONTON: --now kita tidak boleh access-- 851 00:40:05,405 --> 00:40:08,387 ANDI PENG: --when kita dereference c pada-- saya mengada-adakan saja. 852 00:40:08,387 --> 00:40:08,970 Apakah itu? 853 00:40:08,970 --> 00:40:09,560 Barisan ketiga? 854 00:40:09,560 --> 00:40:10,060 Keempat. 855 00:40:10,060 --> 00:40:11,490 Baris keempat. 856 00:40:11,490 --> 00:40:14,910 Apa yang kami lakukan adalah, pada dasarnya, menukar anak panah ini 857 00:40:14,910 --> 00:40:16,680 dan ia menunjuk ke arah sebaliknya. 858 00:40:16,680 --> 00:40:19,480 >> PENONTON: Oleh itu, kita tidak boleh mengakses c lagi. 859 00:40:19,480 --> 00:40:22,520 >> ANDI PENG: Jika anda mempunyai ini tepat nombor, anda boleh mengaksesnya. 860 00:40:22,520 --> 00:40:23,260 Tetapi, tidak. 861 00:40:23,260 --> 00:40:25,680 Kami tidak mempunyai penunjuk menunjuk ke arah c lagi. 862 00:40:25,680 --> 00:40:27,430 Saya fikir jika anda mahu semula mengaksesnya, anda 863 00:40:27,430 --> 00:40:30,390 akan mewujudkan satu lagi penunjuk yang menegaskan semula untuk c 864 00:40:30,390 --> 00:40:32,856 atau dereferenced ini dan menegaskan kembali. 865 00:40:32,856 --> 00:40:35,730 Jadi, tidak, pada ketika ini, tiga petunjuk, tiada seorang pun daripada mereka menunjukkan c. 866 00:40:35,730 --> 00:40:38,800 867 00:40:38,800 --> 00:40:40,110 >> Semua orang yang baik? 868 00:40:40,110 --> 00:40:41,440 Jawapan berada dalam talian. 869 00:40:41,440 --> 00:40:45,210 Jangan ragu untuk, selepas seksyen, pergi terakhir dua dan ujian diri kamu sendiri. 870 00:40:45,210 --> 00:40:47,840 Konsep yang sama, hanya sedikit sukar. 871 00:40:47,840 --> 00:40:51,860 Hanya ikut melalui logik mengapa perkara adalah perkara-perkara yang berbeza. 872 00:40:51,860 --> 00:40:54,530 Dan tanda-tanda, petunjuk adalah satu topik yang kita suka 873 00:40:54,530 --> 00:40:58,780 untuk menutup pada kuiz kerana mereka dari segi konsep yang sangat mencabar. 874 00:40:58,780 --> 00:41:01,360 Jadi saya cadangkan anda lelaki semua mengkaji carta ini 875 00:41:01,360 --> 00:41:05,916 atau mengurangkan konsep yang serupa dengan ini sebelum kuiz anda minggu depan. 876 00:41:05,916 --> 00:41:06,864 >> PENONTON: Maafkan saya. 877 00:41:06,864 --> 00:41:07,530 >> ANDI PENG: Ya? 878 00:41:07,530 --> 00:41:09,708 PENONTON: [didengar] akhir one-- [didengar]. 879 00:41:09,708 --> 00:41:12,710 880 00:41:12,710 --> 00:41:15,770 >> ANDI PENG: 50,000? 881 00:41:15,770 --> 00:41:17,850 Saya perlu untuk mengikutinya kembali ke bawah. 882 00:41:17,850 --> 00:41:22,530 Tetapi somewhere-- saya fikir barisan sebelum ini, anda buat gergasi c nilai. 883 00:41:22,530 --> 00:41:26,250 c sama dengan perkara ini gergasi yang 100 kali 500. 884 00:41:26,250 --> 00:41:27,006 No. 885 00:41:27,006 --> 00:41:28,000 >> PENONTON: [didengar]. 886 00:41:28,000 --> 00:41:28,625 >> ANDI PENG: Ya. 887 00:41:28,625 --> 00:41:30,620 100 kali 100 yang adalah 10,000. 888 00:41:30,620 --> 00:41:32,020 Iaitu 10,000. 889 00:41:32,020 --> 00:41:35,410 Jadi kembali ke sana, anda akan mendarabkan b dan c. 890 00:41:35,410 --> 00:41:43,165 Jadi penunjuk yang menunjukkan b-- yang merupakan nilai 500-- kali a-- 891 00:41:43,165 --> 00:41:44,480 >> PENONTON: [didengar]. 892 00:41:44,480 --> 00:41:45,730 ANDI PENG: Mungkin itu salah. 893 00:41:45,730 --> 00:41:49,514 PENONTON: Tidak, tidak, tidak. [Didengar] penunjuk di c kini menghala ke arah a-- 894 00:41:49,514 --> 00:41:50,180 ANDI PENG: Ya. 895 00:41:50,180 --> 00:41:50,840 Dia betul. 896 00:41:50,840 --> 00:41:56,477 >> PENONTON: --it sekurang-di sebuah setaraf yang times-- itu nilai c. 897 00:41:56,477 --> 00:41:59,560 ANDI PENG: Bolehkah anda mengatakan bahawa sedikit sedikit lebih kuat supaya semua orang boleh mendengar anda? 898 00:41:59,560 --> 00:42:04,879 PENONTON: Jadi penunjuk di c kini menunjukkan apa penunjuk yang digunakan untuk menunjukkan 899 00:42:04,879 --> 00:42:09,460 supaya- dan masih does-- tetapi mereka menunjukkan perkara yang sama iaitu, bukan? 900 00:42:09,460 --> 00:42:12,925 Nilai, bagaimanapun ia telah baru ditakrifkan. 901 00:42:12,925 --> 00:42:17,875 Dan pada awal bahawa anda menyebut sebelum ini 100 kali 902 00:42:17,875 --> 00:42:21,340 nilai di b yang 500. 903 00:42:21,340 --> 00:42:24,305 Dan supaya sekalipun iaitu. 904 00:42:24,305 --> 00:42:24,805 50,000. 905 00:42:24,805 --> 00:42:32,860 Mereka yang anda tetapkan semula bahawa apa yang ruang memori di c is-- penunjuk di c 906 00:42:32,860 --> 00:42:34,510 menunjuk ke yang merupakan. 907 00:42:34,510 --> 00:42:38,460 Jadi anda mentakrifkan semula untuk menjadi 50,000. 908 00:42:38,460 --> 00:42:40,210 ANDI PENG: Dia boleh mengajar bahagian untuk saya. 909 00:42:40,210 --> 00:42:41,260 Lain kali itu semua anda. 910 00:42:41,260 --> 00:42:41,440 Di sini. 911 00:42:41,440 --> 00:42:42,564 Berikut adalah lebih gula-gula untuk itu. 912 00:42:42,564 --> 00:42:45,790 Anda berhak mendapat gula-gula untuk itu. 913 00:42:45,790 --> 00:42:47,260 >> PENONTON: Saya hampir terperangkap itu. 914 00:42:47,260 --> 00:42:47,660 >> ANDI PENG: Anda hampir terperangkap itu. 915 00:42:47,660 --> 00:42:48,450 Tidak mengapa. 916 00:42:48,450 --> 00:42:48,950 Yeah. 917 00:42:48,950 --> 00:42:50,033 Tetapi dia betul-betul betul. 918 00:42:50,033 --> 00:42:54,469 Jadi apa yang anda perlu lakukan adalah bahawa- saya rasa kita 919 00:42:54,469 --> 00:42:56,510 perlu mengikut fakta bahawa petunjuk kini 920 00:42:56,510 --> 00:42:57,880 menunjuk kepada nilai-nilai yang berbeza. 921 00:42:57,880 --> 00:43:01,785 Jadi value-- maaf, penunjuk c repointed a. 922 00:43:01,785 --> 00:43:04,390 Dan supaya beralih semua nombor kami. 923 00:43:04,390 --> 00:43:08,930 Dan sebab itulah, apabila anda mengakses nilai yang disimpan di sana, ia adalah berbeza. 924 00:43:08,930 --> 00:43:10,490 Adakah ini masuk akal? 925 00:43:10,490 --> 00:43:11,380 OKAY. 926 00:43:11,380 --> 00:43:12,820 Sejuk. 927 00:43:12,820 --> 00:43:16,635 Semua orang yang baik, sebelum saya bergerak? 928 00:43:16,635 --> 00:43:25,332 >> PENONTON: Adakah the-- apabila anda akan ke bawah baris dalam lajur kiri, 929 00:43:25,332 --> 00:43:30,494 adakah baris pertama memberi kesan kepada barisan kedua dan kemudian second-- seperti, ia all-- 930 00:43:30,494 --> 00:43:31,160 ANDI PENG: Ya. 931 00:43:31,160 --> 00:43:37,610 Jadi bayangkan ia kod di mana saya hanya ditaip dalam sama b kali c, bintang yang sama c. 932 00:43:37,610 --> 00:43:40,290 Bayangkan bahawa saya telah hanya berlari kod ini 933 00:43:40,290 --> 00:43:42,710 dan saya tidak mencetak apa semua perkara-perkara ini. 934 00:43:42,710 --> 00:43:46,200 Jika saya hanya untuk mencetak pertama perkara di atas, ia akan berada di sini. 935 00:43:46,200 --> 00:43:48,510 Jika selepas saya berlari semua mereka baris kod, 936 00:43:48,510 --> 00:43:51,160 apa nilai-nilai ini perlu berada di hujung yang begitu. 937 00:43:51,160 --> 00:43:53,290 >> Oleh itu, saya telah benar-benar ditulis program di sini. 938 00:43:53,290 --> 00:43:55,840 Saya tidak melakukan semua pendaraban. 939 00:43:55,840 --> 00:43:58,310 Tetapi bayangkan. 940 00:43:58,310 --> 00:44:00,370 Jadi di sini saya hanya mempunyai program yang dikenali sebagai petunjuk. 941 00:44:00,370 --> 00:44:04,190 Saya akan zum masuk jika anda guys-- OK. 942 00:44:04,190 --> 00:44:07,580 Jadi saya telah membuat pembolehubah a, b, dan c. 943 00:44:07,580 --> 00:44:09,640 Saya telah menetapkan mereka sama dengan 3, 4, dan 5 dan saya telah 944 00:44:09,640 --> 00:44:11,770 dicipta petunjuk sama mereka. 945 00:44:11,770 --> 00:44:14,550 Dan maka di sini saya hanya akan untuk mencetak apa yang. 946 00:44:14,550 --> 00:44:15,833 Jadi biarlah saya berjalan itu. 947 00:44:15,833 --> 00:44:21,520 948 00:44:21,520 --> 00:44:24,750 >> Adakah anda semua see-- crap. 949 00:44:24,750 --> 00:44:28,150 Adakah anda semua melihat bagaimana, b dan c adalah nilai-nilai 950 00:44:28,150 --> 00:44:33,530 tetapi petunjuk mereka adalah gergasi ini nilai sampah yang kita tidak mengambil berat tentang? 951 00:44:33,530 --> 00:44:36,690 Jadi jika saya untuk benar-benar plug dalam semua pendaraban 952 00:44:36,690 --> 00:44:39,770 dan kemudian mencetak semula semua ini, ia akan melaksanakan keluar 953 00:44:39,770 --> 00:44:44,509 dengan apa yang di bahagian bawah. 954 00:44:44,509 --> 00:44:47,300 Jadi jika anda semua ingin bermain-main dengan sebenarnya fizikal pengekodan, 955 00:44:47,300 --> 00:44:49,000 anda semua hanya boleh palam semua orang-orang dalam. 956 00:44:49,000 --> 00:44:52,860 Kod ini akan berada dalam talian dan kemudian anda nilai-nilai yang perlu mencetak dengan yang selepas itu. 957 00:44:52,860 --> 00:44:56,170 >> Dan kemudian anda akan melihat bagaimana penunjuk alamat sebenarnya telah ditugaskan semula. 958 00:44:56,170 --> 00:44:59,190 Jadi, anda akan melihat bagaimana Alamat c sebenarnya menjadi 959 00:44:59,190 --> 00:45:00,920 untuk menyamai apa sahaja alamat yang adalah. 960 00:45:00,920 --> 00:45:04,140 Dan mereka akan sepadan dengan apa sahaja jumlah yang besar adalah. 961 00:45:04,140 --> 00:45:06,530 Soalan yang baik. 962 00:45:06,530 --> 00:45:07,550 Semua orang ok? 963 00:45:07,550 --> 00:45:10,300 Satu panggilan terakhir untuk soalan. 964 00:45:10,300 --> 00:45:11,590 OKAY. 965 00:45:11,590 --> 00:45:12,090 Baiklah. 966 00:45:12,090 --> 00:45:15,940 Jadi bersiap sedia untuk mempunyai fikiran anda besaran yang sedikit sedikit lebih. 967 00:45:15,940 --> 00:45:18,000 Tatasusunan adalah sebenarnya hanya petunjuk. 968 00:45:18,000 --> 00:45:19,010 Itu sahaja mereka berada. 969 00:45:19,010 --> 00:45:20,410 Dan ingat, apakah tali? 970 00:45:20,410 --> 00:45:21,630 Ia juga merupakan tatasusunan. 971 00:45:21,630 --> 00:45:23,110 Jadi apakah tali benar-benar? 972 00:45:23,110 --> 00:45:27,100 Mereka seperti petunjuk kepada permulaan char lebih aksara. 973 00:45:27,100 --> 00:45:29,970 >> Jadi ia hanya konsep yang bermula untuk membina di atas satu sama lain. 974 00:45:29,970 --> 00:45:32,030 Jadi itulah why-- anda ingat dalam kuliah, David, 975 00:45:32,030 --> 00:45:34,990 apabila dia mempunyai perbandingan yang int tali ibu 976 00:45:34,990 --> 00:45:37,640 sesuatu dan kemudian lain ibu rentetan dan anda 977 00:45:37,640 --> 00:45:41,240 cuba untuk menyamakan kedua-dua satu sama lain, mereka memberi anda nilai yang berbeza. 978 00:45:41,240 --> 00:45:44,370 Ini kerana tali sendiri tidak nilai. 979 00:45:44,370 --> 00:45:48,860 Semua mereka adalah alamat ingatan char-- mereka adalah tatasusunan aksara dan array 980 00:45:48,860 --> 00:45:50,050 hanya petunjuk. 981 00:45:50,050 --> 00:45:54,022 >> Jadi, pada dasarnya, apabila Daud comparing-- 982 00:45:54,022 --> 00:45:55,355 Adakah selamat jika saya memadamkan semua ini? 983 00:45:55,355 --> 00:46:02,320 984 00:46:02,320 --> 00:46:09,750 Jadi, dalam kuliah apabila David ibu mempunyai sama sama ibu, 985 00:46:09,750 --> 00:46:11,630 kepada kita bahawa seolah-olah menjadi perkara yang sama. 986 00:46:11,630 --> 00:46:12,317 Betul? 987 00:46:12,317 --> 00:46:15,150 Tetapi, dalam komputer di bawah ini hud, apa yang sebenarnya berlaku 988 00:46:15,150 --> 00:46:18,380 adalah bahawa rentetan ini, apa yang ada adalah pelbagai. 989 00:46:18,380 --> 00:46:21,420 990 00:46:21,420 --> 00:46:25,390 Dengan ampersand-- atau, maaf, dengan terminator null pada akhir. 991 00:46:25,390 --> 00:46:28,311 992 00:46:28,311 --> 00:46:28,810 Betul? 993 00:46:28,810 --> 00:46:29,940 Backslash 0. 994 00:46:29,940 --> 00:46:32,900 Garis miring salah. 995 00:46:32,900 --> 00:46:35,960 >> Jadi semua mereka were-- semua kedua-dua tali were-- 996 00:46:35,960 --> 00:46:40,360 adalah pelbagai saiz dengan merangkak huruf ibu dan ibu. 997 00:46:40,360 --> 00:46:44,780 Tetapi apa tatasusunan sebenarnya hanyalah petunjuk ke tempat tertentu dalam ingatan 998 00:46:44,780 --> 00:46:47,140 yang memberitahu anda untuk mula lokasi anda. 999 00:46:47,140 --> 00:46:52,370 Jadi dalam kes ini, semua ini adalah hanya beberapa nilai sampah, 1000 00:46:52,370 --> 00:46:54,230 beberapa penunjuk rawak. 1001 00:46:54,230 --> 00:46:56,330 Dan semua ini adalah telah beberapa nilai sampah lain. 1002 00:46:56,330 --> 00:46:59,830 Mari kita katakan 0x200. 1003 00:46:59,830 --> 00:47:02,410 >> Dan supaya apabila anda cuba untuk sama mereka dua satu sama lain, 1004 00:47:02,410 --> 00:47:06,130 mereka menilai kepada palsu kerana yang addresses-- petunjuk 1005 00:47:06,130 --> 00:47:08,390 bahawa mereka were-- adalah berbeza. 1006 00:47:08,390 --> 00:47:11,400 Sedangkan ia adalah berbeza jika anda cuba untuk membandingkan bilangan bulat yang sebenar. 1007 00:47:11,400 --> 00:47:15,820 Seperti jika anda mahu compare-- dalam example-- terakhir int A ke B, 1008 00:47:15,820 --> 00:47:17,640 mereka akan menilai kepada benar sebagai Elliot berkata 1009 00:47:17,640 --> 00:47:19,431 kerana mereka integer yang disimpan 1010 00:47:19,431 --> 00:47:21,320 dan anda hanya menilai nilai. 1011 00:47:21,320 --> 00:47:25,090 Di sini, kerana rentetan tatasusunan dan tatasusunan adalah petunjuk, 1012 00:47:25,090 --> 00:47:28,080 itulah sebabnya mereka tidak sama dengan satu sama lain. 1013 00:47:28,080 --> 00:47:31,210 >> Begitu baik mengelirukan, grafik itu. 1014 00:47:31,210 --> 00:47:32,450 Tetapi mari kita bayangkan. 1015 00:47:32,450 --> 00:47:38,110 Kami telah mewujudkan pelbagai saiz 3 dengan indeks dari 0 ke 2-- 0, 1016 00:47:38,110 --> 00:47:41,530 1, 2 dengan nilai-nilai 1, 2, dan 3 yang disimpan di dalamnya. 1017 00:47:41,530 --> 00:47:43,820 Semua lokasi benar-benar does-- sini, mari kita 1018 00:47:43,820 --> 00:47:46,720 mengatakan saya mewujudkan penunjuk untuk yang pelbagai itu 1019 00:47:46,720 --> 00:47:50,810 mengakses nilai pada indeks pertama pelbagai ini. 1020 00:47:50,810 --> 00:47:52,890 Jadi di sini ia akan menjadi 0. 1021 00:47:52,890 --> 00:47:53,390 Betul? 1022 00:47:53,390 --> 00:47:56,820 Adakah semua orang memahami bagaimana yang baris pertama dinilai? 1023 00:47:56,820 --> 00:47:57,420 Yang besar. 1024 00:47:57,420 --> 00:48:00,800 >> Dan jadi jika anda mahu untuk memulakan nilai-nilai tambahan selepas itu, 1025 00:48:00,800 --> 00:48:04,390 semua yang kita lakukan adalah penyerahhakan semula. 1026 00:48:04,390 --> 00:48:08,810 Jadi 0, 1, 2, 1. 1027 00:48:08,810 --> 00:48:12,770 Jadi penunjuk ini yang pernah menunjuk ke sini, semua yang kita lakukan 1028 00:48:12,770 --> 00:48:15,540 bergerak ke bawah. 1029 00:48:15,540 --> 00:48:16,970 Itulah yang ditambah dengan 1 lakukan. 1030 00:48:16,970 --> 00:48:18,500 Dan kemudian kita boleh meletakkan 2 di sana. 1031 00:48:18,500 --> 00:48:23,250 Jika kita mahu meletakkan 3 dalam satu selepas itu, kami akan memadam penunjuk ini, 1032 00:48:23,250 --> 00:48:25,170 meletakkan 3 di sana. 1033 00:48:25,170 --> 00:48:26,420 Adakah ini semua orang masuk akal? 1034 00:48:26,420 --> 00:48:26,920 Yeah. 1035 00:48:26,920 --> 00:48:28,086 Adakah anda mempunyai soalan? 1036 00:48:28,086 --> 00:48:30,711 PENONTON: Ia [didengar] mempunyai satu soalan, saya akan mengatakan juga. 1037 00:48:30,711 --> 00:48:35,496 Saya tidak fikir ia sebenarnya satu soalan but-- dalam bahasa Inggeris, array 1038 00:48:35,496 --> 00:48:37,448 sama dengan 1 akal. 1039 00:48:37,448 --> 00:48:39,888 Kami seperti, OK, perkara pertama. 1040 00:48:39,888 --> 00:48:44,280 Tetapi perkara-perkara yang 0 indeks [Didengar] array sama dengan 0 1041 00:48:44,280 --> 00:48:48,024 untuk menunjukkan tempat pertama. 1042 00:48:48,024 --> 00:48:48,690 ANDI PENG: Ya. 1043 00:48:48,690 --> 00:48:53,740 Jadi sebenarnya apa yang saya lakukan di sini adalah Saya tidak mengakses indeks pertama. 1044 00:48:53,740 --> 00:48:57,930 Apa yang saya telah doing-- jadi pertama sekali, beritahu saya apakah pelbagai bintang lakukan? 1045 00:48:57,930 --> 00:48:59,480 Apakah bintang sebelum penunjuk lakukan? 1046 00:48:59,480 --> 00:49:00,855 >> PENONTON: Ia menunjukkan penunjuk. 1047 00:49:00,855 --> 00:49:02,910 Yang anda mengisytiharkan penunjuk. 1048 00:49:02,910 --> 00:49:04,380 Ia de-- 1049 00:49:04,380 --> 00:49:07,520 >> ANDI PENG: Ia dereferences yang cara ia keluar dan sebenarnya mendapat nilai. 1050 00:49:07,520 --> 00:49:08,020 Betul? 1051 00:49:08,020 --> 00:49:13,030 Jadi dalam kes ini, anda mahu untuk mendapatkan nilai di sini dan menetapkan bahawa untuk 1. 1052 00:49:13,030 --> 00:49:13,800 Ya? 1053 00:49:13,800 --> 00:49:17,050 Jadi, saya tidak actually-- saya tidak benar-benar mengambil berat tentang indeks ini, 1054 00:49:17,050 --> 00:49:21,406 semua yang saya lakukan adalah hanya iterating turun dengan menggerakkan penunjuk saya turun array. 1055 00:49:21,406 --> 00:49:23,280 Dan kemudian akhirnya saya perlu berhenti, bukan? 1056 00:49:23,280 --> 00:49:26,750 Dan cara yang saya berhenti adalah apabila saya memukul, dalam hal 1057 00:49:26,750 --> 00:49:28,750 daripada rentetan, terminator null. 1058 00:49:28,750 --> 00:49:32,710 Saya tahu, oh, jika saya memukul back-- jika saya melihat garis miring 0, saya tahu saya dilakukan dengan ini 1059 00:49:32,710 --> 00:49:35,270 dan saya tahu bahawa saya boleh hanya berhenti iterating melalui. 1060 00:49:35,270 --> 00:49:36,200 Soalan yang benar-benar baik. 1061 00:49:36,200 --> 00:49:40,210 >> Dan kami benar-benar akan pergi lebih jauh mendalam dalam perkara ini minggu depan 1062 00:49:40,210 --> 00:49:43,990 kerana sekeping yang akan melibatkan banyak penggunaan petunjuk. 1063 00:49:43,990 --> 00:49:48,459 Tetapi hanya tahu bahawa sekarang, itu hanya more-- yang berbeza 1064 00:49:48,459 --> 00:49:51,250 itu hanya cara yang berbeza untuk komputer untuk menulis, pada dasarnya, 1065 00:49:51,250 --> 00:49:52,470 apa yang kita telah lakukan. 1066 00:49:52,470 --> 00:49:54,900 Seperti Daud berkata dalam syarahan, cara yang kita 1067 00:49:54,900 --> 00:50:01,720 mengakses array adalah hanya dengan melakukan array 0, kurungan 0, jika kita hanya 1068 00:50:01,720 --> 00:50:04,050 mahu mengakses nilai pertama. 1069 00:50:04,050 --> 00:50:10,280 >> Semua komputer yang dilakukan beralih itu ke dalam itu dan iterating sendiri. 1070 00:50:10,280 --> 00:50:13,580 Oleh itu, kita memanggilnya sintaksis gula yang hanya 1071 00:50:13,580 --> 00:50:18,420 cara yang mewah untuk mengatakan mesra pengguna cara untuk kita mengetahui bagaimana untuk program. 1072 00:50:18,420 --> 00:50:21,560 Tetapi komputer di bawah, apa yang ia lakukan, 1073 00:50:21,560 --> 00:50:23,997 ia sebenarnya hanya mempunyai penunjuk yang yang menyesuaikan diri. 1074 00:50:23,997 --> 00:50:26,330 Tetapi cara yang kita menulis, kerana lebih mudah untuk kita 1075 00:50:26,330 --> 00:50:30,240 untuk berfikir tentang perkara-perkara dari segi kotak dan bagaimana untuk bergerak ke bawah kotak, 1076 00:50:30,240 --> 00:50:32,190 adalah dengan kurungan. 1077 00:50:32,190 --> 00:50:36,394 Maaf, yang benar-benar, benar-benar buruk but-- yeah. 1078 00:50:36,394 --> 00:50:38,310 PENONTON: Jadi bagaimana akan anda membandingkan dua tali 1079 00:50:38,310 --> 00:50:40,560 untuk melihat jika mereka sama dengan satu sama lain? 1080 00:50:40,560 --> 00:50:42,690 >> ANDI PENG: Jadi Daud menulis program ini dalam syarahan 1081 00:50:42,690 --> 00:50:45,274 jadi saya hanya akan pergi lebih cepat dan ringkas. 1082 00:50:45,274 --> 00:50:47,440 Cara anda akan berbuat demikian adalah bahawa anda akan benar-benar 1083 00:50:47,440 --> 00:50:51,300 perlu pergi dan bandingkan addresses-- atau nilai-nilai 1084 00:50:51,300 --> 00:50:52,810 diperolehi daripada petunjuk. 1085 00:50:52,810 --> 00:50:55,140 Jadi ingat, bagaimana anda memperoleh nilai di sini? 1086 00:50:55,140 --> 00:50:56,825 Saya tidak peduli mengenai alamat itu di sini. 1087 00:50:56,825 --> 00:50:58,950 Bagaimana saya benar-benar mendapatkan nilai apa sahaja di sini? 1088 00:50:58,950 --> 00:50:59,470 >> PENONTON: [didengar]. 1089 00:50:59,470 --> 00:51:00,261 >> ANDI PENG: Tepat sekali. 1090 00:51:00,261 --> 00:51:05,090 Jadi anda membandingkan bintang di sini berbanding bintang di sini. 1091 00:51:05,090 --> 00:51:06,150 Adakah sama. 1092 00:51:06,150 --> 00:51:07,690 Dan kemudian anda turun. 1093 00:51:07,690 --> 00:51:09,530 Adakah bintang di sini dan bintang di sini sama? 1094 00:51:09,530 --> 00:51:10,030 OKAY. 1095 00:51:10,030 --> 00:51:10,283 Mereka sama. 1096 00:51:10,283 --> 00:51:12,866 Dan anda terus turun ke bawah sehingga anda telah melanda akhir kedua-duanya. 1097 00:51:12,866 --> 00:51:16,190 Dan jika semua daripada mereka adalah sama, maka anda tahu tali anda adalah sama. 1098 00:51:16,190 --> 00:51:18,130 Dan C sebenarnya mempunyai fungsi bertulis dipanggil 1099 00:51:18,130 --> 00:51:20,713 String Pert yang sebenarnya hanya adakah itu untuk anda supaya anda tidak ' 1100 00:51:20,713 --> 00:51:22,140 perlu menulis sendiri. 1101 00:51:22,140 --> 00:51:23,274 Ya? 1102 00:51:23,274 --> 00:51:26,970 >> PENONTON: Saya rasa dalam syarahan adalah apabila kita banding. 1103 00:51:26,970 --> 00:51:29,520 Kita tidak memerlukan kaunter seperti pi, bukan? 1104 00:51:29,520 --> 00:51:34,310 >> ANDI PENG: Anda tidak kerana kita tidak benar-benar mengambil berat 1105 00:51:34,310 --> 00:51:36,250 bagaimana banyak kotak kami telah terlelar melalui. 1106 00:51:36,250 --> 00:51:39,580 Semua kita mengambil berat adalah bahawa kita akan terus pergi sehingga saya tahu untuk berhenti. 1107 00:51:39,580 --> 00:51:41,990 Dan anda tahu untuk berhenti apabila ada beberapa jenis petunjuk 1108 00:51:41,990 --> 00:51:45,310 bahawa anda berada di terminator null. 1109 00:51:45,310 --> 00:51:45,930 Yeah. 1110 00:51:45,930 --> 00:51:47,154 So-- 1111 00:51:47,154 --> 00:51:48,070 PENONTON: [didengar]. 1112 00:51:48,070 --> 00:51:48,736 ANDI PENG: Ya. 1113 00:51:48,736 --> 00:51:51,950 Jadi dalam kes membandingkan tali, saya tidak benar-benar 1114 00:51:51,950 --> 00:51:54,207 peduli berapa banyak surat ialah- saya perlu untuk membandingkan 1115 00:51:54,207 --> 00:51:56,540 jika mereka benar atau palsu jika mereka sama dengan satu sama lain. 1116 00:51:56,540 --> 00:51:58,914 Saya tidak peduli berapa banyak surat berada di dalam setiap daripada mereka, bukan? 1117 00:51:58,914 --> 00:52:01,130 Saya hanya peduli bahawa ini padan dengan ini dan yang 1118 00:52:01,130 --> 00:52:05,311 selepas perlawanan dan satu selepas perlawanan sepanjang jalan sehingga sehingga akhir. 1119 00:52:05,311 --> 00:52:05,810 Betul? 1120 00:52:05,810 --> 00:52:07,000 Adakah ini masuk akal? 1121 00:52:07,000 --> 00:52:10,166 >> Jadi, saya tidak benar-benar peduli berapa banyak surat, Saya hanya peduli bahawa semua huruf 1122 00:52:10,166 --> 00:52:11,050 perlawanan. 1123 00:52:11,050 --> 00:52:12,910 Yeah. 1124 00:52:12,910 --> 00:52:13,920 OKAY. 1125 00:52:13,920 --> 00:52:16,840 Bolehkah saya beralih dari ini? 1126 00:52:16,840 --> 00:52:18,489 Yang besar. 1127 00:52:18,489 --> 00:52:21,280 Kami berjalan sedikit pendek pada masa jadi saya akan hanya membolehkan anda 1128 00:52:21,280 --> 00:52:23,670 semua untuk melihat secara ringkas di ini. 1129 00:52:23,670 --> 00:52:26,430 Berjalan ke dalam ID anda jika anda semua ingin tahu. 1130 00:52:26,430 --> 00:52:30,030 Dan anda semua boleh melihat apa yang ini akan mencetak. 1131 00:52:30,030 --> 00:52:30,640 OKAY. 1132 00:52:30,640 --> 00:52:34,990 >> Jadi sesuatu yang kita juga akan menyentuh pada bit adalah idea penunjuk aritmetik. 1133 00:52:34,990 --> 00:52:38,180 Yang mana, semua itu adalah merupakan bukannya menyesuaikan 1134 00:52:38,180 --> 00:52:42,610 nilai-nilai apa yang disimpan di alamat penunjuk anda, 1135 00:52:42,610 --> 00:52:45,030 ia hanya benar-benar berubah alamat sendiri. 1136 00:52:45,030 --> 00:52:49,420 Jadi, jika anda sebagai manusia itu mahu untuk melaraskan penunjuk anda secara manual, 1137 00:52:49,420 --> 00:52:52,700 cara yang akan anda lakukan yang hanya melakukan n kali saiz penunjuk. 1138 00:52:52,700 --> 00:52:53,240 Betul? 1139 00:52:53,240 --> 00:52:54,810 >> Jadi int. 1140 00:52:54,810 --> 00:52:58,580 An int-- berapa banyak bait dalam ingatan adalah int? 1141 00:52:58,580 --> 00:52:59,640 Ia empat, bukan? 1142 00:52:59,640 --> 00:53:03,520 Jadi, jika saya tahu saya mempunyai pelbagai semua ints dan saya mahu ia menunjukkan yang 1143 00:53:03,520 --> 00:53:08,470 selepas itu, saya tahu saya hanya perlu gerakkan penuding saya turun empat bait, bukan? 1144 00:53:08,470 --> 00:53:12,440 Dan sebagainya n kali saiz daripada bait penunjuk 1145 00:53:12,440 --> 00:53:15,890 Walau bagaimanapun banyak bait anda hanya akan gerakkan penuding anda ke bawah dengan. 1146 00:53:15,890 --> 00:53:20,350 >> Jadi, sebagai contoh, jika kita mempunyai pelbagai ints, yang pertama, mari kita hanya mengatakan, 1147 00:53:20,350 --> 00:53:22,280 disimpan sebagai 0x00. 1148 00:53:22,280 --> 00:53:26,150 Anda tahu yang seterusnya akan menjadi di 0x04 kerana itulah empat bait kemudian. 1149 00:53:26,150 --> 00:53:31,030 Dan yang selepas itu akan menjadi 0x08 dan sebagainya dan sebagainya. 1150 00:53:31,030 --> 00:53:33,830 Dan sebagainya, lelaki, lihat. 1151 00:53:33,830 --> 00:53:36,640 >> Apa yang anda lakukan di sini adalah bahawa anda mempunyai penunjuk y 1152 00:53:36,640 --> 00:53:43,700 dan anda sambil menambah bahawa untuk anda memori supaya anda boleh bergerak ke bawah 1153 00:53:43,700 --> 00:53:45,559 blok memori diperuntukkan. 1154 00:53:45,559 --> 00:53:46,850 Jenis konsep tahap yang lebih tinggi. 1155 00:53:46,850 --> 00:53:48,820 Kalian tidak perlu tahu untuk minggu ini, 1156 00:53:48,820 --> 00:53:51,290 tetapi itu sahaja yang ia lakukan di bawah sana. 1157 00:53:51,290 --> 00:53:55,190 1158 00:53:55,190 --> 00:53:55,900 OKAY. 1159 00:53:55,900 --> 00:53:56,710 >> Satu lagi masa jenaka. 1160 00:53:56,710 --> 00:54:01,360 1161 00:54:01,360 --> 00:54:02,780 Dua tali berjalan ke bar. 1162 00:54:02,780 --> 00:54:05,713 Yang berkata, saya ingin rum yang dan nilai-nilai sampah Coke. 1163 00:54:05,713 --> 00:54:08,796 Yang lain berkata, anda akan mempunyai untuk memberi alasan kawan saya, dia tidak null ditamatkan. 1164 00:54:08,796 --> 00:54:10,390 Kalian mendapatkannya. 1165 00:54:10,390 --> 00:54:10,890 Maaf. 1166 00:54:10,890 --> 00:54:13,490 Ini adalah bagaimana saya menjaga diri saya pergi apabila saya prep seksyen 1167 00:54:13,490 --> 00:54:15,650 Aku memasukkan slaid beberapa jenaka. 1168 00:54:15,650 --> 00:54:16,150 Anyways. 1169 00:54:16,150 --> 00:54:21,460 1170 00:54:21,460 --> 00:54:21,960 OKAY. 1171 00:54:21,960 --> 00:54:24,290 Sebelum saya bergerak pada-- jadi, pada dasarnya, kami telah 1172 00:54:24,290 --> 00:54:30,600 meliputi semua konsep isu-isu yang berkaitan dengan petunjuk. 1173 00:54:30,600 --> 00:54:34,090 Dan kemudian kita akan talk-- bergerak lebih, bercakap tentang mengapa yang penting 1174 00:54:34,090 --> 00:54:37,810 dan bagaimana yang muat ke dalam idea pengurusan ingatan. 1175 00:54:37,810 --> 00:54:39,810 Tetapi sebelum saya bergerak ke atas, adakah sesiapa yang mempunyai soalan 1176 00:54:39,810 --> 00:54:43,880 mengenai penggunaan penunjuk, apa yang berlaku apabila anda membuat petunjuk, 1177 00:54:43,880 --> 00:54:47,540 bagaimana yang merujuk setiap lain, bagaimana mereka dereferencing? 1178 00:54:47,540 --> 00:54:51,760 Sebarang soalan mengenai bahawa sebelum saya bergerak? 1179 00:54:51,760 --> 00:54:53,060 OKAY. 1180 00:54:53,060 --> 00:54:54,770 Yang besar. 1181 00:54:54,770 --> 00:54:58,170 >> Jadi ini membawa kita ke dalam ini konsep tahap yang lebih besar yang lebih tinggi 1182 00:54:58,170 --> 00:55:00,310 pengurusan ingatan secara keseluruhannya. 1183 00:55:00,310 --> 00:55:02,720 Jadi, pada dasarnya, dalam komputer anda, ada 1184 00:55:02,720 --> 00:55:06,300 dua jenis asas ingatan atau kawasan di mana memori disimpan. 1185 00:55:06,300 --> 00:55:10,210 Anda ada di sini apa yang dipanggil timbunan itu dan anda perlu turun di sini 1186 00:55:10,210 --> 00:55:11,550 apa yang dipanggil timbunan. 1187 00:55:11,550 --> 00:55:13,966 Dan kita akan bercakap tentang timbunan pertama kerana ia 1188 00:55:13,966 --> 00:55:16,910 yang lebih finagley anda perlu jenis konsep 1189 00:55:16,910 --> 00:55:18,570 memahami apa yang sedang berlaku. 1190 00:55:18,570 --> 00:55:23,930 >> Jadi semua timbunan is-- memikirkan sebagai timbunan fizikal memori 1191 00:55:23,930 --> 00:55:28,880 di mana anda mempunyai satu blok ingatan yang yang diperuntukkan untuk program anda 1192 00:55:28,880 --> 00:55:30,180 semasa ia berjalan. 1193 00:55:30,180 --> 00:55:34,480 Dan di sinilah, pada dasarnya, semua pembolehubah tempatan anda disimpan. 1194 00:55:34,480 --> 00:55:38,300 Jadi ini adalah hanya yang dizum dalam gambar timbunan itu. 1195 00:55:38,300 --> 00:55:41,060 Timbunan di bawah sana, Saya hanya zoom dalam sedikit lebih. 1196 00:55:41,060 --> 00:55:46,170 >> Jadi, pada dasarnya, dalam timbunan anda mempunyai sekumpulan fungsi dalam program anda. 1197 00:55:46,170 --> 00:55:48,250 Jadi mari kita kembali kepada contoh dua minggu 1198 00:55:48,250 --> 00:55:51,450 di mana kita mempunyai fungsi utama kami serta fungsi kiub 1199 00:55:51,450 --> 00:55:56,410 di mana kita cuba untuk mewujudkan fungsi yang cubed-- yang mengambil parameter seperti input, 1200 00:55:56,410 --> 00:55:59,110 cubed mereka dan kembali mereka kembali ke utama. 1201 00:55:59,110 --> 00:56:02,459 Jadi cara yang yang disimpan dalam ingatan adalah bahawa anda mempunyai fungsi utama anda 1202 00:56:02,459 --> 00:56:03,250 di sini di bahagian bawah. 1203 00:56:03,250 --> 00:56:06,630 Dan kemudian dengan setiap fungsi tambahan anda memanggil dan menambah di atas itu, 1204 00:56:06,630 --> 00:56:07,960 memori hanya susunan di atas. 1205 00:56:07,960 --> 00:56:10,190 Anggaplah ia sebagai timbunan fizikal. 1206 00:56:10,190 --> 00:56:13,570 >> Dan supaya anda mempunyai semua yang anda utama pembolehubah fungsi utama anda, 1207 00:56:13,570 --> 00:56:15,260 segala-galanya yang berlaku di sini, disimpan. 1208 00:56:15,260 --> 00:56:17,440 Dan kemudian apabila anda dipanggil kiub, ia pergi dan ia 1209 00:56:17,440 --> 00:56:20,810 mencipta salinan semua orang-orang parameter dan ia menyimpan mereka 1210 00:56:20,810 --> 00:56:23,010 di atas di tempat yang berbeza. 1211 00:56:23,010 --> 00:56:24,280 Dan jadi mengapa kita mengambil berat? 1212 00:56:24,280 --> 00:56:29,220 Sebab kita mengambil berat adalah bahawa kita tidak boleh hanya menggunakan parameter sini-- pembolehubah 1213 00:56:29,220 --> 00:56:33,080 sini-- dan kami menukar mereka, kami menjangka mereka juga akan berubah di sini, bukan? 1214 00:56:33,080 --> 00:56:35,910 >> Idea ini adalah bahawa mereka diselamatkan di tempat yang berbeza dalam ingatan 1215 00:56:35,910 --> 00:56:40,540 supaya, apabila anda mengakses berbeza fungsi, apa yang anda fikir berlaku 1216 00:56:40,540 --> 00:56:45,520 sebenarnya tidak berlaku kerana bit memori tidak saling berkaitan. 1217 00:56:45,520 --> 00:56:50,530 Dan supaya soalan itu benar-benar penting bagi kita untuk memahami jenis 1218 00:56:50,530 --> 00:56:54,100 adalah, bagaimana jika, apabila kami berjalan program, saiz fungsi 1219 00:56:54,100 --> 00:56:57,159 stack frame-- supaya dari segi fizikal, bagaimana memori banyak yang kita perlu memberikan? 1220 00:56:57,159 --> 00:56:59,950 Mungkin ia adalah fungsi gergasi jadi kami perlu memberikan memori yang banyak. 1221 00:56:59,950 --> 00:57:02,230 Tetapi jika ia adalah lebih kecil kita akan perlu sedikit kecil. 1222 00:57:02,230 --> 00:57:05,980 >> Jadi idea ini adalah bahawa apabila kita menjalankan program saiz fungsi yang 1223 00:57:05,980 --> 00:57:09,100 adalah bergantung kepada berapa banyak pembolehubah dan jenis pembolehubah 1224 00:57:09,100 --> 00:57:10,940 yang kita mahu memberikannya. 1225 00:57:10,940 --> 00:57:13,910 Tetapi bagaimana jika jumlah variables-- dan saiz mereka, 1226 00:57:13,910 --> 00:57:16,140 yang yang ditentukan tidak oleh anda pengekod tetapi 1227 00:57:16,140 --> 00:57:20,580 ditentukan oleh yang sebenar pengguna program anda. 1228 00:57:20,580 --> 00:57:24,240 Jadi, jika saya mahu mencipta satu majlis yang mengambil tali dari pengguna, 1229 00:57:24,240 --> 00:57:27,630 tetapi saya tidak benar-benar tahu berapa besar mereka rentetan, ia sukar untuk saya 1230 00:57:27,630 --> 00:57:30,220 untuk memperuntukkan tertentu jumlah memori yang diperlukan. 1231 00:57:30,220 --> 00:57:30,920 Betul? 1232 00:57:30,920 --> 00:57:35,234 >> Kerana jika ini function-- jika pengguna ini input rentetan gergasi, 1233 00:57:35,234 --> 00:57:37,650 ia akan membuat kesilapan daripada apa yang dipanggil pada dasarnya 1234 00:57:37,650 --> 00:57:42,190 stack limpahan di mana anda pergi di luar batas-batas memori yang anda ada. 1235 00:57:42,190 --> 00:57:44,250 Dan demikian maka apa yang kita lakukan? 1236 00:57:44,250 --> 00:57:47,290 Jika kita tidak boleh hanya membuat gergasi ini timbunan yang boleh menyelamatkan segala-galanya, 1237 00:57:47,290 --> 00:57:50,260 apa yang kita lakukan untuk menyelesaikan masalah itu? 1238 00:57:50,260 --> 00:57:54,364 >> Oleh itu, kita akan bergerak ke atas dan bercakap tentang jenis kedua memori 1239 00:57:54,364 --> 00:57:56,780 dan kemudian kita boleh bercakap tentang bagaimana kita boleh menggunakan bersama-sama kedua-dua 1240 00:57:56,780 --> 00:57:58,550 untuk menyelesaikan soalan itu. 1241 00:57:58,550 --> 00:58:01,024 Jadi sekarang kita akan bergerak ke atas ke bahagian yang berbeza memori 1242 00:58:01,024 --> 00:58:01,690 dalam komputer kita. 1243 00:58:01,690 --> 00:58:03,215 Yang dinamakan timbunan itu. 1244 00:58:03,215 --> 00:58:07,150 Jadi semua timbunan itu adalah kolam memori yang ada yang 1245 00:58:07,150 --> 00:58:08,690 boleh diperuntukkan secara dinamik. 1246 00:58:08,690 --> 00:58:12,420 Jadi yang boleh mengubah manakala program anda sedang berjalan. 1247 00:58:12,420 --> 00:58:15,160 >> Dan supaya satu rantau memori yang tidak digunakan yang boleh 1248 00:58:15,160 --> 00:58:18,200 menjadi allowed-- yang boleh diperuntukkan dengan fungsi 1249 00:58:18,200 --> 00:58:20,490 memanggil malloc, atau peruntukan ingatan. 1250 00:58:20,490 --> 00:58:23,110 Jadi, pada dasarnya, apabila anda menjalankan program, 1251 00:58:23,110 --> 00:58:29,560 anda secara dinamik boleh mencipta memori dari timbunan dan menggunakan bahawa semua di sini. 1252 00:58:29,560 --> 00:58:34,280 Dan demikian maka, semua fungsi anda di sini boleh mengakses timbunan itu. 1253 00:58:34,280 --> 00:58:37,960 >> Dan sebagainya malloc, idea ini bahawa Daud sejenis dengan cepat, secara ringkas dipoles begitu saja 1254 00:58:37,960 --> 00:58:41,570 dalam kuliah, hanya cara untuk anda untuk mengawal ingatan anda. 1255 00:58:41,570 --> 00:58:45,470 Seperti, apabila anda hanya mewujudkan stack fungsi, apabila anda hanya 1256 00:58:45,470 --> 00:58:48,290 mempunyai fungsi utama anda dengan fungsi rawak anda, 1257 00:58:48,290 --> 00:58:52,270 anda memikirkan mereka sebagai kanak-kanak yang hanya melarikan diri apabila anda telah dilakukan dengan mereka. 1258 00:58:52,270 --> 00:58:53,690 Mereka adalah kanak-kanak benar-benar buruk. 1259 00:58:53,690 --> 00:58:55,515 Anda membuat mereka, anda mengajar mereka sesuatu, 1260 00:58:55,515 --> 00:58:57,640 dan kemudian apabila anda mahu mengaksesnya semula mereka 1261 00:58:57,640 --> 00:58:59,850 tidak ada kerana anda memori hanya melarikan diri. 1262 00:58:59,850 --> 00:59:04,140 >> Tetapi malloc, atau timbunan itu, adalah cara yang yang mempunyai anak-anak yang lebih baik, di mana 1263 00:59:04,140 --> 00:59:07,090 anda boleh mencipta sejenis mereka, memberikan mereka nilai-nilai, 1264 00:59:07,090 --> 00:59:11,080 menggunakan mereka, kelak yang berbunyi benar-benar bad-- menggunakannya tetapi anda mahu, 1265 00:59:11,080 --> 00:59:14,002 tetapi kemudian dapat mengawal mereka dan mengosongkan ingatan 1266 00:59:14,002 --> 00:59:14,960 bila-bila masa anda memerlukannya. 1267 00:59:14,960 --> 00:59:18,085 Sebab itu, apabila anda selesai dengan fungsi, kanak-kanak kembali kepada anda 1268 00:59:18,085 --> 00:59:20,290 dan anda masih mempunyai data yang di sana. 1269 00:59:20,290 --> 00:59:25,690 >> Jadi cara kita malloc, atau membuat, memori oleh bintang fungsi tidak sah 1270 00:59:25,690 --> 00:59:26,790 saiz malloc dalam bait. 1271 00:59:26,790 --> 00:59:29,730 Jadi itu hanya prototaip mengapa kita berbuat demikian. 1272 00:59:29,730 --> 00:59:35,800 Jadi contoh ialah kita mewujudkan penunjuk daripada menaip int-- setaraf int bintang pointer-- 1273 00:59:35,800 --> 00:59:38,120 saiz malloc int. 1274 00:59:38,120 --> 00:59:41,734 Jadi sebab mengapa kita melakukan saiz daripada dan bukan hanya number-- yang 1275 00:59:41,734 --> 00:59:43,650 kerana kita semua tahu bahawa int adalah empat bait, 1276 00:59:43,650 --> 00:59:48,310 right-- tetapi int adalah hanya empat bait pada sistem operasi tertentu. 1277 00:59:48,310 --> 00:59:50,410 >> Idea untuk kita sebagai pengaturcara ialah kita 1278 00:59:50,410 --> 00:59:53,160 ingin membuat kod yang boleh berjalan pada semua komputer, bukan hanya 1279 00:59:53,160 --> 00:59:54,860 komputer mudah kami. 1280 00:59:54,860 --> 00:59:58,350 Dan itulah sebabnya mengapa kita ingin menggunakan Saiz dan bukan hanya nombor empat. 1281 00:59:58,350 --> 00:59:59,970 Adakah ini masuk akal untuk semua orang? 1282 00:59:59,970 --> 01:00:03,930 Jadi saiz daripada- sekalipun ia adalah C fungsi atau pengendali itu 1283 01:00:03,930 --> 01:00:09,350 memberitahu anda berapa banyak bait memori tidak jenis tertentu berubah mengambil. 1284 01:00:09,350 --> 01:00:11,150 Jadi dalam kes ini, saiz int adalah empat. 1285 01:00:11,150 --> 01:00:12,090 Empat bait. 1286 01:00:12,090 --> 01:00:15,490 Dan malloc akan membebaskan empat bait dalam timbunan anda, 1287 01:00:15,490 --> 01:00:18,790 maka anda boleh gunakan dalam utama anda fungsi dapat menyimpan ingatan. 1288 01:00:18,790 --> 01:00:22,460 1289 01:00:22,460 --> 01:00:24,860 Adakah semua orang jelas bahawa setakat ini? 1290 01:00:24,860 --> 01:00:25,918 Ya? 1291 01:00:25,918 --> 01:00:28,122 >> PENONTON: Saya jelas tetapi hanya untuk menjadi lebih clear-- 1292 01:00:28,122 --> 01:00:28,705 ANDI PENG: OK. 1293 01:00:28,705 --> 01:00:29,246 Betul-betul halus. 1294 01:00:29,246 --> 01:00:32,176 PENONTON: --size daripada adalah [didengar] boleh sebenarnya [didengar] 1295 01:00:32,176 --> 01:00:34,384 dan ia benar-benar akan melakukan perkara yang kita mahu ia. 1296 01:00:34,384 --> 01:00:35,380 Ia bukan sebahagian kod pseudo. 1297 01:00:35,380 --> 01:00:35,878 >> ANDI PENG: No. 1298 01:00:35,878 --> 01:00:36,874 >> PENONTON: Ia seperti thing-- sebenar 1299 01:00:36,874 --> 01:00:37,372 >> ANDI PENG: Ini adalah kod nyata. 1300 01:00:37,372 --> 01:00:38,455 >> PENONTON: --Kami boleh menggunakannya. 1301 01:00:38,455 --> 01:00:39,862 Ia yang sebenar. 1302 01:00:39,862 --> 01:00:40,418 Sejuk. 1303 01:00:40,418 --> 01:00:41,751 ANDI PENG: Saiz datang dengan C. 1304 01:00:41,751 --> 01:00:43,475 PENONTON: Yang membuat hidup saya lebih bahagia. 1305 01:00:43,475 --> 01:00:45,550 ANDI PENG: Ya. 1306 01:00:45,550 --> 01:00:48,610 Jadi jika anda seorang programmer malas seperti saya jenis am kadang-kadang, 1307 01:00:48,610 --> 01:00:50,402 Saya tidak suka menghafal apa saiz int 1308 01:00:50,402 --> 01:00:52,734 ini, saya tidak suka menghafal dengan saiz apungan adalah. 1309 01:00:52,734 --> 01:00:55,160 Saiz hanya memberitahu anda apa yang ia adalah dan itu lebih mudah. 1310 01:00:55,160 --> 01:00:59,880 1311 01:00:59,880 --> 01:01:00,440 >> Baiklah. 1312 01:01:00,440 --> 01:01:02,160 Jadi satu perkara yang penting bahawa kalian semua mahu 1313 01:01:02,160 --> 01:01:04,620 yang perlu diingat apabila anda berada menggunakan malloc adalah bahawa anda sentiasa 1314 01:01:04,620 --> 01:01:06,400 perlu menyemak untuk melihat jika ia adalah null. 1315 01:01:06,400 --> 01:01:08,630 Jadi seperti yang saya katakan, kembali kepada bahawa gambar timbunan itu. 1316 01:01:08,630 --> 01:01:11,390 Timbunan itu hanya gergasi ini timbunan memori yang anda telah mendapat. 1317 01:01:11,390 --> 01:01:16,740 Dan anda mahu dapat mengambil ketulan memori daripadanya dan menggunakannya, bukan? 1318 01:01:16,740 --> 01:01:19,750 >> Tetapi bagaimana jika anda tidak mempunyai lebih banyak memori dalam timbunan itu? 1319 01:01:19,750 --> 01:01:23,650 Bagaimana jika saya sudah menggunakan semua daripadanya dan saya cuba untuk malloc lebih? 1320 01:01:23,650 --> 01:01:24,864 Yang tidak wujud. 1321 01:01:24,864 --> 01:01:26,780 Baiklah, itulah mengapa anda akan mendapat ralat. 1322 01:01:26,780 --> 01:01:29,220 Anda akan seg bersalah. Anda akan mempunyai kesalahan segmentasi di mana anda 1323 01:01:29,220 --> 01:01:30,940 cuba untuk mengakses perkara-perkara yang tidak ada. 1324 01:01:30,940 --> 01:01:33,180 Dan begitu cara kita melakukan itu dan cara kita 1325 01:01:33,180 --> 01:01:36,120 mencegah itu adalah bahawa kita menyemak untuk melihat jika null penunjuk ini. 1326 01:01:36,120 --> 01:01:41,650 >> Jadi jika saya malloc sesuatu dan saya mempunyai memori tiada lagi, 1327 01:01:41,650 --> 01:01:45,501 yang akan mencetak kesilapan kerana penunjuk dikembalikan kepada anda hanya null. 1328 01:01:45,501 --> 01:01:47,750 Dan begitu cara kita melakukan this-- ini hanya reka bentuk yang besar, 1329 01:01:47,750 --> 01:01:52,140 hanya menghafal this-- adalah bahawa mana-mana kali anda cuba untuk malloc apa-apa, 1330 01:01:52,140 --> 01:01:55,300 anda akan perlu memeriksa untuk melihat jika ia adalah null. 1331 01:01:55,300 --> 01:01:58,257 Kerana setiap kali anda cuba untuk memperoleh ingatan dari timbunan itu, 1332 01:01:58,257 --> 01:02:00,340 anda sentiasa perlu membuat memastikan bahawa anda mempunyai memori. 1333 01:02:00,340 --> 01:02:01,350 Itu sahaja yang ia adalah. 1334 01:02:01,350 --> 01:02:04,980 >> Jadi cukup banyak ketiga-tiga baris kod, menghafal. 1335 01:02:04,980 --> 01:02:06,830 Setiap kali anda malloc, mencebur mereka masuk. 1336 01:02:06,830 --> 01:02:08,190 Anda akan memerlukannya. 1337 01:02:08,190 --> 01:02:10,540 Oleh kerana saya jamin anda, kita akan untuk menguji kamu pada kes dan komputer anda 1338 01:02:10,540 --> 01:02:13,498 akan meletup kerana anda akan cuba untuk capaian ingatan itulah 1339 01:02:13,498 --> 01:02:16,680 tidak ada dan mereka akan berdepan dengan kemalangan dan ia tidak akan menjadi baik. 1340 01:02:16,680 --> 01:02:19,290 Jadi hanya menggerudi itu ke dalam otak anda. 1341 01:02:19,290 --> 01:02:21,370 Malloc, null. 1342 01:02:21,370 --> 01:02:22,360 Yang baik. 1343 01:02:22,360 --> 01:02:22,860 Baiklah. 1344 01:02:22,860 --> 01:02:26,280 1345 01:02:26,280 --> 01:02:28,340 >> Maka ini beranak yang soalan apa yang berlaku 1346 01:02:28,340 --> 01:02:30,550 selepas kami selesai menggunakan memori itu. 1347 01:02:30,550 --> 01:02:32,390 Kerana seluruh idea mempunyai malloc adalah 1348 01:02:32,390 --> 01:02:36,460 yang kita ada timbunan ini yang boleh kita ambil memori dari dan kemudian kita boleh menggunakannya. 1349 01:02:36,460 --> 01:02:37,220 Betul? 1350 01:02:37,220 --> 01:02:40,550 Dan kemudian apa yang kita perlu ingat adalah bahawa, selepas kami selesai dengan itu, 1351 01:02:40,550 --> 01:02:41,900 kita boleh membebaskan. 1352 01:02:41,900 --> 01:02:42,400 Lepaskan. 1353 01:02:42,400 --> 01:02:43,979 Kita boleh biarkan ia pergi. 1354 01:02:43,979 --> 01:02:47,020 Atau lain anda juga akan bocor memori dan banyak lagi perkara-perkara buruk akan berlaku. 1355 01:02:47,020 --> 01:02:49,010 >> Pada dasarnya, setiap kali anda memori menyentuh, 1356 01:02:49,010 --> 01:02:51,800 perkara-perkara buruk akan berlaku jika anda tidak melakukan perkara yang betul. 1357 01:02:51,800 --> 01:02:55,150 Jadi, anda perlu menyemak untuk melihat, pertama, jika anda mempunyai memori yang ada. 1358 01:02:55,150 --> 01:02:58,700 Dan kemudian selepas anda selesai, anda mahu membebaskan ia dan membolehkan sistem operasi anda 1359 01:02:58,700 --> 01:03:00,690 untuk mengambil kembali. 1360 01:03:00,690 --> 01:03:04,870 Jadi cara kita melakukan yang demikian fungsi, tidak sah percuma, dan penunjuk 1361 01:03:04,870 --> 01:03:06,370 itu timbunan ingatan. 1362 01:03:06,370 --> 01:03:08,680 >> Jadi contoh ini adalah penunjuk percuma. 1363 01:03:08,680 --> 01:03:11,580 Ia agak mudah, mudah, tidak mahu melupakannya. 1364 01:03:11,580 --> 01:03:14,687 Jadi periksa untuk melihat jika ia adalah null, percuma. 1365 01:03:14,687 --> 01:03:15,270 Semua orang yang baik? 1366 01:03:15,270 --> 01:03:22,660 1367 01:03:22,660 --> 01:03:27,325 Jadi sekali lagi, kod yang anda semua sejenis dengan cepat boleh mengambil satu renungan. 1368 01:03:27,325 --> 01:03:34,964 1369 01:03:34,964 --> 01:03:37,880 Saya tahu ia adalah banyak sintaks baru dan ia adalah hak semua jika anda seperti, ah, 1370 01:03:37,880 --> 01:03:38,963 apakah itu bermakna lagi? 1371 01:03:38,963 --> 01:03:40,250 Tidak risau. 1372 01:03:40,250 --> 01:03:46,785 Semua ini bertujuan untuk memaparkan tindakan, bagaimana semua perkara-perkara ini 1373 01:03:46,785 --> 01:03:47,660 boleh digunakan bersama-sama. 1374 01:03:47,660 --> 01:03:52,190 1375 01:03:52,190 --> 01:03:54,190 Jadi yang meletakkan bersama-sama seperti sekumpulan masa lalu 1376 01:03:54,190 --> 01:03:56,532 slaid kita hanya pergi melalui ke dalam satu program. 1377 01:03:56,532 --> 01:03:58,240 PENONTON: Dengan cara yang bahawa kita boleh actually-- 1378 01:03:58,240 --> 01:03:59,570 ANDI PENG: Dalam cara yang kita sebenarnya boleh digunakan. 1379 01:03:59,570 --> 01:04:02,379 Anda boleh mencebur itu ke dalam ID anda, anda boleh menjalankan dan ia akan bekerja. 1380 01:04:02,379 --> 01:04:02,920 PENONTON: OK. 1381 01:04:02,920 --> 01:04:04,140 Jadi itulah sebenar? 1382 01:04:04,140 --> 01:04:05,580 >> ANDI PENG: Itu nyata. 1383 01:04:05,580 --> 01:04:06,430 Yeah. 1384 01:04:06,430 --> 01:04:08,690 Saya cuba untuk membuat ia jadi fon adalah berbeza supaya 1385 01:04:08,690 --> 01:04:11,770 bahawa setiap kali saya menaip sebenar kod fon adalah kod fon 1386 01:04:11,770 --> 01:04:15,471 dan bahawa kod nota saya adalah berbeza, tetapi Saya tidak tahu sama ada yang benar-benar berfungsi. 1387 01:04:15,471 --> 01:04:16,012 PENONTON: No. 1388 01:04:16,012 --> 01:04:17,190 Saya fikir itu-- 1389 01:04:17,190 --> 01:04:18,213 >> ANDI PENG: OK. 1390 01:04:18,213 --> 01:04:20,578 >> PENONTON: --sometimes [Didengar] dan saya 1391 01:04:20,578 --> 01:04:23,416 seperti, yang akan menjadi benar-benar comel jika ia adalah sebenarnya satu perkara yang boleh digunakan 1392 01:04:23,416 --> 01:04:24,812 tetapi kemudian ia bukan satu perkara yang boleh digunakan. 1393 01:04:24,812 --> 01:04:26,270 Saya suka bahawa ini adalah satu perkara yang boleh digunakan. 1394 01:04:26,270 --> 01:04:27,010 >> ANDI PENG: OK. 1395 01:04:27,010 --> 01:04:27,510 Yeah. 1396 01:04:27,510 --> 01:04:28,430 Saya akan lulus bahawa bersama-sama. 1397 01:04:28,430 --> 01:04:33,266 Menjadi seperti Daud, anak-anak benar-benar sedih apabila anda menulis kod palsu. 1398 01:04:33,266 --> 01:04:34,240 Baiklah. 1399 01:04:34,240 --> 01:04:34,740 Ya? 1400 01:04:34,740 --> 01:04:37,686 >> PENONTON: Jadi ptr sini sebenarnya bukanlah penunjuk, 1401 01:04:37,686 --> 01:04:41,130 ia adalah satu blok ingatan? 1402 01:04:41,130 --> 01:04:45,130 >> ANDI PENG: Jadi yang anda bercakap tentang baris pertama atau yang turun di sini? 1403 01:04:45,130 --> 01:04:48,170 Adakah anda bercakap kira-kira satu ini di sini? 1404 01:04:48,170 --> 01:04:50,910 >> PENONTON: ptr tersebut perkara yang berbeza dalam- 1405 01:04:50,910 --> 01:04:53,230 >> ANDI PENG: Nah, jadi di sini apa yang saya doing-- sebenarnya, 1406 01:04:53,230 --> 01:04:54,660 mari kita pergi melalui sini. 1407 01:04:54,660 --> 01:04:57,120 Ini jenis hubungan dalam baik semua konsep. 1408 01:04:57,120 --> 01:05:01,840 Jadi di sini kita mempunyai ptr int bintang. 1409 01:05:01,840 --> 01:05:04,160 Jadi int penunjuk, itu di mana yang kita telah mewujudkan 1410 01:05:04,160 --> 01:05:06,550 penunjuk yang menunjukkan bilangan bulat. 1411 01:05:06,550 --> 01:05:08,230 Nah, ia akan menunjukkan kepada integer. 1412 01:05:08,230 --> 01:05:12,135 Dan kita akan malloc, atau memberikan, memori yang cukup diperuntukkan 1413 01:05:12,135 --> 01:05:13,200 untuk menyimpan integer. 1414 01:05:13,200 --> 01:05:14,910 Jadi empat bait dalam kes ini. 1415 01:05:14,910 --> 01:05:18,024 >> Dan kemudian jika itu sama sama null-- sama null-- kita akan mencetak. 1416 01:05:18,024 --> 01:05:20,440 Oh, anda mempunyai ralat kerana anda keluar dari memori, bukan? 1417 01:05:20,440 --> 01:05:22,814 Jika tidak, satu kembali, yang hanya memberitahu program anda 1418 01:05:22,814 --> 01:05:24,170 bahawa anda mempunyai ralat. 1419 01:05:24,170 --> 01:05:26,850 Dan kemudian jika anda lakukan mempunyai memori itu, ia 1420 01:05:26,850 --> 01:05:33,230 akan menyimpan apa sahaja yang mendapat int memberikan anda ke lokasi 1421 01:05:33,230 --> 01:05:35,460 dan menetapkannya sebagai nilai penunjuk. 1422 01:05:35,460 --> 01:05:38,500 Jadi ia sebenarnya akan fizikal memadamkan nilai ini 1423 01:05:38,500 --> 01:05:41,702 dan meletakkan apa sahaja yang mendapat pulangan int. 1424 01:05:41,702 --> 01:05:43,910 Dan kemudian anda akan cetak apa sahaja yang mereka masukkan. 1425 01:05:43,910 --> 01:05:46,080 >> PENONTON: Dan itu akan berada dalam timbunan itu? 1426 01:05:46,080 --> 01:05:47,060 >> ANDI PENG: Itu akan berada dalam timbunan itu. 1427 01:05:47,060 --> 01:05:48,768 >> PENONTON: Dan supaya akan boleh diakses. 1428 01:05:48,768 --> 01:05:51,220 ANDI PENG: Tepat sekali. 1429 01:05:51,220 --> 01:05:52,600 Nice. 1430 01:05:52,600 --> 01:05:53,756 Yang baik. 1431 01:05:53,756 --> 01:05:59,289 >> PENONTON: Oleh itu, apabila kita membebaskan ptr di ini Langkah terakhir, kami membebaskan penunjuk 1432 01:05:59,289 --> 01:06:00,724 atau kita membebaskan blok? 1433 01:06:00,724 --> 01:06:01,390 ANDI PENG: Ya. 1434 01:06:01,390 --> 01:06:05,570 Jadi, kita membebaskan pointer-- yang baik, membebaskan blok ingatan. 1435 01:06:05,570 --> 01:06:08,780 Jadi satu-satunya cara kita boleh menyeimbangkan akses ingatan adalah dengan mempunyai penunjuk. 1436 01:06:08,780 --> 01:06:10,730 Jika anda tidak mempunyai penunjuk, anda berada seperti, oh, saya tidak tahu di mana ia adalah, 1437 01:06:10,730 --> 01:06:11,290 bukan? 1438 01:06:11,290 --> 01:06:13,956 Jadi, jika anda membebaskannya, anda pada dasarnya membebaskan bahawa seluruh blok. 1439 01:06:13,956 --> 01:06:16,500 Maka komputer anda tahu, oh, tiada apa-apa yang boleh digunakan di sini, 1440 01:06:16,500 --> 01:06:19,396 Saya hanya boleh meletakkan sampah nilai-nilai ke syurga lagi. 1441 01:06:19,396 --> 01:06:21,590 >> PENONTON: Jadi bilangan bulat memang wujud pada itu? 1442 01:06:21,590 --> 01:06:23,481 >> ANDI PENG: Adakah bilangan bulat wujud? 1443 01:06:23,481 --> 01:06:23,980 Maaf. 1444 01:06:23,980 --> 01:06:25,271 Bolehkah anda menyusun semula soalan anda? 1445 01:06:25,271 --> 01:06:28,330 PENONTON: saya maksudkan, selepas anda membebaskan penunjuk, integer yang anda dapat, 1446 01:06:28,330 --> 01:06:29,990 akan yang masih wujud? 1447 01:06:29,990 --> 01:06:31,360 >> ANDI PENG: Tidak, ia tidak akan. 1448 01:06:31,360 --> 01:06:34,070 1449 01:06:34,070 --> 01:06:37,550 Atau sekurang-kurangnya ia akan wujud dalam anda memori sebelum komputer anda tidak 1450 01:06:37,550 --> 01:06:40,231 apa sahaja dengannya, tetapi ada ada cara untuk anda untuk mendapatkan itu. 1451 01:06:40,231 --> 01:06:41,480 Kerana anda dibebaskan penunjuk. 1452 01:06:41,480 --> 01:06:43,150 Anda tidak tahu di mana ia adalah lagi. 1453 01:06:43,150 --> 01:06:43,650 Yeah. 1454 01:06:43,650 --> 01:06:46,500 1455 01:06:46,500 --> 01:06:48,560 >> Saya akan bergerak ke atas di sini. 1456 01:06:48,560 --> 01:06:49,060 Phew. 1457 01:06:49,060 --> 01:06:53,012 Jadi kita melalui banyak konseptual kesukaran pengurusan ingatan 1458 01:06:53,012 --> 01:06:54,720 dan kami hanya akan untuk dasarnya menghabiskan 1459 01:06:54,720 --> 01:06:57,090 5, 10 minit akan atas perkara-perkara yang sintaks 1460 01:06:57,090 --> 01:07:03,240 akan boleh digunakan dan berguna untuk anda semua, tetapi tiada apa yang terlalu konsep di luar sana. 1461 01:07:03,240 --> 01:07:03,740 OKAY. 1462 01:07:03,740 --> 01:07:06,930 >> Jadi, kita benar-benar menukar gear di sini. 1463 01:07:06,930 --> 01:07:09,360 Pengurusan ingatan, sukar. Penunjuk, sukar. Ya. 1464 01:07:09,360 --> 01:07:10,530 Ia benar-benar, benar-benar keras. 1465 01:07:10,530 --> 01:07:11,270 Betul-betul halus. 1466 01:07:11,270 --> 01:07:13,800 Itulah sebabnya bahagian anda akan menjadi benar-benar sukar. 1467 01:07:13,800 --> 01:07:17,740 Tetapi jika anda pergi dan melakukan perkara-perkara yang kita 1468 01:07:17,740 --> 01:07:19,860 sepatutnya lakukan, membuat perkara yang pasti adalah batal, 1469 01:07:19,860 --> 01:07:21,830 pastikan untuk memeriksa jika perkara-perkara yang null, pastikan memori yang bebas, 1470 01:07:21,830 --> 01:07:23,910 memastikan bahawa ia tidak bocor, anda akan menjadi baik. 1471 01:07:23,910 --> 01:07:25,761 Anda akan ditetapkan. 1472 01:07:25,761 --> 01:07:26,260 Baiklah. 1473 01:07:26,260 --> 01:07:30,870 Oleh itu, kita akan bergerak ke dalam ini konsep baru mengenai penghalaan semula. 1474 01:07:30,870 --> 01:07:33,201 Dan jadi sebelum masa ini, cara utama yang kami telah 1475 01:07:33,201 --> 01:07:35,700 telah berinteraksi dengan kami program adalah melalui input standard 1476 01:07:35,700 --> 01:07:36,533 dan output standard. 1477 01:07:36,533 --> 01:07:37,040 Betul? 1478 01:07:37,040 --> 01:07:39,230 Kita sebagai input pengguna perkara dan komputer 1479 01:07:39,230 --> 01:07:42,090 memuntahkannya semula kepada kami di terminal. 1480 01:07:42,090 --> 01:07:44,770 >> Tetapi ada lain cara untuk kita berinteraksi 1481 01:07:44,770 --> 01:07:47,810 dengan komputer dengan kami program-program yang tidak hanya saya 1482 01:07:47,810 --> 01:07:50,245 perkara menaip fizikal dalam apabila saya diminta. 1483 01:07:50,245 --> 01:07:52,620 Dan cara kita berbuat demikian adalah melalui lebih besar daripada lobak merah 1484 01:07:52,620 --> 01:07:53,453 dan simbol paip. 1485 01:07:53,453 --> 01:07:55,970 1486 01:07:55,970 --> 01:07:58,630 Oleh itu, kita juga boleh membaca dan menulis kepada fail menggunakan itu. 1487 01:07:58,630 --> 01:08:03,230 >> Jadi cara yang kita lakukan ini adalah lebih besar daripada lobak merah, semua yang melakukan 1488 01:08:03,230 --> 01:08:07,410 menulis apa sahaja yang anda fail perlu fail berasingan. 1489 01:08:07,410 --> 01:08:11,870 Jadi, sebagai contoh, jika saya mahu menjalankan hello dunia 1490 01:08:11,870 --> 01:08:14,330 dan saya mahu output untuk disimpan dalam fail lain 1491 01:08:14,330 --> 01:08:17,359 dan bukan hanya dicetak kepada saya, saya hanya boleh melakukan yang lebih besar daripada lobak merah, 1492 01:08:17,359 --> 01:08:18,410 output.txt. 1493 01:08:18,410 --> 01:08:22,609 Jadi apa yang lakukan adalah mengambil program hello.world saya, 1494 01:08:22,609 --> 01:08:26,359 dan apa sahaja output adalah, ia adalah penjimatan dalam fail yang dipanggil output.txt. 1495 01:08:26,359 --> 01:08:29,850 Jadi cara yang dilakukan Daud, yang .csv dengan nama-nama pelajar, 1496 01:08:29,850 --> 01:08:32,310 ia adalah sama yang anda semua boleh lakukan. 1497 01:08:32,310 --> 01:08:35,137 >> Dan apa yang terutama yang berguna di sini adalah lebih besar 1498 01:08:35,137 --> 01:08:38,220 than-- dua lebih besar daripada lobak merah tanda-tanda yang anda boleh menambah ke output 1499 01:08:38,220 --> 01:08:40,795 fail, yang bermakna bahawa anda hanya boleh menambah di atasnya. 1500 01:08:40,795 --> 01:08:43,420 Anda hanya boleh menyimpan menambah output.txt setiap perkara tambahan 1501 01:08:43,420 --> 01:08:44,490 yang anda lakukan. 1502 01:08:44,490 --> 01:08:48,010 Atau, jika anda mula mendapat ke dalam lebih program yang rumit, kedua-dua yang lebih besar 1503 01:08:48,010 --> 01:08:50,939 daripada lobak merah, yang hanya cetakan keluar mesej ralat. 1504 01:08:50,939 --> 01:08:53,340 Jadi katakan anda mempunyai gergasi jumlah mesej ralat 1505 01:08:53,340 --> 01:08:54,810 dan anda mahu untuk membaca melalui semua daripada mereka dan anda 1506 01:08:54,810 --> 01:08:56,450 tidak mahu perlu tatal melalui terminal anda, 1507 01:08:56,450 --> 01:08:58,651 anda boleh benar-benar hanya melakukan lebih besar daripada output.txt 1508 01:08:58,651 --> 01:09:00,359 dan ia akan menyelamatkan semua kesilapan anda 1509 01:09:00,359 --> 01:09:02,900 dalam fail yang dipanggil output.txt yang anda boleh pergi melalui dan membaca. 1510 01:09:02,900 --> 01:09:04,622 PENONTON: Di mana fail teks yang disimpan? 1511 01:09:04,622 --> 01:09:07,330 ANDI PENG: Ia disimpan dalam yang sama direktori bahawa program anda. 1512 01:09:07,330 --> 01:09:09,830 Jadi anda hanya kembali dan mencarinya. 1513 01:09:09,830 --> 01:09:11,930 Dan perkara yang sama kita boleh lakukan untuk input 1514 01:09:11,930 --> 01:09:14,300 yang kita sebenarnya boleh mengambil kandungan beberapa fail 1515 01:09:14,300 --> 01:09:16,380 dan kita boleh memasukkan itu ke dalam program kami. 1516 01:09:16,380 --> 01:09:19,930 Jadi, daripada perlu melakukan arahan hujah baris di mana anda secara fizikal 1517 01:09:19,930 --> 01:09:21,680 perlu menaip perkara setiap kali, anda 1518 01:09:21,680 --> 01:09:27,890 boleh sebenarnya hanya mempunyai fail yang dipanggil input.txt yang hanya meletakkan semuanya dalam. 1519 01:09:27,890 --> 01:09:31,970 >> Dan kemudian paip khas sejuk kerana ia boleh mengambil output satu program 1520 01:09:31,970 --> 01:09:34,170 dan menggunakannya sebagai input program lain. 1521 01:09:34,170 --> 01:09:38,430 Jadi, sebagai contoh, dalam Vigenere lelaki anda, terdapat garis ini kod yang anda 1522 01:09:38,430 --> 01:09:42,010 lelaki sedang berjalan yang anda mungkin mungkin tidak benar-benar tahu apa yang ia adalah doing-- 1523 01:09:42,010 --> 01:09:46,910 1000 paip ini ./generate ./42. 1524 01:09:46,910 --> 01:09:47,510 Betul? 1525 01:09:47,510 --> 01:09:51,100 >> Jadi semua itu lakukan, jika kita hanya mengambil lihat pada langkah ini demi langkah, 1526 01:09:51,100 --> 01:09:55,870 ./generate, ini bermakna saya menjalankan program saya menjana. 1527 01:09:55,870 --> 01:09:58,850 Yang sedang dalam 1000 di input. 1528 01:09:58,850 --> 01:10:03,330 Jadi saya ingin menjana 1,000 rawak nombor dan saya akan paip bahawa- 1529 01:10:03,330 --> 01:10:07,790 atau saya akan menggunakan output bahawa- sebagai input untuk program saya dipanggil find. 1530 01:10:07,790 --> 01:10:12,110 Dan saya akan cuba untuk mencari 42 daripada nombor yang dijana dari orang-orang 1000 1531 01:10:12,110 --> 01:10:13,130 nombor. 1532 01:10:13,130 --> 01:10:15,410 Adakah ini baris kod menjadikan masuk akal untuk orang lain? 1533 01:10:15,410 --> 01:10:17,820 >> Jadi dengan cara ini kita menjimatkan diri kita satu tan langkah. 1534 01:10:17,820 --> 01:10:21,880 Kami tidak perlu menjalankan menjana, menyimpan fail dan kemudian memasukkannya ke dalam find. 1535 01:10:21,880 --> 01:10:23,800 Kami hanya boleh melakukan semuanya dalam satu baris. 1536 01:10:23,800 --> 01:10:28,080 Jadi apa sahaja yang menjana keluarkan, mencebur ia segera kembali masuk untuk mencari. 1537 01:10:28,080 --> 01:10:28,580 Ya? 1538 01:10:28,580 --> 01:10:32,484 >> PENONTON: Dan dari segi arahan hujah baris, adalah bahawa- itulah 1539 01:10:32,484 --> 01:10:33,948 tiga hujah baris arahan? 1540 01:10:33,948 --> 01:10:38,340 Ia menjana, find-- tidak, four-- menjana, 1000, cari dan 42? 1541 01:10:38,340 --> 01:10:39,134 Atau adakah the-- 1542 01:10:39,134 --> 01:10:42,050 ANDI PENG: Jadi paip tidak benar-benar dikira sebagai hujah baris arahan 1543 01:10:42,050 --> 01:10:44,590 kerana pengkompil atau terminal tahu paip itu, 1544 01:10:44,590 --> 01:10:48,590 oh, saya tahu bahawa saya mesti melihat sesuatu paip kerana itulah output saya 1545 01:10:48,590 --> 01:10:51,220 dan saya mesti menjaga paip kerana itulah input saya. 1546 01:10:51,220 --> 01:10:54,520 Jadi ia tahu bahawa- yang ./generate dan 1,000, 1547 01:10:54,520 --> 01:10:57,390 mereka adalah dua perintah maka hujah-hujah hanya untuk program pertama. 1548 01:10:57,390 --> 01:11:01,760 Dan kemudian ./find 42 dua arahan hujah baris untuk program kedua. 1549 01:11:01,760 --> 01:11:02,980 Yeah. 1550 01:11:02,980 --> 01:11:06,150 Semua orang yang baik mengenai perkara ini? 1551 01:11:06,150 --> 01:11:10,610 >> Jadi hanya sebenar cepat, apa yang ketiga-tiga baris kod lakukan? 1552 01:11:10,610 --> 01:11:11,606 Agak mudah. 1553 01:11:11,606 --> 01:11:13,605 Sesiapa pun mahu beritahu saya apa baris pertama tidak? 1554 01:11:13,605 --> 01:11:18,201 1555 01:11:18,201 --> 01:11:19,117 PENONTON: [didengar]. 1556 01:11:19,117 --> 01:11:23,540 1557 01:11:23,540 --> 01:11:26,534 >> ANDI PENG: Anggaplah ia sebagai just-- apakah yang lebih besar daripada lobak merah lakukan? 1558 01:11:26,534 --> 01:11:29,299 >> PENONTON: Ia meletakkan sesuatu ke baris seterusnya. 1559 01:11:29,299 --> 01:11:31,090 ANDI PENG: Jadi apa yang yang bertentangan dengan itu? 1560 01:11:31,090 --> 01:11:33,514 PENONTON: Ia meletakkan seterusnya perkara ke dalam perkara yang pertama. 1561 01:11:33,514 --> 01:11:34,180 ANDI PENG: Ya. 1562 01:11:34,180 --> 01:11:37,550 Jadi apa yang lakukan adalah anda menjalankan program .hello-- 1563 01:11:37,550 --> 01:11:40,010 anda menjalankan program yang dinamakan khabar. 1564 01:11:40,010 --> 01:11:42,960 Anda akan memberikan input yang dikenali input.txt. 1565 01:11:42,960 --> 01:11:43,460 Betul? 1566 01:11:43,460 --> 01:11:46,250 Oleh kerana menganggapnya sebagai hanya secara fizikal pergi ke hello. 1567 01:11:46,250 --> 01:11:50,632 Dan kemudian anda akan menyelamatkan output dalam fail yang dipanggil output.txt. 1568 01:11:50,632 --> 01:11:51,715 Bagaimana pula dengan baris kedua? 1569 01:11:51,715 --> 01:11:54,164 Ingin memberitahu saya apa yang baris kedua tidak? 1570 01:11:54,164 --> 01:11:55,080 PENONTON: [didengar]. 1571 01:11:55,080 --> 01:12:00,522 1572 01:12:00,522 --> 01:12:01,230 ANDI PENG: Maaf. 1573 01:12:01,230 --> 01:12:03,560 Cakap sekali lagi. 1574 01:12:03,560 --> 01:12:04,060 Elliot. 1575 01:12:04,060 --> 01:12:06,560 >> PENONTON: Jadi ia meletakkan senarai nombor ke dalam find. 1576 01:12:06,560 --> 01:12:07,540 >> ANDI PENG: Ya. 1577 01:12:07,540 --> 01:12:10,790 Jadi mencari, ingat, Untuk berjalan mencari 1578 01:12:10,790 --> 01:12:13,209 perlu tahu di mana anda sedang mencari. 1579 01:12:13,209 --> 01:12:15,500 Dan supaya semua yang ia lakukan di sini adalah bahawa ia memberi anda 1580 01:12:15,500 --> 01:12:18,720 pra diberikan set nombor, kemudian mencari akan 1581 01:12:18,720 --> 01:12:21,680 untuk mencari orang-orang untuk jumlah 42. 1582 01:12:21,680 --> 01:12:23,620 Dan kemudian 15. 1583 01:12:23,620 --> 01:12:25,870 Ingat, anda semua berlari ini apabila anda diuji kod anda. 1584 01:12:25,870 --> 01:12:27,590 Sekarang anda faham mengapa ia berada? 1585 01:12:27,590 --> 01:12:31,069 1586 01:12:31,069 --> 01:12:33,520 >> PENONTON: Ia meletakkan dalam set arahan 1587 01:12:33,520 --> 01:12:38,860 kepada [didengar] melalui tiga oleh tiga untuk mendapatkan the-- untuk memenangi permainan. 1588 01:12:38,860 --> 01:12:39,560 >> ANDI PENG: Ya. 1589 01:12:39,560 --> 01:12:41,480 >> PENONTON: Ia input mereka arahan ke dalam program ini. 1590 01:12:41,480 --> 01:12:42,438 >> ANDI PENG: Pretty banyak. 1591 01:12:42,438 --> 01:12:47,840 Jadi CS50 tilde. / Pset3 / 3x3, semua yang lakukan adalah bahawa kami mencipta teks 1592 01:12:47,840 --> 01:12:50,700 fail yang mempunyai semua tajuk bersedia untuk anda semua. 1593 01:12:50,700 --> 01:12:56,020 Dan sebagainya untuk permainan anda bermain, anda just-- kita hanya meletakkan itu ke dalam program anda. 1594 01:12:56,020 --> 01:12:58,230 Oleh itu, kita telah mencipta ini lembaga dan kemudian kita 1595 01:12:58,230 --> 01:13:02,890 meletakkan papan itu ke dalam program anda yang berlari dan mencipta jubin tiga 1596 01:13:02,890 --> 01:13:03,390 oleh tiga. 1597 01:13:03,390 --> 01:13:04,730 Itu sahaja yang ia telah lakukan. 1598 01:13:04,730 --> 01:13:07,331 >> Dan sebagainya ada sebenarnya sihir berlaku di belakang tabir 1599 01:13:07,331 --> 01:13:09,330 bahawa kalian tidak program yang kita diprogramkan. 1600 01:13:09,330 --> 01:13:13,120 Tetapi kini anda semua faham mengapa kita lakukan yang demikian itu semua baik. 1601 01:13:13,120 --> 01:13:15,750 Baiklah. 1602 01:13:15,750 --> 01:13:22,200 >> Oleh itu, sambil penghantaran semula adalah sangat berguna, C mempunyai mekanisme umum 1603 01:13:22,200 --> 01:13:25,030 membaca dan menulis fail yang tersendiri. 1604 01:13:25,030 --> 01:13:26,780 Tiada apa-apa dari segi konsep sukar di sini jadi saya 1605 01:13:26,780 --> 01:13:28,330 hanya akan pergi melalui benar-benar, benar-benar cepat. 1606 01:13:28,330 --> 01:13:30,621 Semua itu adalah sebahagian hafalan dan memastikan anda semua 1607 01:13:30,621 --> 01:13:32,680 sedang sintaksis menggunakannya dengan betul. 1608 01:13:32,680 --> 01:13:35,640 Cara yang kita akan lakukan yang membuat rujukan kepada fail, 1609 01:13:35,640 --> 01:13:38,473 kita akan membuka fail, dan kemudian kita akan melakukan semua membaca dan menulis 1610 01:13:38,473 --> 01:13:39,929 dan kemudian tutup fail. 1611 01:13:39,929 --> 01:13:41,720 Apabila perkara anda semua mahu yang perlu diingat adalah 1612 01:13:41,720 --> 01:13:47,360 yang ketika melakukan ini, kerana kita menutup dan membuka fail, 1613 01:13:47,360 --> 01:13:51,230 semua orang-orang arahan dimasukkan dalam standard-- standard I / O 1614 01:13:51,230 --> 01:13:51,730 perpustakaan. 1615 01:13:51,730 --> 01:13:54,410 Jadi pastikan setiap kali anda berada cara ini yang anda telah included-- 1616 01:13:54,410 --> 01:13:59,020 # included-- standard I / O dot h. 1617 01:13:59,020 --> 01:14:01,691 >> Begitu nyata dengan cepat. 1618 01:14:01,691 --> 01:14:03,940 Langkah pertama, anda ingin membuat rujukan kepada fail itu. 1619 01:14:03,940 --> 01:14:07,670 Dan sekarang kita ada petunjuk dilakukan, anda semua boleh beritahu saya apa yang baris kod 1620 01:14:07,670 --> 01:14:08,630 lakukan. 1621 01:14:08,630 --> 01:14:10,250 Betul? 1622 01:14:10,250 --> 01:14:15,397 Apa yang ia lakukan adalah mewujudkan penunjuk bernama fail bagi jenis fail. 1623 01:14:15,397 --> 01:14:17,980 Kerana anda tahu bahawa ia akan untuk menghala ke fail dan anda 1624 01:14:17,980 --> 01:14:20,460 akan membuka fail. 1625 01:14:20,460 --> 01:14:23,320 Kemudian anda berada f open-- semua ia adalah membuka fail. 1626 01:14:23,320 --> 01:14:24,560 >> Ini adalah nama fail. 1627 01:14:24,560 --> 01:14:26,060 Dan ada tiga perkara yang anda boleh lakukan. 1628 01:14:26,060 --> 01:14:28,195 Anda boleh membaca, menulis atau menambah. 1629 01:14:28,195 --> 01:14:30,320 Kebanyakan amnya, anda semua akan membaca atau menulis 1630 01:14:30,320 --> 01:14:33,195 kerana anda akan dilakukan sama ada memasukkan fail atau keluarkan satu. 1631 01:14:33,195 --> 01:14:36,500 Jadi cukup banyak r dan w adalah dua perkara yang anda akan menggunakan paling. 1632 01:14:36,500 --> 01:14:41,722 >> Jadi dalam kes ini, apa yang saya lakukan adalah mewujudkan penunjuk kepada fail yang dipanggil fail. 1633 01:14:41,722 --> 01:14:47,900 Saya membukanya dan saya reading-- Saya membuka fail ini dipanggil file.txt 1634 01:14:47,900 --> 01:14:49,020 dan saya membacanya. 1635 01:14:49,020 --> 01:14:51,730 Itu sahaja yang saya lakukan pada ketika ini. 1636 01:14:51,730 --> 01:14:55,270 Dan kemudian ini hanya berfungsi dalam yang anda boleh membaca perkara yang berbeza 1637 01:14:55,270 --> 01:14:57,750 atau menulis perkara yang berbeza atau melangkau ke tempat-tempat yang berbeza 1638 01:14:57,750 --> 01:14:59,420 di mana anda mahu melihat. 1639 01:14:59,420 --> 01:15:01,200 Semua ini adalah dalam talian. 1640 01:15:01,200 --> 01:15:02,960 Semua ini anda boleh hanya Google. 1641 01:15:02,960 --> 01:15:04,280 Tidak perlu menghafal mereka. 1642 01:15:04,280 --> 01:15:07,160 Mereka hanya di sana, boleh guna untuk kegunaan anda 1643 01:15:07,160 --> 01:15:09,360 jika anda ingin dapat menggunakannya. 1644 01:15:09,360 --> 01:15:13,210 >> Jadi, jika saya mahu hanya membaca dalam satu aksara pada satu masa, 1645 01:15:13,210 --> 01:15:15,360 Saya akan lakukan fail fgetc. 1646 01:15:15,360 --> 01:15:18,850 Atau jika saya mahu untuk membaca dalam garis teks pada satu masa, saya akan lakukan fgets. 1647 01:15:18,850 --> 01:15:19,840 Dan sebagainya dan sebagainya. 1648 01:15:19,840 --> 01:15:23,640 Semua ini hanya melakukan yang berbeza perkara yang anda semua boleh digunakan. 1649 01:15:23,640 --> 01:15:25,920 >> Dan kemudian akhir sekali, selepas saya selesai membaca atau menulis, 1650 01:15:25,920 --> 01:15:27,770 Saya hanya akan fclose fail itu. 1651 01:15:27,770 --> 01:15:31,760 Dan ingat, ini adalah salah daripada mereka, ingat, sila 1652 01:15:31,760 --> 01:15:34,220 melakukan ini atau lain fail anda tidak akan berfungsi. 1653 01:15:34,220 --> 01:15:36,130 Sentiasa membuka fail sebelum membaca atau membaca, 1654 01:15:36,130 --> 01:15:38,310 anda perlu sentiasa menutupnya jika anda membukanya. 1655 01:15:38,310 --> 01:15:40,210 Perkara yang sama dengan ingatan, bukan? 1656 01:15:40,210 --> 01:15:42,390 Anda perlu sentiasa mengambil memori dan bebas itu. 1657 01:15:42,390 --> 01:15:45,200 Di sini anda perlu sentiasa membuka memfailkan sebelum cuba untuk membacanya 1658 01:15:45,200 --> 01:15:47,360 dan anda perlu sentiasa menutupnya selepas anda membukanya. 1659 01:15:47,360 --> 01:15:50,650 1660 01:15:50,650 --> 01:15:52,190 >> Jadi ini adalah juga dalam talian. 1661 01:15:52,190 --> 01:15:55,590 Saya akan mencabar anda semua untuk sejenis menulis program yang mencetak 1662 01:15:55,590 --> 01:15:57,080 hello.world ke fail. 1663 01:15:57,080 --> 01:15:58,280 Ia benar-benar mudah. 1664 01:15:58,280 --> 01:16:00,854 Ia pada asasnya hanya melibatkan yang beberapa baris kod 1665 01:16:00,854 --> 01:16:02,270 yang hanya ditulis sebelum ini. 1666 01:16:02,270 --> 01:16:04,311 Anda akan meletakkan mereka bersama-sama dan menulis itu. 1667 01:16:04,311 --> 01:16:06,630 1668 01:16:06,630 --> 01:16:10,950 >> Jadi beberapa perkara penting yang perlu diingat semasa anda seorang lelaki yang cuba untuk menggunakan ini. 1669 01:16:10,950 --> 01:16:14,410 Jika ini adalah semua sangat berguna untuk pset anda minggu ini, 1670 01:16:14,410 --> 01:16:18,000 adalah bahawa fopen mewujudkan penunjuk fail. 1671 01:16:18,000 --> 01:16:19,500 Ia tidak benar-benar fail fizikal. 1672 01:16:19,500 --> 01:16:22,260 Semua ia menunjuk kepada fail yang anda mahu buka. 1673 01:16:22,260 --> 01:16:26,070 Dan anda pada dasarnya setiap kali, anda menggunakan mana-mana daripada fungsi-fungsi lain 1674 01:16:26,070 --> 01:16:30,130 seperti fread atau fwrite atau fgetc atau fgets, adalah 1675 01:16:30,130 --> 01:16:33,380 bahawa anda hanya lulus sekitar ini penunjuk kepada semua fungsi-fungsi itu. 1676 01:16:33,380 --> 01:16:36,510 Supaya anda tidak benar-benar mengambil yang memfailkan dan menggunakannya untuk majlis anda, 1677 01:16:36,510 --> 01:16:39,540 anda hanya mengambil penunjuk dan meletakkan ia untuk fungsi-fungsi 1678 01:16:39,540 --> 01:16:41,620 supaya anda boleh menggunakan. 1679 01:16:41,620 --> 01:16:45,360 >> Dan jika anda lupa untuk menutup fail anda selepas anda menggunakannya, 1680 01:16:45,360 --> 01:16:47,710 program anda akan bocor ingatan. 1681 01:16:47,710 --> 01:16:50,700 Pada dasarnya, segala cara yang adalah barang-barang yang buruk akan berlaku 1682 01:16:50,700 --> 01:16:52,960 dan program anda akan tidak berfungsi dengan betul. 1683 01:16:52,960 --> 01:16:54,880 Dan sebagainya pset dalam mulanya, saya fikir 1684 01:16:54,880 --> 01:16:59,180 ada pendek di mana dia explained-- Nate explained-- apa Valgrind adalah. 1685 01:16:59,180 --> 01:17:02,350 Semua Valgrind adalah cara untuk anda untuk pastikan anda tak bocor ingatan. 1686 01:17:02,350 --> 01:17:04,433 Jadi anda semua ingin pasti anda menonton yang pendek 1687 01:17:04,433 --> 01:17:08,771 kerana yang menjelaskan ia dengan baik apa yang berlaku. 1688 01:17:08,771 --> 01:17:09,270 OKAY. 1689 01:17:09,270 --> 01:17:11,260 Jadi saya pergi melalui itu benar-benar, benar-benar cepat kerana saya benar-benar 1690 01:17:11,260 --> 01:17:13,870 mahu ke bercakap tentang Serangga sebelum kamu pergi. 1691 01:17:13,870 --> 01:17:16,690 Adakah sesiapa yang mempunyai soalan dari segi konsep? 1692 01:17:16,690 --> 01:17:20,060 Kebanyakannya semua ini hanya sintaks yang anda boleh gunakan untuk membaca atau menulis fail. 1693 01:17:20,060 --> 01:17:25,090 1694 01:17:25,090 --> 01:17:28,140 >> Akhir sekali, kegemaran semua orang. 1695 01:17:28,140 --> 01:17:31,760 Kami akan bercakap tentang pset sekarang. 1696 01:17:31,760 --> 01:17:35,990 Jadi, mengangkat tangan, berapa ramai daripada anda semua membaca spec minggu ini? 1697 01:17:35,990 --> 01:17:36,660 Oh, itu separuh. 1698 01:17:36,660 --> 01:17:38,000 Itulah yang baik. 1699 01:17:38,000 --> 01:17:41,430 Jadi ini sebenarnya adalah benar-benar, Serangga benar-benar menyeronokkan dalam erti kata 1700 01:17:41,430 --> 01:17:43,889 yang anda rasa seperti detektif kerana anda 1701 01:17:43,889 --> 01:17:46,930 melakukan semua perkara-perkara ini benar-benar sejuk bahawa anda tidak tahu bahawa anda boleh lakukan 1702 01:17:46,930 --> 01:17:49,050 tetapi kini ia adalah benar-benar sejuk bahawa anda boleh melakukannya. 1703 01:17:49,050 --> 01:17:52,400 Dan ia sebenarnya banyak lebih mudah daripada anda semua berfikir. 1704 01:17:52,400 --> 01:17:56,640 >> Oleh itu, bahagian asas program ini adalah anda berada 1705 01:17:56,640 --> 01:18:00,330 akan memuat turun kod sumber atau kod pengedaran ditulis oleh kami. 1706 01:18:00,330 --> 01:18:03,540 Dan anda akan mempunyai satu folder dipanggil BMP dan folder lain 1707 01:18:03,540 --> 01:18:05,550 dipanggil JPG. 1708 01:18:05,550 --> 01:18:08,370 Dalam masa BMP anda, anda berada akan mempunyai tiga program. 1709 01:18:08,370 --> 01:18:10,400 Salah seorang daripada mereka telah ditulis untuk anda. 1710 01:18:10,400 --> 01:18:12,477 Jadi copy.c adalah program yang kita sudah menulis 1711 01:18:12,477 --> 01:18:14,060 untuk anda yang anda akan dimuat turun. 1712 01:18:14,060 --> 01:18:19,440 Semua yang dilakukan adalah mengambil sebagai input gambar dan membuat salinan sebagai output. 1713 01:18:19,440 --> 01:18:22,150 Itu semua fail yang lakukan. 1714 01:18:22,150 --> 01:18:25,260 >> Tetapi apa yang anda mahu lakukan untuk whodunit-- jadi bagaimana ramai daripada anda 1715 01:18:25,260 --> 01:18:30,450 semua masih ingat dalam gred kelima atau maybe-- anda mungkin younger-- gred ketiga, 1716 01:18:30,450 --> 01:18:33,945 apabila kalian mempunyai mesej rahsia dan anda terpaksa meletakkan sekeping kertas di atasnya 1717 01:18:33,945 --> 01:18:35,440 menyahkod mesej? 1718 01:18:35,440 --> 01:18:36,000 Ya? 1719 01:18:36,000 --> 01:18:39,580 Jadi itu sahaja yang kita lakukan kecuali masa ini untuk komputer. 1720 01:18:39,580 --> 01:18:41,832 Oleh itu, kita telah memberikan imej ini indah. 1721 01:18:41,832 --> 01:18:43,540 Tidak kelihatan seperti apa-apa tetapi di bawah 1722 01:18:43,540 --> 01:18:49,660 ia adalah satu petunjuk yang akan membantu anda untuk menjawab soalan ini, kita bertanya kepada anda. 1723 01:18:49,660 --> 01:18:54,170 >> Pada dasarnya apa yang anda mahu lakukan adalah input yang fail, 1724 01:18:54,170 --> 01:18:56,610 tweak beberapa perkara di sekeliling, mungkin menyesuaikan warna, 1725 01:18:56,610 --> 01:19:00,730 beralih perkara, supaya apa mesej itu boleh datang melalui. 1726 01:19:00,730 --> 01:19:03,740 Jadi dalam sana tersembunyi piksel dan maklumat 1727 01:19:03,740 --> 01:19:07,140 bahawa jika anda menulis kod anda dengan betul akan memecahkan kod dan memberitahu anda 1728 01:19:07,140 --> 01:19:08,500 apa petunjuk ini. 1729 01:19:08,500 --> 01:19:12,480 Dan sebagainya beberapa petunjuk berguna tentang bagaimana anda akan pergi tentang menghampiri ini. 1730 01:19:12,480 --> 01:19:15,180 >> Anda benar-benar mahu membiasakan diri dengan fail I / O 1731 01:19:15,180 --> 01:19:18,760 kerana kita membaca dari fail dan menulis kepada fail. 1732 01:19:18,760 --> 01:19:19,260 Betul? 1733 01:19:19,260 --> 01:19:21,430 Dan supaya setiap kali kita melakukan itu, yang melibatkan 1734 01:19:21,430 --> 01:19:25,170 memfailkan I / O. Anda akan perlu membiasakan diri 1735 01:19:25,170 --> 01:19:27,450 dengan, bagaimana anda membuka gambar fail? 1736 01:19:27,450 --> 01:19:29,960 Bagaimana anda menulis kepada fail seperti gambar? 1737 01:19:29,960 --> 01:19:31,640 Bagaimana anda melakukan semua perkara-perkara? 1738 01:19:31,640 --> 01:19:33,660 Itu akan menjadi benar-benar berguna. 1739 01:19:33,660 --> 01:19:36,190 >> Kedua, apa kabar akan dapat mengubah 1740 01:19:36,190 --> 01:19:38,140 warna yang membersihkan gambar ini? 1741 01:19:38,140 --> 01:19:43,660 Ia mungkin akan melibatkan menyesuaikan piksel atau nilai-nilai RGB anda 1742 01:19:43,660 --> 01:19:45,390 di suatu tempat di sana, pada asasnya. 1743 01:19:45,390 --> 01:19:47,800 Tiada cara yang betul menyelesaikan ini selama anda 1744 01:19:47,800 --> 01:19:52,560 can-- selama yang anda boleh jenis menyesuaikan mereka piksel untuk menjadikannya 1745 01:19:52,560 --> 01:19:54,640 kelihatan seperti sesuatu yang anda hargai. 1746 01:19:54,640 --> 01:19:56,207 Itu sahaja yang kita mengambil berat tentang juga. 1747 01:19:56,207 --> 01:19:57,540 Jadi ada banyak cara untuk melakukan ini. 1748 01:19:57,540 --> 01:20:00,039 Hanya bermain-main dengannya sehingga anda mendapat sesuatu yang bekerja. 1749 01:20:00,039 --> 01:20:02,900 Dan anda akan benar-benar terkejut bagaimana beberapa baris kod 1750 01:20:02,900 --> 01:20:04,510 anda perlu benar-benar melakukan ini. 1751 01:20:04,510 --> 01:20:08,700 Saya bercakap seperti tiga baris jumlah kod 1752 01:20:08,700 --> 01:20:11,310 bahawa anda perlu menulis untuk melakukan ini. 1753 01:20:11,310 --> 01:20:15,470 Jadi, jika anda mendapati diri anda menulis 40, 30 baris kod, 1754 01:20:15,470 --> 01:20:16,960 anda mungkin lakukan salah. 1755 01:20:16,960 --> 01:20:19,390 Apa yang anda perlu lakukan adalah sejenis bermain-main dengan warna 1756 01:20:19,390 --> 01:20:22,960 dan melihat bagaimana yang bekerja di luar. 1757 01:20:22,960 --> 01:20:27,040 >> Sebab itu kita menuju ke sedikit untuk lebih keras masalah. 1758 01:20:27,040 --> 01:20:30,190 Di sini kita mempunyai saiz semula di mana kita meminta anda 1759 01:20:30,190 --> 01:20:34,210 supaya- kami memberikan anda sebagai input gambar dan saiz semula anda 1760 01:20:34,210 --> 01:20:36,710 imej ini ke dalam sesuatu lebih besar atau sesuatu yang lebih kecil 1761 01:20:36,710 --> 01:20:38,500 bergantung kepada dimensi kami memberi anda. 1762 01:20:38,500 --> 01:20:41,260 Jadi ingat dalam kuliah Daud dengan cepat 1763 01:20:41,260 --> 01:20:45,780 mengerling ke atas bagaimana maklumat dikesan oleh komputer anda 1764 01:20:45,780 --> 01:20:47,590 bermakna ia adalah satu jenis fail. 1765 01:20:47,590 --> 01:20:50,530 Jadi fail Word mempunyai Khas watak-watak di hadapan yang 1766 01:20:50,530 --> 01:20:52,040 memberitahu komputer anda, ia adalah satu fail Word. 1767 01:20:52,040 --> 01:20:53,090 Perkara yang sama dengan JPEG a. 1768 01:20:53,090 --> 01:20:55,131 Dalam kes ini kita akan untuk memberikan anda satu fail JPEG. 1769 01:20:55,131 --> 01:20:58,300 Apa yang kita tahu ialah JPEG fail adalah gambar, bukan? 1770 01:20:58,300 --> 01:21:01,430 Tetapi membezakan komputer dalam cara yang sangat khusus. 1771 01:21:01,430 --> 01:21:04,070 Jadi pada awal mana-mana fail JPEG, anda 1772 01:21:04,070 --> 01:21:08,210 akan mempunyai apa yang dipanggil bitmap maklumat header dan tajuk fail bitmap. 1773 01:21:08,210 --> 01:21:11,080 Semua orang-orang yang berada bahagian yang berbeza dari data 1774 01:21:11,080 --> 01:21:14,870 yang memberitahu komputer anda, hey, mendengar naik, JPEG datang 1775 01:21:14,870 --> 01:21:17,820 dan ini adalah dimensi atau ciri-ciri JPEG itu. 1776 01:21:17,820 --> 01:21:21,280 >> Jadi anda semua benar-benar ingin tahu jenis maklumat yang disimpan di dalam 1777 01:21:21,280 --> 01:21:23,560 mereka pengepala dan apa yang saiz mereka. 1778 01:21:23,560 --> 01:21:25,640 Kerana apabila anda menjalankan melalui program anda, 1779 01:21:25,640 --> 01:21:27,370 anda akan mahu melangkau lebih jumlah itu. 1780 01:21:27,370 --> 01:21:27,940 Betul? 1781 01:21:27,940 --> 01:21:29,910 Kerana anda tidak mengambil berat tentang mengubahsuai kepala, 1782 01:21:29,910 --> 01:21:31,493 anda hargai mengubah apa yang selepas. 1783 01:21:31,493 --> 01:21:32,450 Betul? 1784 01:21:32,450 --> 01:21:36,040 Jadi pastikan anda semua tahu bagaimana besar perkara-perkara yang. 1785 01:21:36,040 --> 01:21:39,065 >> Kedua, sebelum anda memulakan cuba untuk mengubah saiz imej anda, 1786 01:21:39,065 --> 01:21:41,940 anda mungkin akan mahu menyelamatkan dimensi asal. 1787 01:21:41,940 --> 01:21:42,520 Betul? 1788 01:21:42,520 --> 01:21:45,550 Kerana jika saya memberitahu anda gambar ini adalah 100 piksel oleh 100 piksel, 1789 01:21:45,550 --> 01:21:47,630 dan saya mahu anda untuk membuat empat kali lebih besar, 1790 01:21:47,630 --> 01:21:50,460 anda tahu bahawa anda perlu membiak mereka dimensi oleh empat. 1791 01:21:50,460 --> 01:21:54,960 Sebab itu anda mahu fail output 400 oleh 400 piksel, sebagai contoh. 1792 01:21:54,960 --> 01:21:58,300 Jadi ia adalah benar-benar berguna untuk anda semua untuk menyelamatkan dimensi asal. 1793 01:21:58,300 --> 01:22:00,780 Dan kemudian selepas itu, selepas anda selesai saiz semula, 1794 01:22:00,780 --> 01:22:06,270 anda boleh menulis tajuk yang baru dengan mereka dimensi baru selepas saiz semula. 1795 01:22:06,270 --> 01:22:10,750 >> Dan cara yang anda secara fizikal boleh membuat dalam piksel besar 1796 01:22:10,750 --> 01:22:13,380 adalah bahawa anda boleh menulis baru RGB-- ingat, RGB, 1797 01:22:13,380 --> 01:22:17,784 semua yang berdiri adalah merah, hijau, dan piksel blue-- ke fail keluar. 1798 01:22:17,784 --> 01:22:20,200 Dan anda akan mahu mempunyai jumlah yang berbeza daripada apa yang 1799 01:22:20,200 --> 01:22:21,200 kita panggil padding. 1800 01:22:21,200 --> 01:22:24,780 Semua padding IS adalah ruang sebelum dan selepas gambar 1801 01:22:24,780 --> 01:22:29,265 yang memberitahu your-- dasarnya yang memberitahu gambar anda bagaimana besar ia 1802 01:22:29,265 --> 01:22:30,589 perlu mengambil sehingga. 1803 01:22:30,589 --> 01:22:33,630 Ini adalah sangat abstrak untuk banyak anda jika anda tidak membaca spec pset, 1804 01:22:33,630 --> 01:22:35,410 tetapi ia akan menjadi sangat berguna untuk apabila 1805 01:22:35,410 --> 01:22:36,460 anda sebenarnya membaca melaluinya. 1806 01:22:36,460 --> 01:22:38,126 Anda seperti, oh, ya, yang masuk akal. 1807 01:22:38,126 --> 01:22:39,310 Mengapa saya perlu lakukan ini? 1808 01:22:39,310 --> 01:22:41,830 Masuk akal. 1809 01:22:41,830 --> 01:22:46,900 >> Akhir sekali, ini mungkin salah satu program yang paling mengecewakan 1810 01:22:46,900 --> 01:22:51,160 pernah hanya kerana anda tidak boleh memberitahu jika ia bekerja atau tidak. 1811 01:22:51,160 --> 01:22:54,980 Semua program ini, pulih, adalah lakukan adalah bahawa, jika berjalan dengan baik, 1812 01:22:54,980 --> 01:22:59,290 ia akan dapat untuk tiba-tiba pulih 50 imej yang 1813 01:22:59,290 --> 01:23:01,025 telah hilang pada cakera keras kami. 1814 01:23:01,025 --> 01:23:03,900 Dan sebagainya masalah dengan program ini adalah bahawa anda tidak boleh benar-benar menguji 1815 01:23:03,900 --> 01:23:06,220 kerana sama ada anda pulih mereka atau anda tidak. 1816 01:23:06,220 --> 01:23:09,122 Dan supaya anda jenis hanya perlu bermain-main dengannya, 1817 01:23:09,122 --> 01:23:11,080 dan jika program anda adalah berfungsi dengan betul, anda akan 1818 01:23:11,080 --> 01:23:12,829 tiba-tiba melihat bahawa dalam direktori anda, anda telah 1819 01:23:12,829 --> 01:23:17,400 mendapat jumlah gergasi gambar yang kini di sana. 1820 01:23:17,400 --> 01:23:20,490 >> Jadi bagaimana aku akan menghadap masalah ini adalah, kami 1821 01:23:20,490 --> 01:23:22,860 akan memberi anda apa yang dipanggil fail card.raw. 1822 01:23:22,860 --> 01:23:25,020 Pada dasarnya, itu hanya fail yang rosak 1823 01:23:25,020 --> 01:23:28,870 dengan semua gambar-gambar yang disimpan anda akan perlu untuk mendapatkan kembali daripada. 1824 01:23:28,870 --> 01:23:32,330 Jadi, anda mungkin akan mahu kepada input card.raw anda, atau terbuka, 1825 01:23:32,330 --> 01:23:35,510 fail card.raw anda dan anda akan mahu untuk memanipulasi 1826 01:23:35,510 --> 01:23:37,840 ia dapat menyimpan JPEG. 1827 01:23:37,840 --> 01:23:42,830 >> Jadi saya akan bermula dengan menjejaki dan menyimpan setiap individu JPEG sebagai anda menemuinya. 1828 01:23:42,830 --> 01:23:47,180 Anda tidak akan secara individu semua tiba-tiba hanya membuat semua 50 JPEG. 1829 01:23:47,180 --> 01:23:50,190 Anda akan mahu menyimpan mengesan berapa banyak anda membuka. 1830 01:23:50,190 --> 01:23:52,015 Dan kemudian anda mahu memastikan, apabila anda 1831 01:23:52,015 --> 01:23:54,640 bertulis kepada buffer-- yang anda semua akan tahu apa yang saya bercakap tentang 1832 01:23:54,640 --> 01:23:57,806 sebaik sahaja anda membaca spec-- yang anda mahu memastikan bahawa anda menggunakan tidak ditandatangani 1833 01:23:57,806 --> 01:23:59,370 penampan char. 1834 01:23:59,370 --> 01:24:01,790 >> Dan kemudian anda ingin bertanya diri persoalan, 1835 01:24:01,790 --> 01:24:05,797 berapa banyak bait berada dalam CF-- berada dalam fail kad? 1836 01:24:05,797 --> 01:24:08,380 Itulah berapa banyak anda akan mahu membaca ke dalam buffer anda. 1837 01:24:08,380 --> 01:24:11,130 Anda akan ingin memastikan align dua kerana anda 1838 01:24:11,130 --> 01:24:12,850 tidak akan mempunyai memori rawak bocor keluar. 1839 01:24:12,850 --> 01:24:15,370 Anda tahu dengan tepat berapa banyak bait yang anda perlukan dan bagaimana banyak 1840 01:24:15,370 --> 01:24:18,270 bait yang anda ingin ia mempunyai. 1841 01:24:18,270 --> 01:24:21,510 >> Dan kemudian akhirnya, anda mahu menggunakan fungsi yang dipanggil sprint-- 1842 01:24:21,510 --> 01:24:26,160 Cetakan f-- untuk menjana fail adat nama-nama untuk setiap JPEG baru yang anda mencari. 1843 01:24:26,160 --> 01:24:29,129 Jadi seperti yang anda membuat dan mencari JPEG dalam kad anda, 1844 01:24:29,129 --> 01:24:31,170 anda akan mahu menyimpan mereka dan menamakan mereka. 1845 01:24:31,170 --> 01:24:31,700 Betul? 1846 01:24:31,700 --> 01:24:33,700 Dan supaya anda akan hendak menggunakan fungsi yang 1847 01:24:33,700 --> 01:24:36,770 untuk mewujudkan nama-nama yang boleh menyimpan semua JPEG anda. 1848 01:24:36,770 --> 01:24:41,062 >> Dan akhir sekali, jangan lupa untuk menutup setiap JPEG selepas anda selesai. 1849 01:24:41,062 --> 01:24:42,770 Kerana apa yang anda akan lakukan adalah anda berada 1850 01:24:42,770 --> 01:24:44,728 akan mungkin mempunyai beberapa jenis gelung yang 1851 01:24:44,728 --> 01:24:46,470 iterates melalui semua JPEG anda. 1852 01:24:46,470 --> 01:24:50,460 Anda akan menulis JPEG dan menamakan ia sebagai anda menemuinya. 1853 01:24:50,460 --> 01:24:52,870 Tetapi selepas anda selesai dengan setiap satu JPEG, 1854 01:24:52,870 --> 01:24:56,630 anda perlu menutupnya supaya anda boleh mula lebih dan bergerak ke gambar seterusnya. 1855 01:24:56,630 --> 01:24:58,880 Dan sebagainya sesuatu yang benar-benar menyeronokkan yang kita suka lakukan, 1856 01:24:58,880 --> 01:25:03,430 kerana ini adalah apa-apa masalah pelik menetapkan tetapi juga masalah weirdly memuaskan 1857 01:25:03,430 --> 01:25:08,380 yang ditetapkan, adalah bahawa semua gambar-gambar yang kita ada untuk anda, jika anda pulih dengan baik, 1858 01:25:08,380 --> 01:25:11,910 semua gambar-gambar adalah gambar-gambar tenaga pengajar yang indah anda, kedua-dua 1859 01:25:11,910 --> 01:25:14,240 Harvard, di sini-- dan di sini di Yale. 1860 01:25:14,240 --> 01:25:17,260 Dan jika anda berlaku untuk mendapatkan semula semua gambar-gambar ini 1861 01:25:17,260 --> 01:25:20,020 dan mengenal pasti kakitangan ahli-ahli dalam kad-kad, 1862 01:25:20,020 --> 01:25:23,040 dan mengambil selfies kami jika anda mencari kami di sekitar kampus, 1863 01:25:23,040 --> 01:25:28,270 untuk setiap gambar yang anda hantar kepada kami, kami akan memberikan anda satu gigabait ruang Dropbox. 1864 01:25:28,270 --> 01:25:30,060 >> Jadi mari kita buat matematik di sini. 1865 01:25:30,060 --> 01:25:33,010 Jika ada 50 gambar dan 50 ahli tenaga pengajar, 1866 01:25:33,010 --> 01:25:37,160 jika anda berlaku untuk mencari semua 50 daripada kita, itu 50 gigabait Dropbox, 1867 01:25:37,160 --> 01:25:39,000 pada dasarnya, kami akan memberikan anda semua. 1868 01:25:39,000 --> 01:25:42,380 Jadi beberapa insentif menambah tambahan jika anda semua tidak hanya 1869 01:25:42,380 --> 01:25:44,480 mengambil berat tentang pulih kehilangan imej. 1870 01:25:44,480 --> 01:25:46,867 Terdapat juga beberapa insentif tambahan. 1871 01:25:46,867 --> 01:25:47,825 Ia adalah satu set masalah menyeronokkan. 1872 01:25:47,825 --> 01:25:48,390 Yang sebenarnya. 1873 01:25:48,390 --> 01:25:51,980 Ia adalah jenis mengecewakan tetapi kemudian ia menjadi benar-benar menyeronokkan apabila anda sedar, 1874 01:25:51,980 --> 01:25:54,230 wow, ia bekerja dan sekarang saya mempunyai semua gambar-gambar ini 1875 01:25:54,230 --> 01:25:55,604 bahawa saya baru sahaja dicipta oleh diri saya sendiri. 1876 01:25:55,604 --> 01:25:58,800 1877 01:25:58,800 --> 01:26:00,075 >> Sebarang pertanyaan mengenai pset? 1878 01:26:00,075 --> 01:26:02,408 Bagi sesiapa yang sudah bermula, jika anda mempunyai soalan, 1879 01:26:02,408 --> 01:26:06,510 Saya akan berada di sini untuk beberapa minit selepas seksyen jika anda mahu bercakap dengan saya. 1880 01:26:06,510 --> 01:26:07,320 Syabas, guys. 1881 01:26:07,320 --> 01:26:10,520 Saya minta maaf, saya maklumat dibuang di anda semua. 1882 01:26:10,520 --> 01:26:13,670 Penunjuk benar-benar, benar-benar mencabar dan mengecewakan. 1883 01:26:13,670 --> 01:26:16,187 >> Dan saya benar-benar gembira kerana kamu tinggal bersama saya. 1884 01:26:16,187 --> 01:26:18,020 Kami akan bercakap lebih mendalam kira-kira seminggu yang akan datang 1885 01:26:18,020 --> 01:26:21,330 seperti yang kita mula melakukan jadual hash dan lebih banyak fungsi yang melibatkan mereka. 1886 01:26:21,330 --> 01:26:23,821 1887 01:26:23,821 --> 01:26:24,320 Yeah. 1888 01:26:24,320 --> 01:26:26,278 Jadi, jika sesiapa yang mempunyai apa-apa soalan, saya akan berada di sekeliling. 1889 01:26:26,278 --> 01:26:29,330 Terima kasih kerana datang dan mengambil lebih gula-gula kerana ada lagi gula-gula. 1890 01:26:29,330 --> 01:26:32,220 1891 01:26:32,220 --> 01:26:33,770 Sejuk. 1892 01:26:33,770 --> 01:26:35,765