1 00:00:00,000 --> 00:00:02,670 >> [TEMA MUSIC] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Bok, svima. 4 00:00:13,365 --> 00:00:14,365 Dobro došli natrag u odjeljak. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Lijep dan out-- što je razlog zašto sam Sigurno je da postoje samo četiri od vas ovdje 7 00:00:18,700 --> 00:00:21,180 a ne naš uobičajeni paket. 8 00:00:21,180 --> 00:00:22,670 Ja sam bio bolestan ovaj vikend. 9 00:00:22,670 --> 00:00:24,294 Pa nemam eksplozija za vas dečki. 10 00:00:24,294 --> 00:00:26,400 I ja mogu početi kašljati Strašno tijekom ove. 11 00:00:26,400 --> 00:00:27,790 Dakle, samo nose sa mnom. 12 00:00:27,790 --> 00:00:30,624 Ja ću stvarno probati i dobiti kroz ovaj prvi, 13 00:00:30,624 --> 00:00:32,290 ipak, prije nego što imam kašlja napad. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Ali samo biti lako na mene a Malo bit-- to je sve što tražim. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Dakle, naš plan za today-- samo reminder-- vaš kviz je sljedeći tjedan. 18 00:00:44,289 --> 00:00:46,830 Rekao sam ti ovo zadnji tjedan pa njega Ne bih vas uhvatiti nespremnog. 19 00:00:46,830 --> 00:00:47,954 Zato sam vas podsjetio opet. 20 00:00:47,954 --> 00:00:49,180 Idući tjedan je vaš kviz. 21 00:00:49,180 --> 00:00:52,730 U tom smislu, sljedeći tjedan-a Dio će biti puno više 22 00:00:52,730 --> 00:00:55,180 of-- Pokušat ću i raditi u nekom pregledu. 23 00:00:55,180 --> 00:00:58,130 Dakle, ako ti dečki mogli mi pomoći od strane mene slanjem 24 00:00:58,130 --> 00:01:00,990 stvari koje ste zadovoljni sa, da ste zabrinuti, 25 00:01:00,990 --> 00:01:03,530 Teme koje bi željeli za ja pokriti, to bi bilo sjajno. 26 00:01:03,530 --> 00:01:05,740 Dakle, ja mogu pokušati ih raditi u našem dijelu sljedećeg tjedna 27 00:01:05,740 --> 00:01:11,540 ili vam poslati dodatne materijale ili prep da ne bi mogli dobiti negdje drugdje. 28 00:01:11,540 --> 00:01:12,150 >> Da! 29 00:01:12,150 --> 00:01:13,520 Više ljudi dolaze! 30 00:01:13,520 --> 00:01:17,320 Mislio sam, jesam li to loše prošli tjedna, da nitko ne želi da se vrati? 31 00:01:17,320 --> 00:01:18,065 Bojim se. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Dakle, ostala tri stvari da ćemo ići preko 34 00:01:21,100 --> 00:01:24,850 su preusmjeravanje, file I / O, a zatim upućuje i dinamička memorija. 35 00:01:24,850 --> 00:01:29,160 Siguran sam da ste svi super uzbuđeni pointers-- svačija omiljena tema, 36 00:01:29,160 --> 00:01:31,310 tako jednostavno razumjeti. 37 00:01:31,310 --> 00:01:33,130 Siguran sam da ste vi svi dobili to, zar ne? 38 00:01:33,130 --> 00:01:39,510 >> Pa krenimo redom, redirection-- ovo je zapravo samo način 39 00:01:39,510 --> 00:01:42,920 kontrolirati kako vam ulaz stvari u svom programu, 40 00:01:42,920 --> 00:01:44,606 Kako gledate stvari iz svog programa. 41 00:01:44,606 --> 00:01:46,980 Glavni načini da dečki su u interakciji s njim 42 00:01:46,980 --> 00:01:51,650 je samo kroz standardne out s print screen ovdje. 43 00:01:51,650 --> 00:01:55,940 No, postoje načini za pipe-- kao što vidimo ovdje 44 00:01:55,940 --> 00:01:58,980 je jedan od naših words-- vrste od cijevi da informacije 45 00:01:58,980 --> 00:02:02,850 ili da su podaci u datoteku iz datoteke. 46 00:02:02,850 --> 00:02:05,820 To je samo različite načine dobivanje stvari u svoj program 47 00:02:05,820 --> 00:02:10,681 i iz svog programa, umjesto samo ih ispisa na ovom zaslonu 48 00:02:10,681 --> 00:02:12,430 ili unosom stvari iz naredbenog retka. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Dakle, prvi je malo veći od znak za umetanje. 51 00:02:18,030 --> 00:02:22,085 Tako output-- to samo ispisuje izlaz u datoteku umjesto zaslona. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Dakle, ako ste imali nešto što tiskani "Pozdrav, svijet!" na zaslonu, 54 00:02:29,500 --> 00:02:32,400 ako ga stavi umjesto na output.text, da 55 00:02:32,400 --> 00:02:35,220 stvara ovu datoteku pod nazivom output.text. 56 00:02:35,220 --> 00:02:38,550 A kad ga otvorite, to će reći: "Pozdrav, svijet!" tamo. 57 00:02:38,550 --> 00:02:41,410 To može biti iznimno korisna ako imate tonu pogrešaka 58 00:02:41,410 --> 00:02:43,430 Zapravo, kao što smo vidjeli u ovom jednom. 59 00:02:43,430 --> 00:02:46,810 Ako to ne učinite dvije znak za umetanje, to će ispisali poruke o pogreškama. 60 00:02:46,810 --> 00:02:52,090 >> Dakle, ako ste ima problema s izrađuju, ima puno pogrešaka 61 00:02:52,090 --> 00:02:56,770 a vi ste uzimajući zapeli u pokušaju Za kretanje kroz u vašem naredbenog retka 62 00:02:56,770 --> 00:02:59,110 kroz sve njih, možete samo ih ispisati u datoteku, 63 00:02:59,110 --> 00:03:02,130 otvoriti tu datoteku, tako da se kretati kroz njih lakše. 64 00:03:02,130 --> 00:03:05,160 Ja zapravo koristi da Puno kada je sam za ispravljanje pogrešaka 65 00:03:05,160 --> 00:03:07,970 moji 181 psets za strojno učenje. 66 00:03:07,970 --> 00:03:10,000 Dakle, to može biti super korisna kasnije. 67 00:03:10,000 --> 00:03:18,370 Također je korisno ako imate program da možda stvara knjižnicu 68 00:03:18,370 --> 00:03:20,430 ili stvaraju neki set žice, a vi 69 00:03:20,430 --> 00:03:22,846 trebaju biti u stanju vidjeti da to ih stvaraju ispravno. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 To je način za to. 72 00:03:25,160 --> 00:03:28,280 >> Dakle, ako ste ih ispisati u datoteku, te Možete ih lakše ispitati, zar ne? 73 00:03:28,280 --> 00:03:30,930 Versus pokušava pomicanje putem naredbenog retka. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 A onda je jedna stvar imati na umu je da sa samo veći 76 00:03:35,820 --> 00:03:40,090 nego znak za umetanje, ako pisanje u datoteku koja je već exists-- 77 00:03:40,090 --> 00:03:44,990 pa kao da smo trčali ovo prvi vrijeme, stavi smo output.text, 78 00:03:44,990 --> 00:03:49,970 i onda smo imali drugu programa da je tiskana ovo kao dva programa 79 00:03:49,970 --> 00:03:54,250 i nije veći nego output.text, to će prebrisati that-- tako 80 00:03:54,250 --> 00:03:56,715 prepisati ono što je ikada u da je datoteka za početak. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Dakle, ako želite dodati u datoteku, kao što smo vidjeli ovdje, 83 00:04:00,750 --> 00:04:04,779 ti samo napraviti dvije veće od znakova. 84 00:04:04,779 --> 00:04:05,820 I to će dodati na njega. 85 00:04:05,820 --> 00:04:06,750 Neće ga prepisati. 86 00:04:06,750 --> 00:04:09,770 Dakle, ako vam je potrebna za pokretanje višestruki Programi i vrsta zadržati 87 00:04:09,770 --> 00:04:13,170 Staza od onoga što svi od njih su povratka na vas u datoteku, 88 00:04:13,170 --> 00:04:14,190 to je način da to učinite. 89 00:04:14,190 --> 00:04:17,231 Ako ne briga što je u vašoj datoteci i to je dopušteno da se prepisati, 90 00:04:17,231 --> 00:04:19,204 možete samo koristiti jedan veći od. 91 00:04:19,204 --> 00:04:20,600 Je li to smisla svima? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> PUBLIKA: Kao točka slash Pozdrav veći od izlaza dot teksta, kao što su dva puta, 94 00:04:31,140 --> 00:04:34,030 to samo ću pokazati samo na izlazu dot Tekst drugi time-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Točno. 96 00:04:34,810 --> 00:04:40,450 Dakle, to bi zapravo samo potpunosti prepisati ono što je bilo u početku. 97 00:04:40,450 --> 00:04:44,260 Ako ova datoteka ovdje output.text već 98 00:04:44,260 --> 00:04:48,230 postoji, u osnovi ono što vi zovete da je opet s jednim Greater 99 00:04:48,230 --> 00:04:51,920 ne možete samo misliti na njega kao kao što ga zamijeniti datoteku. 100 00:04:51,920 --> 00:04:54,824 Kao i kada ste spremanju riječ dokumenata i vi spasiti što, 101 00:04:54,824 --> 00:04:57,365 i zadržati isti naziv, a je potpuno it-- prebrisati 102 00:04:57,365 --> 00:04:58,680 To je ista vrsta stvar. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Bilo tko imati bilo kakvih pitanja o Samo izlaza u datoteku? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Strašan. 107 00:05:05,550 --> 00:05:11,440 >> Dakle, očito, ako preokrenuti strelica smjera, to može učiniti ulaz. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Pa kad ti dečki imali kao Cezar ili Visioneer 110 00:05:19,960 --> 00:05:23,195 a vi morali ulazni nešto, ste imali naredbe argument 111 00:05:23,195 --> 00:05:24,960 koji zapravo ga unijeti. 112 00:05:24,960 --> 00:05:27,410 Ovo je još jedan način za to. 113 00:05:27,410 --> 00:05:30,520 Dakle, umjesto da čeka za naredbenog retka, 114 00:05:30,520 --> 00:05:33,800 kao kad si pitao za svoje Poruka u Cezara ili Visioneer, 115 00:05:33,800 --> 00:05:36,490 ako ste imali tekstualnu datoteku koji je imao svoju poruku, 116 00:05:36,490 --> 00:05:38,280 možete samo upišite ga u to. 117 00:05:38,280 --> 00:05:44,930 >> Dakle, ako bi to bilo kao točku slash Cezara 3 manje od strelica unos teksta, koji 118 00:05:44,930 --> 00:05:47,240 je vaša poruka, da će pokrenuti sasvim u redu. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Kada je vaš program zapravo Caesar pitao za ulaz od korisnika, 121 00:05:54,020 --> 00:05:57,360 to bi ga već imaju, jer ste upisali u ovu datoteku. 122 00:05:57,360 --> 00:05:58,830 To je samo još jedan način. 123 00:05:58,830 --> 00:06:02,445 Samo naličje output-- samo ulaz za vaše podatke. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> A onda posljednja je cijev. 126 00:06:06,680 --> 00:06:07,780 Dakle, ovaj je prilično cool. 127 00:06:07,780 --> 00:06:09,890 Zato što vam omogućuje da uzeti izlaz jednog 128 00:06:09,890 --> 00:06:13,695 Program i staviti ga kao ulaz za drugi program. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Ne znam je li itko od vas igrao s odgonetnuti 131 00:06:18,630 --> 00:06:20,590 da CS50 može imati ti dao, ali to bi 132 00:06:20,590 --> 00:06:27,380 omogućuju vam da se neki uzorak datoteku, upišite ga u svoj enkripcije, 133 00:06:27,380 --> 00:06:30,350 a onda od tamo upisati da u svoj dešifriranja 134 00:06:30,350 --> 00:06:32,470 kako bi bili sigurni ispalo isto. 135 00:06:32,470 --> 00:06:34,050 Dakle, to je vrsta kao što su tri puta petlje. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Idi za to. 138 00:06:39,423 --> 00:06:41,785 >> PUBLIKA: Ako program ima više ulaza, 139 00:06:41,785 --> 00:06:47,646 postoji način da ga koji ulazni reći koristiti tekstualnu datoteku ili izlaz za? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Ona ima više ulaza. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Bez obzira podnijeti svoj input-- kada je molba za ulaz taj prvi put, to je 143 00:07:00,430 --> 00:07:03,240 ide pretpostaviti, mislim, to je ide cijev u cijeloj datoteci. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Dakle, ako imate više ulaza, ti si će se cjevovod u više datoteka. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Dakle, ako ste tražili poruke tri puta u svom kodu, 148 00:07:12,390 --> 00:07:15,230 vi ćete biti stavljajući u tri različite datoteke. 149 00:07:15,230 --> 00:07:15,980 I to dobiva lud. 150 00:07:15,980 --> 00:07:18,188 A da ne bi trebali imati brinuti o tome sada. 151 00:07:18,188 --> 00:07:19,150 No, to je ideja. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Tako da, cijevi je samo izlaz iz jednog Program koristi ulaz u drugi. 154 00:07:26,822 --> 00:07:27,665 Svatko dobro tamo? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Cool. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 U redu. 159 00:07:30,932 --> 00:07:32,890 Vjerojatno nećete imati učiniti previše s njom. 160 00:07:32,890 --> 00:07:35,670 Ali, trebate razumjeti načina na koje možete koristiti. 161 00:07:35,670 --> 00:07:38,910 A tu su i neki slučajevi koji možda želite ga koristiti. 162 00:07:38,910 --> 00:07:44,590 >> Tako sam podnijeti / O- Znam što si saying-- smo navikli čitati iz 163 00:07:44,590 --> 00:07:50,500 i pisanje našem ekrana nalazi, što je standard u i standard van. 164 00:07:50,500 --> 00:07:54,370 I to je ono što ste vi bili radi od početka klase ovdje. 165 00:07:54,370 --> 00:07:58,220 Ali, također možete čitati i pisati datoteke, što je sve file I / O- tako datoteku ulaz, 166 00:07:58,220 --> 00:07:59,850 Izlaz je sve to stoji. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Dakle, to zapravo znači da je možete pohraniti svoje podatke. 169 00:08:04,360 --> 00:08:08,460 >> Kada samo ga ispisati na zaslon, to je u osnovi nema, zar ne? 170 00:08:08,460 --> 00:08:12,507 Čim bi "Pozdrav svijet "i trčanje" Pozdrav svijetu " 171 00:08:12,507 --> 00:08:14,090 ispisuje "Hello World" na zaslonu. 172 00:08:14,090 --> 00:08:16,370 Ali stvarno ne mogu učiniti ništa s njim od tamo. 173 00:08:16,370 --> 00:08:18,950 Ako pohraniti u tekstu datoteke, a zatim je iznenada 174 00:08:18,950 --> 00:08:22,789 imate ove podatke koje ste dopušteno manipulirati ili ga staviti u datoteku, 175 00:08:22,789 --> 00:08:24,080 ili ga staviti u programu kasnije. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Jedan od razloga zašto radimo to samo 178 00:08:29,290 --> 00:08:31,560 kao način za pohranu podataka za kasniju uporabu. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Imam par koraka ovdje samo hodanje kroz standardni 181 00:08:37,279 --> 00:08:39,450 I / O. U jednom koraku možete potrebno je stvoriti referencu 182 00:08:39,450 --> 00:08:43,480 do datoteke sa svima kape DATOTEKA zvijezda datoteku. 183 00:08:43,480 --> 00:08:45,740 Tako da stvara pokazivač na datoteku. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Pa onda ga želite otvoriti. 186 00:08:49,650 --> 00:08:52,940 A ti kažem, doslovno, Samo datoteku jednak fopen. 187 00:08:52,940 --> 00:08:57,400 A to će se vratiti pokazivač na datoteku koju ste upravo otvorili. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Vidio sam par vas dečki na radnog vremena. 190 00:09:01,460 --> 00:09:07,400 >> Ali jedna od stvari je remember-- upućuje 191 00:09:07,400 --> 00:09:10,409 može biti neka adresa ili nula, zar ne? 192 00:09:10,409 --> 00:09:12,700 Ako smo ikada imali slučaj gdje nešto može vratiti null, 193 00:09:12,700 --> 00:09:14,990 Što moramo učiniti prije nego što smo ikada koristiti? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Moramo provjeriti jesu li to je null ili ne, zar ne? 196 00:09:19,000 --> 00:09:23,600 Budući da su neki od vas možda imali problem gdje god objekt 197 00:09:23,600 --> 00:09:26,110 bio vratio se u bijeg bio ništavan. 198 00:09:26,110 --> 00:09:28,170 Pokušali ste izvoditi neke funkcije na njemu. 199 00:09:28,170 --> 00:09:29,770 A vaše računalo stranica zamjeriti. 200 00:09:29,770 --> 00:09:30,725 Pravo? 201 00:09:30,725 --> 00:09:33,640 Kladim se par vas možda su imali taj problem. 202 00:09:33,640 --> 00:09:38,890 >> Tako je s fopen, fopen će ili povratak pokazivač na datoteku, 203 00:09:38,890 --> 00:09:41,200 ili ako nešto pođe po zlu, to će se vratiti null. 204 00:09:41,200 --> 00:09:45,980 Dakle, uvijek je potrebno provjeriti da se nije vratio null 205 00:09:45,980 --> 00:09:47,880 Prije nego što pokušate napraviti bilo što drugo. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 To je kao standardni paradigme da ćeš morati ovdje. 208 00:09:51,974 --> 00:09:54,390 Ako postoji ikada šansa da nešto može vratiti null, 209 00:09:54,390 --> 00:09:56,590 provjerite je li ga ne prije nego što nastavite. 210 00:09:56,590 --> 00:09:58,911 Inače, idete dobiti lijep stranice pogreške. 211 00:09:58,911 --> 00:10:00,410 A nitko ne voli nositi s tim. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Dakle, kao što smo vidjeli ovdje, prvi argument je samo put do datoteke. 214 00:10:06,410 --> 00:10:09,380 Ako taj datoteka ne postoji, to će stvoriti tu datoteku. 215 00:10:09,380 --> 00:10:10,713 I to samo ide da bude prazna. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 A onda drugi argument je mod koji želite. 218 00:10:13,080 --> 00:10:14,610 Ne želimo čitati iz te datoteke? 219 00:10:14,610 --> 00:10:15,560 Želite li pisati od njega? 220 00:10:15,560 --> 00:10:16,476 Želite li dodati? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Pa zapravo ono što sam upravo said-- Ako datoteka ne postoji 223 00:10:20,670 --> 00:10:23,400 a vi pokušavate čitati iz da, to će baciti na pogrešku. 224 00:10:23,400 --> 00:10:26,890 Ako datoteka name-- sviđa, ako file.text još ne postoji 225 00:10:26,890 --> 00:10:29,250 a želite pisati na njega, to će stvoriti 226 00:10:29,250 --> 00:10:33,110 prazan file file.text za vas. 227 00:10:33,110 --> 00:10:36,612 A ako želite dodati, što bi trebalo učiniti istu stvar. 228 00:10:36,612 --> 00:10:38,081 Znači li to smisla? 229 00:10:38,081 --> 00:10:40,580 Ako pokušavate čitati iz datoteka koja još ne postoji, 230 00:10:40,580 --> 00:10:41,590 to će baciti na pogrešku. 231 00:10:41,590 --> 00:10:44,340 Inače, to će stvoriti datoteku za vas učiniti ono što želite s njim. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Cool. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Sada možemo pročitati iz datoteke. 236 00:10:48,880 --> 00:10:52,570 A to je samo vrsta ide kroz različite funkcije 237 00:10:52,570 --> 00:10:58,980 da imamo za file I / O. To će biti potrebno u ovotjednom pset, 238 00:10:58,980 --> 00:11:00,505 ako sam dobro sjećam. 239 00:11:00,505 --> 00:11:02,880 Da, to će biti apsolutno Potrebno je u ovotjednom pset. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Dakle fgetc vraća sljedeći znak. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets samo vraća liniju teksta. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 To će vratiti sve do nova linija, a to će se slomiti. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Tako fread čita određeni broj bitova i stavlja ih 248 00:11:18,700 --> 00:11:20,700 u niz, koji je je nešto što bi moglo 249 00:11:20,700 --> 00:11:25,485 želite učiniti s ponovnim size-- moglo biti korisno. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Koliko ljudi su čitali pset spec, usput? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 U redu. 254 00:11:32,261 --> 00:11:32,760 [Nečujan] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: U redu. 257 00:11:36,580 --> 00:11:37,530 U redu. 258 00:11:37,530 --> 00:11:41,940 Definitivno pročitati that-- je zabavno pset. 259 00:11:41,940 --> 00:11:51,320 Moći ćete oporaviti izbrisane memorije card-- jako uzbudljivo kada to radi. 260 00:11:51,320 --> 00:11:54,100 No, svakako, početi čitati to. 261 00:11:54,100 --> 00:11:56,280 Dođite razgovarati sa mnom ako vas Za sva pitanja o njemu. 262 00:11:56,280 --> 00:11:59,290 >> U redu, kako sam rekao, fread čita određeni broj bajtova. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 To je neki proizvoljni broj da ćeš postaviti. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 A onda fseek samo poteze u određenom položaju. 267 00:12:08,260 --> 00:12:11,150 Dakle, možda ne briga o sljedećih 10 bajtova. 268 00:12:11,150 --> 00:12:12,880 Vi samo želite preskočiti. 269 00:12:12,880 --> 00:12:14,030 Vi ne brinu o onima. 270 00:12:14,030 --> 00:12:16,280 Želite li pročitati s početkom u 11 bajta. 271 00:12:16,280 --> 00:12:18,252 fseek vam omogućuje da učinite to. 272 00:12:18,252 --> 00:12:20,710 Dakle, to vam omogućuje da se selektivno o onome što čitate. 273 00:12:20,710 --> 00:12:25,880 Zbog fgetc, fgets i fread pročitano iz određenog mjesta u datoteci. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Način da misle o tome je li to je naš datoteka, kada ste ga otvorili, 276 00:12:35,090 --> 00:12:41,140 imate tu poziciju u datoteci koja počinje na početku. 277 00:12:41,140 --> 00:12:45,040 Kad god nazvati fgetc, fgetf ili fread, 278 00:12:45,040 --> 00:12:48,875 to će početi od ova pozicija čuvar. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Recimo da samo želite čitati ovaj komad memorije ovamo. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Ne možete samo nazvati. 283 00:12:57,960 --> 00:13:02,430 Morate tražiti ovamo a onda pročitati od tamo 284 00:13:02,430 --> 00:13:06,540 ili pročitali, dobiva ili getc, ovisno o tome što želite. 285 00:13:06,540 --> 00:13:09,310 Dakle, traže samo vam omogućuje da preskočiti dijelove memorije. 286 00:13:09,310 --> 00:13:11,590 I to je jedini način možete preskočiti stvari 287 00:13:11,590 --> 00:13:14,012 bez čitanja ih u svoj tampon. 288 00:13:14,012 --> 00:13:15,470 Je li to smisla svima? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Očito, postoji Puno paralelno here-- 291 00:13:24,780 --> 00:13:27,780 naš izlaz ili ulaz preusmjeravanje, ste čitati i pisati. 292 00:13:27,780 --> 00:13:31,800 Dakle fputc samo piše znakova u datoteci. 293 00:13:31,800 --> 00:13:33,655 fputs piše liniju. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf ispisuje formatirani izlaz. 296 00:13:37,420 --> 00:13:41,190 Dakle, ako imate kartice, ili prostora, ili sitnica. 297 00:13:41,190 --> 00:13:44,180 A onda fwrite piše neke Niz bajtova u datoteci. 298 00:13:44,180 --> 00:13:48,860 Dakle, to je isti način fwrite i fread su analogne 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs i zatim fputc i fgetc-- puno 300 00:13:57,550 --> 00:14:00,710 od ludi, brze stvari. 301 00:14:00,710 --> 00:14:05,300 >> Samo vrsta zadržati ovu handy-- imat ćete različite puta 302 00:14:05,300 --> 00:14:08,680 gdje možda jednostavno želite jedan znak na vrijeme. 303 00:14:08,680 --> 00:14:09,890 Možda želite cijelu liniju. 304 00:14:09,890 --> 00:14:14,320 Uz vašu rječniku pset-- koji je u dva psets, 305 00:14:14,320 --> 00:14:19,690 Vjerujem, dajemo vam cjelinu rječnik u tekstualnom obliku 306 00:14:19,690 --> 00:14:22,252 koji je svaku riječ odvojene linije. 307 00:14:22,252 --> 00:14:24,210 Dakle, ako ste željeli pročitati jednom riječju u isto vrijeme, 308 00:14:24,210 --> 00:14:31,769 što možda koristite, ako ste čitajući i svi smo razdvojeni na novim linijama, 309 00:14:31,769 --> 00:14:33,310 a vi samo želite jednu riječ u isto vrijeme? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Publika: Fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Točno. 313 00:14:36,748 --> 00:14:39,960 Fgets-- jer to vraća sve što je na jednoj liniji. 314 00:14:39,960 --> 00:14:42,750 A ako svaka riječ je njezina vlastita linija, možemo koristiti fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Cool. 317 00:14:45,010 --> 00:14:47,290 Je li to smisla, svima? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Da, mi ćemo doći do zabavni dio s pokazivačima 320 00:14:50,020 --> 00:14:51,728 Vrlo brzo, u kojem vas dobili učiniti neke matematike. 321 00:14:51,728 --> 00:14:52,776 I to će biti sjajno. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Prošle step-- zatvorite datoteku. 324 00:14:57,740 --> 00:15:01,090 Sa tako mnogo stvari ovdje, jedan od naših paradigmi 325 00:15:01,090 --> 00:15:03,550 je, ako se može vratiti null, provjerite null. 326 00:15:03,550 --> 00:15:06,160 Ako otvorite nešto, bilo bi bolje da ga zatvoriti. 327 00:15:06,160 --> 00:15:10,419 U redu, tako da ne završiš dok si učinjeno, osim ako ste ga zatvorili. 328 00:15:10,419 --> 00:15:12,585 Nešto kao da je nije gotova dok se mast dama pjeva. 329 00:15:12,585 --> 00:15:14,130 To je poput zatvaranja datoteku. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Kao što kaže ovdje, samo ponavljam, uvijek 332 00:15:19,190 --> 00:15:21,750 otvorite datoteku prije nego što ste čitanje ili pisanje na njega. 333 00:15:21,750 --> 00:15:24,450 I uvijek ga zatvoriti, ako ste ga otvorili. 334 00:15:24,450 --> 00:15:25,460 Sve u redu? 335 00:15:25,460 --> 00:15:25,960 Cool. 336 00:15:25,960 --> 00:15:26,835 >> Dakle, ovdje je primjer. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Dakle tiny-- Ne znam je li vama dečki mogu vidjeti da je vrlo dobro. 339 00:15:34,330 --> 00:15:36,805 Kad bismo mogli povećati svjetlina nekako. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Dopustite mi da zapravo to učiniti ako mogu. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 U redu, vi stvarno ne mogu vidim da na sve, može li? 344 00:15:51,470 --> 00:15:52,905 U redu, idemo to učiniti, onda. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Nečujan] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Pretpostavljam da je to puno bolje vidjeti. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Može li itko vidi gdje moje miš otišao je pitanje? 351 00:17:19,455 --> 00:17:22,837 Ah, tu je is-- što se bori! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> U redu. 354 00:17:49,520 --> 00:17:53,845 U osnovi, vi bi trebali imati kakav ideje o tome što se to radi. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 To nije savršena. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Ali ja radije to objasniti nego što troše više vremena pokušavajući ga oblikovati ispravno. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Uglavnom, kao što vidite ovdje, počnemo s otvaranja datoteke. 361 00:18:07,280 --> 00:18:09,620 I mi imamo neke datoteka baze podataka da smo 362 00:18:09,620 --> 00:18:12,300 otvor koji kaže da je našim studentima. 363 00:18:12,300 --> 00:18:14,020 A mi ćemo pisati na njega. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Pa naravno, vrati null. 366 00:18:17,720 --> 00:18:19,650 Dakle, moramo provjeriti null. 367 00:18:19,650 --> 00:18:22,930 A onda, ako to nije null, možemo proći. 368 00:18:22,930 --> 00:18:25,660 I kao što vidite, mi smo petlje ovuda. 369 00:18:25,660 --> 00:18:26,960 Tu su studenti. 370 00:18:26,960 --> 00:18:30,520 Studenti se mljeveno meso definiran kao tri. 371 00:18:30,520 --> 00:18:34,060 A što mi radimo je da smo ispis na datoteku, zar ne? 372 00:18:34,060 --> 00:18:36,975 Dakle, ono što smo ispis na naše datoteke? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> PUBLIKA: rezultat da su u nizu? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Da. 376 00:18:49,680 --> 00:18:50,980 Na rezultate koji su u array-- točno. 377 00:18:50,980 --> 00:18:53,050 Dakle, mi otvaramo ovu datoteka baze podataka, koji 378 00:18:53,050 --> 00:18:56,040 Pretpostavljam da je neka vrsta od razreda baze podataka. 379 00:18:56,040 --> 00:19:01,100 A mi smo samo ispis ocjene svakog studenta na tu datoteku. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Dobro. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Strašan. 384 00:19:04,310 --> 00:19:05,100 U redu. 385 00:19:05,100 --> 00:19:06,950 Vratimo to-- 386 00:19:06,950 --> 00:19:08,646 >> PUBLIKA: Imam kratko pitanje. 387 00:19:08,646 --> 00:19:11,570 Je printf ne za petlju? 388 00:19:11,570 --> 00:19:12,870 To je samo u ako petlji? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Ne, to je u for petlji. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Ja ne mogu vidjeti moj miš vrlo dobro ovdje. 392 00:19:18,810 --> 00:19:21,359 Tako sam se bori da format koji ispravno. 393 00:19:21,359 --> 00:19:22,525 Taj nosač treba otišao. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 To bi trebao biti ovdje. 396 00:19:25,130 --> 00:19:26,605 To je ono što je u vašem for petlje. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Tu. 399 00:20:11,180 --> 00:20:12,160 Sada je dosta. 400 00:20:12,160 --> 00:20:16,720 Dakle, to je kako bi trebalo, osim be-- za taj posljednji nosač da sam odbio. 401 00:20:16,720 --> 00:20:17,220 U redu. 402 00:20:17,220 --> 00:20:19,491 Je li to smisla svima? 403 00:20:19,491 --> 00:20:19,990 U redu. 404 00:20:19,990 --> 00:20:23,750 Idemo krenuti dalje na sljedeću stvar then-- 405 00:20:23,750 --> 00:20:26,180 koji je, zapravo, idete trebati vidjeti kod. 406 00:20:26,180 --> 00:20:28,370 Dakle Samo ću se kopirati da je tijekom upravo sada. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 U redu. 409 00:20:32,000 --> 00:20:35,110 Tako ću vam pokazati dečki ovaj kod. 410 00:20:35,110 --> 00:20:38,240 I želim vam da isprobate i lik kako ono što je trebao učiniti. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Dakle, s obzirom that-- uzeti minutu ili tako. 413 00:20:52,480 --> 00:20:54,440 Pokušajte shvatiti što se ovdje događa. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Bilo koji ideja? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Znamo da imamo najmanje dva argumenti u naredbenog retka, zar ne? 418 00:22:12,470 --> 00:22:16,270 Pretpostavljam da je jedan od kojih će biti da [nečujan] našeg programa je 419 00:22:16,270 --> 00:22:17,530 a onda nešto drugo. 420 00:22:17,530 --> 00:22:19,980 Jer ako [nečujan] manje nego dva, mi vikati na njih. 421 00:22:19,980 --> 00:22:21,140 Pravo? 422 00:22:21,140 --> 00:22:25,300 I iz uporabe, izgleda to će biti neka vrsta datoteke. 423 00:22:25,300 --> 00:22:26,260 Svi se slažemo da to? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Pa sad, što je petlje radi? 426 00:22:31,570 --> 00:22:32,570 Što se to događa kroz? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> PUBLIKA: Sve datoteke. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Točno. 430 00:22:37,240 --> 00:22:39,650 To se događa kroz sve datoteke koje smo ulaz tamo. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Dakle, za svaku datoteku, to je otvaraju neki string tamo. 433 00:22:46,040 --> 00:22:47,560 To otvara tu datoteku. 434 00:22:47,560 --> 00:22:48,060 Pravo? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 I to čita iz njega. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Naravno, provjeravajući je li to nula. 439 00:22:55,540 --> 00:22:57,220 A onda to znači tiskanje. 440 00:22:57,220 --> 00:23:01,460 Ako je nula, to je samo nam govori da to nije varalica koji postoji. 441 00:23:01,460 --> 00:23:04,290 Jer ne zaboravite, sa pročitajte naš datoteka mora postojati. 442 00:23:04,290 --> 00:23:04,810 Pravo? 443 00:23:04,810 --> 00:23:06,870 Uz pisati i dodati, možete dobiti daleko s njom. 444 00:23:06,870 --> 00:23:08,970 No, s čitanje, naša file mora postojati. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> A onda, ako on ne postoji, Što radimo ovdje? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Ajmo započeti ovdje. 449 00:23:15,780 --> 00:23:18,815 Što je to do-- ovo prvi znak. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Što to učiniti? 452 00:23:21,790 --> 00:23:24,100 On dobiva jedan znak, zar ne? 453 00:23:24,100 --> 00:23:25,400 Pa što se to radi? 454 00:23:25,400 --> 00:23:26,775 Postaje prvi znak. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Svatko zna EOF? 457 00:23:30,200 --> 00:23:31,170 >> PUBLIKA: Kraj datoteke? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Kraj file-- točno. 459 00:23:32,680 --> 00:23:35,310 Dakle, to će proći Cijeli datoteka, zar ne? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 A onda će se ažurirati uzimajući sve naknadne karakter. 462 00:23:40,780 --> 00:23:41,565 Pravo? 463 00:23:41,565 --> 00:23:43,636 A što se to radi? 464 00:23:43,636 --> 00:23:44,760 PUBLIKA: Stavljanje da in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: Putchar ispisuje na svoj screensaver. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Nečujan] znak. 469 00:23:51,950 --> 00:23:54,300 I onda kad je [nečujan] to će zatvoriti datoteku. 470 00:23:54,300 --> 00:23:57,370 >> PUBLIKA: Zar ne trebate [? drugo? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Ne nužno. 472 00:23:59,005 --> 00:24:01,480 Mislim, to je vrsta implicirano u tome. 473 00:24:01,480 --> 00:24:06,780 Zbog toga se vraća, iako, dokle jer to ne uhvatiti toga, ti si u redu. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Mislim da je vjerojatno dobro vježbati za napraviti ostalo. 476 00:24:10,250 --> 00:24:15,755 Ali ostalo nije uvijek potrebno posebno 477 00:24:15,755 --> 00:24:17,610 ako imate nešto poput povratka, koji je 478 00:24:17,610 --> 00:24:20,640 znači da u ovom slučaju, ako se uhvati je, vaš program će završiti 479 00:24:20,640 --> 00:24:21,850 i to nikada neću doći do toga. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 To je više za slučaj gdje ste ne nužno povratka nešto. 482 00:24:29,190 --> 00:24:31,370 Jer ako to nije bilo vraćaju ništa, 483 00:24:31,370 --> 00:24:34,430 to bi značilo da, ako je to istina, Ostatak to još uvijek će se kandidirati. 484 00:24:34,430 --> 00:24:36,138 I u tom slučaju, bi htio lažna. 485 00:24:36,138 --> 00:24:38,240 Ako se to vraća, i Vaš program je kraj, 486 00:24:38,240 --> 00:24:41,960 drugo nije potrebno sve vrijeme, ovisno o kontekstu. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jakov, jeste li pitanje? 489 00:24:44,375 --> 00:24:46,100 PUBLIKA: Da. 490 00:24:46,100 --> 00:24:49,300 Dakle, ne fgetc dobiti sljedeći znak? 491 00:24:49,300 --> 00:24:50,734 Kako povećati lik? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Da. 493 00:24:51,400 --> 00:24:52,774 Dakle fgetc dobiva sljedeći znak. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Možete misliti o tome kao C ++ u smislu. 496 00:24:56,866 --> 00:24:58,350 >> PUBLIKA: Pa što je EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF je kraj datoteke. 498 00:25:00,877 --> 00:25:03,960 To je samo čuvar koji vam omogućuje da znate da ste na kraju datoteke. 499 00:25:03,960 --> 00:25:06,742 Dakle, to će se ispisati na svom standardu van. 500 00:25:06,742 --> 00:25:08,950 A onda će se zatvoriti datoteka kada se to radi. 501 00:25:08,950 --> 00:25:10,700 A onda idemo slijedeću sliku, zar ne? 502 00:25:10,700 --> 00:25:12,660 Dakle sveukupno, što ovaj program učiniti? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Nečujan] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Da. 506 00:25:16,900 --> 00:25:18,770 To samo ispisuje sve tamo. 507 00:25:18,770 --> 00:25:23,270 Dakle, ako vi ikad koristili CAT a zatim naziv nekog file-- 508 00:25:23,270 --> 00:25:26,240 Ne znam je li itko od vas ima ikada učinio da na svom terminalu. 509 00:25:26,240 --> 00:25:29,630 Ali, ako ste ikada koristili Naredba CAT-- C--T-- 510 00:25:29,630 --> 00:25:31,880 a zatim god datoteka imate there-- ga 511 00:25:31,880 --> 00:25:37,260 ga ispisuje na svoj terminal, koji je može biti super zgodan za neke stvari. 512 00:25:37,260 --> 00:25:38,746 I to puno koristiti. 513 00:25:38,746 --> 00:25:40,120 Je li to smisla svima? 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 >> U redu tako da vaš zadatak now-- bilo sami ili s ljudima oko you-- 517 00:25:46,530 --> 00:25:54,930 je samo napisati jednostavan program koji će samo pisati "Zdravo svijete!" 518 00:25:54,930 --> 00:25:56,255 na datoteku. 519 00:25:56,255 --> 00:26:00,215 >> [Nečujan] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Nečujan] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: Bio sam poput učinio Ja to loše prošli tjedan? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Ja ne mislim da je to loše. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Drago mi je da ste svi ovdje. 527 00:27:03,520 --> 00:27:04,655 To stvarno me čini sretnim. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Ja sam djevojka od jednostavnih užitaka. 530 00:27:10,160 --> 00:27:11,688 I baš kao i kad je moj poglavlje pohađa. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Pa ja sam samo dobivanje to krene ti dečki, tako da možemo kodirati zajedno. 533 00:27:18,270 --> 00:27:22,290 Ne volim nikoga stavljajući na licu mjesta, osim ako želite biti. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> PUBLIKA: Za kviza, učinite moramo napisati program? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Vi svibanj biti zatraženo da pisati jednostavne programe rukom. 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 >> PUBLIKA: kviz je sljedeći tjedan, zar ne? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: kviz je sljedeće srijede. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 To znači da je lijep [? CSE?] ocjenjivanja stranku nakon što 543 00:27:43,730 --> 00:27:50,390 znači da ćete dobiti svoje rezultate natrag da night-- u koje vrijeme? 544 00:27:50,390 --> 00:27:50,890 Tko zna? 545 00:27:50,890 --> 00:27:51,973 No, to će se te noći. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> U redu. 548 00:28:02,855 --> 00:28:04,250 Kako želimo početi ovo? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Ja ću vam dati hint-- počinje s tim. 551 00:28:09,630 --> 00:28:11,455 >> PUBLIKA: Morate otvoriti datoteku. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Da. 553 00:28:12,250 --> 00:28:14,060 Dakle, ono što želiš nazvati? 554 00:28:14,060 --> 00:28:16,150 Da li samo želite nazvati "datoteka"? 555 00:28:16,150 --> 00:28:17,480 Učinimo to lako. 556 00:28:17,480 --> 00:28:26,752 Dakle fopen-- što je naš reproducirati ispitni će biti? 557 00:28:26,752 --> 00:28:36,130 Nazovite ga "Zdravo." 558 00:28:36,130 --> 00:28:37,810 A što je naš način rada? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Što radimo na ovu sliku? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> PUBLIKA: Pročitajte. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Pisanje. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Pišemo na njega. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lijepa. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 U redu, tako da imamo ovu datoteku. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Ono što trebamo učiniti? 572 00:28:56,212 --> 00:28:57,420 PUBLIKA: Provjerite ako je null. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Provjerite je li to točno null--. 574 00:28:59,820 --> 00:29:01,980 To je ono što sam želio čuti. 575 00:29:01,980 --> 00:29:05,930 To bi trebalo biti automatsko, pogotovo prilično mnogo od ove točke. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Ako počnete segfaulting, vjerojatno nije provjerite null negdje. 578 00:29:10,950 --> 00:29:12,480 Devet od deset puta, to je će biti vaša greška. 579 00:29:12,480 --> 00:29:15,400 Dakle, ako ste samo mogli doći u navika, uvijek provjerite je li to nula, 580 00:29:15,400 --> 00:29:18,150 Vaš život će biti lijepo i easy-- ili lakše. 581 00:29:18,150 --> 00:29:19,480 >> Dakle, provjerite da li je to nula. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Dakle, ako to nije null, koja je ono prasak jednaka 584 00:29:24,820 --> 00:29:26,784 means-- ne null-- je valjana. 585 00:29:26,784 --> 00:29:27,700 Ono što želimo učiniti? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Mi samo želimo ispisati tom dokumentu, zar ne? 588 00:29:31,570 --> 00:29:32,923 Pa što ćemo koristiti? 589 00:29:32,923 --> 00:29:34,092 >> PUBLIKA: Fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- lijep. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 I fprintf traje dvije arguments-- gdje je to to se događa i što želimo ispisati. 593 00:29:44,000 --> 00:29:45,820 Dakle, što je prvi? 594 00:29:45,820 --> 00:29:46,570 Gdje se to događa? 595 00:29:46,570 --> 00:29:47,490 >> PUBLIKA: File. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Bit će to podnijeti. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 A ono što želimo tiskati? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Pozdrav, svijet!" 601 00:29:58,065 --> 00:29:58,565 U redu. 602 00:29:58,565 --> 00:30:03,670 Imamo jedan zadnji stvar-- još jedan veliki paradigma ovdje. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 PUBLIKA: Zatvori. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Zatvori. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Tu idete. 608 00:30:10,540 --> 00:30:13,384 >> PUBLIKA: Je li ovo događa ako datoteka je null? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Ne, ovo je ako to nije null. 610 00:30:15,050 --> 00:30:16,881 PUBLIKA: Oh, ako je not-- redu. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Za fopen a zatim dva argumenta koji idu unutra, 613 00:30:25,410 --> 00:30:27,655 Što prvi argument znači opet? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: Argument je baš kao i ime datoteke 615 00:30:30,392 --> 00:30:31,350 da želite ići. 616 00:30:31,350 --> 00:30:36,020 Tako je nakon toga radi, što bi imaju neku datoteku pod nazivom "Hello" 617 00:30:36,020 --> 00:30:38,320 koji je imao "Hello, svijet" u njemu. 618 00:30:38,320 --> 00:30:38,820 To je sve. 619 00:30:38,820 --> 00:30:39,500 Samo ime. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> PUBLIKA: A budući da je pisanje, datoteka ne mora već postoje. 622 00:30:48,650 --> 00:30:49,675 Je li to ono što je rekao? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Točno. 624 00:30:50,410 --> 00:30:50,910 Točno. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Ako je "Hello" kao datoteke još ne postoji, to je 627 00:30:55,839 --> 00:30:58,380 će stvoriti datoteku pod nazivom Pozdrav "i pisati na njemu za vas. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> PUBLIKA: Kada govorite program je napisao u datoteku, 630 00:31:03,610 --> 00:31:08,075 zašto pišete "file" umjesto naziv datoteke i fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Budući da u ovom slučaju, imamo da je velika FILE-- sve u caps-- zvijezda, 632 00:31:13,600 --> 00:31:14,260 podnijeti. 633 00:31:14,260 --> 00:31:17,370 Tako da je pokazivač na datoteku da ste razgovarali o tome. 634 00:31:17,370 --> 00:31:19,930 To je način na koji samo smo se odnosi na njega. 635 00:31:19,930 --> 00:31:24,850 Dakle, u ovom slučaju, Možete misliti file-- AHA, 636 00:31:24,850 --> 00:31:31,271 možemo koristiti this-- datoteku ovdje odnosi se na otvaranju "Hello" 637 00:31:31,271 --> 00:31:32,145 i ostavljajući ga pisati. 638 00:31:32,145 --> 00:31:34,728 >> PUBLIKA: Možemo li staviti "Hello" umjesto [? samo?] f datoteku? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Ne, jer je "Hello" treba biti otvoren i dijeljenim resursima. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 File ovdje je kao pokazivač koji kaže u redu, mi 642 00:31:45,980 --> 00:31:49,190 ima tu file-- hello-- da gledamo. 643 00:31:49,190 --> 00:31:50,680 To je otvorena. 644 00:31:50,680 --> 00:31:52,140 I mi ćemo pisati na njega. 645 00:31:52,140 --> 00:31:55,130 Ako ste samo koristiti "Hello", koja je kapsulirana u to. 646 00:31:55,130 --> 00:31:56,846 Tako da će poludjeti. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Mislim, mogli ste ga nazvali. 649 00:32:00,300 --> 00:32:03,960 Mogli su napraviti datoteku, star, "Hello", jednak. 650 00:32:03,960 --> 00:32:07,840 No, cijela stvar je da vas potreban pokazivač datoteke zvijezda u cilju 651 00:32:07,840 --> 00:32:09,281 biti u mogućnosti koristiti ove funkcije. 652 00:32:09,281 --> 00:32:11,280 PUBLIKA: Možete li napraviti datoteka, zvijezda, datoteke, "Hello" 653 00:32:11,280 --> 00:32:13,113 ili imate staviti podnijeti zvijezdu, datoteke u njoj? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Moglo bi ne datoteke, zvijezdu, "Hello". 655 00:32:16,330 --> 00:32:19,790 Možete promijeniti to god ime želite. 656 00:32:19,790 --> 00:32:22,114 To je potpuno proizvoljan što je to ime. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Možete imenovati ga ništa. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Ime ga leti špagete, ako ste htjeli. 661 00:32:28,020 --> 00:32:29,690 >> PUBLIKA: Što je "w" u navodnike za? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "w" je samo način rada. 663 00:32:31,540 --> 00:32:33,170 Tako smo pišete na ovu datoteku. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Svi su dobro? 666 00:32:35,320 --> 00:32:36,227 Vedro? 667 00:32:36,227 --> 00:32:36,981 Da. 668 00:32:36,981 --> 00:32:40,365 >> PUBLIKA: Pa kad piše ovo podnijeti, gdje ćemo onda pronaći tu sliku? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: To će biti u istom katalog da ste trenutno u. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Ako ste u pset tri i li to, pokrenuti unutar pset 672 00:32:48,880 --> 00:32:52,600 tri mape će biti Na ovu sliku pod nazivom "Pozdrav." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Svi su dobro? 675 00:32:53,757 --> 00:32:55,840 Osjećam se kao da ste sve uzimajući ga, što je super. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 U redu. 678 00:32:57,790 --> 00:33:05,960 Dakle, natrag na moje slide show-- Volim kada se stvari rade. 679 00:33:05,960 --> 00:33:08,674 U redu, pointers-- Jeste li vi uzbuđeni? 680 00:33:08,674 --> 00:33:09,465 Pokazivače su veliki. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Oni su se malo omotati glavu oko. 683 00:33:13,580 --> 00:33:15,288 Ovo je moja druga godina nastavna upućuje. 684 00:33:15,288 --> 00:33:16,850 I mislim da na kraju sam ga dobio. 685 00:33:16,850 --> 00:33:18,650 Dakle, ako se bore, to je u redu. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Kao što sam rekao prije, crtanje slike pomaže puno sa stvarima u CS, 688 00:33:24,070 --> 00:33:27,400 koliko god mislim da ljudi imaju tendenciju misliti oh, mi smo na računalu. 689 00:33:27,400 --> 00:33:28,399 Trebamo samo kod. 690 00:33:28,399 --> 00:33:30,190 No-- crtanje slika stvarno će vam pomoći. 691 00:33:30,190 --> 00:33:32,773 A ja stvarno vam savjetujemo da slavina u vašem djetetu iz vrtića stranu 692 00:33:32,773 --> 00:33:35,010 i izvedem bojice ili markeri i nacrtati. 693 00:33:35,010 --> 00:33:36,110 Zato što će vam pomoći. 694 00:33:36,110 --> 00:33:39,380 A ako me vidi na radno vrijeme, sam će biti nošenje oko hrpe papira 695 00:33:39,380 --> 00:33:41,580 s olovke za crtanje stvari. 696 00:33:41,580 --> 00:33:44,370 >> Dakle, posebno s pointers-- nacrtati slike. 697 00:33:44,370 --> 00:33:47,970 I siguran sam da mi zapravo ide biti crtež neke slike ovdje. 698 00:33:47,970 --> 00:33:51,270 >> Pa vi svi dobili vidjeti Binky, ovaj cool claymation stvar. 699 00:33:51,270 --> 00:33:54,720 A mi mislimo da je stvarno smiješno kada on eksplodira u hrpu komada. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 To je neki strip olakšanje za klasu. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [nečujan] ovo velika sposobnost biti u mogućnosti kontrolirati memorije. 704 00:34:05,900 --> 00:34:10,090 I to je jedna od stvari koje stvarno čini ga tako snažan jezik. 705 00:34:10,090 --> 00:34:13,469 No, s velikom moći dolazi velika odgovornost. 706 00:34:13,469 --> 00:34:16,230 A lude stvari mogu dogoditi ako niste oprezni. 707 00:34:16,230 --> 00:34:18,560 Dakle, ako koristite pokazivače, želite napraviti 708 00:34:18,560 --> 00:34:21,440 jeste li stvarno razumjeti upravo ono što radite. 709 00:34:21,440 --> 00:34:25,530 Nadam se da sljedeći malo Vrijeme će vam pomoći da zaista razumiju 710 00:34:25,530 --> 00:34:27,850 naputke, kako ih koristiti, i kako ih manipulirati. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Tako memory-- Siguran sam da imamo vidio ovaj dijagram prije. 713 00:34:33,460 --> 00:34:38,540 Dakle, ovo je samo jednostavan dijagram kako se stvari mogu biti pohranjeni memorije. 714 00:34:38,540 --> 00:34:43,145 Dakle, u osnovi imaju oni veliki nizovi jedan bajta blokova 715 00:34:43,145 --> 00:34:46,000 je ono što smo here-- blagi koracima po jedan svaki put. 716 00:34:46,000 --> 00:34:51,810 To je u hex [nečujan] tako osam-bitni blokova. 717 00:34:51,810 --> 00:34:55,510 I svaki blok povezan s nekim heksadecimalnom adresu. 718 00:34:55,510 --> 00:34:58,750 Dakle, ako ste ikada vidjeli 0x, to je samo notating 719 00:34:58,750 --> 00:35:00,670 da je heksadecimalni adresa. 720 00:35:00,670 --> 00:35:03,970 Možete pretpostaviti to znači neka adresa u memoriji. 721 00:35:03,970 --> 00:35:06,935 Govorimo o memorijskim adresama kad god vidim heksadecimalni. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Imamo Ints su varijable, pluta su varijable koje spremaju. 724 00:35:14,630 --> 00:35:16,260 Dakle Ints trgovine Ints. 725 00:35:16,260 --> 00:35:17,430 Pluta trgovine pluta. 726 00:35:17,430 --> 00:35:20,260 Dakle, imamo i naputke da trgovina memorije adrese. 727 00:35:20,260 --> 00:35:21,660 To je vrsta mapiranja. 728 00:35:21,660 --> 00:35:24,240 Upućuje se isključivo za memorijske adrese. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Dakle, to je kao vaš tip tamo. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Vaš uređaj je 32-bitni, što znači da je vaša memorijska adresa četiri bajta. 733 00:35:34,470 --> 00:35:37,830 Dakle, bilo pokazivač da imate također će biti četiri bajta. 734 00:35:37,830 --> 00:35:43,200 Inače, ako je to četiri bajtova, memorija je četiri bajta. 735 00:35:43,200 --> 00:35:44,790 Upućuje trgovine memorije. 736 00:35:44,790 --> 00:35:46,430 Dakle, oni su četiri bajta. 737 00:35:46,430 --> 00:35:48,460 Cool-- samo žele pojačati to. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Te bi trebao dobiti ovaj strip danas. 740 00:35:52,220 --> 00:35:55,040 Ne znam koliko vas xkcd su navijači, ali ja volim xkcd. 741 00:35:55,040 --> 00:35:55,780 To je super. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> U redu. 744 00:35:57,790 --> 00:36:01,640 Dakle, stvarajući pointers-- kao što sam rekao, to je prilično baš kao i bilo što drugo. 745 00:36:01,640 --> 00:36:02,930 Imate vrstu. 746 00:36:02,930 --> 00:36:04,050 Imate ime. 747 00:36:04,050 --> 00:36:04,810 Pravo? 748 00:36:04,810 --> 00:36:10,410 To je ono što smo tamo. [? Hex?] Zvjezdica znači da je pokazivač, 749 00:36:10,410 --> 00:36:12,250 a onda što god želite nazvati. 750 00:36:12,250 --> 00:36:15,770 Tako tipa predstavlja ono što se može pohraniti. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Sve u redu? 753 00:36:17,990 --> 00:36:24,350 Na isti način, ako radimo Ints, znamo mi pohranjivanje int tamo. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Sa pokazivačem ga ima memorijsku adresu. 756 00:36:30,280 --> 00:36:34,240 No, ono što to znači je that-- ovdje gdje crtež će doći u ruci. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Dakle, u ovom slučaju, imamo neki value-- recimo četiri. 759 00:36:45,980 --> 00:36:49,306 Četiri je na adresu jednog. 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 >> Ovaj prvi ovdje znači da je pokazivač 2x. 763 00:36:56,170 --> 00:36:56,740 Pravo? 764 00:36:56,740 --> 00:36:57,628 To je neki pointer x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x može biti nešto, bilo što. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Bez obzira x is-- kažu x je četiri. 769 00:37:05,130 --> 00:37:07,280 To će pohraniti memorije adresu ovdje. 770 00:37:07,280 --> 00:37:12,260 Dakle int, zvijezda, x-- je to neki drugi termin u memory-- 771 00:37:12,260 --> 00:37:13,590 tko zna što je to. 772 00:37:13,590 --> 00:37:15,430 No, to će pohraniti adresu ovdje. 773 00:37:15,430 --> 00:37:27,040 Dakle, to bi bilo like-- U tom slučaju, što god, 774 00:37:27,040 --> 00:37:32,630 pohranjena na 0x1-- god se pohranjuju na adresu koju naš pokazivač drži, 775 00:37:32,630 --> 00:37:35,280 mora uskladiti s što smo označeni. 776 00:37:35,280 --> 00:37:40,330 Dakle u 0x1, u ovom slučaju, to je x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 To samo može ikada biti int dok nas koristeći ovaj. 779 00:37:49,340 --> 00:37:52,950 >> Isto tako, ako imamo još jedna 1g, bez obzira na 780 00:37:52,950 --> 00:37:59,130 adresa je pohranjena u y ima biti char-- ista stvar s z. 781 00:37:59,130 --> 00:38:05,840 Na isti način, kad god vas probati i učiniti intx iznosi 0,4, 782 00:38:05,840 --> 00:38:09,275 to će vikati na tebe i biti kao nitko, rekli ste htjeli int. 783 00:38:09,275 --> 00:38:10,525 To je trebao biti int. 784 00:38:10,525 --> 00:38:11,900 Prestanite pokušavati da plutaju napraviti. 785 00:38:11,900 --> 00:38:14,150 >> Pa neka to biti ono što žele biti. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Neka se stvari budu ono što jesu. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Dakle, velika stvar je samo bez obzira na tip pokazivača 790 00:38:23,450 --> 00:38:26,101 je, to je jedini stvar koju možete pohraniti tamo. 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 S praksom, kao i sa prošli tjedan, sve 794 00:38:31,160 --> 00:38:32,817 Čini se zapravo vrsta sažetak. 795 00:38:32,817 --> 00:38:34,150 Idemo napraviti neke prakse. 796 00:38:34,150 --> 00:38:36,760 Trebalo bi više smisla. 797 00:38:36,760 --> 00:38:44,580 >> Dakle, s pozivom i dereferencing-- je zaista važno da se to ravno. 798 00:38:44,580 --> 00:38:46,630 Još uvijek imam osvježiti svaki sada i onda. 799 00:38:46,630 --> 00:38:48,450 I ja sam poput čekanja, koje ne želim? 800 00:38:48,450 --> 00:38:56,080 Tako će zapravo dati znak za struju li referenca ili adresu. 801 00:38:56,080 --> 00:39:00,100 Tako se vraća na adresu u memorije od kojih je promjenjiva je pohranjena. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Dakle, to će se zapravo vratiti na vas heksadecimalni, dok ga dereferencing 804 00:39:07,020 --> 00:39:10,641 zapravo će vam dati podatke koji se pohranjuju tamo. 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 Tako ćemo pogledati primjer jako brzo, ili zapravo do sljedećeg. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> U redu. 810 00:39:19,150 --> 00:39:21,790 Dakle, moramo razmišljati stvarno Pažljivo o tome. 811 00:39:21,790 --> 00:39:23,860 Dakle, ovdje imamo neki cijeli broj x. 812 00:39:23,860 --> 00:39:26,485 Ja ću pokušati izvući ovu kako bi najbolje moje sposobnosti. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Tako ćemo imati taj slot x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 I to je spremanje pet. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Njegova je adresa 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 Sve dobro. 822 00:39:44,100 --> 00:39:45,470 >> Tako sada imamo pokazivač. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Bilo je ovdje. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 A znak za struju nam daje adresu nečega. 827 00:39:57,560 --> 00:40:00,780 Dakle, u ovom slučaju, to je adresa x. 828 00:40:00,780 --> 00:40:01,875 Koja je adresa x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- a to pokazivač na 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 Dakle, možete misliti o tome pokazivač, 04, samo ukazuje ovamo. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 I oni su pozvani upućuje jer kao što smo dobili još u ovo, 837 00:40:25,740 --> 00:40:28,450 idete vidjeti upućuju na stvari. 838 00:40:28,450 --> 00:40:31,470 I jedan blok upućuju na drugo Blok će napraviti puno više smisla. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Dakle, ovdje su dva. 841 00:40:33,890 --> 00:40:38,230 I onda imamo neke kopija, što je what-- 0x0c. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 I to će dereference našoj karti. 844 00:40:43,420 --> 00:40:46,790 >> Pa što to govori je OK, ovdje je naš pokazivač. 845 00:40:46,790 --> 00:40:53,090 Vrijednost pohranjuje je 0x04, a što to govori se ići na ovu adresu 846 00:40:53,090 --> 00:40:54,300 i reci mi što je u njoj. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Tako da je učinkovito Što to strelica radi. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Možete misliti o tome kao što je vaša zvijezda. 851 00:41:01,280 --> 00:41:05,410 Dakle, u redu, kada radimo zvijezda, to znači slijediti. 852 00:41:05,410 --> 00:41:06,810 Idi na ovu adresu. 853 00:41:06,810 --> 00:41:11,430 I to je zapravo samo slijedi ovu strelicu za ovaj komad memorije. 854 00:41:11,430 --> 00:41:15,380 I dajte nam ono što je u njemu, što je 5. 855 00:41:15,380 --> 00:41:18,840 To je razlog zašto je naš primjerak jednaka 5. 856 00:41:18,840 --> 00:41:20,120 Znači li to smisla? 857 00:41:20,120 --> 00:41:22,769 Da li netko morati me proći opet, ili sporije? 858 00:41:22,769 --> 00:41:24,560 Želiš ići putem još jednom trenutku? 859 00:41:24,560 --> 00:41:25,060 U redu. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Mi ćemo ga ponovno iscrtavanje. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Kad smo počeli, svi smo suglasni smo neki komad memorije koja je promjenjiva 864 00:41:37,205 --> 00:41:40,890 x da smo postavili jednaka 5. 865 00:41:40,890 --> 00:41:42,910 Mi ne kontroliramo gdje je u memoriji. 866 00:41:42,910 --> 00:41:45,520 Dakle, ovo mjesto je samo proizvoljno dodijeljena. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Dobro postoji? 869 00:41:48,731 --> 00:41:49,230 U redu. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Onda smo inicijalizirati pokazivač na int. 872 00:41:53,330 --> 00:41:56,900 To je razlog zašto je dopustio da se ukazati na x jer imamo int u ovdje. 873 00:41:56,900 --> 00:42:00,840 Imamo još jedan komad memorije jer to kazaljke 874 00:42:00,840 --> 00:42:03,485 je varijabla baš kao i bilo što drugo. 875 00:42:03,485 --> 00:42:06,615 To je proizvoljno dodijeljena neki prostor u memoriji. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 A što se sprema je adresa x. 878 00:42:10,830 --> 00:42:13,200 Ampersand znači adresu x. 879 00:42:13,200 --> 00:42:14,575 Dakle, ono što je adresa x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> PUBLIKA: To je 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 Tako then-- posljednja. 885 00:42:25,940 --> 00:42:30,650 Imamo neke copy-- opet samo još jedna varijabla. 886 00:42:30,650 --> 00:42:32,520 Tako ćemo dodijeliti neku proizvoljnu mjesto. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 A mi dereference našoj karti. 889 00:42:38,080 --> 00:42:42,490 Zvijezda znači ići adresa pohranjena u mojoj karti. 890 00:42:42,490 --> 00:42:44,480 Reci mi što je tamo. 891 00:42:44,480 --> 00:42:47,290 Dakle, adresa pohranjena u našem pokazivačem 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Dakle, idemo na tu adresu. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 To ukazuje na tu adresu. 896 00:42:54,590 --> 00:42:57,481 Ono što je u ovom memorijskom bloku? 897 00:42:57,481 --> 00:42:57,980 To je pet. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Dakle, to je ono što smo dodijelili našu kopiju. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Svi su dobro? 902 00:43:04,860 --> 00:43:05,360 Cool. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- slika. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Dakle praćenje vrijednosti here-- sam ide na to da vi mislite o tome. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Možemo izvući još jednu sliku. 909 00:43:27,750 --> 00:43:31,260 Ali želim pokušati i razlog kroz to na svoju ruku, za minutu. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Budući da oni nisu dali nam primjer adresa, 912 00:44:04,149 --> 00:44:06,940 Samo ću učiniti ampersand x-- što bi trebalo pomoći voziti ga kući. 913 00:44:06,940 --> 00:44:07,950 Ampersand znači adresu. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Tako je u prvom jednom, svima ići s prve linije. 916 00:44:12,360 --> 00:44:15,690 Neki x set-a five-- neke slučajni utor u memoriji. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int zvijezda pokazivač je jednaka na adresu x, zar ne? 919 00:44:23,200 --> 00:44:28,180 Int zvijezda pokazivač stvara ovaj blok, naziva se pokazivač, 920 00:44:28,180 --> 00:44:30,650 i dodjeljuje na adresu x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Ja sam strašno na znakom. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Sada ono što mi radimo je kažemo U redu, dereference našoj karti. 925 00:44:40,550 --> 00:44:42,760 Dakle, idemo u redu, što je u našoj karti? 926 00:44:42,760 --> 00:44:44,820 To je znak za struju x. 927 00:44:44,820 --> 00:44:49,400 Idi na Ampersand x i preraspodijeliti ga. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Tako sada, znak za struju x će biti 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Tako je u osnovi, kada ste dereferencing, idete u redu. 932 00:45:05,174 --> 00:45:07,090 Ti ćeš biti crtanje Slike poput ove. 933 00:45:07,090 --> 00:45:09,423 Ti ćeš biti crtanje vaš strelice preko gdje je. 934 00:45:09,423 --> 00:45:16,030 Dakle, ići na ovaj utor u memoriji i bilo dajte mi tu vrijednost leđa, ili izmijeniti ga. 935 00:45:16,030 --> 00:45:21,620 U ovom slučaju, jer smo na to vrijednost, mi smo ga dodjeljuje se 35. 936 00:45:21,620 --> 00:45:24,700 Dok je u posljednja jedan, ako primijetite, mi 937 00:45:24,700 --> 00:45:27,680 su dodjeljivanje što je Ovdje se nešto drugo. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Tako su ovaj strašan stol. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 To nije tako loše. 942 00:45:36,890 --> 00:45:37,970 Vi raditi na njemu. 943 00:45:37,970 --> 00:45:39,640 Ja ću ga izvući na brodu. 944 00:45:39,640 --> 00:45:41,306 Mi ćemo ga ispuniti zajedno, u redu? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Dakle, zgrabite neki papir, zgrabiti partner, početi raditi. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Idem dobiti Veći komad krede. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Jer to će biti puno. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 U redu. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 Profesor: U redu. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Počnimo s prvom redu. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Počet ćemo tamo, onda vam dečki Možda može raditi kroz neki više. 959 00:48:16,970 --> 00:48:17,870 U redu. 960 00:48:17,870 --> 00:48:19,810 jednako b puta c pa što je? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 To nije trik pitanje, obećajem. 963 00:48:23,260 --> 00:48:24,440 >> UČENIK: 4 puta 5. 964 00:48:24,440 --> 00:48:25,420 >> Profesor: 4 puta 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Dakle, što je b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 UČENIK: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> Profesor: I c? 971 00:48:31,043 --> 00:48:31,542 UČENIK: 5. 972 00:48:31,542 --> 00:48:32,083 Profesor: 5. 973 00:48:32,083 --> 00:48:35,960 A onda to samo ide na biti znakom, a ampersand b, 974 00:48:35,960 --> 00:48:38,575 znak za struju c, zar ne? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Nije loše. 977 00:48:40,596 --> 00:48:42,081 To je vrlo jednostavna. 978 00:48:42,081 --> 00:48:42,580 U redu. 979 00:48:42,580 --> 00:48:44,300 Dakle, sljedeći jedan. 980 00:48:44,300 --> 00:48:48,725 C jednak puta, u slučaju tko je bio upoznat s tim. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Jesu li svi upoznati s vremena jednaka? 983 00:48:53,300 --> 00:49:00,105 OK, sve to means-- je to stenogram za jednak puta c. 984 00:49:00,105 --> 00:49:04,840 Također možete to učiniti s podjelom, s toga, uz oduzimanje. 985 00:49:04,840 --> 00:49:12,130 Možete napraviti jednakima, odnosno plus jednako c znači iznosi plus c, minus jednak 986 00:49:12,130 --> 00:49:15,190 c će biti jednako minus c. 987 00:49:15,190 --> 00:49:16,690 To je samo sintaktička šećera. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Dakle, u ovom slučaju, je jednaka puta c će nam što dati? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Opet, nije trik pitanje. 992 00:49:28,186 --> 00:49:28,965 >> UČENIK: 100. 993 00:49:28,965 --> 00:49:29,300 >> Profesor: 100. 994 00:49:29,300 --> 00:49:30,383 Ima li još nešto promijeniti? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Ne. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Možda ću napokon dobiti bolji u mojim znakom. 999 00:49:39,850 --> 00:49:42,047 >> UČENIK: U redu, ispričavam se, kako ste dobili 100? 1000 00:49:42,047 --> 00:49:42,630 Profesor: U redu. 1001 00:49:42,630 --> 00:49:46,594 Dakle, jednako puta c, pa puta c. 1002 00:49:46,594 --> 00:49:48,510 UČENIK: Oh, vi koristite za previous-- 1003 00:49:48,510 --> 00:49:49,135 Profesor: Da. 1004 00:49:49,135 --> 00:49:51,450 Dakle, to su naši najnoviji vrijednosti. 1005 00:49:51,450 --> 00:49:53,990 To su ono što bi trebao biti pomoću kao što smo pomaknuti prema dolje, u redu. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Dakle, b je jedina stvar mijenja, zar ne? 1008 00:50:01,520 --> 00:50:02,910 Tako ćemo ispuniti sve ostalo. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Što je b će biti? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Biti ili ne biti. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Pa što se to radi? 1015 00:50:20,240 --> 00:50:21,605 Što je zvijezda godišnje radi? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> UČENIK: Kod na mjesto godišnje. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> UČENIK: Ne, ne baš. 1020 00:50:27,480 --> 00:50:29,470 Dakle, ovo je d referenca. 1021 00:50:29,470 --> 00:50:31,580 >> UČENIK: Pa b je predao vrijednost godišnje. 1022 00:50:31,580 --> 00:50:37,340 >> Profesor: Da, tako je godišnje adresu, zar ne? 1023 00:50:37,340 --> 00:50:42,430 Dakle, to govori idu tamo gdje je pohranjuju i dati mu tu vrijednost. 1024 00:50:42,430 --> 00:50:43,884 Dakle, što je b? 1025 00:50:43,884 --> 00:50:44,425 UČENIK: 100. 1026 00:50:44,425 --> 00:50:46,534 Profesor: 100. 1027 00:50:46,534 --> 00:50:47,450 Savršeno. 1028 00:50:47,450 --> 00:50:49,879 U redu, pa kom je što se mijenja. 1029 00:50:49,879 --> 00:50:51,170 Sve ostalo ostaje isto. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Što je računalo će biti? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Jednostavan zadatak. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 PC je jednaka godišnje, a što je PA? 1036 00:51:05,990 --> 00:51:07,049 >> UČENIK: znak. 1037 00:51:07,049 --> 00:51:07,840 Profesor: Savršeno. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Sada smo sve zanimljivo. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, neka je razbiti ovaj dolje. 1042 00:51:15,230 --> 00:51:21,110 Prvo, ono što je b puta c, jer to je jednostavno dio ove jedne, zar ne? 1043 00:51:21,110 --> 00:51:22,360 B puta c is-- 1044 00:51:22,360 --> 00:51:23,320 >> UČENIK: 500. 1045 00:51:23,320 --> 00:51:28,880 >> Profesor: Da, tako što je ovaj jedan radi, 1046 00:51:28,880 --> 00:51:33,705 Ako je to zvijezda pb, što se mijenja? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> UČENIK: Što je u the-- 1049 00:51:37,242 --> 00:51:38,200 Profesor: Što je u B? 1050 00:51:38,200 --> 00:51:41,340 UČENIK: Što je u prostoru da pb ukazuje na. 1051 00:51:41,340 --> 00:51:43,406 Profesor: A pb se ukazuje to-- 1052 00:51:43,406 --> 00:51:43,905 UČENIK: B. 1053 00:51:43,905 --> 00:51:46,740 Profesor: B. Dakle jedini stvar se mijenja b, u pravu. 1054 00:51:46,740 --> 00:51:50,800 Dakle, b puta c, 500. 1055 00:51:50,800 --> 00:51:52,367 Dakle, to je ono što mijenja sada. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Cool. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lijepa. 1060 00:52:00,840 --> 00:52:01,905 Vi dečki rade sjajno. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 U redu, nego što se ovaj dolje. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C mijenja, zar ne? 1065 00:52:09,630 --> 00:52:11,530 Tako možemo ispuniti sve ostalo. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Da vidimo. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 U redu. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Znamo da je c će biti proizvod dva broja, zar ne? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Koje dvije brojke, iako? 1074 00:52:27,980 --> 00:52:28,970 >> UČENIK: ic? 1075 00:52:28,970 --> 00:52:31,930 >> Profesor: Tako je pravo za prvi. 1076 00:52:31,930 --> 00:52:34,385 Tako smo bih pozivom p, zar ne? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P od točke do, tako da znamo da je to će biti 100 puta više nego što? 1079 00:52:42,870 --> 00:52:46,232 Vremena Što li kom točku na? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Bodovi se. 1082 00:52:48,740 --> 00:52:55,038 Dakle 100 puta 100 10.000. 1083 00:52:55,038 --> 00:52:56,170 Da li to smisla? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Cool. 1086 00:52:58,200 --> 00:53:00,500 Početna protežu, dečki, zadnji red. 1087 00:53:00,500 --> 00:53:01,190 U redu. 1088 00:53:01,190 --> 00:53:02,160 Što se mijenja ovdje? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> UČENIK: A. 1091 00:53:06,935 --> 00:53:09,435 PROFESOR: A. Savršen, tako sve ostalo može ostati isti. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 U redu. 1094 00:53:16,710 --> 00:53:17,970 A što je? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Dakle, to je ono puta? 1097 00:53:26,060 --> 00:53:27,120 To je zvijezda pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Dakle zvijezda pb znači evo pb, PB ukazuje na b. 1100 00:53:34,490 --> 00:53:35,370 >> UČENIK: 500. 1101 00:53:35,370 --> 00:53:36,230 >> Profesor: 500. 1102 00:53:36,230 --> 00:53:39,236 Dakle, imamo 500 puta 100. 1103 00:53:39,236 --> 00:53:41,758 To je 50.000. 1104 00:53:41,758 --> 00:53:43,216 Uh! 1105 00:53:43,216 --> 00:53:45,646 Pogledajte kako. 1106 00:53:45,646 --> 00:53:47,982 >> UČENIK: Zašto moramo & c last-- 1107 00:53:47,982 --> 00:53:48,690 Profesor: Žao mi je. 1108 00:53:48,690 --> 00:53:50,080 UČENIK: Oh, u redu. 1109 00:53:50,080 --> 00:53:51,600 Profesor: Moj je loše. 1110 00:53:51,600 --> 00:53:52,890 Mnogo pisanja. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Svi su dobro? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Nije loše, zar ne? 1115 00:53:56,660 --> 00:53:58,490 Samo treba malo dok je raditi kroz. 1116 00:53:58,490 --> 00:54:01,080 Ako ga razbiti, razumijem što svaki dio 1117 00:54:01,080 --> 00:54:03,197 se odnosi to-- kao sa svime to je, 1118 00:54:03,197 --> 00:54:05,780 yes-- ga razbiti na malo Problemi i rekombiniraju, 1119 00:54:05,780 --> 00:54:07,345 a možete napraviti neki strašan stvari. 1120 00:54:07,345 --> 00:54:08,970 Tu su odgovori, ali mi je to učinio. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Pointer aritmetika. 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 Ruke su mi svi poput krede. 1126 00:54:15,510 --> 00:54:17,970 Dakle, dodavanjem ili oduzimanjem int prilagođava pokazivač 1127 00:54:17,970 --> 00:54:21,890 po veličini i vrsti pokazivača. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Sjeti se kako svaki tip ima različite veličine? 1130 00:54:28,390 --> 00:54:34,890 Dakle, kao što su bračni ili dugo dugo jest osam i int je četiri, ali char je jedan. 1131 00:54:34,890 --> 00:54:38,360 >> Dakle, ono što želite učiniti is-- jednu stvar za zapamtiti 1132 00:54:38,360 --> 00:54:44,080 je upravo to koliko je vaš Pokazivač vrijednost zapravo mijenja 1133 00:54:44,080 --> 00:54:46,550 ovisiti o Vrsta pokazivača je. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Svi su dobri s ovim? 1136 00:54:51,820 --> 00:54:52,760 Mogu li ga izbrisati? 1137 00:54:52,760 --> 00:54:53,440 Mi smo dobri? 1138 00:54:53,440 --> 00:54:53,940 Strašan. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Dakle, ako imamo neke pokazivač that-- ovo će be-- sam 1141 00:55:07,501 --> 00:55:08,834 ide to int kazaljke bi. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Ona pohranjuje ovo. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Ako ste bili reći pokazivač plus jedan, što će učiniti 1146 00:55:20,170 --> 00:55:23,420 je da će se ažurirati je po veličini int 1147 00:55:23,420 --> 00:55:25,950 jer to je Vrsta pokazivača je. 1148 00:55:25,950 --> 00:55:28,260 >> Uz C, sve je vrlo strogi i uređeno. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Int pokazivač će se ažurirati Količina prostora int bi potrajati. 1151 00:55:35,260 --> 00:55:36,260 Int je četiri bajta. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Pa što će to prerasti u? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Ti si samo dodao četiri na to. 1156 00:55:44,390 --> 00:55:50,040 Sada pokazivač će be-- redu. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Dakle, ako je to char i nismo pokazivač plus jedan, što bi to bilo sada? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Ako started-- praveći se nalazimo started-- sada je 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Idemo sada reći da je to bio char pokazivač, a mi ga dodali. 1163 00:56:10,850 --> 00:56:11,850 Što bi to promijeniti? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Koliko bajta je char? 1166 00:56:16,030 --> 00:56:16,680 >> PUBLIKA: Jedan. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: Jedna. 1168 00:56:17,304 --> 00:56:18,309 PUBLIKA: Pa 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Pa to bi bilo devet. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Dakle, samo nešto zapamtiti. 1172 00:56:23,820 --> 00:56:28,340 Baš kad ste dodali jedan, to nije dodavanjem jednog, osim ako to char. 1173 00:56:28,340 --> 00:56:34,190 On je dodao kako su mnogi bajtova tip da je, 1174 00:56:34,190 --> 00:56:36,960 zbog čega smo ova jednadžba ovdje. 1175 00:56:36,960 --> 00:56:40,190 Tako da je int puta veći tipa pokazivača. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Dakle, imamo primjer ovdje. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y je dodijeljen toj vrijednosti, 0x4, kad smo radili y plus jedan jednako. 1180 00:56:54,430 --> 00:56:56,830 Što je u tome, što je U x, ne mijenja. 1181 00:56:56,830 --> 00:56:58,610 Što je promjena što je u y. 1182 00:56:58,610 --> 00:57:04,980 Adresa pohranjena u y ažurira četiri jer postoje četiri bajta u int 1183 00:57:04,980 --> 00:57:06,097 i to je int kazaljke. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> U redu. 1186 00:57:07,790 --> 00:57:09,123 Tako sada imamo još jednu vježbu. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Dakle, pitanje je što će se ispisati. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Bilo koji ideja? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> PUBLIKA: Broj likovi u sretnoj mačka? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Točno. 1194 00:57:44,490 --> 00:57:45,531 Tako se sviđa sa svojim niz. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Da li su svi dobili to? 1197 00:57:48,260 --> 00:57:49,509 Ne želimo hodati kroz njega? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Da, u redu. 1200 00:57:52,010 --> 00:57:57,385 Dakle, ono što imamo here-- sam kao što je to toliko više. 1201 00:57:57,385 --> 00:57:59,340 Ja ne moram [Nečujan] smiješno. 1202 00:57:59,340 --> 00:58:01,690 >> Dakle, imamo niz ovdje, sretna mačka. 1203 00:58:01,690 --> 00:58:02,950 Lijepa. 1204 00:58:02,950 --> 00:58:05,080 Imamo neke brojač koji mi smo praćenje. 1205 00:58:05,080 --> 00:58:11,430 Dakle, imamo neke char * pokazivač da je upravo postavljena jednaka Str. 1206 00:58:11,430 --> 00:58:14,320 Što to radi je to dodjeljivanje neke pokazivač 1207 00:58:14,320 --> 00:58:16,380 na početku svog niza. 1208 00:58:16,380 --> 00:58:19,840 Jer siguran sam, kao što je to spominje se u predavanju, 1209 00:58:19,840 --> 00:58:22,290 mi smo vam dali dečki to vrsta podataka zove niz. 1210 00:58:22,290 --> 00:58:29,070 >> Ali stvarno žice su samo Niz of-- kao char *. 1211 00:58:29,070 --> 00:58:32,330 To je pokazivač hrpa likova da su susjedni u memoriji. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Dakle, ovo samo ga postavlja jednaka bilo je niz 1214 00:58:36,280 --> 00:58:38,980 identificirati gdje njezin prvi lik. 1215 00:58:38,980 --> 00:58:42,710 Dakle, ovo je samo postavljanje neku točku jednaka početak niza. 1216 00:58:42,710 --> 00:58:44,130 Svatko dobro tamo? 1217 00:58:44,130 --> 00:58:44,960 Cool. 1218 00:58:44,960 --> 00:58:49,840 >> Dakle, ovo je dereferencing naš pokazivač. 1219 00:58:49,840 --> 00:58:53,760 Dakle, to je zapravo ide daju nam neku vrijednost ovdje, 1220 00:58:53,760 --> 00:58:55,610 u našem nizu da govorimo o tome. 1221 00:58:55,610 --> 00:58:58,342 A mi govoriš dok to nije null terminator. 1222 00:58:58,342 --> 00:59:00,550 Dakle, zadržati ide dok ne dobijete za kraj niza. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Ažuriranje pokazivač po jedan. 1225 00:59:04,190 --> 00:59:09,250 Dakle r, to će zapravo ažurirati po jedan svaki put jer je to 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 >> Dakle, to će proći. 1229 00:59:12,340 --> 00:59:13,290 To će se ažurirati. 1230 00:59:13,290 --> 00:59:16,705 Dakle, po prvi put ove teče, to će biti ovdje na sat. 1231 00:59:16,705 --> 00:59:17,590 To će se ažurirati. 1232 00:59:17,590 --> 00:59:18,185 >> To će biti. 1233 00:59:18,185 --> 00:59:21,310 To će biti p, y, i tako dalje i tako dalje. 1234 00:59:21,310 --> 00:59:22,300 Mi ćemo ažurirati brojač. 1235 00:59:22,300 --> 00:59:26,160 Kada se dođe do kraja ga, Samo ispisuje koliko je stečen. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Da. 1238 00:59:28,050 --> 00:59:31,475 >> PUBLIKA: Pa to broji Prostor kao jedan, zar ne? 1239 00:59:31,475 --> 00:59:31,974 U redu. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 1: Misli tako. 1242 00:59:35,222 --> 00:59:36,830 Je li to question-- 1243 00:59:36,830 --> 00:59:37,746 >> PUBLIKA: [nečujan]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Bez brige. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 To sam učinio. 1248 00:59:42,736 --> 00:59:47,710 U redu, tako da jedna stvar mi razumijem da je s nizom, 1249 00:59:47,710 --> 00:59:51,736 možete ga tretirati kao Pokazivač jer polja su samo 1250 00:59:51,736 --> 00:59:52,860 kontinuirani točke memorije. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Tako da ga se može tretirati na isti način. 1253 00:59:56,380 --> 00:59:59,000 Možete ih manipulirati s pokazivača, previše. 1254 00:59:59,000 --> 01:00:04,770 Dakle, umjesto da rade, u ovom Slučaj, analogna stvar 1255 01:00:04,770 --> 01:00:07,490 bi niz 0 jednaka 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Ali na isti način kako Niz je određena 1258 01:00:15,210 --> 01:00:18,740 od početka gdje njegov prvi znak je, 1259 01:00:18,740 --> 01:00:22,270 niz određuje gdje je njezin prvi element. 1260 01:00:22,270 --> 01:00:25,120 Jer znamo, da smo zajamčena, da su ti 1261 01:00:25,120 --> 01:00:27,985 će biti kontinuirana blokovi memorije. 1262 01:00:27,985 --> 01:00:29,360 To je ono što nam omogućuje da to učinite. 1263 01:00:29,360 --> 01:00:31,193 Znamo da su kontinuirani blokovi memorije. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Dakle, u ovom slučaju, po dereferencing Samo niz, kako nam kaže, 1266 01:00:36,500 --> 01:00:40,800 U redu, idite na početak Vaš polje, što je ovdje. 1267 01:00:40,800 --> 01:00:42,640 Dakle, možete ga postaviti jednaka jedan. 1268 01:00:42,640 --> 01:00:48,610 I u ovom slučaju, bez obzira na niz tip je, kada ga ažurirati po jedan, 1269 01:00:48,610 --> 01:00:50,830 to je baš kao i ažuriranje to na sljedeći indeks. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Možete to učiniti, jer vas Znaš što je u svom nizu. 1272 01:00:56,360 --> 01:00:59,770 Pa zna koliko ažurirati svoj pokazivač strane, 1273 01:00:59,770 --> 01:01:02,925 ono adresa ga na tako ažurirati da ste na sljedećem utor. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Dakle, ovo je samo drugačiji način pisanja niz 0 jednaka 1, 1276 01:01:09,400 --> 01:01:15,114 Niz 1 iznosi 2, niz Nosač 2 jednako 3. 1277 01:01:15,114 --> 01:01:16,780 To je samo još jedan način da mislim o tome. 1278 01:01:16,780 --> 01:01:19,600 Budući da su kontinuirani blokova u memoriji, 1279 01:01:19,600 --> 01:01:21,830 možete uputiti na njima bilo od niza notation-- 1280 01:01:21,830 --> 01:01:24,390 što ja osobno nalaze easier-- ali možda 1281 01:01:24,390 --> 01:01:27,347 morate ga manipulirati strogo po memorijskih adresa. 1282 01:01:27,347 --> 01:01:28,930 I to je način na koji će to učiniti. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Vrsta više nalik super stvar koju možete napraviti 1285 01:01:32,630 --> 01:01:35,213 Možda ne u odnosu na nešto što ste zapravo ide za provedbu. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Ja ga koristiti u 61. 1288 01:01:38,630 --> 01:01:41,710 Vi vjerojatno ne treba brinuti o tome previše. 1289 01:01:41,710 --> 01:01:43,693 Ali, ako ste zainteresirani, potrajati 61 sljedeće godine. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Mi smo u kući stretch dečki. 1292 01:01:46,560 --> 01:01:47,510 Znam, to je dugo. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dinamička memorija Allocation-- pa znamo da je jedan 1295 01:01:58,880 --> 01:02:01,790 stvari kad smo razgovarali tijekom naš prvi odjeljak zajedno, 1296 01:02:01,790 --> 01:02:04,560 Gledali smo swap funkcija gdje je 1297 01:02:04,560 --> 01:02:08,010 izvan dosega naše glavne funkcije. 1298 01:02:08,010 --> 01:02:14,370 I mi smo prolazili u tim vrijednostima koji su bili učinkovito primjeraka. 1299 01:02:14,370 --> 01:02:20,570 >> I nakon zamjene završio izvršenja, to je samo ostavio hrpu. 1300 01:02:20,570 --> 01:02:22,830 Zapamtite, imamo stog okvir za swapa. 1301 01:02:22,830 --> 01:02:26,070 To ostavlja i onima Vrijednosti ostaviti s njom. 1302 01:02:26,070 --> 01:02:27,050 I oni su otišli. 1303 01:02:27,050 --> 01:02:28,615 Nismo mogli ništa učiniti s njima i bili smo tužni 1304 01:02:28,615 --> 01:02:29,989 jer ne možemo mijenjati naše vrijednosti. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> No, s C, kao što sam spomenuo, te imaju veliku moć nad memorije. 1307 01:02:36,560 --> 01:02:43,310 Pa što možete učiniti je da možete izdvojiti stvari na hrpi ovdje 1308 01:02:43,310 --> 01:02:46,830 koji će tamo ostati dok se ne što im reći drugačije. 1309 01:02:46,830 --> 01:02:48,280 >> Oni su poput dobre djece. 1310 01:02:48,280 --> 01:02:49,150 Oni tamo ostati. 1311 01:02:49,150 --> 01:02:50,270 Oni ne ostavljaju. 1312 01:02:50,270 --> 01:02:52,750 Oni će tamo ostati dok ne budete kao, u redu, možete otići. 1313 01:02:52,750 --> 01:02:55,920 >> Dok stvari na dimnjaku, who-- oni su kao nestašan djecu. 1314 01:02:55,920 --> 01:02:59,160 Oni samo ću pobjeći kad želite biti tamo i onda su otišli. 1315 01:02:59,160 --> 01:03:00,160 Ne možete ih dobiti natrag. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Dakle hrpa is-- ćemo govoriti o malloc i besplatno, što 1318 01:03:07,187 --> 01:03:08,895 Siguran sam da dečki čuli na predavanju. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 I to je zapravo način da imaju vrlo uporni podatke. 1321 01:03:14,210 --> 01:03:18,920 Dakle, možete zadržati podatke oko koliko god želite. 1322 01:03:18,920 --> 01:03:19,546 MHM. 1323 01:03:19,546 --> 01:03:21,475 >> PUBLIKA: Možete li definirati gomilu i stog? 1324 01:03:21,475 --> 01:03:24,030 Jesu li oni vole mjesta za staviti stvari? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Pa oni su osnovi just-- oni 1326 01:03:26,630 --> 01:03:29,530 način na koji se odnosi samo na memoriju. 1327 01:03:29,530 --> 01:03:37,300 Dakle, gomila je samo mjesta gdje se memorije je dodijeljeno dinamički, 1328 01:03:37,300 --> 01:03:40,960 dok je snop odnosi više stog okvire 1329 01:03:40,960 --> 01:03:45,950 da su u središtu Funkcije koje su zapravo trčanje. 1330 01:03:45,950 --> 01:03:47,200 Vi stvarno nemate kontrolu. 1331 01:03:47,200 --> 01:03:50,690 >> Velika razlika, imate kontrolu preko gomila, ako želite. 1332 01:03:50,690 --> 01:03:52,710 Imate manje kontrole nad snopa. 1333 01:03:52,710 --> 01:03:55,030 Stog ovisi o Funkcije koje se izvode, 1334 01:03:55,030 --> 01:03:58,320 i poredak u kojem su trčanje, a kako stvari vratio. 1335 01:03:58,320 --> 01:04:01,290 Dok s hrpu, kao ćemo vidjeti, možete reći: 1336 01:04:01,290 --> 01:04:06,639 U redu, želim ta vrijednost biti okolo dok sam vam reći drugačije. 1337 01:04:06,639 --> 01:04:08,180 Ne smiju se dobili osloboditi od njega. 1338 01:04:08,180 --> 01:04:09,300 Ne smiješ ga nadjačati. 1339 01:04:09,300 --> 01:04:11,675 Ti ćeš ga zadržati oko koliko god ti kažem. 1340 01:04:11,675 --> 01:04:15,780 Moći ćete biti gazda u hrpi, dok stack-- možda ako 1341 01:04:15,780 --> 01:04:18,080 kao izdejstvovati svoj put možete biti šef. 1342 01:04:18,080 --> 01:04:19,340 Ali ne baš. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 I to je zapravo samo uspomena. 1345 01:04:22,070 --> 01:04:24,260 To je samo različite načine upućivanja na memoriju. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Cool. 1348 01:04:26,400 --> 01:04:28,630 Dakle, s tim, kako kontrolirati svoje pamćenje. 1349 01:04:28,630 --> 01:04:32,070 To je s malloc, koji ti si idući u dobiti na korištenje. 1350 01:04:32,070 --> 01:04:37,100 Dakle, to je samo kratko za dodjelu memorije. 1351 01:04:37,100 --> 01:04:38,459 To je sve što je. 1352 01:04:38,459 --> 01:04:41,250 Postoji hrpa drugih povjetarca Funkcije koje imaju Alloc na kraju, 1353 01:04:41,250 --> 01:04:42,750 a oni stoje za različite stvari. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Dakle, kada vam je potrebno za pohranu kako treba nadživjeti svoju trenutnu funkciju tako 1356 01:04:49,050 --> 01:04:51,010 da kad vaš trenutni Funkcija bježi, 1357 01:04:51,010 --> 01:04:55,774 još uvijek imate podatke koji vas dobio od njega, želite koristiti malloc. 1358 01:04:55,774 --> 01:04:57,190 To će ga resetirali na hrpi. 1359 01:04:57,190 --> 01:05:00,140 I kao što sam rekao i zadržati govoreći, vi ćete ga zadržati tamo 1360 01:05:00,140 --> 01:05:03,050 dok ga ne reci inače, što je važna stvar ovdje. 1361 01:05:03,050 --> 01:05:08,450 >> Dakle, jedna stvar za primijetiti i to je obično jako važno, 1362 01:05:08,450 --> 01:05:13,620 je da ovaj sizeof je super korisno upotrijebiti 1363 01:05:13,620 --> 01:05:16,440 zbog toga, ovisno o tipu stroja radite, 1364 01:05:16,440 --> 01:05:22,470 može imati različite količine memorije koja je potrebno. 1365 01:05:22,470 --> 01:05:26,870 Dakle, uvijek želite koristiti veličinu tako da niste ovisni stroj, 1366 01:05:26,870 --> 01:05:30,300 tako da je vaš broj će se izvoditi na bilo kojem uređaju. 1367 01:05:30,300 --> 01:05:32,360 >> A to je samo dio pisanja dobrog koda. 1368 01:05:32,360 --> 01:05:34,610 Ako se to radi na jednom stroju, ali ne i bilo koji od drugih, 1369 01:05:34,610 --> 01:05:36,440 kako korisno je vaš program? 1370 01:05:36,440 --> 01:05:38,420 Dakle, uvijek želite pobrinite se i koristiti sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> PUBLIKA: Tako je da kao veličine 10 inča [nečujan]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: To je veličina 10 Ints. 1373 01:05:43,698 --> 01:05:44,197 Da. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Dakle, veličina Ints će se vratiti koliko se jedan int potrajati. 1376 01:05:48,830 --> 01:05:51,530 Ili veličina char, kako koliko se jedan char poduzeti. 1377 01:05:51,530 --> 01:05:54,150 A onda koliko blokovi to želite? 1378 01:05:54,150 --> 01:05:57,590 >> Dakle, u ovom slučaju, želimo nešto da možemo pohraniti 10 Ints u. 1379 01:05:57,590 --> 01:06:00,240 I to će raditi bez obzira stroja, što je super. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Pa koliko je bajtova će koji zapravo dati? 1382 01:06:04,846 --> 01:06:06,190 Brzi matematike. 1383 01:06:06,190 --> 01:06:06,787 >> PUBLIKA: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Točno. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Dakle, još jedna velika stvar. 1388 01:06:12,030 --> 01:06:14,840 Pointer ili malloc može vratiti null. 1389 01:06:14,840 --> 01:06:17,910 >> Pa opet, uvijek provjerite vidjeti je li se vratio null 1390 01:06:17,910 --> 01:06:19,620 Prije nego što pokušate i učiniti ništa s njom. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Ako ste probati i dereference ovo pokazivač sada, 1393 01:06:27,350 --> 01:06:29,720 to samo će segfault zato što je otišao i pokušao 1394 01:06:29,720 --> 01:06:31,730 dotaknuti nula kada ne bi trebali imati. 1395 01:06:31,730 --> 01:06:34,000 Dakle, uvijek provjerite null. 1396 01:06:34,000 --> 01:06:36,075 Opet, sve što možete učiniti. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> To bi moglo vratiti null. 1399 01:06:39,720 --> 01:06:42,740 To će vratiti null ako ste bilo Nema više prostora, ili iz bilo kojeg razloga 1400 01:06:42,740 --> 01:06:44,350 je naletio na neku memorijsku bug. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Ponekad jednostavno vraća null. 1403 01:06:47,510 --> 01:06:48,990 Dakle, samo trebate provjeriti za to. 1404 01:06:48,990 --> 01:06:51,050 To je sve to slide govori. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 I onda ono što imamo Ovdje je poziv da se oslobodi. 1407 01:06:55,240 --> 01:07:00,550 Tako je u isti način, ako vas otvoriti datoteku, morate zatvoriti datoteku, 1408 01:07:00,550 --> 01:07:04,340 Ako vas malloc memorije, što moraš osloboditi tu memoriju. 1409 01:07:04,340 --> 01:07:06,530 A vi ćete dobiti učiniti stvarno cool stvari. 1410 01:07:06,530 --> 01:07:09,624 >> I tu je program možete pokrenuti s vidjeti ako ste ikada ste curenje memorije. 1411 01:07:09,624 --> 01:07:11,040 Ali vi ne želite propuštati memorije. 1412 01:07:11,040 --> 01:07:11,820 To je jako loše. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Samo zabrljati stvari. 1415 01:07:15,020 --> 01:07:20,939 >> Loše je učiniti baš kao i programiranje mudro učinkovitosti dizajna. 1416 01:07:20,939 --> 01:07:22,980 Ali to je također samo vrsta od loše za vaše računalo. 1417 01:07:22,980 --> 01:07:26,780 Dakle, samo besplatne stvari kada ih malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Vi vidite simetrije ovdje. 1420 01:07:30,210 --> 01:07:31,180 Super jednostavan. 1421 01:07:31,180 --> 01:07:33,010 Samo besplatno, a zatim bez obzira na pokazivač, 1422 01:07:33,010 --> 01:07:34,843 bez obzira na ime pokazivač je, i to 1423 01:07:34,843 --> 01:07:36,710 će se pobrinuti za to oslobađanje za vas. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Cool. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Onda smo to. 1428 01:07:42,530 --> 01:07:44,770 Tako smo samo ćeš prošetati kroz ovaj program. 1429 01:07:44,770 --> 01:07:46,560 A onda ti dečki su učinili. 1430 01:07:46,560 --> 01:07:50,240 >> Tako [nečujan] samo glavna. 1431 01:07:50,240 --> 01:07:51,690 Dakle, imamo neke int * pokazivač. 1432 01:07:51,690 --> 01:07:53,648 Dakle, imamo pokazivač koja će održati Ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 A koliko Ints će to držati? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Samo jedan. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Veličina int. 1439 01:08:01,100 --> 01:08:03,900 >> Provjerili smo je li Pokazivač je null, jer njega 1440 01:08:03,900 --> 01:08:06,130 je, želimo reći ne učiniti ništa. 1441 01:08:06,130 --> 01:08:07,065 To je loše. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Tako smo ispisati neku pogrešku iz memorije, najčešće vratiti 1, 1444 01:08:12,130 --> 01:08:14,260 što ti dečki su navikli. 1445 01:08:14,260 --> 01:08:17,390 >> A onda smo ovdje, mi dereference našoj karti. 1446 01:08:17,390 --> 01:08:22,840 Dakle, to znači da ćemo za pohranu nešto na mjestu određenom za nas. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * pokazivač, ili malloc, vraća adresu gdje se izdvaja to 1449 01:08:30,830 --> 01:08:31,750 memorije za vas. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Dakle, to je u osnovi dajući vam like-- ako vas 1452 01:08:34,800 --> 01:08:38,149 razmišljati o hrpa kuće u susjedstvu 1453 01:08:38,149 --> 01:08:40,640 da želite staviti Vaš namještaj u, malloc 1454 01:08:40,640 --> 01:08:43,850 je kao u redu, dobivate otići do kuće tri. 1455 01:08:43,850 --> 01:08:45,800 I to vam se daje adresu kuće tri. 1456 01:08:45,800 --> 01:08:48,775 >> Dakle, ovo sada, to Pokazivač se pohranjuje adresa, 1457 01:08:48,775 --> 01:08:50,149 pohranjuje adresu svoje kuće. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * PTR znači, u redu, ja sam u mojoj kući. 1460 01:08:54,640 --> 01:08:55,326 Cool. 1461 01:08:55,326 --> 01:08:56,580 Moram dobiti neki cijeli broj. 1462 01:08:56,580 --> 01:08:59,229 >> Dakle tražiš nekoga da vam namještaja sada. 1463 01:08:59,229 --> 01:09:00,430 Tako ćete dobiti neki int. 1464 01:09:00,430 --> 01:09:05,100 I to ga stavlja u svoj pokazivač gdje je pokazujući. 1465 01:09:05,100 --> 01:09:08,670 >> I onda ga samo ispisuje se, gdje god ste unijeli. 1466 01:09:08,670 --> 01:09:11,060 I opet, referenca. 1467 01:09:11,060 --> 01:09:15,649 Dakle, to je kao da je otišao na to adresu i vi vidjeli ono što je tamo. 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 >> I onda naravno smo oslobodili našu pokazivač. 1471 01:09:20,174 --> 01:09:21,590 Nemojte zaboraviti da bez svog pokazivač. 1472 01:09:21,590 --> 01:09:22,933 Ne zaboravite da provjerite null. 1473 01:09:22,933 --> 01:09:24,349 Nemojte zaboraviti da bez svog pokazivač. 1474 01:09:24,349 --> 01:09:27,270 Imate dvije stvari koje se sjećam iz to, ili da se sjetite. 1475 01:09:27,270 --> 01:09:27,770 Da. 1476 01:09:27,770 --> 01:09:31,590 PUBLIKA: [nečujan] stvari kao što je to, char * e. 1477 01:09:31,590 --> 01:09:33,760 Kako to da mi nikada osloboditi one? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> PUBLIKA: Jesu li one poput žice? 1480 01:09:36,450 --> 01:09:39,160 Rekao si žice baš kao char * s, zar ne? 1481 01:09:39,160 --> 01:09:41,200 Pa zašto ne bismo osloboditi žice? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: Vi samo besplatno ako ste mallocing. 1483 01:09:43,204 --> 01:09:44,620 PUBLIKA: Oh, ako ste mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Pa malloc i slobodni su dvije stvari 1485 01:09:47,399 --> 01:09:49,000 da uvijek treba imati zajedno. 1486 01:09:49,000 --> 01:09:51,630 f otvoren, f blizu, dvije stvari trebali ste zajedno. 1487 01:09:51,630 --> 01:09:54,471 U oba tim slučajevima, provjerite null. 1488 01:09:54,471 --> 01:09:54,971 Da. 1489 01:09:54,971 --> 01:09:57,130 >> PUBLIKA: Dakle, slobodno je samo dopuštajući nešto drugo 1490 01:09:57,130 --> 01:09:59,690 skladištiti tamo nakon ovaj program je to koristi? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: To je jednostavno govoreći, OK, ja sam učinio s tim. 1492 01:10:01,946 --> 01:10:03,320 Ne morate ga zadržati oko. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 U suprotnom računalo neće Baš kao i probati i držati ga tamo. 1495 01:10:08,190 --> 01:10:10,910 I onda can't-- to radi u memorijskim problemima kasnije. 1496 01:10:10,910 --> 01:10:13,660 Uvijek želim ga osloboditi, jer to govori vaše računalo, u redu, ja sam 1497 01:10:13,660 --> 01:10:15,190 učinjeno s ovog mjesta memorije. 1498 01:10:15,190 --> 01:10:17,190 Možete ga dobiti natrag za mene koristiti kasnije. 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 Da. 1502 01:10:21,320 --> 01:10:26,950 >> PUBLIKA: Tako smo koristili% d samo jer dvostruka koji je vraća, 1503 01:10:26,950 --> 01:10:28,330 ili zašto is-- [nečujan]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> PUBLIKA: Mogu li koristiti% sam? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Možete koristiti% ja. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Bilo last minute pitanja? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Samo naprijed. 1511 01:10:38,985 --> 01:10:40,610 PUBLIKA: Imam samo brzo pitanje. 1512 01:10:40,610 --> 01:10:50,200 Dakle, varijabla ptr, that's-- kao što, s int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 to samo govori da je pokazujući na mjesto u memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Želite li [nečujan]? 1515 01:10:55,600 --> 01:10:58,050 PUBLIKA: --that je Veličina of-- ne, to je u redu. 1516 01:10:58,050 --> 01:11:01,292 No, to je samo ukazuje na mjesto u memorija koja je baš kao i četiri bajta. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Točno. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Dakle malloc veličinu od int, kaže, U redu, ja ću otići otrčati, 1520 01:11:07,070 --> 01:11:08,780 nalaze četiri bajta memorije za vas. 1521 01:11:08,780 --> 01:11:10,700 Kada se utvrdi da četiri bajtova memorije ga, 1522 01:11:10,700 --> 01:11:14,030 daje li poduprijeti adresu gdje ona počinje, 1523 01:11:14,030 --> 01:11:16,160 i to je ono što pohranjeni u kazaljke, ili PTR. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Dobro. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Ti dečki izgledaju manje zbunjeni od većine Ljudi Kada govorim o pointer, 1528 01:11:21,700 --> 01:11:23,670 pa sam upravo sada osjeća prilično dobro. 1529 01:11:23,670 --> 01:11:24,520 >> U redu. 1530 01:11:24,520 --> 01:11:27,960 Kao i uvijek, vi bi trebali imati sve dobivši svoje pset2 ocjene do sada. 1531 01:11:27,960 --> 01:11:32,769 Znam da je bilo nekih klimav stvari gdje se kaže, formula ne vrijedi 1532 01:11:32,769 --> 01:11:33,310 ili nešto. 1533 01:11:33,310 --> 01:11:36,166 Ako ste uzimajući da, sve Vaši razreda vrijede na mojoj strani. 1534 01:11:36,166 --> 01:11:38,040 Dakle, ja mogu vam poslati screenshotovi iz vaših razreda. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Samo javite mi, kao i ako ste nedostaje bilo ocjene ili nešto 1537 01:11:41,760 --> 01:11:43,060 ne čini se da ima smisla. 1538 01:11:43,060 --> 01:11:43,720 Dođite k meni. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Bio sam iznimno ponosan na vas Dečki su već, kako ga zadržati. 1541 01:11:48,830 --> 01:11:50,640 I imaju dobar ostatak vašeg tjedna. 1542 01:11:50,640 --> 01:11:53,440 Siguran sam da ću vidjeti neke od vas na radnog vremena. 1543 01:11:53,440 --> 01:11:55,414