1 00:00:00,000 --> 00:00:02,670 >> [TEMA MUZIK] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Hi, semua orang. 4 00:00:13,365 --> 00:00:14,365 Selamat kembali ke bahagian. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Lovely hari out-- itulah sebabnya, saya pasti, terdapat hanya empat daripada anda di sini 7 00:00:18,700 --> 00:00:21,180 dan tidak pek biasa kami. 8 00:00:21,180 --> 00:00:22,670 Saya sakit hujung minggu ini. 9 00:00:22,670 --> 00:00:24,294 Jadi, saya tidak mempunyai Starburst untuk kalian. 10 00:00:24,294 --> 00:00:26,400 Dan saya boleh mula batuk betul-betul di seluruh ini. 11 00:00:26,400 --> 00:00:27,790 Jadi, beruang dengan saya. 12 00:00:27,790 --> 00:00:30,624 Saya akan benar-benar cuba dan melalui ini pertama, 13 00:00:30,624 --> 00:00:32,290 walaupun, sebelum saya mempunyai serangan batuk. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Tetapi mudah pada saya sedikit bit-- itulah yang saya minta. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Jadi agenda kami untuk today-- hanya reminder-- kuiz anda adalah minggu depan. 18 00:00:44,289 --> 00:00:46,830 Saya katakan minggu lepas ini sehingga tidak akan menangkap anda tidak bersedia. 19 00:00:46,830 --> 00:00:47,954 Jadi, saya mengingatkan anda lagi. 20 00:00:47,954 --> 00:00:49,180 Minggu depan kuiz anda. 21 00:00:49,180 --> 00:00:52,730 Untuk itu, minggu depan seksyen akan lebih 22 00:00:52,730 --> 00:00:55,180 daripada- saya akan cuba dan bekerja di beberapa kajian. 23 00:00:55,180 --> 00:00:58,130 Jadi, jika anda semua boleh membantu saya dengan menghantar saya 24 00:00:58,130 --> 00:01:00,990 perkara-perkara yang anda selesa dengan, bahawa anda bimbang tentang, 25 00:01:00,990 --> 00:01:03,530 topik-topik yang anda ingin untuk saya untuk menutup, yang akan menjadi besar. 26 00:01:03,530 --> 00:01:05,740 Jadi saya boleh berusaha dan bekerja mereka ke dalam seksyen kami minggu depan 27 00:01:05,740 --> 00:01:11,540 atau menghantar bahan tambahan atau persediaan bahawa anda tidak mungkin akan mendapat tempat lain. 28 00:01:11,540 --> 00:01:12,150 >> Yeah! 29 00:01:12,150 --> 00:01:13,520 Lebih ramai orang datang! 30 00:01:13,520 --> 00:01:17,320 Saya fikir, saya melakukan itu buruk lalu minggu, bahawa tidak ada yang mahu kembali? 31 00:01:17,320 --> 00:01:18,065 Aku takut. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Sehingga tiga perkara bahawa kita akan pergi ke 34 00:01:21,100 --> 00:01:24,850 adalah pengalihan, fail I / O, dan maka petunjuk dan ingatan dinamik. 35 00:01:24,850 --> 00:01:29,160 Saya pasti anda semua super teruja pointers-- topik kegemaran semua orang, 36 00:01:29,160 --> 00:01:31,310 begitu mudah untuk difahami. 37 00:01:31,310 --> 00:01:33,130 Saya pasti kalian semua mendapat itu, kan? 38 00:01:33,130 --> 00:01:39,510 >> Jadi perkara pertama yang pertama, redirection-- ini adalah pada dasarnya hanya cara yang 39 00:01:39,510 --> 00:01:42,920 untuk mengawal bagaimana anda input perkara-perkara ke dalam program anda, 40 00:01:42,920 --> 00:01:44,606 bagaimana kamu perkara-perkara output daripada program anda. 41 00:01:44,606 --> 00:01:46,980 Cara utama yang kalian telah berinteraksi dengannya 42 00:01:46,980 --> 00:01:51,650 hanya di seluruh standard dengan skrin cetak anda di sini. 43 00:01:51,650 --> 00:01:55,940 Tetapi ada cara untuk pipe-- seperti yang kita lihat di sini 44 00:01:55,940 --> 00:01:58,980 adalah salah satu jenis words-- kami paip bahawa maklumat 45 00:01:58,980 --> 00:02:02,850 atau data ke dalam fail dari fail. 46 00:02:02,850 --> 00:02:05,820 Ini hanya berbeda cara mendapatkan sesuatu ke dalam program anda 47 00:02:05,820 --> 00:02:10,681 dan keluar dari program anda, bukan hanya mencetak mereka ke layar ini 48 00:02:10,681 --> 00:02:12,430 atau memasukkan perkara daripada baris arahan. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Jadi yang pertama adalah sedikit lebih besar daripada tanda sisipan. 51 00:02:18,030 --> 00:02:22,085 Jadi output-- ia hanya mencetak output ke file bukan skrin anda. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Jadi jika anda mempunyai sesuatu yang dicetak "Hello, world!" dengan skrin, 54 00:02:29,500 --> 00:02:32,400 jika anda meletakkan ia bukan untuk output.text, yang 55 00:02:32,400 --> 00:02:35,220 mencipta fail ini dipanggil output.text. 56 00:02:35,220 --> 00:02:38,550 Dan apabila anda membukanya, itu akan berkata "Hello, world!" di sana. 57 00:02:38,550 --> 00:02:41,410 Ini akan menjadi sangat berguna jika anda mempunyai satu tan kesalahan 58 00:02:41,410 --> 00:02:43,430 sebenarnya, seperti yang kita lihat dalam satu ini. 59 00:02:43,430 --> 00:02:46,810 Jika anda melakukan dua tanda sisipan, itu akan mencetak mesej ralat. 60 00:02:46,810 --> 00:02:52,090 >> Jadi, jika anda mempunyai masalah dengan kompilasi, ia mempunyai banyak kesalahan 61 00:02:52,090 --> 00:02:56,770 dan anda macet di cuba untuk menatal di baris perintah 62 00:02:56,770 --> 00:02:59,110 melalui semua mereka, anda boleh hanya mencetak mereka untuk fail, 63 00:02:59,110 --> 00:03:02,130 membuka fail itu sehingga Anda boleh menatal melalui mereka lebih mudah. 64 00:03:02,130 --> 00:03:05,160 Saya benar-benar digunakan bahawa banyak apabila saya debug 65 00:03:05,160 --> 00:03:07,970 181 pşet saya untuk pembelajaran mesin. 66 00:03:07,970 --> 00:03:10,000 Jadi ia akan menjadi sangat berguna di kemudian hari. 67 00:03:10,000 --> 00:03:18,370 Ia juga berguna jika anda mempunyai program bahawa mungkin menghasilkan perpustakaan 68 00:03:18,370 --> 00:03:20,430 atau menghasilkan beberapa set string, dan anda 69 00:03:20,430 --> 00:03:22,846 harus dapat melihat bahawa ia menghasilkan mereka dengan betul. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Ini adalah cara untuk melakukan itu. 72 00:03:25,160 --> 00:03:28,280 >> Jadi jika anda mencetak mereka untuk fail, anda lebih mudah dapat memeriksa mereka, kan? 73 00:03:28,280 --> 00:03:30,930 Versus cuba untuk menatal melalui baris arahan anda. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 Dan kemudian satu hal yang perlu diperhatikan adalah bahawa hanya dengan lebih besar 76 00:03:35,820 --> 00:03:40,090 daripada tanda sisipan, jika anda menulis untuk fail yang sudah exists-- 77 00:03:40,090 --> 00:03:44,990 jadi seperti jika kita berlari ini pertama masa, kami meletakkannya untuk output.text, 78 00:03:44,990 --> 00:03:49,970 dan kemudian kita mempunyai program kedua yang dicetak ini sebagai program dua 79 00:03:49,970 --> 00:03:54,250 dan melakukan yang lebih besar daripada kepada output.text, ia akan menimpa bahawa- jadi 80 00:03:54,250 --> 00:03:56,715 menulis ganti apa yang pernah di fail yang bermula dengan. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Jadi, jika anda mahu menambah ke fail, seperti yang kita lihat di sini, 83 00:04:00,750 --> 00:04:04,779 Anda hanya melakukan dua lebih besar daripada tanda-tanda. 84 00:04:04,779 --> 00:04:05,820 Dan ia akan menambahkan kepadanya. 85 00:04:05,820 --> 00:04:06,750 Ia tidak akan menimpanya. 86 00:04:06,750 --> 00:04:09,770 Jadi, jika anda perlu untuk menjalankan beberapa program dan jenis tetap 87 00:04:09,770 --> 00:04:13,170 menjejaki apa yang semua dari mereka adalah kembali kepada anda dalam fail, 88 00:04:13,170 --> 00:04:14,190 itu adalah satu cara untuk melakukannya. 89 00:04:14,190 --> 00:04:17,231 Jika anda tidak peduli apa yang ada di fail anda dan ia dibenarkan untuk ditulis ganti, 90 00:04:17,231 --> 00:04:19,204 Anda hanya boleh menggunakan lebih daripada satu. 91 00:04:19,204 --> 00:04:20,600 Adakah ini masuk akal untuk semua orang? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> PENONTON: Seperti dot mengurangkan hello lebih besar daripada teks output titik, seperti dua kali, 94 00:04:31,140 --> 00:04:34,030 ia hanya akan hanya menunjukkan pada output teks titik time-- kedua 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Benar. 96 00:04:34,810 --> 00:04:40,450 Jadi ia akan pada dasarnya hanya benar-benar menulis ganti apa yang ada di sana untuk memulakan. 97 00:04:40,450 --> 00:04:44,260 Jika fail ini di sini, output.text sudah 98 00:04:44,260 --> 00:04:48,230 ada, pada dasarnya apa sahaja yang anda panggil itu lagi dengan yang lebih besar tunggal 99 00:04:48,230 --> 00:04:51,920 daripada apa yang anda hanya dapat menganggap itu sebagai seperti gantikan fail. 100 00:04:51,920 --> 00:04:54,824 Seperti apabila anda menyimpan Word dokumen dan anda save as, 101 00:04:54,824 --> 00:04:57,365 dan anda menyimpan nama yang sama, dan ia benar-benar akan menimpa itu-- 102 00:04:57,365 --> 00:04:58,680 ini adalah beberapa perkara yang sama itu. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Sesiapa yang mempunyai sebarang soalan mengenai hanya keluarkan kepada gambar? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Awesome. 107 00:05:05,550 --> 00:05:11,440 >> Jadi jelas, jika anda membalikkan arrow arahan, ia boleh melakukan input. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Oleh itu, apabila kalian punya seperti Caesar atau Visioneer 110 00:05:19,960 --> 00:05:23,195 dan anda harus input sesuatu, Anda mempunyai barisan hujah perintah 111 00:05:23,195 --> 00:05:24,960 yang benar-benar input itu. 112 00:05:24,960 --> 00:05:27,410 Ini adalah satu lagi cara untuk melakukan itu. 113 00:05:27,410 --> 00:05:30,520 Jadi, daripada menunggu untuk command prompt, 114 00:05:30,520 --> 00:05:33,800 seperti apabila anda meminta anda mesej dalam Caesar atau Visioneer, 115 00:05:33,800 --> 00:05:36,490 jika anda mempunyai fail teks yang mempunyai mesej anda, 116 00:05:36,490 --> 00:05:38,280 Anda hanya boleh taip ke dalam. 117 00:05:38,280 --> 00:05:44,930 >> Jadi, jika ini adalah seperti dot mengurangkan Caesar 3 kurang daripada teks input panah, yang 118 00:05:44,930 --> 00:05:47,240 adalah mesej anda, yang akan berjalan dengan baik. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Ketika program Caesar anda sebenarnya meminta input daripada pengguna, 121 00:05:54,020 --> 00:05:57,360 itu sudah akan memilikinya kerana Anda telah ditaip dalam fail ini. 122 00:05:57,360 --> 00:05:58,830 Itu hanya cara yang lain. 123 00:05:58,830 --> 00:06:02,445 Hanya belakang output-- hanya input untuk data anda. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> Dan kemudian yang terakhir adalah paip. 126 00:06:06,680 --> 00:06:07,780 Begitu sejuk cantik ini seseorang. 127 00:06:07,780 --> 00:06:09,890 Kerana ia membolehkan anda untuk mengambil output dari satu 128 00:06:09,890 --> 00:06:13,695 program dan meletakkannya sebagai input kepada program lain. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Saya tidak tahu jika ada di antara kalian bermain dengan menguraikan yang 131 00:06:18,630 --> 00:06:20,590 CS50 yang mungkin mempunyai diberikan anda, tetapi ia akan 132 00:06:20,590 --> 00:06:27,380 membolehkan anda untuk mengambil sampel beberapa fail, ketik ke penyulitan anda, 133 00:06:27,380 --> 00:06:30,350 dan kemudian dari sana menaip itu ke dalam penyahsulitan anda 134 00:06:30,350 --> 00:06:32,470 memastikan ternyata yang sama. 135 00:06:32,470 --> 00:06:34,050 Jadi ia adalah jenis seperti tiga arah gelung. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Pergi untuk itu. 138 00:06:39,423 --> 00:06:41,785 >> PENONTON: Jika program mempunyai beberapa input, 139 00:06:41,785 --> 00:06:47,646 adakah cara untuk menceritakannya yang input menggunakan fail teks atau keluaran bagi? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Ia mempunyai beberapa masukan. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Apa pun memfailkan input-- anda ketika itu meminta input yang kali pertama, ia 143 00:07:00,430 --> 00:07:03,240 akan menganggap, saya rasa, itu akan paip di seluruh fail. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Jadi jika anda mempunyai beberapa input, anda akan bungkusan dalam beberapa file. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Jadi, jika anda meminta untuk mesej tiga kali dalam kod anda, 148 00:07:12,390 --> 00:07:15,230 Anda akan meletakkan dalam tiga fail yang berbeza. 149 00:07:15,230 --> 00:07:15,980 Dan ia menjadi gila. 150 00:07:15,980 --> 00:07:18,188 Dan anda tidak perlu bimbang tentang itu sekarang. 151 00:07:18,188 --> 00:07:19,150 Tapi itu idea. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Jadi ya, paip adalah output hanya satu program menggunakan input ke yang lain. 154 00:07:26,822 --> 00:07:27,665 Semua orang yang baik di sana? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Sejuk. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 159 00:07:30,932 --> 00:07:32,890 Anda mungkin tidak akan mempunyai melakukan terlalu banyak dengan itu. 160 00:07:32,890 --> 00:07:35,670 Tetapi anda perlu memahami cara-cara yang anda boleh menggunakan ini. 161 00:07:35,670 --> 00:07:38,910 Dan ada beberapa kes-kes yang Anda mungkin ingin menggunakannya. 162 00:07:38,910 --> 00:07:44,590 >> Jadi memfailkan I / O-- Saya tahu apa yang anda saying-- kita terbiasa membaca dari 163 00:07:44,590 --> 00:07:50,500 dan menulis ke skrin kami di sana, yang merupakan standard dalam dan standard keluar. 164 00:07:50,500 --> 00:07:54,370 Dan itulah apa yang kalian telah lakukan sejak awal kelas di sini. 165 00:07:54,370 --> 00:07:58,220 Tetapi anda juga boleh membaca dan menulis fail, yang semua fail I / O-- jadi file input, 166 00:07:58,220 --> 00:07:59,850 keluaran ialah semua itu singkatan. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Jadi ini pada dasarnya bermakna bahawa Anda boleh menyimpan data anda sekarang. 169 00:08:04,360 --> 00:08:08,460 >> Apabila anda hanya mencetak ke skrin, itu pada dasarnya pergi, kan? 170 00:08:08,460 --> 00:08:12,507 Sebaik sahaja anda membuat "Hello dunia "dan lari" Hello world " 171 00:08:12,507 --> 00:08:14,090 ia mencetak "Hello world" ke layar. 172 00:08:14,090 --> 00:08:16,370 Tetapi anda tidak boleh benar-benar apa-apa dengan itu dari sana. 173 00:08:16,370 --> 00:08:18,950 Jika anda menyimpan dalam teks fail, kemudian tiba-tiba 174 00:08:18,950 --> 00:08:22,789 anda mempunyai data ini yang anda dibenarkan untuk memanipulasi atau memasukkannya ke dalam fail, 175 00:08:22,789 --> 00:08:24,080 atau memasukkannya ke dalam program yang akan datang. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Salah satu sebab mengapa kita lakukan ini adalah hanya 178 00:08:29,290 --> 00:08:31,560 sebagai satu cara untuk menyimpan data untuk kegunaan kemudian. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Saya mempunyai beberapa langkah di sini hanya berjalan melalui standard 181 00:08:37,279 --> 00:08:39,450 I / O. Pada langkah pertama, anda perlu membuat rujukan 182 00:08:39,450 --> 00:08:43,480 untuk fail dengan semua topi FILE fail bintang. 183 00:08:43,480 --> 00:08:45,740 Jadi yang menciptakan pointer ke fail. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Jadi maka anda mahu untuk membukanya. 186 00:08:49,650 --> 00:08:52,940 Dan anda berkata, secara harfiah, hanya berkas sama fopen. 187 00:08:52,940 --> 00:08:57,400 Dan ini akan mengembalikan pointer ke fail yang anda baru sahaja dibuka. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Saya melihat beberapa anda orang-orang di waktu pejabat. 190 00:09:01,460 --> 00:09:07,400 >> Tetapi salah satu perkara yang adalah petunjuk remember-- 191 00:09:07,400 --> 00:09:10,409 dapat beberapa alamat atau batal, bukan? 192 00:09:10,409 --> 00:09:12,700 Jika kita pernah mempunyai kes di mana sesuatu yang dapat kembali batal, 193 00:09:12,700 --> 00:09:14,990 apa yang kita perlu lakukan sebelum kita menggunakannya? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Kita perlu untuk memeriksa jika itu batal atau tidak, bukan? 196 00:09:19,000 --> 00:09:23,600 Oleh kerana ada di antara kamu mungkin mempunyai isu di mana apa sahaja objek 197 00:09:23,600 --> 00:09:26,110 telah dipulangkan dalam pelarian adalah tidak sah. 198 00:09:26,110 --> 00:09:28,170 Anda telah cuba untuk melakukan beberapa fungsi di atasnya. 199 00:09:28,170 --> 00:09:29,770 Dan tapak komputer anda menyalahkan. 200 00:09:29,770 --> 00:09:30,725 Betul? 201 00:09:30,725 --> 00:09:33,640 Saya yakin beberapa anda mungkin mempunyai masalah itu. 202 00:09:33,640 --> 00:09:38,890 >> Jadi dengan fopen, fopen akan baik kembali pointer ke fail, 203 00:09:38,890 --> 00:09:41,200 atau jika ada masalah, ia akan kembali null. 204 00:09:41,200 --> 00:09:45,980 Jadi, anda sentiasa perlu menyemak bahawa ia telah tidak dikembalikan batal 205 00:09:45,980 --> 00:09:47,880 sebelum anda cuba untuk berbuat apa-apa lagi. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Ini seperti paradigma standard bahawa anda akan perlu di sini. 208 00:09:51,974 --> 00:09:54,390 Jika ada yang pernah peluang yang sesuatu yang dapat kembali batal, 209 00:09:54,390 --> 00:09:56,590 periksa untuk memastikan ia tidak sebelum anda meneruskan. 210 00:09:56,590 --> 00:09:58,911 Jika tidak, anda akan untuk mendapatkan kesalahan tapak indah. 211 00:09:58,911 --> 00:10:00,410 Dan tiada siapa yang suka untuk berurusan dengan orang-orang. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Jadi seperti yang kita lihat di sini, argumen pertama hanya laluan untuk fail. 214 00:10:06,410 --> 00:10:09,380 Jika fail yang tidak wujud, ia akan membuat fail itu. 215 00:10:09,380 --> 00:10:10,713 Dan ia hanya akan menjadi kosong. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 Dan kemudian hujah kedua adalah mod yang anda mahu. 218 00:10:13,080 --> 00:10:14,610 Adakah kita mahu membaca dari fail ini? 219 00:10:14,610 --> 00:10:15,560 Adakah anda ingin menulis dari itu? 220 00:10:15,560 --> 00:10:16,476 Adakah anda ingin tambah? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Jadi sebenarnya apa yang saya hanya said-- jika fail yang tidak wujud 223 00:10:20,670 --> 00:10:23,400 dan anda cuba untuk membaca dari itu, ia akan membuang ralat. 224 00:10:23,400 --> 00:10:26,890 Jika fail name-- suka jika file.text tidak wujud lagi 225 00:10:26,890 --> 00:10:29,250 dan anda mahu menulis kepadanya, ia akan mewujudkan 226 00:10:29,250 --> 00:10:33,110 fail kosong dipanggil file.text untuk anda. 227 00:10:33,110 --> 00:10:36,612 Dan jika anda mahu untuk menambah, yang perlu anda lakukan perkara yang sama. 228 00:10:36,612 --> 00:10:38,081 Adakah ini masuk akal? 229 00:10:38,081 --> 00:10:40,580 Jika anda cuba untuk membaca dari fail yang tidak wujud lagi, 230 00:10:40,580 --> 00:10:41,590 ia akan membuang ralat. 231 00:10:41,590 --> 00:10:44,340 Jika tidak, ia akan mewujudkan fail untuk anda melakukan apa yang anda mahu ia. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Sejuk. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Sekarang kita dapat membaca dari fail. 236 00:10:48,880 --> 00:10:52,570 Dan ini hanya seperti hendak pergi melalui fungsi yang berbeza 237 00:10:52,570 --> 00:10:58,980 bahawa kita mempunyai untuk fail I / O. Kemahuan ini diperlukan dalam Serangga minggu ini, 238 00:10:58,980 --> 00:11:00,505 kalau tak salah ingatan. 239 00:11:00,505 --> 00:11:02,880 Ya, ia benar-benar akan diperlukan dalam Serangga minggu ini. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Jadi fgetc mengembalikan aksara seterusnya. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets hanya mengembalikan baris teks. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Ini akan mengembalikan apa-apa sehingga baris baru, dan ia akan pecah. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Jadi fread membaca tertentu jumlah byte dan tempat-tempat mereka 248 00:11:18,700 --> 00:11:20,700 ke dalam array, yang adalah sesuatu yang mungkin 249 00:11:20,700 --> 00:11:25,485 mahu lakukan dengan semula Size-- mungkin berguna. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Berapa ramai orang telah membaca spec Serangga yang, dengan cara itu? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 OK. 254 00:11:32,261 --> 00:11:32,760 [Terdengar] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: OK. 257 00:11:36,580 --> 00:11:37,530 Baik. 258 00:11:37,530 --> 00:11:41,940 Jelas membaca bahawa- itu adalah Serangga menyeronokkan. 259 00:11:41,940 --> 00:11:51,320 Anda dapat memulihkan memori yang dihapuskan card-- benar-benar mengujakan apabila ia berfungsi. 260 00:11:51,320 --> 00:11:54,100 Tapi yang pasti, mula membaca itu. 261 00:11:54,100 --> 00:11:56,280 Datang bercakap dengan saya jika anda ada soalan tentang hal itu. 262 00:11:56,280 --> 00:11:59,290 >> OK, jadi seperti yang saya katakan, fread membaca sejumlah bait. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Itulah beberapa jumlah yang sewenang-wenang bahawa anda akan ditetapkan. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 Dan kemudian fseek hanya bergerak kepada kedudukan yang tertentu. 267 00:12:08,260 --> 00:12:11,150 Jadi mungkin anda tidak peduli lebih kurang 10 bait berikutnya. 268 00:12:11,150 --> 00:12:12,880 Anda hanya mahu langkau ke depan. 269 00:12:12,880 --> 00:12:14,030 Anda tidak mengambil berat tentang mereka. 270 00:12:14,030 --> 00:12:16,280 Anda ingin membaca bermula di bait 11. 271 00:12:16,280 --> 00:12:18,252 fseek membolehkan anda untuk melakukan itu. 272 00:12:18,252 --> 00:12:20,710 Oleh itu, ia membolehkan anda untuk menjadi selektif tentang apa yang anda baca. 273 00:12:20,710 --> 00:12:25,880 Kerana fgetc, fgets dan fread membaca dari tempat yang tertentu dalam fail. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Satu cara untuk berfikir tentang hal ini adalah jika ini adalah fail kami, apabila anda pertama membukanya, 276 00:12:35,090 --> 00:12:41,140 anda mempunyai kedudukan ini dalam fail yang bermula pada awal. 277 00:12:41,140 --> 00:12:45,040 Setiap kali anda membuat panggilan fgetc, fgetf, atau fread, 278 00:12:45,040 --> 00:12:48,875 ia akan bermula dari ini penanda kedudukan. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Katakan anda hanya ingin membaca chunk ini ingatan di sini. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Anda tidak boleh hanya memanggil. 283 00:12:57,960 --> 00:13:02,430 Anda perlu mencari di sini dan kemudian membaca dari sana 284 00:13:02,430 --> 00:13:06,540 atau membaca, mendapat, atau getc, bergantung kepada apa yang anda mahu. 285 00:13:06,540 --> 00:13:09,310 Jadi mencari hanya membolehkan anda melangkau bahagian-bahagian ingatan. 286 00:13:09,310 --> 00:13:11,590 Dan itulah satu-satunya cara yang anda boleh melangkau perkara 287 00:13:11,590 --> 00:13:14,012 tanpa membacanya ke dalam buffer anda. 288 00:13:14,012 --> 00:13:15,470 Adakah ini masuk akal untuk semua orang? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Jelas sekali, terdapat satu banyak di sini-selari 291 00:13:24,780 --> 00:13:27,780 pengalihan output, atau masukan kami, anda telah membaca dan menulis. 292 00:13:27,780 --> 00:13:31,800 Jadi fputc hanya menulis watak dalam fail. 293 00:13:31,800 --> 00:13:33,655 fputs menulis garis. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf mencetak output yang diformat. 296 00:13:37,420 --> 00:13:41,190 Jadi jika anda mempunyai tab, atau ruang, atau yang lainnya. 297 00:13:41,190 --> 00:13:44,180 Dan kemudian fwrite menulis beberapa array byte ke fail. 298 00:13:44,180 --> 00:13:48,860 Jadi, ini adalah cara yang sama fwrite dan fread analog 299 00:13:48,860 --> 00:13:57,550 fgets opposites--, fputs, dan kemudian fputc dan fgetc-- banyak 300 00:13:57,550 --> 00:14:00,710 gila, hal yang cepat. 301 00:14:00,710 --> 00:14:05,300 >> Hanya jenis menjaga handy-- ini Anda akan mempunyai masa yang berlainan 302 00:14:05,300 --> 00:14:08,680 mana mungkin anda hanya mahu satu aksara pada satu masa. 303 00:14:08,680 --> 00:14:09,890 Mungkin anda mahu seluruh baris. 304 00:14:09,890 --> 00:14:14,320 Dengan pset-- kamus anda yang ditulis dalam dua pşet, 305 00:14:14,320 --> 00:14:19,690 Saya percaya, kami memberikan keseluruhan kamus dalam format teks 306 00:14:19,690 --> 00:14:22,252 yang mempunyai setiap perkataan dipisahkan oleh garis. 307 00:14:22,252 --> 00:14:24,210 Jadi, jika anda ingin membaca dalam satu perkataan pada satu masa, 308 00:14:24,210 --> 00:14:31,769 apa yang anda mungkin gunakan jika anda sedang membaca dan mereka semua dipisahkan pada talian baru, 309 00:14:31,769 --> 00:14:33,310 dan anda hanya mahu satu perkataan pada satu masa? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> PENONTON: fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Benar. 313 00:14:36,748 --> 00:14:39,960 Fgets-- kerana yang mengembalikan apa yang ada pada satu baris. 314 00:14:39,960 --> 00:14:42,750 Dan jika setiap kata-nya baris sendiri, kita boleh menggunakan fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Sejuk. 317 00:14:45,010 --> 00:14:47,290 Adakah ini masuk akal, semua orang? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Ya, kita akan dapat bahagian yang menyeronokkan dengan pointer 320 00:14:50,020 --> 00:14:51,728 tidak lama lagi, di mana anda mendapatkan untuk melakukan matematik. 321 00:14:51,728 --> 00:14:52,776 Dan ia akan menjadi besar. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Lepas step-- menutup fail anda. 324 00:14:57,740 --> 00:15:01,090 Dengan begitu banyak perkara di sini, salah satu paradigma kami 325 00:15:01,090 --> 00:15:03,550 adalah jika ia dapat kembali batal, memeriksa null. 326 00:15:03,550 --> 00:15:06,160 Jika anda membuka sesuatu, Anda akan lebih baik menutupnya. 327 00:15:06,160 --> 00:15:10,419 OK, jadi anda tidak dilakukan sehingga anda dilakukan kecuali jika anda telah menutupnya. 328 00:15:10,419 --> 00:15:12,585 Jenis seperti ia tidak lebih sehingga wanita lemak menyanyi. 329 00:15:12,585 --> 00:15:14,130 Itu seperti menutup fail anda. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Seperti yang dikatakan di sini, hanya untuk mengulangi, selalu 332 00:15:19,190 --> 00:15:21,750 membuka fail anda sebelum anda membaca atau menulis kepadanya. 333 00:15:21,750 --> 00:15:24,450 Dan selalu menutupnya jika anda sudah membukanya. 334 00:15:24,450 --> 00:15:25,460 -Baik saja? 335 00:15:25,460 --> 00:15:25,960 Sejuk. 336 00:15:25,960 --> 00:15:26,835 >> Jadi, inilah satu contoh. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Jadi tiny-- Saya tidak tahu jika anda orang-orang dapat melihat bahawa dengan baik. 339 00:15:34,330 --> 00:15:36,805 Kalau saja kita boleh meningkatkan kecerahan entah bagaimana. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Biar saya benar-benar melakukan ini jika saya boleh. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, kalian tidak boleh benar-benar melihat bahawa sama sekali, boleh anda? 344 00:15:51,470 --> 00:15:52,905 OK, kita akan melakukan ini, maka. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Terdengar] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Saya menganggap ini adalah jauh lebih baik untuk melihat. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Sesiapa sahaja boleh melihat di mana saya tetikus pergi pertanyaannya? 351 00:17:19,455 --> 00:17:22,837 Ah, itu is-- apa perjuangan! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> OK. 354 00:17:49,520 --> 00:17:53,845 Pada dasarnya, anda semua perlu mempunyai jenis dari idea tentang apa ini lakukan. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Ia tidak sempurna. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Tapi aku lebih suka menjelaskannya daripada menghabiskan lebih banyak masa cuba untuk format itu benar. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Pada dasarnya, seperti yang anda lihat di sini, kita mulai dengan membuka fail. 361 00:18:07,280 --> 00:18:09,620 Dan kami mempunyai beberapa fail pangkalan data yang kami 362 00:18:09,620 --> 00:18:12,300 membuka mengatakan itu pelajar-pelajar kita. 363 00:18:12,300 --> 00:18:14,020 Dan kami akan menulis kepadanya. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Jadi, sudah tentu, kembali null. 366 00:18:17,720 --> 00:18:19,650 Oleh itu, kita perlu memeriksa null. 367 00:18:19,650 --> 00:18:22,930 Dan kemudian jika ia bukan batal, kita pergi melalui. 368 00:18:22,930 --> 00:18:25,660 Dan seperti yang anda lihat, kami tidak perulangan melalui sini. 369 00:18:25,660 --> 00:18:26,960 Ada pelajar. 370 00:18:26,960 --> 00:18:30,520 Pelajar adalah hash merujuk kepada tiga. 371 00:18:30,520 --> 00:18:34,060 Dan apa yang kami lakukan ialah kami mencetak ke fail, bukan? 372 00:18:34,060 --> 00:18:36,975 Jadi apa yang kita mencetak ke fail kita? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> PENONTON: Skor yang berada dalam array? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Ya. 376 00:18:49,680 --> 00:18:50,980 Skor yang berada dalam yang array-- tepat. 377 00:18:50,980 --> 00:18:53,050 Jadi kami membuka ini fail pangkalan data, yang 378 00:18:53,050 --> 00:18:56,040 Saya menganggap adalah semacam pangkalan data gred. 379 00:18:56,040 --> 00:19:01,100 Dan kami hanya mencetak yang markah setiap pelajar ke fail itu. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Baik. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Awesome. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Mari kita kembali kepada- 386 00:19:06,950 --> 00:19:08,646 >> PENONTON: Saya mempunyai soalan cepat. 387 00:19:08,646 --> 00:19:11,570 Apakah printf tidak untuk loop? 388 00:19:11,570 --> 00:19:12,870 Itu hanya dalam jika gelung? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Tidak, itu di dalam pengulangan. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Saya tidak dapat melihat tikus saya dengan baik di sini. 392 00:19:18,810 --> 00:19:21,359 Jadi, saya berjuang untuk format yang betul. 393 00:19:21,359 --> 00:19:22,525 Pendakap ini harus pergi. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Ia harus turun di sini. 396 00:19:25,130 --> 00:19:26,605 Ini adalah apa yang ada di anda untuk loop. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Ada. 399 00:20:11,180 --> 00:20:12,160 Sekarang ia cukup. 400 00:20:12,160 --> 00:20:16,720 Jadi itulah bagaimana ia harus adalah-- kecuali untuk itu kurungan terakhir yang saya ditolak. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Adakah ini masuk akal untuk semua orang? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Kami akan bergerak untuk perkara yang akan datang then-- 405 00:20:23,750 --> 00:20:26,180 yang, sebenarnya, anda akan perlu melihat kod. 406 00:20:26,180 --> 00:20:28,370 Jadi, saya hanya akan salinan yang lebih sekarang. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 OK. 409 00:20:32,000 --> 00:20:35,110 Jadi, saya akan menunjukkan kepada anda semua kod ini. 410 00:20:35,110 --> 00:20:38,240 Dan saya mahu anda untuk mencuba dan angka tahu apa yang seharusnya dilakukan. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Jadi diberikan bahawa- mengambil satu minit atau lebih. 413 00:20:52,480 --> 00:20:54,440 Cuba dan mencari tahu apa yang sedang berlaku di sini. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Apa-apa idea? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Kita tahu bahawa kita mempunyai sekurang-kurangnya dua hujah-hujah dalam baris arahan, kan? 418 00:22:12,470 --> 00:22:16,270 Saya menganggap salah satu yang akan menjadi bahawa [terdengar] dari program kami adalah 419 00:22:16,270 --> 00:22:17,530 dan kemudian sesuatu yang lain. 420 00:22:17,530 --> 00:22:19,980 Kerana jika [terdengar] kurang daripada dua orang, kita membentak mereka. 421 00:22:19,980 --> 00:22:21,140 Betul? 422 00:22:21,140 --> 00:22:25,300 Dan dari penggunaan, ia kelihatan seperti itu akan menjadi semacam fail. 423 00:22:25,300 --> 00:22:26,260 Kita semua setuju untuk itu? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Jadi sekarang, apa yang gelung lakukan? 426 00:22:31,570 --> 00:22:32,570 Apa yang ia akan melalui? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> PENONTON: Semua fail. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Tepat sekali. 430 00:22:37,240 --> 00:22:39,650 Ia akan melalui semua fail yang kita sudah ada input. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Jadi untuk setiap fail, itu membuka beberapa string di sana. 433 00:22:46,040 --> 00:22:47,560 Ia membuka fail itu. 434 00:22:47,560 --> 00:22:48,060 Betul? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 Dan ia membaca dari itu. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Sudah tentu, menyemak apakah itu batal. 439 00:22:55,540 --> 00:22:57,220 Dan kemudian ia mencetak. 440 00:22:57,220 --> 00:23:01,460 Jika ia tidak sah, ia hanya mengatakan kepada kita bahawa itu bukan fail yang ada. 441 00:23:01,460 --> 00:23:04,290 Kerana ingat, dengan membaca fail kami harus ada. 442 00:23:04,290 --> 00:23:04,810 Betul? 443 00:23:04,810 --> 00:23:06,870 Dengan menulis dan menambahkan, Anda boleh pergi dengan itu. 444 00:23:06,870 --> 00:23:08,970 Tetapi dengan membaca, file kita harus ada. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> Kemudian kalau tidak ada, apa yang kita lakukan di sini? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Mari kita mulai di sini. 449 00:23:15,780 --> 00:23:18,815 Apakah ini do-- karakter pertama ini. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Apa yang ia buat? 452 00:23:21,790 --> 00:23:24,100 Dia mendapat satu watak, bukan? 453 00:23:24,100 --> 00:23:25,400 Jadi apa yang lakukan? 454 00:23:25,400 --> 00:23:26,775 Ini semakin karakter pertama. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Ada yang tahu EOF? 457 00:23:30,200 --> 00:23:31,170 >> PENONTON: Akhir fail? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Akhir file-- tepat. 459 00:23:32,680 --> 00:23:35,310 Jadi ia akan melalui keseluruhan fail, kan? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 Dan kemudian ia akan mengemaskini dengan mendapatkan setiap karakter seterusnya. 462 00:23:40,780 --> 00:23:41,565 Betul? 463 00:23:41,565 --> 00:23:43,636 Dan apa yang ia lakukan? 464 00:23:43,636 --> 00:23:44,760 PENONTON: Itu hal yang dalam- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: cetak putchar untuk screensaver anda. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Terdengar] karakter. 469 00:23:51,950 --> 00:23:54,300 Dan kemudian apabila ia [terdengar] ini akan menutup fail. 470 00:23:54,300 --> 00:23:57,370 >> PENONTON: Adakah anda tidak perlu [? yang lain? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Belum tentu. 472 00:23:59,005 --> 00:24:01,480 Maksud saya, ia jenis tersirat dalam hal ini. 473 00:24:01,480 --> 00:24:06,780 Kerana ini kembali, walaupun, selama kerana ini tidak menangkap ini, anda baik-baik saja. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Maksud saya, ia mungkin baik berlatih untuk melakukan yang lain an. 476 00:24:10,250 --> 00:24:15,755 Tetapi lain yang tidak selalu diperlukan terutama 477 00:24:15,755 --> 00:24:17,610 jika anda mempunyai sesuatu seperti kembali, yang 478 00:24:17,610 --> 00:24:20,640 bermakna bahawa dalam kes ini jika menangkap itu, program anda akan berakhir 479 00:24:20,640 --> 00:24:21,850 dan ia tidak akan mendapatkan ini. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Ini lebih untuk kes di mana anda tidak semestinya kembali sesuatu. 482 00:24:29,190 --> 00:24:31,370 Kerana jika ini tidak kembali apa-apa, 483 00:24:31,370 --> 00:24:34,430 ia bermakna bahawa jika ini benar, sisa ini akan tetap berjalan. 484 00:24:34,430 --> 00:24:36,138 Dan dalam hal ini, anda mahu palsu. 485 00:24:36,138 --> 00:24:38,240 Jika ia kembali, dan akhir program anda, 486 00:24:38,240 --> 00:24:41,960 lain yang tidak perlu semua masa, bergantung pada konteks. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Yakub, adakah anda mempunyai soalan? 489 00:24:44,375 --> 00:24:46,100 PENONTON: Ya. 490 00:24:46,100 --> 00:24:49,300 Begitu juga fgetc mendapatkan karakter seterusnya? 491 00:24:49,300 --> 00:24:50,734 Bagaimana watak meningkat? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Ya. 493 00:24:51,400 --> 00:24:52,774 Jadi fgetc mendapat aksara seterusnya. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Anda boleh memikirkan ia seperti C ++ dalam arti. 496 00:24:56,866 --> 00:24:58,350 >> PENONTON: Jadi apa yang EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF adalah akhir fail. 498 00:25:00,877 --> 00:25:03,960 Ia hanya satu penanda yang membolehkan anda tahu bahawa anda pada akhir fail anda. 499 00:25:03,960 --> 00:25:06,742 Jadi ini akan mencetak kepada standard anda keluar. 500 00:25:06,742 --> 00:25:08,950 Dan kemudian ia akan menutup fail apabila ia dilakukan. 501 00:25:08,950 --> 00:25:10,700 Kemudian mari kita pergi ke fail yang akan datang, bukan? 502 00:25:10,700 --> 00:25:12,660 Jadi secara keseluruhan, apakah program ini lakukan? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Terdengar] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Ya. 506 00:25:16,900 --> 00:25:18,770 Ia hanya akan mencetak segala sesuatu. 507 00:25:18,770 --> 00:25:23,270 Jadi jika anda semua pernah menggunakan CAT dan kemudian nama beberapa file-- 508 00:25:23,270 --> 00:25:26,240 Saya tidak tahu sesiapa di antara kamu mempunyai pernah melakukan itu pada terminal anda. 509 00:25:26,240 --> 00:25:29,630 Tetapi jika anda pernah menggunakan perintah CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 dan kemudian apa sahaja fail anda mempunyai besar-- itu 511 00:25:31,880 --> 00:25:37,260 mencetak ia keluar ke terminal anda, yang akan menjadi sangat berguna untuk beberapa hal. 512 00:25:37,260 --> 00:25:38,746 Saya menggunakannya banyak. 513 00:25:38,746 --> 00:25:40,120 Adakah ini masuk akal untuk semua orang? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Cool? 516 00:25:42,100 --> 00:25:46,530 >> OK jadi tugas anda sekarang-- sama ada dengan sendiri atau dengan orang di sekeliling you-- 517 00:25:46,530 --> 00:25:54,930 adalah dengan hanya menulis sebuah program sederhana yang hanya akan menulis "Hello, world!" 518 00:25:54,930 --> 00:25:56,255 kepada fail. 519 00:25:56,255 --> 00:26:00,215 >> [Terdengar] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Terdengar] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: Saya adalah seperti, melakukan Saya berbuat demikian minggu lepas buruk? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Saya tidak fikir itu yang buruk. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Saya gembira anda semua berada di sini. 527 00:27:03,520 --> 00:27:04,655 Ia benar-benar membuat saya bahagia. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Saya seorang gadis dari kesenangan sederhana. 530 00:27:10,160 --> 00:27:11,688 Saya sama seperti ketika saya menghadiri seksyen. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Jadi, saya hanya mendapat ini bermula untuk anda semua supaya kita dapat kode bersama-sama. 533 00:27:18,270 --> 00:27:22,290 Saya tidak suka meletakkan sesiapa sahaja di tempat itu melainkan jika anda mahu. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> PENONTON: Untuk kuiz, lakukan kita harus menulis sebuah program? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Anda mungkin akan diminta untuk menulis program yang mudah dengan tangan. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Yup. 539 00:27:36,590 --> 00:27:38,510 >> PENONTON: Kuiz ini adalah minggu depan, kan? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: Kuiz ini adalah Rabu depan. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Ini bermakna ada yang indah [? CSE?] dengan kadar pihak setelah itu, yang 543 00:27:43,730 --> 00:27:50,390 ertinya anda akan mendapatkan skor belakang yang malam-jam berapa? 544 00:27:50,390 --> 00:27:50,890 Siapa yang tahu? 545 00:27:50,890 --> 00:27:51,973 Tetapi ia akan menjadi malam itu. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Baik. 548 00:28:02,855 --> 00:28:04,250 Bagaimana kita ingin memulakan ini? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Saya akan memberi anda bermula hint-- dengan ini. 551 00:28:09,630 --> 00:28:11,455 >> PENONTON: Anda perlu membuka fail. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Ya. 553 00:28:12,250 --> 00:28:14,060 Jadi, apa yang anda mahu panggil ini? 554 00:28:14,060 --> 00:28:16,150 Adakah anda hanya mahu menyebutnya "fail"? 555 00:28:16,150 --> 00:28:17,480 Mari kita membuat ia mudah. 556 00:28:17,480 --> 00:28:26,752 Jadi fopen-- apa yang kami ujian output akan menjadi? 557 00:28:26,752 --> 00:28:36,130 Sebut saja "Hello." 558 00:28:36,130 --> 00:28:37,810 Dan apa yang mod kita? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Apa yang kita lakukan ke fail ini? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> PENONTON: Baca. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Menulis. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Kami menulis untuk itu. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lovely. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, jadi kami mempunyai fail ini sekarang. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Apa yang kita perlu buat? 572 00:28:56,212 --> 00:28:57,420 PENONTON: Periksa sama ada itu batal. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Periksa jika ia null-- tepat. 574 00:28:59,820 --> 00:29:01,980 Itu yang saya suka dengar. 575 00:29:01,980 --> 00:29:05,930 Yang harus automatik, terutama cukup banyak dari titik ini. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Jika anda mula segfault, anda mungkin tidak memeriksa null suatu tempat. 578 00:29:10,950 --> 00:29:12,480 Sembilan dari sepuluh, itu akan menjadi kesalahan anda. 579 00:29:12,480 --> 00:29:15,400 Jadi jika anda hanya boleh mendapatkan di kebiasaan, sentiasa memeriksa apakah itu batal, 580 00:29:15,400 --> 00:29:18,150 kehidupan anda akan menjadi bagus dan easy-- atau lebih mudah. 581 00:29:18,150 --> 00:29:19,480 >> Jadi untuk melihat sama ada ianya batal. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Jadi, jika ia tidak batal, yang adalah apa yang bang sama 584 00:29:24,820 --> 00:29:26,784 ertinya- tidak null-- itu sah. 585 00:29:26,784 --> 00:29:27,700 Apa yang kita mahu lakukan? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Kami hanya ingin mencetak ke fail itu, kan? 588 00:29:31,570 --> 00:29:32,923 Jadi apa yang akan kita gunakan? 589 00:29:32,923 --> 00:29:34,092 >> PENONTON: fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- indah. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 Dan fprintf mengambil masa dua arguments-- mana ia akan dan apa yang kita mahu dicetak. 593 00:29:44,000 --> 00:29:45,820 Jadi apa yang pertama? 594 00:29:45,820 --> 00:29:46,570 Di mana ia akan pergi? 595 00:29:46,570 --> 00:29:47,490 >> PENONTON: fail. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Ia akan fail. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 Dan apa yang kita mahu cetak? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Hello, world!" 601 00:29:58,065 --> 00:29:58,565 Baik. 602 00:29:58,565 --> 00:30:03,670 Kami mempunyai satu thing-- lalu satu lagi paradigma besar di sini. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 PENONTON: Tutup. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Tutup. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Terdapat anda pergi. 608 00:30:10,540 --> 00:30:13,384 >> PENONTON: Apakah ini terjadi jika fail itu adalah batal? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Tidak, ini adalah jika ia tidak batal. 610 00:30:15,050 --> 00:30:16,881 PENONTON: Oh, jika ia elok OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Untuk fopen dan kemudian dua hujah yang masuk ke dalam, 613 00:30:25,410 --> 00:30:27,655 apakah hujah yang pertama bermakna lagi? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: Hujah ini seperti nama fail 615 00:30:30,392 --> 00:30:31,350 yang anda mahu pergi ke. 616 00:30:31,350 --> 00:30:36,020 Jadi selepas ini berjalan, anda akan mempunyai beberapa fail yang dipanggil "hello" 617 00:30:36,020 --> 00:30:38,320 yang telah "Hello, world" di dalamnya. 618 00:30:38,320 --> 00:30:38,820 Itu sahaja. 619 00:30:38,820 --> 00:30:39,500 Hanya nama. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> PENONTON: Dan kerana itu menulis, yang fail tidak perlu pun wujud. 622 00:30:48,650 --> 00:30:49,675 Apakah itu yang anda berkata? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Benar. 624 00:30:50,410 --> 00:30:50,910 Tepat. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Jika "Hello" sebagai fail tidak wujud lagi, ia 627 00:30:55,839 --> 00:30:58,380 akan mencipta fail yang dipanggil Hello "dan menulis untuk itu untuk anda. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> PENONTON: Apabila kamu beritahu program untuk menulis kepada fail, 630 00:31:03,610 --> 00:31:08,075 mengapa anda menulis "file" dan bukannya nama fail dan fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Oleh kerana dalam kes ini, kita perlu yang FILE-- besar semua dalam bintang caps--, 632 00:31:13,600 --> 00:31:14,260 fail. 633 00:31:14,260 --> 00:31:17,370 Jadi itu adalah penunjuk ke fail yang anda bercakap tentang. 634 00:31:17,370 --> 00:31:19,930 Ini adalah cara yang kita hanya merujuk kepadanya. 635 00:31:19,930 --> 00:31:24,850 Jadi dalam hal ini, anda boleh memikirkan aha file--, 636 00:31:24,850 --> 00:31:31,271 kita boleh menggunakan fail this-- sini merujuk kepada pembukaan "Hello" 637 00:31:31,271 --> 00:31:32,145 dan membiarkannya menulis. 638 00:31:32,145 --> 00:31:34,728 >> PENONTON: Bolehkah kita meletakkan "Hello" bukan [? hanya?] f fail? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Tidak, kerana "Hello" perlu terbuka dan ditulis. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Fail di sini adalah seperti yang penanda yang mengatakan OK, kita 642 00:31:45,980 --> 00:31:49,190 mempunyai hello-- file-- ini bahawa kita sedang melihat. 643 00:31:49,190 --> 00:31:50,680 Ia telah dibuka. 644 00:31:50,680 --> 00:31:52,140 Dan kami akan menulis kepadanya. 645 00:31:52,140 --> 00:31:55,130 Jika anda hanya menggunakan "Hello", yang terkandung di dalamnya. 646 00:31:55,130 --> 00:31:56,846 Jadi ia akan dimarahi oleh. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Maksud saya, anda boleh menamakannya. 649 00:32:00,300 --> 00:32:03,960 Anda hanya perlu membuat fail, bintang, "Hello", sama dengan itu. 650 00:32:03,960 --> 00:32:07,840 Tetapi seluruh titik adalah bahawa anda memerlukan pointer fail Bintang di perintah 651 00:32:07,840 --> 00:32:09,281 untuk dapat menggunakan fungsi ini. 652 00:32:09,281 --> 00:32:11,280 PENONTON: Bolehkah anda lakukan fail, bintang, fail, "Hello" 653 00:32:11,280 --> 00:32:13,113 atau adakah anda perlu meletakkan memfailkan bintang, fail olehnya? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Anda boleh buat fail, bintang, "Hello." 655 00:32:16,330 --> 00:32:19,790 Anda boleh menukar ini pada apa jua nama yang anda mahu. 656 00:32:19,790 --> 00:32:22,114 Ini benar-benar sewenang-wenangnya apa nama yang. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Anda boleh nama itu apa-apa. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Nama itu terbang spageti, jika anda mahu. 661 00:32:28,020 --> 00:32:29,690 >> PENONTON: Apakah "w" dalam tanda kutip untuk? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "w" hanyalah mod. 663 00:32:31,540 --> 00:32:33,170 Oleh itu, kita sedang menulis ke fail ini. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Semua orang yang baik? 666 00:32:35,320 --> 00:32:36,227 Yang jelas nyata? 667 00:32:36,227 --> 00:32:36,981 Ya. 668 00:32:36,981 --> 00:32:40,365 >> PENONTON: Oleh itu, apabila ia menulis ini fail, di mana kita kemudian mencari fail itu? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: Ia akan berada di sama direktori yang sedang anda gunakan dalam. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Jika anda berada dalam tiga dan Serangga Anda menjalankan ini, dalam masa Serangga anda 672 00:32:48,880 --> 00:32:52,600 tiga folder akan menjadi fail ini disebut "Hello." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Semua orang yang baik? 675 00:32:53,757 --> 00:32:55,840 Saya rasa seperti anda semua mendapatkan itu, yang besar. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 OK. 678 00:32:57,790 --> 00:33:05,960 Jadi kembali ke show-- slaid saya Saya suka apabila sesuatu bekerja. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Apakah kalian gembira? 680 00:33:08,674 --> 00:33:09,465 Pointer adalah besar. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Mereka mengambil sedikit untuk membalut kepala anda sekitar. 683 00:33:13,580 --> 00:33:15,288 Ini adalah tahun kedua saya pointer pengajaran. 684 00:33:15,288 --> 00:33:16,850 Dan saya rasa saya akhirnya mendapatkannya. 685 00:33:16,850 --> 00:33:18,650 Jadi, jika anda berjuang, tidak apa-apa. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Seperti yang saya katakan sebelum ini, gambar gambar banyak membantu dengan hal-hal di CS, 688 00:33:24,070 --> 00:33:27,400 sebanyak yang saya berfikir orang cenderung untuk berfikir oh, kami tidak di depan komputer. 689 00:33:27,400 --> 00:33:28,399 Kami harus hanya kod. 690 00:33:28,399 --> 00:33:30,190 Gambar gambar No-- benar-benar akan membantu anda. 691 00:33:30,190 --> 00:33:32,773 Dan saya benar-benar menggalakkan anda untuk meneroka sisi TK anda 692 00:33:32,773 --> 00:33:35,010 dan membawa keluar krayon atau penanda dan imbang. 693 00:33:35,010 --> 00:33:36,110 Kerana ia akan membantu anda. 694 00:33:36,110 --> 00:33:39,380 Dan jika anda melihat saya pada waktu pejabat, saya akan membawa sekitar tumpukan kertas-kertas 695 00:33:39,380 --> 00:33:41,580 dengan pena melukis perkara-perkara. 696 00:33:41,580 --> 00:33:44,370 >> Jadi terutama dengan pointers-- melukis gambar. 697 00:33:44,370 --> 00:33:47,970 Dan aku yakin yang kita benar-benar akan menjadi menggambar beberapa gambar di sini juga. 698 00:33:47,970 --> 00:33:51,270 >> Jadi kalian semua harus melihat Binky, ini perkara claymation sejuk. 699 00:33:51,270 --> 00:33:54,720 Dan kami fikir ia adalah benar-benar lucu ketika ia meletup ke dalam sekumpulan keping. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Ini beberapa hiburan untuk kelas. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [terdengar] kemampuan besar dapat mengawal memori. 704 00:34:05,900 --> 00:34:10,090 Dan itu salah satu dari hal-hal yang benar-benar membuatnya seperti bahasa yang kuat. 705 00:34:10,090 --> 00:34:13,469 Tetapi dengan kuasa yang besar datang tanggung jawab besar. 706 00:34:13,469 --> 00:34:16,230 Dan hal-hal gila boleh berlaku jika anda tidak berhati-hati. 707 00:34:16,230 --> 00:34:18,560 Oleh itu, apabila anda menggunakan petunjuk, anda ingin 708 00:34:18,560 --> 00:34:21,440 pasti anda benar-benar memahami betul-betul apa yang anda lakukan. 709 00:34:21,440 --> 00:34:25,530 Mudah-mudahan sedikit yang akan datang masa akan membantu anda benar-benar memahami 710 00:34:25,530 --> 00:34:27,850 petunjuk, bagaimana untuk menggunakan mereka, dan bagaimana untuk memanipulasi mereka. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Jadi memory-- Saya yakin kita sudah melihat gambar rajah ini sebelumnya. 713 00:34:33,460 --> 00:34:38,540 Jadi, ini adalah hanya satu gambar rajah mudah bagaimana perkara mungkin disimpan memori. 714 00:34:38,540 --> 00:34:43,145 Jadi pada dasarnya anda mempunyai ini array besar blok satu byte 715 00:34:43,145 --> 00:34:46,000 adalah apa yang kita ada di sini-sedikit kenaikan gaji per satu setiap kali. 716 00:34:46,000 --> 00:34:51,810 Ini adalah hex [terdengar] sehingga lapan-bit blok. 717 00:34:51,810 --> 00:34:55,510 Dan setiap blok dikaitkan dengan alamat penerima perenambelasan. 718 00:34:55,510 --> 00:34:58,750 Jadi jika anda pernah melihat 0 x, itu hanya notating 719 00:34:58,750 --> 00:35:00,670 bahawa itu alamat perenambelasan. 720 00:35:00,670 --> 00:35:03,970 Anda boleh menganggap ini bermakna alamat penerima dalam ingatan. 721 00:35:03,970 --> 00:35:06,935 Kami bercakap tentang alamat memori setiap kali anda melihat perenambelasan. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Kami mempunyai ints adalah variabel, mengapung adalah pembolehubah yang menyimpan. 724 00:35:14,630 --> 00:35:16,260 Jadi ints ints kedai. 725 00:35:16,260 --> 00:35:17,430 Kedai terapung terapung. 726 00:35:17,430 --> 00:35:20,260 Oleh itu, kita juga mempunyai pointer yang menyimpan alamat ingatan. 727 00:35:20,260 --> 00:35:21,660 Itu semacam pemetaan. 728 00:35:21,660 --> 00:35:24,240 Pointer adalah semata-mata untuk alamat memori. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Jadi itu seperti jenis anda di sana. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Alat anda adalah 32-bit, yang bermaksud bahawa alamat memori anda adalah empat bait. 733 00:35:34,470 --> 00:35:37,830 Jadi apa-apa penunjuk bahawa anda mempunyai juga akan menjadi empat bait. 734 00:35:37,830 --> 00:35:43,200 Atau yang lain jika itu empat bait, ingatan adalah empat bait. 735 00:35:43,200 --> 00:35:44,790 Pointer memori kedai. 736 00:35:44,790 --> 00:35:46,430 Oleh itu, mereka empat bait. 737 00:35:46,430 --> 00:35:48,460 Cool-- hanya ingin menguatkan. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Anda perlu mendapatkan komik ini sekarang. 740 00:35:52,220 --> 00:35:55,040 Saya tidak tahu berapa banyak dari anda adalah penggemar xkcd, tetapi saya suka xkcd. 741 00:35:55,040 --> 00:35:55,780 Ia hebat. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Baik. 744 00:35:57,790 --> 00:36:01,640 Jadi mewujudkan pointers-- seperti yang saya katakan, ia adalah cukup banyak sama seperti apa-apa lagi. 745 00:36:01,640 --> 00:36:02,930 Anda mempunyai jenis yang. 746 00:36:02,930 --> 00:36:04,050 Anda mempunyai nama. 747 00:36:04,050 --> 00:36:04,810 Betul? 748 00:36:04,810 --> 00:36:10,410 Itulah apa yang kita telah ada. [? Hex?] Bintang berarti itu pointer, 749 00:36:10,410 --> 00:36:12,250 dan kemudian apa sahaja yang anda ingin menyebutnya. 750 00:36:12,250 --> 00:36:15,770 Jadi jenis yang mewakili apa yang anda boleh menyimpan. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 -Baik saja? 753 00:36:17,990 --> 00:36:24,350 Dengan cara yang sama bahawa jika kita melakukan int, kita tahu kita menyimpan int di sana. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Dengan pointer, ia menyimpan alamat memori. 756 00:36:30,280 --> 00:36:34,240 Tetapi apa yang dimaksudkan adalah bahawa- di sinilah gambar yang akan datang dengan mudah. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Jadi dalam hal ini, kita perlu beberapa value-- katakanlah empat. 759 00:36:45,980 --> 00:36:49,306 Empat di satu alamat. 760 00:36:49,306 --> 00:36:49,805 OK? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Yang ini terlebih dahulu di sini berarti bahawa itu 2x pointer. 763 00:36:56,170 --> 00:36:56,740 Betul? 764 00:36:56,740 --> 00:36:57,628 Ia adalah beberapa penunjuk x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x mungkin sesuatu, apa pun. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Apa pun x is-- mengatakan x adalah empat. 769 00:37:05,130 --> 00:37:07,280 Ia akan menyimpan alamat ingatan di sini. 770 00:37:07,280 --> 00:37:12,260 Jadi int, bintang, x-- ini beberapa slot lain di memory-- 771 00:37:12,260 --> 00:37:13,590 yang mengetahui apa ini. 772 00:37:13,590 --> 00:37:15,430 Tetapi ia akan menyimpan alamat di sini. 773 00:37:15,430 --> 00:37:27,040 Jadi ini akan menjadi like-- dalam kes ini, Apa pun, 774 00:37:27,040 --> 00:37:32,630 disimpan di 0x1-- apa sahaja yang disimpan di alamat yang pointer kami memegang, 775 00:37:32,630 --> 00:37:35,280 harus sesuai dengan apa yang kita telah ditetapkan. 776 00:37:35,280 --> 00:37:40,330 Jadi pada 0x1, dalam hal ini, ini adalah x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Ini boleh hanya pernah menjadi int sementara kita menggunakan ini. 779 00:37:49,340 --> 00:37:52,950 >> Begitu juga, jika kita mempunyai 1thn lain, apa pun 780 00:37:52,950 --> 00:37:59,130 alamat disimpan dengan y mempunyai menjadi hal char-- sama dengan z. 781 00:37:59,130 --> 00:38:05,840 Dengan cara yang sama, apabila anda mencuba dan melakukan INTx bersamaan 0.4, 782 00:38:05,840 --> 00:38:09,275 ia akan berteriak pada Anda dan menjadi seperti tidak ada, anda berkata anda mahu int. 783 00:38:09,275 --> 00:38:10,525 Hal ini seharusnya menjadi int. 784 00:38:10,525 --> 00:38:11,900 Berhenti cuba untuk membuat ia pelampung. 785 00:38:11,900 --> 00:38:14,150 >> Jadi membiarkan hal-hal apa yang mereka mahu. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Membiarkan perkara menjadi diri mereka sendiri. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Jadi perkara besar adalah hanya apa pun jenis penunjuk 790 00:38:23,450 --> 00:38:26,101 ia adalah, itulah satu-satunya perkara yang boleh anda simpan di sana. 791 00:38:26,101 --> 00:38:26,600 OK? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 Dengan latihan, seperti minggu lalu, segala-galanya 794 00:38:31,160 --> 00:38:32,817 seolah-olah benar-benar jenis abstrak. 795 00:38:32,817 --> 00:38:34,150 Kami akan melakukan beberapa latihan. 796 00:38:34,150 --> 00:38:36,760 Perlu lebih masuk akal. 797 00:38:36,760 --> 00:38:44,580 >> Jadi rujukan dan dereferencing-- itu benar-benar penting untuk mendapatkan ini lurus. 798 00:38:44,580 --> 00:38:46,630 Saya masih perlu memuat semula setiap sekarang dan kemudian. 799 00:38:46,630 --> 00:38:48,450 Dan aku seperti menunggu, yang mana satu yang saya inginkan? 800 00:38:48,450 --> 00:38:56,080 Jadi ampersand malah akan memberikan Anda rujukan atau alamat. 801 00:38:56,080 --> 00:39:00,100 Jadi, ia akan alamat dalam ingatan yang berubah-ubah disimpan. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Jadi itu akan benar-benar kembali kepada anda perenambelasan, sedangkan ia dereferencing 804 00:39:07,020 --> 00:39:10,641 sebenarnya akan memberikan data yang disimpan di sana. 805 00:39:10,641 --> 00:39:11,140 OK? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Oleh itu, kita akan melihat contoh sangat cepat, atau benar-benar di sebelah. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> OK. 810 00:39:19,150 --> 00:39:21,790 Oleh itu, kita perlu memikirkan benar-benar hati-hati tentang perkara ini. 811 00:39:21,790 --> 00:39:23,860 Jadi di sini kita mempunyai beberapa integer x. 812 00:39:23,860 --> 00:39:26,485 Saya akan cuba menarik ini keluar untuk yang terbaik dari kemampuan saya. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Jadi, kita akan mempunyai slot ini x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 Dan ia menyimpan lima. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Alamatnya adalah 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Cool? 821 00:39:43,160 --> 00:39:44,100 Semua baik. 822 00:39:44,100 --> 00:39:45,470 >> Jadi sekarang kita mempunyai penunjuk ini. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Ia adalah di sini. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 Dan ampersand memberikan kita alamat sesuatu. 827 00:39:57,560 --> 00:40:00,780 Jadi, dalam hal ini, itu adalah alamat x. 828 00:40:00,780 --> 00:40:01,875 Apa alamat x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- dan penunjuk ini adalah di 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Cool? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Jadi, anda boleh berfikir tentang hal ini penunjuk, 04, hanya poin di sini. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 Dan mereka yang dipanggil pointer kerana seperti yang kita mendapatkan lebih banyak ke dalam ini, 837 00:40:25,740 --> 00:40:28,450 Anda akan melihat menunjuk kepada perkara-perkara. 838 00:40:28,450 --> 00:40:31,470 Dan satu blok menunjuk kepada yang lain blok akan masuk akal lebih banyak. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Jadi di sini adalah dua. 841 00:40:33,890 --> 00:40:38,230 Dan kemudian kita mempunyai beberapa salinan, yang 0x0c-UMPC. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 Dan ia akan dereference pointer kami. 844 00:40:43,420 --> 00:40:46,790 >> Jadi apa yang ia katakan adalah OK, inilah pointer kami. 845 00:40:46,790 --> 00:40:53,090 Nilai menyimpan adalah 0x04, dan apa yang ia berkata adalah pergi ke alamat ini 846 00:40:53,090 --> 00:40:54,300 dan beritahu saya apa yang di dalamnya. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Jadi itulah berkesan apa anak panah ini lakukan. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Anda boleh memikirkan ini seperti bintang anda. 851 00:41:01,280 --> 00:41:05,410 Jadi OK, ketika kita melakukan bintang, itu berarti mengikuti. 852 00:41:05,410 --> 00:41:06,810 Pergi ke alamat ini. 853 00:41:06,810 --> 00:41:11,430 Dan itu pada dasarnya hanya mengikuti panah ini untuk sebahagian memori ini. 854 00:41:11,430 --> 00:41:15,380 Dan memberi kita apa yang ada di dalamnya, yang adalah 5. 855 00:41:15,380 --> 00:41:18,840 Ini sebabnya salinan kami adalah sama dengan 5. 856 00:41:18,840 --> 00:41:20,120 Adakah ini masuk akal? 857 00:41:20,120 --> 00:41:22,769 Apakah ada yang perlu saya untuk pergi melalui itu lagi, atau lebih lambat? 858 00:41:22,769 --> 00:41:24,560 Anda mahu saya untuk pergi melaluinya sekali lagi? 859 00:41:24,560 --> 00:41:25,060 OK. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Kami akan lukis semula sekali lagi. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Apabila kita bermula, kami semua bersetuju kita mempunyai beberapa sepotong memori itulah variabel 864 00:41:37,205 --> 00:41:40,890 x yang kita tetapkan sama dengan 5. 865 00:41:40,890 --> 00:41:42,910 Kami tidak mengawal di mana ia ada di dalam memori. 866 00:41:42,910 --> 00:41:45,520 Jadi tempat ini adalah hanya sewenang-wenangnya yang ditetapkan. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Baik di sana? 869 00:41:48,731 --> 00:41:49,230 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Kemudian kami memulakan penunjuk kepada int. 872 00:41:53,330 --> 00:41:56,900 Itulah mengapa ia dibenarkan untuk menunjuk ke x kerana kita mempunyai int di sini. 873 00:41:56,900 --> 00:42:00,840 Kami mempunyai satu lagi sebahagian daripada memori kerana penunjuk ini 874 00:42:00,840 --> 00:42:03,485 ialah pemboleh ubah seperti apa-apa lagi. 875 00:42:03,485 --> 00:42:06,615 Ia sewenang-wenangnya diberikan beberapa ruang dalam ingatan. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 Dan apa yang ia menyimpan adalah alamat x. 878 00:42:10,830 --> 00:42:13,200 Ampersand bermaksud alamat x. 879 00:42:13,200 --> 00:42:14,575 Jadi apa alamat x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> PENONTON: Ini zero-- 882 00:42:20,614 --> 00:42:21,280 SPEAKER 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Jadi then-- yang terakhir. 885 00:42:25,940 --> 00:42:30,650 Kami mempunyai beberapa copy-- lagi hanya satu lagi berubah-ubah. 886 00:42:30,650 --> 00:42:32,520 Jadi mari kita menetapkan beberapa tempat sewenang-wenang. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 Dan kami dereference pointer kami. 889 00:42:38,080 --> 00:42:42,490 Bintang itu bermakna pergi ke alamat yang disimpan dalam pointer saya. 890 00:42:42,490 --> 00:42:44,480 Beritahu saya apa yang ada. 891 00:42:44,480 --> 00:42:47,290 Jadi alamat yang disimpan dalam penunjuk kami adalah 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Jadi kita pergi ke alamat tersebut. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Ia menunjuk ke alamat tersebut. 896 00:42:54,590 --> 00:42:57,481 Apa yang di dalam blok memori ini? 897 00:42:57,481 --> 00:42:57,980 Itu adalah lima. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Jadi itulah yang kita berikan salinan kami. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Semua orang yang baik? 902 00:43:04,860 --> 00:43:05,360 Sejuk. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Gambar Again--. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Jadi menjejaki nilai-nilai di sini-saya akan membiarkan anda semua berfikir tentang hal ini. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Kita boleh membuat gambar lain. 909 00:43:27,750 --> 00:43:31,260 Tetapi saya mahu anda untuk mencuba dan sebab melalui ini sendiri selama satu minit. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Oleh kerana mereka tidak memberi kepada kami alamat contoh, 912 00:44:04,149 --> 00:44:06,940 Saya hanya akan melakukan x-- ampersand yang akan membantu memandu pulang ke rumah. 913 00:44:06,940 --> 00:44:07,950 Ampersand berarti alamat. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Jadi, dalam yang pertama, semua orang pergi dengan baris pertama. 916 00:44:12,360 --> 00:44:15,690 Beberapa set x five-- beberapa slot rawak dalam ingatan. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Penunjuk bintang Int adalah sama ke alamat x, kan? 919 00:44:23,200 --> 00:44:28,180 Int pointer bintang menciptakan blok ini, menyebutnya pointer, 920 00:44:28,180 --> 00:44:30,650 dan memberikan ke alamat x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Aku sangat buruk di ampersands. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Sekarang apa yang kita lakukan adalah kita katakan OK, dereference pointer kami. 925 00:44:40,550 --> 00:44:42,760 Jadi kami pergi OK, apa yang ada di pointer kita? 926 00:44:42,760 --> 00:44:44,820 Ini ampersand x. 927 00:44:44,820 --> 00:44:49,400 Pergi ke ampersand x dan menetapkan kembali. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Jadi sekarang, ampersand x akan menjadi 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Jadi, pada asasnya, apabila anda dereferencing, anda pergi OK. 932 00:45:05,174 --> 00:45:07,090 Anda akan menggambar gambar seperti ini. 933 00:45:07,090 --> 00:45:09,423 Anda akan menggambar anak panah anda lebih di mana tempatnya. 934 00:45:09,423 --> 00:45:16,030 Jadi pergi ke slot ini dalam ingatan dan sama ada memberikan saya bahawa kembali nilai, atau mengubahnya. 935 00:45:16,030 --> 00:45:21,620 Dalam kes ini, kerana kita berada di ini nilai, kami memberikan ia menjadi 35. 936 00:45:21,620 --> 00:45:24,700 Sedangkan pada yang terakhir satu, jika anda perasan, kami 937 00:45:24,700 --> 00:45:27,680 telah memberikan apa yang di sini untuk sesuatu yang lain. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Jadi mereka mempunyai jadual yang mengagumkan ini. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Ia bukan yang buruk. 942 00:45:36,890 --> 00:45:37,970 Kalian bekerja di atasnya. 943 00:45:37,970 --> 00:45:39,640 Aku akan menarik keluar di papan tulis. 944 00:45:39,640 --> 00:45:41,306 Kami akan mengisinya bersama-sama, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Jadi ambil beberapa kertas, ambil pasangan, mula bekerja. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Saya akan mendapatkan potongan yang lebih besar dari kapur. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Kerana ia akan menjadi banyak. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 PROFESSOR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Mari kita mulakan dengan baris pertama. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Kita akan mulai di sana, maka kalian mungkin dapat bekerja melalui beberapa. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 yang sama dengan b kali c jadi apa yang? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Ia bukan satu soalan trick, aku janji. 963 00:48:23,260 --> 00:48:24,440 >> PELAJAR: 4 kali 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESSOR: 4 kali 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Jadi apa b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 PELAJAR: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> PROFESSOR: Dan c? 971 00:48:31,043 --> 00:48:31,542 PELAJAR: 5. 972 00:48:31,542 --> 00:48:32,083 PROFESSOR: 5. 973 00:48:32,083 --> 00:48:35,960 Dan maka ini hanya akan akan Ampersand a, ampersand b, 974 00:48:35,960 --> 00:48:38,575 ampersand c, kan? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Tidak buruk. 977 00:48:40,596 --> 00:48:42,081 Ia cukup mudah. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Jadi yang seterusnya. 980 00:48:44,300 --> 00:48:48,725 A adalah 'kali c, dalam hal ada orang yang tidak dikenali dengan itu. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Apakah semua orang biasa dengan masa sama? 983 00:48:53,300 --> 00:49:00,105 OK, semua ini ertinya- ini singkatan untuk yang sama dengan kali c. 984 00:49:00,105 --> 00:49:04,840 Anda juga boleh melakukannya dengan bahagian, dengan Selain itu, dengan pengurangan. 985 00:49:04,840 --> 00:49:12,130 Anda boleh melakukan sama dengan, atau ditambah sama dengan c ertinya sama plus c, minus sama 986 00:49:12,130 --> 00:49:15,190 c akan menjadi sama dengan tolak c. 987 00:49:15,190 --> 00:49:16,690 Ia hanya gula sintaksis. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Jadi, dalam hal ini, adalah sama dengan kali c akan memberi kita apa? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Sekali lagi, bukan pertanyaan helah. 992 00:49:28,186 --> 00:49:28,965 >> PELAJAR: 100. 993 00:49:28,965 --> 00:49:29,300 >> PROFESSOR: 100. 994 00:49:29,300 --> 00:49:30,383 Adakah apa-apa lagi berubah? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Tidak. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Mungkin aku akhirnya akan mendapat lebih baik di ampersands saya. 999 00:49:39,850 --> 00:49:42,047 >> PELAJAR: OK, maaf, bagaimana anda mendapatkan 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESSOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Jadi adalah sama dengan yang kali c, jadi kali c. 1002 00:49:46,594 --> 00:49:48,510 PELAJAR: Oh, anda menggunakan untuk previous-- yang 1003 00:49:48,510 --> 00:49:49,135 PROFESSOR: Ya. 1004 00:49:49,135 --> 00:49:51,450 Jadi ini adalah nilai-nilai yang paling baru-baru ini. 1005 00:49:51,450 --> 00:49:53,990 Ini adalah apa yang anda harus menggunakan seperti yang kita bergerak ke bawah, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Jadi, b adalah satu-satunya perkara yang berubah-ubah, bukan? 1008 00:50:01,520 --> 00:50:02,910 Jadi mari kita mengisi segala sesuatu yang lain. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Apa yang b akan menjadi? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Untuk menjadi atau tidak menjadi. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Jadi apa yang lakukan? 1015 00:50:20,240 --> 00:50:21,605 Apa adalah bintang pa lakukan? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> PELAJAR: Kod ke lokasi pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> PELAJAR: Tidak ada, tidak cukup. 1020 00:50:27,480 --> 00:50:29,470 Jadi ini adalah rujukan d. 1021 00:50:29,470 --> 00:50:31,580 >> PELAJAR: Jadi b adalah nilai tangan dari setahun. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESSOR: Ya, jadi pa adalah alamat, kan? 1023 00:50:37,340 --> 00:50:42,430 Jadi ia berkata pergi ke mana a adalah disimpan dan memberikan nilai tersebut. 1024 00:50:42,430 --> 00:50:43,884 Jadi apa yang b? 1025 00:50:43,884 --> 00:50:44,425 PELAJAR: 100. 1026 00:50:44,425 --> 00:50:46,534 PROFESSOR: 100. 1027 00:50:46,534 --> 00:50:47,450 Sempurna. 1028 00:50:47,450 --> 00:50:49,879 OK, jadi pc adalah apa yang berubah-ubah. 1029 00:50:49,879 --> 00:50:51,170 Segala sesuatu yang lain tetap sama. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Apa yang pc akan menjadi? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Tugas yang mudah. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc adalah sama dengan setahun, dan apa yang pa? 1036 00:51:05,990 --> 00:51:07,049 >> PELAJAR: ampersand seorang. 1037 00:51:07,049 --> 00:51:07,840 PROFESSOR: Perfect. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Sekarang kita sudah menarik. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, mari kita memecahkan satu ini ke bawah. 1042 00:51:15,230 --> 00:51:21,110 Pertama, apa yang b kali c, kerana itulah bahagian yang mudah satu ini, kan? 1043 00:51:21,110 --> 00:51:22,360 B kali c is-- 1044 00:51:22,360 --> 00:51:23,320 >> PELAJAR: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESSOR: Ya, jadi apa yang satu ini lakukan, 1046 00:51:28,880 --> 00:51:33,705 jika itu pb bintang, apa yang berubah? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> PELAJAR: Apa yang ada di the-- 1049 00:51:37,242 --> 00:51:38,200 PROFESSOR: Apa yang ada di b? 1050 00:51:38,200 --> 00:51:41,340 PELAJAR: Apa yang ada di ruang pb yang menunjuk ke. 1051 00:51:41,340 --> 00:51:43,406 PROFESSOR: Dan pb menunjuk supaya- 1052 00:51:43,406 --> 00:51:43,905 PELAJAR: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESSOR: B. Jadi satu-satunya hal perubahan adalah b, betul. 1054 00:51:46,740 --> 00:51:50,800 Jadi kali b c, 500. 1055 00:51:50,800 --> 00:51:52,367 Jadi itulah yang berubah sekarang. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Sejuk. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lovely. 1060 00:52:00,840 --> 00:52:01,905 Kalian melakukan yang besar. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Baiklah, ini melanggar satu ke bawah. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C berubah, kan? 1065 00:52:09,630 --> 00:52:11,530 Oleh itu, kita dapat mengisi segala sesuatu yang lain. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Mari kita lihat. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 OK. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Kita tahu bahawa c akan menjadi darab dua nombor, kan? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Apakah dua nombor, walaupun? 1074 00:52:27,980 --> 00:52:28,970 >> PELAJAR: A dan c? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESSOR: Jadi adalah tepat untuk yang pertama. 1076 00:52:31,930 --> 00:52:34,385 Jadi kita d rujukan p dari, kan? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P dari mata kepada, jadi kita tahu bahawa ini akan menjadi 100 kali lipat? 1079 00:52:42,870 --> 00:52:46,232 Times apa titik pc ke? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Menunjuk ke sebuah. 1082 00:52:48,740 --> 00:52:55,038 Jadi 100 kali 100 adalah 10,000. 1083 00:52:55,038 --> 00:52:56,170 Adakah ini masuk akal? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Sejuk. 1086 00:52:58,200 --> 00:53:00,500 Peregangan, guys, baris terakhir. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Apa yang berubah di sini? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> PELAJAR: A. 1091 00:53:06,935 --> 00:53:09,435 PROFESSOR: A. sempurna, sehingga segala sesuatu yang lain dapat tetap sama. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 1094 00:53:16,710 --> 00:53:17,970 Dan apa itu? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Jadi itu adalah kali apa? 1097 00:53:26,060 --> 00:53:27,120 Ini pb bintang. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Jadi pb bintang bermakna inilah pb, mata pb ke b. 1100 00:53:34,490 --> 00:53:35,370 >> PELAJAR: 500. 1101 00:53:35,370 --> 00:53:36,230 >> PROFESSOR: 500. 1102 00:53:36,230 --> 00:53:39,236 Oleh itu, kita mempunyai 500 kali 100. 1103 00:53:39,236 --> 00:53:41,758 Itu 50,000. 1104 00:53:41,758 --> 00:53:43,216 Wah! 1105 00:53:43,216 --> 00:53:45,646 Lihat itu. 1106 00:53:45,646 --> 00:53:47,982 >> PELAJAR: Mengapa kita harus yang & c untuk last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESSOR: Maaf. 1108 00:53:48,690 --> 00:53:50,080 PELAJAR: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESSOR: buruk saya. 1110 00:53:51,600 --> 00:53:52,890 Banyak menulis. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Semua orang yang baik? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Tidak terlalu buruk, kan? 1115 00:53:56,660 --> 00:53:58,490 Hanya memerlukan waktu sedikit sementara untuk bekerja melalui. 1116 00:53:58,490 --> 00:54:01,080 Jika anda memecahkan ia ke bawah, memahami apa yang setiap bahagian 1117 00:54:01,080 --> 00:54:03,197 merujuk kepada- sebagai dengan segala sesuatu itu, 1118 00:54:03,197 --> 00:54:05,780 yes-- memecahnya ke kecil masalah dan kemudian bergabung semula, 1119 00:54:05,780 --> 00:54:07,345 dan anda boleh melakukan beberapa perkara yang menggerunkan. 1120 00:54:07,345 --> 00:54:08,970 Ada jawaban, tetapi kita melakukan itu. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Penunjuk aritmetik. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Tanganku semua pasi. 1126 00:54:15,510 --> 00:54:17,970 Jadi menambah atau mengurangi int menyesuaikan penunjuk 1127 00:54:17,970 --> 00:54:21,890 oleh saiz jenis pointer. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Ingat bagaimana setiap jenis mempunyai saiz yang berbeza? 1130 00:54:28,390 --> 00:54:34,890 Sebab itu dua atau yang lama lama yaitu lapan dan int adalah empat tetapi arang adalah satu. 1131 00:54:34,890 --> 00:54:38,360 >> Jadi apa yang anda mahu lakukan is-- satu hal yang perlu diingat 1132 00:54:38,360 --> 00:54:44,080 Hanya saja, berapa banyak anda nilai penunjuk benar-benar mengubah 1133 00:54:44,080 --> 00:54:46,550 bergantung kepada jenis pointer itu. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Semua orang yang baik dengan ini? 1136 00:54:51,820 --> 00:54:52,760 Bolehkah saya menghapusnya? 1137 00:54:52,760 --> 00:54:53,440 Kami baik? 1138 00:54:53,440 --> 00:54:53,940 Awesome. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Jadi, jika kita mempunyai beberapa penunjuk bahawa- ini akan adalah-- Saya 1141 00:55:07,501 --> 00:55:08,834 akan menjadikannya sebuah pointer int. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Yang menyimpan ini. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Jika anda mengatakan penunjuk ditambah satu, apa yang ia akan lakukan 1146 00:55:20,170 --> 00:55:23,420 adalah ia akan mengemaskini dengan saiz int 1147 00:55:23,420 --> 00:55:25,950 kerana itulah yang jenis pointer itu. 1148 00:55:25,950 --> 00:55:28,260 >> Dengan C, segala-galanya adalah yang sangat ketat dan terkawal. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Pointer int akan mengemaskini dengan jumlah ruang int akan mengambil. 1151 00:55:35,260 --> 00:55:36,260 Int adalah empat bait. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Jadi apa ini akan berubah menjadi? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Anda hanya menambah empat ke ini. 1156 00:55:44,390 --> 00:55:50,040 Sekarang penunjuk anda akan adalah-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Jadi, jika itu adalah char dan kami melakukan pointer ditambah satu, apa yang ia akan menjadi ini? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Jika ia started-- berpura-pura kita started-- sekarang ini 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Mari kita sekarang mengatakan bahawa ini adalah satu char penunjuk, dan kami tambah satu. 1163 00:56:10,850 --> 00:56:11,850 Apa yang akan berubah ke? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Berapa banyak bait adalah char? 1166 00:56:16,030 --> 00:56:16,680 >> PENONTON: Satu. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: Satu. 1168 00:56:17,304 --> 00:56:18,309 PENONTON: Jadi 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Jadi ia akan menjadi sembilan. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Jadi, perlu diingat. 1172 00:56:23,820 --> 00:56:28,340 Hanya apabila anda menambah satu, ia bukan menambahkan satu kecuali jika char. 1173 00:56:28,340 --> 00:56:34,190 Ia menambahkan berapa banyak bait jenis yang ia adalah, 1174 00:56:34,190 --> 00:56:36,960 itulah sebabnya kita mempunyai persamaan ini di sini. 1175 00:56:36,960 --> 00:56:40,190 Jadi itu kali int saiz jenis mata. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Oleh itu, kita mempunyai contoh di sini. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y ditugaskan dengan nilai, 0x4, ketika kita melakukan y ditambah sama dengan satu. 1180 00:56:54,430 --> 00:56:56,830 Apa yang di dalamnya, apa yang dalam x, tidak berubah. 1181 00:56:56,830 --> 00:56:58,610 Apa perubahan adalah apa yang ada di y. 1182 00:56:58,610 --> 00:57:04,980 Alamat disimpan dalam y dikemas kini oleh empat kerana ada empat bait dalam int 1183 00:57:04,980 --> 00:57:06,097 dan ini merupakan penunjuk int. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Baik. 1186 00:57:07,790 --> 00:57:09,123 Jadi sekarang kita mempunyai latihan lain. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Jadi pertanyaannya adalah apa yang akan dicetak. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Apa-apa idea? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> PENONTON: Jumlah watak-watak dalam kucing bahagia? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Tepat sekali. 1194 00:57:44,490 --> 00:57:45,531 Jadi suka dengan tali anda. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Adakah semua orang mendapatkan itu? 1197 00:57:48,260 --> 00:57:49,509 Adakah kita ingin berjalan melaluinya? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Ya, OK. 1200 00:57:52,010 --> 00:57:57,385 Jadi apa yang kita ada di sini-saya seperti ini jauh lebih banyak. 1201 00:57:57,385 --> 00:57:59,340 Saya tidak perlu [Terdengar] sungguh. 1202 00:57:59,340 --> 00:58:01,690 >> Jadi kita mempunyai tali kita di sini, kucing gembira. 1203 00:58:01,690 --> 00:58:02,950 Lovely. 1204 00:58:02,950 --> 00:58:05,080 Kami mempunyai beberapa kaunter yang kita mengesan. 1205 00:58:05,080 --> 00:58:11,430 Oleh itu, kita mempunyai beberapa char * pointer yang hanya ditetapkan sama dengan str. 1206 00:58:11,430 --> 00:58:14,320 Apa ini lakukan adalah itu menetapkan beberapa penunjuk 1207 00:58:14,320 --> 00:58:16,380 ke awal tali anda. 1208 00:58:16,380 --> 00:58:19,840 Kerana saya yakin, kerana ia disebutkan dalam kuliah, 1209 00:58:19,840 --> 00:58:22,290 kami telah memberikan lelaki ini Jenis data yang disebut tali. 1210 00:58:22,290 --> 00:58:29,070 >> Tetapi benar-benar tali hanya array daripada- seperti char *. 1211 00:58:29,070 --> 00:58:32,330 Ia adalah penunjuk kepada sekumpulan aksara yang berdekatan dalam ingatan. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Jadi ini hanya menetapkan ia sama dengan apa-apa tali adalah 1214 00:58:36,280 --> 00:58:38,980 dikenal pasti oleh mana Aksara pertama adalah. 1215 00:58:38,980 --> 00:58:42,710 Jadi, ini adalah hanya menetapkan satu ketika sama dengan awal string. 1216 00:58:42,710 --> 00:58:44,130 Semua orang yang baik di sana? 1217 00:58:44,130 --> 00:58:44,960 Sejuk. 1218 00:58:44,960 --> 00:58:49,840 >> Jadi, ini adalah dereferencing pointer kami. 1219 00:58:49,840 --> 00:58:53,760 Oleh itu, ia benar-benar akan memberikan kita beberapa nilai di sini, 1220 00:58:53,760 --> 00:58:55,610 dalam rentetan kita yang kita bercakap tentang. 1221 00:58:55,610 --> 00:58:58,342 Dan kita katakan selama ia bukan terminator null. 1222 00:58:58,342 --> 00:59:00,550 Jadi terus berjalan sehingga anda mendapat hingga akhir string. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Kemas kini pointer anda dengan satu. 1225 00:59:04,190 --> 00:59:09,250 Jadi r, ia sebenarnya akan mengemas kini dengan satu setiap kali kerana ini adalah char, 1226 00:59:09,250 --> 00:59:09,820 char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Jadi ia akan melalui. 1229 00:59:12,340 --> 00:59:13,290 Ini akan mengemas kini. 1230 00:59:13,290 --> 00:59:16,705 Jadi kali pertama ini berjalan, ia akan berada di sini di h. 1231 00:59:16,705 --> 00:59:17,590 Ini akan mengemas kini. 1232 00:59:17,590 --> 00:59:18,185 >> Ini akan menjadi satu. 1233 00:59:18,185 --> 00:59:21,310 Ini akan menjadi p, y, dan sebagainya dan sebagainya. 1234 00:59:21,310 --> 00:59:22,300 Kami akan update kaunter. 1235 00:59:22,300 --> 00:59:26,160 Apabila ia sampai akhirnya, hanya mencetak seberapa jauh ia mendapat. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Ya. 1238 00:59:28,050 --> 00:59:31,475 >> PENONTON: Jadi Ia dikira ruang sebagai salah, kan? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 1: Fikirkan demikian. 1242 00:59:35,222 --> 00:59:36,830 Adakah itu yang question-- 1243 00:59:36,830 --> 00:59:37,746 >> PENONTON: [didengar]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Jangan bimbang. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Hal ini saya lakukan itu. 1248 00:59:42,736 --> 00:59:47,710 Baiklah, jadi satu perkara yang saya mengerti adalah bahawa dengan array, 1249 00:59:47,710 --> 00:59:51,736 Anda juga boleh memperlakukannya sebagai kerana pointer array hanya 1250 00:59:51,736 --> 00:59:52,860 tempat-tempat yang berterusan dari ingatan. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Jadi, anda boleh memperlakukannya dengan cara yang sama. 1253 00:59:56,380 --> 00:59:59,000 Anda boleh memanipulasi mereka dengan petunjuk, juga. 1254 00:59:59,000 --> 01:00:04,770 Jadi, daripada melakukan pada yang demikian kes, perkara yang analog 1255 01:00:04,770 --> 01:00:07,490 akan pelbagai 0 sama dengan 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Tetapi dengan cara yang sama yang string ditentukan 1258 01:00:15,210 --> 01:00:18,740 oleh awal di mana watak pertama adalah, 1259 01:00:18,740 --> 01:00:22,270 array ditentukan oleh mana anggota pertamanya adalah. 1260 01:00:22,270 --> 01:00:25,120 Kerana kami tahu, kami tidak dijamin, bahawa 1261 01:00:25,120 --> 01:00:27,985 akan menjadi yang berterusan blok ingatan. 1262 01:00:27,985 --> 01:00:29,360 Itulah yang membolehkan kita untuk melakukan hal ini. 1263 01:00:29,360 --> 01:00:31,193 Kami tahu mereka berterusan blok ingatan. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Jadi dalam hal ini, oleh dereferencing hanya array, yang memberitahu kita, 1266 01:00:36,500 --> 01:00:40,800 OK, pergi ke permulaan array, yang ada di sini. 1267 01:00:40,800 --> 01:00:42,640 Jadi, anda boleh menetapkan ia sama dengan satu. 1268 01:00:42,640 --> 01:00:48,610 Dan dalam kes ini, apa pun array jenis adalah, apabila anda mengemas kini dengan satu, 1269 01:00:48,610 --> 01:00:50,830 itu hanya seperti mengemas kini untuk indeks yang akan datang. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Anda boleh melakukannya kerana anda tahu apa yang sedang anda. 1272 01:00:56,360 --> 01:00:59,770 Sehingga tahu berapa banyak untuk mengemaskini penunjuk anda dengan, 1273 01:00:59,770 --> 01:01:02,925 apa alamat untuk mengemas kini ia begitu bahawa anda berada di slot akan datang. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Jadi, ini adalah hanya cara yang berbeza menulis pelbagai 0 sama dengan 1, 1276 01:01:09,400 --> 01:01:15,114 array 1 sama dengan 2, pelbagai braket 2 sama dengan 3. 1277 01:01:15,114 --> 01:01:16,780 Ia hanya cara lain untuk berfikir tentang hal itu. 1278 01:01:16,780 --> 01:01:19,600 Kerana mereka adalah berterusan blok dalam ingatan, 1279 01:01:19,600 --> 01:01:21,830 anda boleh merujuk kepada mereka sama ada oleh array notation-- 1280 01:01:21,830 --> 01:01:24,390 yang saya pribadi mencari easier-- tapi mungkin 1281 01:01:24,390 --> 01:01:27,347 Anda perlu untuk memanipulasinya ketat oleh alamat memori. 1282 01:01:27,347 --> 01:01:28,930 Dan ini adalah cara bagaimana anda akan melakukannya. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Jenis lebih dari seperti Perkara yang sejuk yang anda boleh lakukan 1285 01:01:32,630 --> 01:01:35,213 berbanding mungkin bukan sesuatu yang anda benar-benar akan dilaksanakan. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Saya menggunakannya di 61. 1288 01:01:38,630 --> 01:01:41,710 Kalian mungkin tidak perlu perlu bimbang tentang hal itu terlalu banyak. 1289 01:01:41,710 --> 01:01:43,693 Tetapi jika anda berminat, mengambil 61 tahun depan. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Kami orang-orang di rumah peregangan. 1292 01:01:46,560 --> 01:01:47,510 Saya tahu, itu panjang. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic Memory Allocation-- sehingga kita tahu yang 1295 01:01:58,880 --> 01:02:01,790 perkara apabila kita bercakap dalam Bahagian pertama kami bersama-sama, 1296 01:02:01,790 --> 01:02:04,560 kami melihat swap fungsi di mana ia adalah 1297 01:02:04,560 --> 01:02:08,010 di luar skop fungsi utama kami. 1298 01:02:08,010 --> 01:02:14,370 Dan kami telah lulus dalam nilai-nilai yang berkesan salinan. 1299 01:02:14,370 --> 01:02:20,570 >> Dan sekali swap selesai melaksanakan, ia hanya meninggalkan tumpukan. 1300 01:02:20,570 --> 01:02:22,830 Ingat, kita mempunyai tumpukan rangka untuk swap. 1301 01:02:22,830 --> 01:02:26,070 Ia meninggalkan dan orang-orang Nilai meninggalkan dengannya. 1302 01:02:26,070 --> 01:02:27,050 Dan mereka pergi. 1303 01:02:27,050 --> 01:02:28,615 Kami tidak dapat berbuat apa-apa dengan mereka dan kami sedih 1304 01:02:28,615 --> 01:02:29,989 kerana kita tidak boleh menukar nilai-nilai kita. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Tetapi dengan C, seperti yang saya sebutkan, anda mempunyai banyak kuasa ke atas ingatan. 1307 01:02:36,560 --> 01:02:43,310 Jadi apa yang boleh anda lakukan adalah anda boleh memperuntukkan perkara-perkara di heap sini 1308 01:02:43,310 --> 01:02:46,830 yang akan tinggal di sana sehingga Anda memberitahu mereka sebaliknya. 1309 01:02:46,830 --> 01:02:48,280 >> Mereka seperti anak-anak yang baik. 1310 01:02:48,280 --> 01:02:49,150 Mereka tinggal di sana. 1311 01:02:49,150 --> 01:02:50,270 Mereka tidak meninggalkan. 1312 01:02:50,270 --> 01:02:52,750 Mereka akan tinggal di sana sehingga anda seperti, OK, anda boleh pergi dari sini. 1313 01:02:52,750 --> 01:02:55,920 >> Manakala perkara-perkara di stack, yang- mereka seperti kanak-kanak nakal. 1314 01:02:55,920 --> 01:02:59,160 Mereka hanya akan melarikan diri apabila anda mahu berada di sana dan kemudian mereka pergi. 1315 01:02:59,160 --> 01:03:00,160 Anda tidak boleh mendapatkan mereka kembali. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Jadi tumpukan is-- kita akan bercakap tentang malloc dan bebas, yang 1318 01:03:07,187 --> 01:03:08,895 Saya pasti anda semua dengar dalam kuliah. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 Dan yang pada dasarnya cara yang mempunyai data yang sangat gigih. 1321 01:03:14,210 --> 01:03:18,920 Jadi, anda boleh menyimpan data sekitar selama yang anda mahu. 1322 01:03:18,920 --> 01:03:19,546 Mhm. 1323 01:03:19,546 --> 01:03:21,475 >> PENONTON: Bolehkah anda tentukan tumpukan dan tumpukan? 1324 01:03:21,475 --> 01:03:24,030 Adakah mereka suka tempat-tempat untuk meletakkan segala sesuatu? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Jadi mereka pada dasarnya hanya-- mereka 1326 01:03:26,630 --> 01:03:29,530 cara kita merujuk hanya untuk ingatan. 1327 01:03:29,530 --> 01:03:37,300 Jadi tumpukan hanya tempat di mana memori diperuntukkan secara dinamik, 1328 01:03:37,300 --> 01:03:40,960 sedangkan timbunan merujuk lebih tumpukan frame 1329 01:03:40,960 --> 01:03:45,950 yang lebih penting kepada fungsi yang benar-benar berjalan. 1330 01:03:45,950 --> 01:03:47,200 Anda tidak benar-benar mempunyai kawalan. 1331 01:03:47,200 --> 01:03:50,690 >> Perbezaan besar, anda mempunyai kawalan atas timbunan itu jika anda mahu. 1332 01:03:50,690 --> 01:03:52,710 Anda mempunyai kurang kawalan ke atas tindanan. 1333 01:03:52,710 --> 01:03:55,030 Tumpukan bergantung kepada fungsi yang sedang berjalan, 1334 01:03:55,030 --> 01:03:58,320 dan perintah itu di mana mereka dijalankan, dan bagaimana perkara dikembalikan. 1335 01:03:58,320 --> 01:04:01,290 Manakala dengan timbunan itu, sebagai kita akan melihat, anda boleh berkata, 1336 01:04:01,290 --> 01:04:06,639 OK, saya mahu nilai ini menjadi sekitar sehingga saya memberitahu anda sebaliknya. 1337 01:04:06,639 --> 01:04:08,180 Anda tidak dibenarkan untuk membuangnya. 1338 01:04:08,180 --> 01:04:09,300 Anda tidak dibenarkan untuk mengatasinya. 1339 01:04:09,300 --> 01:04:11,675 Anda akan tetap sekitar selama yang saya katakan. 1340 01:04:11,675 --> 01:04:15,780 Anda dapat menjadi bos di tumpukan, sedangkan stack-- yang mungkin jika anda 1341 01:04:15,780 --> 01:04:18,080 seperti finagle jalan anda boleh menjadi bos. 1342 01:04:18,080 --> 01:04:19,340 Tetapi tidak cukup. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 Dan ia benar-benar hanya ingatan. 1345 01:04:22,070 --> 01:04:24,260 Ini hanya berbeda cara dari merujuk kepada ingatan. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Sejuk. 1348 01:04:26,400 --> 01:04:28,630 Maka dengan itu, bagaimana untuk mengawal ingatan anda. 1349 01:04:28,630 --> 01:04:32,070 Hal ini dengan malloc, yang Anda akan dapat menggunakan. 1350 01:04:32,070 --> 01:04:37,100 Jadi itu hanya singkat bagi peruntukan memori. 1351 01:04:37,100 --> 01:04:38,459 Itu semua itu. 1352 01:04:38,459 --> 01:04:41,250 Ada sekumpulan sejuk lain fungsi yang memiliki alloc di akhir, 1353 01:04:41,250 --> 01:04:42,750 dan mereka berdiri untuk perkara-perkara yang berbeza. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Oleh itu, apabila anda perlu simpanan yang perlu hidup lebih lama dr fungsi semasa anda supaya 1356 01:04:49,050 --> 01:04:51,010 bahawa apabila anda saat ini fungsi melarikan diri, 1357 01:04:51,010 --> 01:04:55,774 anda masih mempunyai data yang anda dapatkan dari itu, anda ingin menggunakan malloc. 1358 01:04:55,774 --> 01:04:57,190 Yang akan memulakan di atas timbunan itu. 1359 01:04:57,190 --> 01:05:00,140 Dan seperti saya katakan dan menjaga mengatakan, anda akan tetap di sana 1360 01:05:00,140 --> 01:05:03,050 sehingga Anda mengatakan sebaliknya, yang merupakan perkara yang penting di sini. 1361 01:05:03,050 --> 01:05:08,450 >> Jadi, satu perkara yang perlu melihat, dan itu biasanya benar-benar penting, 1362 01:05:08,450 --> 01:05:13,620 adalah bahawa ini sizeof super berguna untuk menggunakan 1363 01:05:13,620 --> 01:05:16,440 kerana bergantung pada jenis mesin yang anda jalankan, 1364 01:05:16,440 --> 01:05:22,470 ia mungkin mempunyai jumlah yang berbeza memori yang diperlukan. 1365 01:05:22,470 --> 01:05:26,870 Jadi, anda sentiasa mahu menggunakan saiz sehingga bahawa anda tidak mesin bergantung, 1366 01:05:26,870 --> 01:05:30,300 supaya kod anda akan berjalan di mana-mana mesin. 1367 01:05:30,300 --> 01:05:32,360 >> Dan itu hanya sebahagian menulis kode yang baik. 1368 01:05:32,360 --> 01:05:34,610 Jika bekerja di satu mesin, tetapi tidak apa-apa yang lain, 1369 01:05:34,610 --> 01:05:36,440 bagaimana berguna adalah program anda? 1370 01:05:36,440 --> 01:05:38,420 Jadi, anda sentiasa mahu memastikan dan menggunakan sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> PENONTON: Begitu juga yang seperti ukuran 10 inci [terdengar]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Ini adalah saiz 10 int. 1373 01:05:43,698 --> 01:05:44,197 yeah. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Jadi saiz int akan kembali berapa satu int ambil. 1376 01:05:48,830 --> 01:05:51,530 Atau ukuran char, bagaimana banyak seseorang char ambil. 1377 01:05:51,530 --> 01:05:54,150 Alangkah banyak blok itu yang anda mahu? 1378 01:05:54,150 --> 01:05:57,590 >> Jadi dalam hal ini, kita mahu sesuatu bahawa kita boleh menyimpan 10 ints ke. 1379 01:05:57,590 --> 01:06:00,240 Dan ia akan bekerja tanpa mengira mesin, yang dingin. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Jadi berapa banyak bait akan yang benar-benar memberikan? 1382 01:06:04,846 --> 01:06:06,190 Matematik cepat. 1383 01:06:06,190 --> 01:06:06,787 >> PENONTON: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Tepat. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Jadi satu lagi perkara yang besar. 1388 01:06:12,030 --> 01:06:14,840 Penunjuk atau malloc boleh kembali null. 1389 01:06:14,840 --> 01:06:17,910 >> Jadi sekali lagi, sentiasa memeriksa untuk lihat jika ia kembali batal 1390 01:06:17,910 --> 01:06:19,620 sebelum anda mencuba dan berbuat apa-apa dengannya. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Jika anda mencuba dan dereference penunjuk ini sekarang, 1393 01:06:27,350 --> 01:06:29,720 ia hanya akan segfault kerana anda pergi dan cuba 1394 01:06:29,720 --> 01:06:31,730 menyentuh batal apabila anda tidak seharusnya. 1395 01:06:31,730 --> 01:06:34,000 Jadi selalu memeriksa null. 1396 01:06:34,000 --> 01:06:36,075 Sekali lagi, semua yang anda boleh lakukan. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Ia akan kembali null. 1399 01:06:39,720 --> 01:06:42,740 Ia akan kembali batal jika anda sama ada ruang, atau untuk apa-apa sebab 1400 01:06:42,740 --> 01:06:44,350 ia berlari ke dalam beberapa bug memori. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Ia kadang-kadang hanya null. 1403 01:06:47,510 --> 01:06:48,990 Jadi anda hanya perlu menyemak untuk itu. 1404 01:06:48,990 --> 01:06:51,050 Itu semua slaid ini mengatakan. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 Dan kemudian apa yang kita ada di sini adalah panggilan untuk membebaskan. 1407 01:06:55,240 --> 01:07:00,550 Jadi dengan cara yang sama bahawa jika anda membuka fail anda perlu menutup fail, 1408 01:07:00,550 --> 01:07:04,340 jika anda memori malloc, anda Anda mesti bebaskan ingatan itu. 1409 01:07:04,340 --> 01:07:06,530 Dan kalian akan mendapatkan untuk melakukan hal-hal yang benar-benar sejuk. 1410 01:07:06,530 --> 01:07:09,624 >> Dan ada program yang boleh dijalankan untuk melihat apakah anda pernah bocor memori. 1411 01:07:09,624 --> 01:07:11,040 Tetapi anda tidak mahu bocor memori. 1412 01:07:11,040 --> 01:07:11,820 Ia benar-benar buruk. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Hanya merosakkan sesuatu. 1415 01:07:15,020 --> 01:07:20,939 >> Tidak baik untuk melakukan hal seperti pengaturcaraan bijak untuk kecekapan reka bentuk. 1416 01:07:20,939 --> 01:07:22,980 Tetapi ia juga hanya jenis dari buruk bagi komputer anda. 1417 01:07:22,980 --> 01:07:26,780 Hal jadi percuma apabila anda malloc mereka. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Kalian lihat simetri di sini. 1420 01:07:30,210 --> 01:07:31,180 Super mudah. 1421 01:07:31,180 --> 01:07:33,010 Hanya percuma dan kemudian apa pun pointer anda, 1422 01:07:33,010 --> 01:07:34,843 apa sahaja nama penunjuk anda, dan ia 1423 01:07:34,843 --> 01:07:36,710 akan mengurus membebaskan untuk anda. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Sejuk. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Maka kita mempunyai ini. 1428 01:07:42,530 --> 01:07:44,770 Oleh itu, kita hanya akan berjalan melalui program ini. 1429 01:07:44,770 --> 01:07:46,560 Dan kemudian kalian selesai. 1430 01:07:46,560 --> 01:07:50,240 >> Jadi [terdengar] hanya utama. 1431 01:07:50,240 --> 01:07:51,690 Oleh itu, kita mempunyai beberapa int * pointer. 1432 01:07:51,690 --> 01:07:53,648 Oleh itu, kita mempunyai penunjuk itu akan memegang int. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 Dan berapa banyak int ia akan berlaku? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Hanya satu. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Saiz int. 1439 01:08:01,100 --> 01:08:03,900 >> Kami memeriksa untuk melihat jika pointer adalah batal kerana ia 1440 01:08:03,900 --> 01:08:06,130 adalah, kita mahu mengatakan tidak melakukan apa-apa. 1441 01:08:06,130 --> 01:08:07,065 Ini tidak baik. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Oleh itu, kita mencetak beberapa kesalahan daripada memori, yang paling sering kembali 1, 1444 01:08:12,130 --> 01:08:14,260 seperti kalian digunakan untuk. 1445 01:08:14,260 --> 01:08:17,390 >> Dan kemudian kita ada di sini, kita dereference pointer kami. 1446 01:08:17,390 --> 01:08:22,840 Ini bermakna kita akan menyimpan sesuatu di lokasi yang diberikan kepada kita. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * pointer, atau malloc, mengembalikan alamat di mana ia menyisihkan ini 1449 01:08:30,830 --> 01:08:31,750 memori untuk anda. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Jadi pada dasarnya memberikan anda like-- jika anda 1452 01:08:34,800 --> 01:08:38,149 berfikir tentang sekumpulan rumah-rumah di kawasan kejiranan yang 1453 01:08:38,149 --> 01:08:40,640 yang anda mahu untuk meletakkan anda perabot di, malloc 1454 01:08:40,640 --> 01:08:43,850 adalah seperti OK, anda akan mendapat untuk pergi ke rumah tiga. 1455 01:08:43,850 --> 01:08:45,800 Dan ia memberi anda alamat rumah tiga. 1456 01:08:45,800 --> 01:08:48,775 >> Jadi sekarang ini, ini kedai penunjuk alamat, 1457 01:08:48,775 --> 01:08:50,149 menyimpan alamat rumah anda. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * Cara ptr, OK, saya di rumah saya. 1460 01:08:54,640 --> 01:08:55,326 Sejuk. 1461 01:08:55,326 --> 01:08:56,580 Saya perlu mendapatkan beberapa integer. 1462 01:08:56,580 --> 01:08:59,229 >> Jadi anda meminta seseorang untuk memberikan perabot sekarang. 1463 01:08:59,229 --> 01:09:00,430 Oleh itu, anda mendapatkan beberapa int. 1464 01:09:00,430 --> 01:09:05,100 Dan ia meletakkannya dalam penunjuk anda di mana ia menunjuk ke. 1465 01:09:05,100 --> 01:09:08,670 >> Dan kemudian ia hanya cetakan keluar, di mana sahaja yang anda masukkan. 1466 01:09:08,670 --> 01:09:11,060 Dan sekali lagi, rujukan. 1467 01:09:11,060 --> 01:09:15,649 Jadi ini adalah seperti anda pergi ke ini menangani dan anda melihat apa yang ada di sana. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Cool? 1470 01:09:17,630 --> 01:09:20,174 >> Dan tentu saja kita membebaskan penunjuk kami. 1471 01:09:20,174 --> 01:09:21,590 Jangan lupa untuk membebaskan penunjuk anda. 1472 01:09:21,590 --> 01:09:22,933 Jangan lupa untuk memeriksa null. 1473 01:09:22,933 --> 01:09:24,349 Jangan lupa untuk membebaskan penunjuk anda. 1474 01:09:24,349 --> 01:09:27,270 Anda mempunyai dua perkara yang anda ingat dari ini, atau yang anda harus ingat. 1475 01:09:27,270 --> 01:09:27,770 Ya. 1476 01:09:27,770 --> 01:09:31,590 PENONTON: [didengar] barang-barang seperti itu, char * s. 1477 01:09:31,590 --> 01:09:33,760 Kenapa kita tidak membebaskan mereka? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> PENONTON: Adakah orang-orang seperti tali? 1480 01:09:36,450 --> 01:09:39,160 Anda berkata string seperti char * s, kan? 1481 01:09:39,160 --> 01:09:41,200 Jadi mengapa tidak kita membebaskan tali? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: Anda hanya untuk percuma jika anda mallocing. 1483 01:09:43,204 --> 01:09:44,620 PENONTON: Oh, jika anda mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Jadi malloc dan bebas adalah dua perkara 1485 01:09:47,399 --> 01:09:49,000 bahawa anda harus selalu memiliki bersama-sama. 1486 01:09:49,000 --> 01:09:51,630 f terbuka, f dekat, dua perkara anda perlu mempunyai bersama-sama. 1487 01:09:51,630 --> 01:09:54,471 Dalam kedua-dua kes tersebut, memeriksa null. 1488 01:09:54,471 --> 01:09:54,971 Ya. 1489 01:09:54,971 --> 01:09:57,130 >> PENONTON: Jadi percuma saja membenarkan sesuatu yang lain 1490 01:09:57,130 --> 01:09:59,690 untuk disimpan di sana selepas program ini telah menggunakannya? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: Ia hanya mengatakan, OK, aku sudah selesai dengan ini. 1492 01:10:01,946 --> 01:10:03,320 Anda tidak perlu untuk tetap sekitar. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Jika tidak, komputer anda akan hanya suka mencuba dan tetap di sana. 1495 01:10:08,190 --> 01:10:10,910 Dan kemudian anda can't-- berjalan menjadi masalah memori kemudian. 1496 01:10:10,910 --> 01:10:13,660 Anda sentiasa ingin bebas kerana ia memberitahu komputer anda, OK, saya 1497 01:10:13,660 --> 01:10:15,190 dilakukan dengan tempat ini dari ingatan. 1498 01:10:15,190 --> 01:10:17,190 Anda boleh mempunyai ia kembali bagi saya untuk menggunakan kemudian. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Cool? 1501 01:10:20,500 --> 01:10:21,320 Ya. 1502 01:10:21,320 --> 01:10:26,950 >> PENONTON: Jadi kami menggunakan% d yang baru kerana dua yang datang kembali, 1503 01:10:26,950 --> 01:10:28,330 atau mengapa is-- [terdengar]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> PENONTON: Bolehkah anda menggunakan% i? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Anda boleh menggunakan% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Sebarang pertanyaan istimewa? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Pergi ke depan. 1511 01:10:38,985 --> 01:10:40,610 PENONTON: Saya hanya mempunyai soalan cepat. 1512 01:10:40,610 --> 01:10:50,200 Boleh berubah ptr itu, that's-- seperti, dengan int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 itu hanya mengatakan itu menunjuk ke suatu tempat di memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Adakah anda ingin [terdengar]? 1515 01:10:55,600 --> 01:10:58,050 PENONTON: -yang 's yang saiz daripada- tidak, itu OK. 1516 01:10:58,050 --> 01:11:01,292 Tetapi ia hanya menunjuk ke suatu tempat di memori itu hanya seperti empat bait. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Benar. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Jadi malloc saiz int berkata, OK, saya akan pergi lari, 1520 01:11:07,070 --> 01:11:08,780 mendapati empat bait memori untuk anda. 1521 01:11:08,780 --> 01:11:10,700 Ketika ia mendapati bahawa empat bait memori, 1522 01:11:10,700 --> 01:11:14,030 yang memberi kembali alamat dari mana ia bermula, 1523 01:11:14,030 --> 01:11:16,160 dan itulah yang disimpan dalam pointer, atau ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Baik. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Kalian kelihatan kurang bingung daripada kebanyakan orang apabila saya bercakap tentang penunjuk, 1528 01:11:21,700 --> 01:11:23,670 jadi saya rasa cukup baik sekarang. 1529 01:11:23,670 --> 01:11:24,520 >> Baik. 1530 01:11:24,520 --> 01:11:27,960 Seperti biasa, anda semua harus memiliki semua mendapat gred pset2 anda sekarang. 1531 01:11:27,960 --> 01:11:32,769 Saya tahu ada beberapa wonky hal di mana ia berkata, formula tidak sah 1532 01:11:32,769 --> 01:11:33,310 atau sesuatu. 1533 01:11:33,310 --> 01:11:36,166 Jika anda mendapat itu, semua gred anda adalah sah di sisi saya. 1534 01:11:36,166 --> 01:11:38,040 Jadi saya boleh menghantar anda screenshot dari pencapaian ujian anda. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Biarkan aku tahu juga jika anda hilang apa-apa nilai atau sesuatu 1537 01:11:41,760 --> 01:11:43,060 nampaknya tidak masuk akal. 1538 01:11:43,060 --> 01:11:43,720 Marilah kepada-Ku. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Saya telah super berbangga dengan anda orang sudah, jadi keep it up. 1541 01:11:48,830 --> 01:11:50,640 Dan mempunyai rehat yang baik dari minggu anda. 1542 01:11:50,640 --> 01:11:53,440 Saya pasti saya akan melihat beberapa dari Anda pada waktu pejabat. 1543 01:11:53,440 --> 01:11:55,414