1 00:00:00,000 --> 00:00:02,670 >> [THEME MUSIC] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Ahoj, všetci. 4 00:00:13,365 --> 00:00:14,365 Vitajte späť na časti. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Krásny deň out--, čo je dôvod, prečo som Iste, tam sú len štyri z vás 7 00:00:18,700 --> 00:00:21,180 a nie je náš obvyklý balíček. 8 00:00:21,180 --> 00:00:22,670 Bol som chorý tento víkend. 9 00:00:22,670 --> 00:00:24,294 Takže nemám Starburst pre vás. 10 00:00:24,294 --> 00:00:26,400 A ja, môže začať kašľať strašne po celú dobu to. 11 00:00:26,400 --> 00:00:27,790 Takže len majte so mnou. 12 00:00:27,790 --> 00:00:30,624 Budem naozaj snažiť a dostať sa cez to prvé, 13 00:00:30,624 --> 00:00:32,290 ale predtým, než som sa kašľa útok. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Ale len sa ľahko na mňa s málo bit-- to je všetko, čo som sa opýtať. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Takže náš program pre today-- len reminder-- váš kvíz je budúci týždeň. 18 00:00:44,289 --> 00:00:46,830 Povedal som vám to posledný týždeň, takže to by sa chytiť ťa nepripraveného. 19 00:00:46,830 --> 00:00:47,954 Tak som ťa znovu pripomínať. 20 00:00:47,954 --> 00:00:49,180 Budúci týždeň si kvíz. 21 00:00:49,180 --> 00:00:52,730 Za týmto účelom, budúci týždeň je časť bude oveľa 22 00:00:52,730 --> 00:00:55,180 of-- Budem sa snažiť a pracovať v nejakej recenziu. 23 00:00:55,180 --> 00:00:58,130 Takže ak vy mohol pomôžte mi tým, že mi posiela 24 00:00:58,130 --> 00:01:00,990 veci, ktoré vám vyhovuje sa, že ste starosti, 25 00:01:00,990 --> 00:01:03,530 témy, ktoré by ste chceli pre me na pokrytie, to by bolo skvelé. 26 00:01:03,530 --> 00:01:05,740 Tak som si vyskúšať a pracovať je do našej sekcii budúci týždeň 27 00:01:05,740 --> 00:01:11,540 alebo zaslať vám ďalší materiál alebo prep že by ste mohli dostať inde. 28 00:01:11,540 --> 00:01:12,150 >> Yeah! 29 00:01:12,150 --> 00:01:13,520 Stále viac ľudí sa blíži! 30 00:01:13,520 --> 00:01:17,320 Myslel som si, že som to urobil zle posledná týždeň, že nikto nechce, aby sa vrátil? 31 00:01:17,320 --> 00:01:18,065 Bojím sa. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Takže ďalšie tri veci že budeme ísť cez 34 00:01:21,100 --> 00:01:24,850 sú presmerovanie, súbor I / O, a potom ukazovatele a dynamické pamäte. 35 00:01:24,850 --> 00:01:29,160 Som si istý, že ste všetci mimoriadne nadšení pointers-- obľúbené témy každého z nás, 36 00:01:29,160 --> 00:01:31,310 tak jednoduché pochopiť. 37 00:01:31,310 --> 00:01:33,130 Som si istý, chalani všetci dostali, že jo? 38 00:01:33,130 --> 00:01:39,510 >> Takže poporiadku, redirection-- to je v podstate len spôsob, 39 00:01:39,510 --> 00:01:42,920 kontrolovať, ako sa vstup veci do svojho programu, 40 00:01:42,920 --> 00:01:44,606 ako vy výstupné veci z programu. 41 00:01:44,606 --> 00:01:46,980 Medzi hlavné spôsoby, ako chlapci Boli interakciu s ním 42 00:01:46,980 --> 00:01:51,650 je len cez štandardný výstup s tlačovým obrazovky tu. 43 00:01:51,650 --> 00:01:55,940 Ale existujú spôsoby, ako pipe-- ako vidíme tu 44 00:01:55,940 --> 00:01:58,980 je jedným z našich words-- druhu z potrubia, aby informácie 45 00:01:58,980 --> 00:02:02,850 alebo že dáta do súboru zo súboru. 46 00:02:02,850 --> 00:02:05,820 Je to len rôzne spôsoby dostať veci do vášho programu 47 00:02:05,820 --> 00:02:10,681 a zo svojho programu, namiesto toho, len je tlač na tejto obrazovke 48 00:02:10,681 --> 00:02:12,430 alebo zadaním veci z príkazového riadku. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Takže prvá je malá väčší než striešky. 51 00:02:18,030 --> 00:02:22,085 Takže output-- to jednoducho vytlačí výstup do súboru miesto na obrazovke. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Takže ak ste mali niečo, čo tlačené "Hello, world!" na obrazovku, 54 00:02:29,500 --> 00:02:32,400 ak ste to miesto k output.text, že 55 00:02:32,400 --> 00:02:35,220 vytvorí tento súbor s názvom output.text. 56 00:02:35,220 --> 00:02:38,550 A keď ho otvoríte, bude to povedať: "Hello, world!" tam. 57 00:02:38,550 --> 00:02:41,410 To môže byť super užitočná Ak máte veľa chýb 58 00:02:41,410 --> 00:02:43,430 v skutočnosti, ako vidíme v tomto jednom. 59 00:02:43,430 --> 00:02:46,810 Ak tak urobíte dve striešky, že to bude vytlačiť chybové správy. 60 00:02:46,810 --> 00:02:52,090 >> Takže ak máte problém s kompilácie, má veľa chýb 61 00:02:52,090 --> 00:02:56,770 a ste stále utápa v snahe listovať v príkazovom riadku 62 00:02:56,770 --> 00:02:59,110 cez všetky nimi, môžete len vytlačiť do súboru, 63 00:02:59,110 --> 00:03:02,130 otvoriť tak, aby tento súbor môžete nimi prechádzať ľahšie. 64 00:03:02,130 --> 00:03:05,160 Vlastne som používal to veľa, keď som bol ladenie 65 00:03:05,160 --> 00:03:07,970 moja 181 psets pre strojové učenie. 66 00:03:07,970 --> 00:03:10,000 Takže to môže byť super užitočné neskôr. 67 00:03:10,000 --> 00:03:18,370 Je to tiež užitočné, ak máte program že možno je generovanie knižnice 68 00:03:18,370 --> 00:03:20,430 alebo vytváranie nejakého súboru reťazcov, a 69 00:03:20,430 --> 00:03:22,846 musia byť schopní vidieť, že je to generovanie je správne. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 To je spôsob, ako to urobiť. 72 00:03:25,160 --> 00:03:28,280 >> Takže ak si ich vytlačiť do súboru, vás môžu ľahšie skúmať je, že jo? 73 00:03:28,280 --> 00:03:30,930 Versus snaží posúvať prostredníctvom príkazového riadku. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 A potom jedna vec k poznámke je to, že len s väčším 76 00:03:35,820 --> 00:03:40,090 než striešky, ak píšete do súboru, ktorý už exists-- 77 00:03:40,090 --> 00:03:44,990 tak ako keď sme bežali to prvý čas, dáme ju do output.text, 78 00:03:44,990 --> 00:03:49,970 a potom sme mali druhý program že vytlačiť to ako programu dva 79 00:03:49,970 --> 00:03:54,250 a robil väčšie ako output.text, prepíše that-- tak 80 00:03:54,250 --> 00:03:56,715 prepísať to, čo bolo kedy v tento súbor začať. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Takže ak chcete pripojiť do súboru, pretože tu vidíme, 83 00:04:00,750 --> 00:04:04,779 stačí urobiť dva väčšie ako znaky. 84 00:04:04,779 --> 00:04:05,820 A pripojí k nej. 85 00:04:05,820 --> 00:04:06,750 Nebude ho prepísať. 86 00:04:06,750 --> 00:04:09,770 Takže ak budete potrebovať na spustenie viac programy a druh udržať 87 00:04:09,770 --> 00:04:13,170 Trať, čo všetko z nich sú sa vracať k vám do súboru, 88 00:04:13,170 --> 00:04:14,190 to je spôsob, ako to urobiť. 89 00:04:14,190 --> 00:04:17,231 Ak vás nezaujíma, čo je vo vašom súbore a to smie byť prepísané, 90 00:04:17,231 --> 00:04:19,204 stačí použiť jeden väčší ako. 91 00:04:19,204 --> 00:04:20,600 Znamená to, že zmysel pre každého? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Divákov: Ako bodka lomka ahoj väčší ako výstup dot texte, ako je dvakrát, 94 00:04:31,140 --> 00:04:34,030 to bude len ukázať len na výstupe dot texte druhej time-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Správne. 96 00:04:34,810 --> 00:04:40,450 Tak to by v podstate len celkom prepísať, čo sa tam začať. 97 00:04:40,450 --> 00:04:44,260 Ak tento súbor tu, output.text už 98 00:04:44,260 --> 00:04:48,230 existuje, v podstate čokoľvek, čo hovoria že opäť s jedným Greater 99 00:04:48,230 --> 00:04:51,920 než si môžete len myslieť na to, as, ako by nahradil súbor. 100 00:04:51,920 --> 00:04:54,824 Rovnako ako keď ste ukladanie Word dokument a vy uložiť ako, 101 00:04:54,824 --> 00:04:57,365 a budete mať rovnaký názov, a úplne prepíše to-- 102 00:04:57,365 --> 00:04:58,680 je to rovnaký druh veci. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Každý, kto má nejaké otázky týkajúce sa len výstup do súboru? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Úžasné. 107 00:05:05,550 --> 00:05:11,440 >> Takže samozrejme, ak ste zvrátiť smere šípky, môžete to urobiť vstup. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Takže keď vy ste mal ako Caesar alebo Visioneer 110 00:05:19,960 --> 00:05:23,195 a vy ste museli na vstup niečo, ste mali riadku príkazu 111 00:05:23,195 --> 00:05:24,960 že v skutočnosti je to vstup. 112 00:05:24,960 --> 00:05:27,410 To je ďalší spôsob, ako to urobiť. 113 00:05:27,410 --> 00:05:30,520 Takže namiesto čakania na príkazovom riadku, 114 00:05:30,520 --> 00:05:33,800 ako keď ste požiadaní o správa v Caesar alebo Visioneer, 115 00:05:33,800 --> 00:05:36,490 ak by ste mali textový súbor ktorá mala svoju správu, 116 00:05:36,490 --> 00:05:38,280 môžete len zadajte ho do toho. 117 00:05:38,280 --> 00:05:44,930 >> Takže keby to bolo ako bodka lomítko Caesar 3 menej ako šípky vstupného textu, ktorý 118 00:05:44,930 --> 00:05:47,240 je vaša správa, že pobeží v pohode. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Keď je váš program Caesar skutočne požiadaní o zadanie od užívateľa, 121 00:05:54,020 --> 00:05:57,360 to by už mať, pretože ktoré ste zadali v tomto súbore. 122 00:05:57,360 --> 00:05:58,830 To je len ďalší spôsob, ako. 123 00:05:58,830 --> 00:06:02,445 Len spiatočnej output-- stačí zadať pre vaše dáta. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> A potom ten posledný je rúrka. 126 00:06:06,680 --> 00:06:07,780 Tak toto je celkom v pohode. 127 00:06:07,780 --> 00:06:09,890 Vzhľadom k tomu, že vám umožní mať výstup jedného 128 00:06:09,890 --> 00:06:13,695 Program a dať ho ako vstup do iného programu. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Neviem, či niekto z vás hral si s rozlúštiť 131 00:06:18,630 --> 00:06:20,590 že CS50 môže mať vám dal, ale to by 132 00:06:20,590 --> 00:06:27,380 vám umožní vziať nejaký vzorku súboru, zadajte ho do šifrovanie, 133 00:06:27,380 --> 00:06:30,350 a potom odtiaľ typ že do dešifrovanie 134 00:06:30,350 --> 00:06:32,470 aby sa uistil, že sa ukázalo rovnaké. 135 00:06:32,470 --> 00:06:34,050 Takže je to niečo ako trojcestného slučky. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Ísť na to. 138 00:06:39,423 --> 00:06:41,785 >> Divákov: Ak program má viac vstupov, 139 00:06:41,785 --> 00:06:47,646 existuje spôsob, ako to povedať, ktorý vstup použiť textový súbor alebo výstup? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Má viac vstupov. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Či už súbor s input--, keď je to žiada o vstup, ktorý po prvýkrát, je to 143 00:07:00,430 --> 00:07:03,240 bude predpokladať, myslím, že je to bude potrubie v celom súbore. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Takže ak máte viac vstupov, ty si bude potrubie vo viacerých súboroch. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Takže ak sa pýtate správ trikrát v kóde, 148 00:07:12,390 --> 00:07:15,230 budete sa uvedenie v troch rôznych súborov. 149 00:07:15,230 --> 00:07:15,980 A to bude šialené. 150 00:07:15,980 --> 00:07:18,188 A nemali by ste mať obávať, že práve teraz. 151 00:07:18,188 --> 00:07:19,150 Ale to je nápad. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Tak jo, trubka je len výstup jedného program používa vstup do druhej. 154 00:07:26,822 --> 00:07:27,665 Každý, kto tam dobre? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 V pohode. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 159 00:07:30,932 --> 00:07:32,890 Vy pravdepodobne nebudete mať sa robiť príliš veľa s ním. 160 00:07:32,890 --> 00:07:35,670 Ale mali by ste pochopiť, spôsobov, ako môžete použiť. 161 00:07:35,670 --> 00:07:38,910 A tam sú niektoré prípady, ktoré budete chcieť používať. 162 00:07:38,910 --> 00:07:44,590 >> Takže súboru I / O- viem, čo si saying-- sme zvyknutí čítanie 163 00:07:44,590 --> 00:07:50,500 a písomne ​​na našu obrazovku tam, ktorý je štandardom v a štandardný výstup. 164 00:07:50,500 --> 00:07:54,370 A to je to, čo vy ste boli robí od začiatku triedy tu. 165 00:07:54,370 --> 00:07:58,220 Ale môžete tiež čítať a zapisovať súbory, čo je všetko, súbor I / O-, tak vstupný súbor, 166 00:07:58,220 --> 00:07:59,850 Výstup je všetko, čo znamená. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Takže to v podstate znamená, že môžete ukladať dáta. 169 00:08:04,360 --> 00:08:08,460 >> Keď si len vytlačiť na obrazovka, je to v podstate preč, že jo? 170 00:08:08,460 --> 00:08:12,507 Akonáhle budete robiť "Dobrý deň, svet "a spustite" Hello world " 171 00:08:12,507 --> 00:08:14,090 vytlačí "Hello World" na obrazovku. 172 00:08:14,090 --> 00:08:16,370 Ale nemôžete naozaj čokoľvek s ním odtiaľ. 173 00:08:16,370 --> 00:08:18,950 Uložíte Ak v texte súbor, potom sa naraz 174 00:08:18,950 --> 00:08:22,789 máte tieto dáta, ktoré máte dovolené manipulovať alebo ho do súboru, 175 00:08:22,789 --> 00:08:24,080 alebo dať do programu neskôr. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Jedným z dôvodov, prečo prečo to robíme je to len 178 00:08:29,290 --> 00:08:31,560 ako spôsob, ako ukladať dáta pre neskoršie použitie. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Mám pár krokov tu len prechádzky štandardné 181 00:08:37,279 --> 00:08:39,450 I / O. V prvom kroku, budete je potrebné vytvoriť odkaz 182 00:08:39,450 --> 00:08:43,480 do súboru so všetkými čiapky FILE hviezda súboru. 183 00:08:43,480 --> 00:08:45,740 Tak, že vytvorí ukazovateľ na súbor. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Takže chcete otvoriť. 186 00:08:49,650 --> 00:08:52,940 A vy hovoríte, a to doslova, len súbor rovná fopen. 187 00:08:52,940 --> 00:08:57,400 A to bude návrat ukazovateľ na súbor, ktorý ste práve otvorili. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Videl som pár z vás chlapi v úradných hodinách. 190 00:09:01,460 --> 00:09:07,400 >> Ale jedna z vecí, je remember-- ukazovatele 191 00:09:07,400 --> 00:09:10,409 môžu byť niektoré adresa alebo null, že jo? 192 00:09:10,409 --> 00:09:12,700 Ak by sme niekedy prípad, kedy niečo, čo sa môže vrátiť null, 193 00:09:12,700 --> 00:09:14,990 čo máme robiť predtým, než sme vôbec používať? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Musíme zistiť, či je null alebo nie je, že jo? 196 00:09:19,000 --> 00:09:23,600 Vzhľadom k tomu, že niektorí z vás mohli mať problém, kedy bez ohľadu na predmet 197 00:09:23,600 --> 00:09:26,110 bol vrátený v úteku bol nulový. 198 00:09:26,110 --> 00:09:28,170 Pokúsili ste sa vykonať niektoré funkcie na to. 199 00:09:28,170 --> 00:09:29,770 A počítač miesto porušenej. 200 00:09:29,770 --> 00:09:30,725 Je to tak? 201 00:09:30,725 --> 00:09:33,640 Stavím sa, že pár z vás môže mali túto otázku. 202 00:09:33,640 --> 00:09:38,890 >> Tak s fopen, bude fopen buď vráti ukazovateľ na súbor, 203 00:09:38,890 --> 00:09:41,200 alebo keď sa niečo pokazí, to bude vrátiť NULL. 204 00:09:41,200 --> 00:09:45,980 Takže vždy treba skontrolovať že sa nevrátil null 205 00:09:45,980 --> 00:09:47,880 predtým, než sa pokúsite urobiť niečo iné. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 To je ako štandardná paradigmy že budete potrebovať tu. 208 00:09:51,974 --> 00:09:54,390 Ak je to vôbec možné, že niečo, čo by sa mohol vrátiť null, 209 00:09:54,390 --> 00:09:56,590 skontrolujte, či je nie je, ako budete pokračovať. 210 00:09:56,590 --> 00:09:58,911 V opačnom prípade budete získať krásne chýb webu. 211 00:09:58,911 --> 00:10:00,410 A nikto rád s nimi zaobchádzať. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Tak ako vidíme tu, prvý argument je len cesta k súboru. 214 00:10:06,410 --> 00:10:09,380 Ak neexistuje, že súbor, to bude vytvoriť tento súbor. 215 00:10:09,380 --> 00:10:10,713 A je to len bude prázdne. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 A potom druhý argument je režim, ktorý chcete. 218 00:10:13,080 --> 00:10:14,610 Chceme čítať z tohto súboru? 219 00:10:14,610 --> 00:10:15,560 Chcete napísať z neho? 220 00:10:15,560 --> 00:10:16,476 Chcete sa pripojiť? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Takže vlastne to, čo som práve said-- v prípade, že súbor neexistuje 223 00:10:20,670 --> 00:10:23,400 a vy sa snažíte čítať je to, že to bude hádzať chybu. 224 00:10:23,400 --> 00:10:26,890 Ak je súbor name-- páčilo, keby file.text ešte neexistuje 225 00:10:26,890 --> 00:10:29,250 a chcete písať na to, bude to vytvoriť 226 00:10:29,250 --> 00:10:33,110 prázdny súbor s názvom file.text pre vás. 227 00:10:33,110 --> 00:10:36,612 A ak sa chcete pripojiť, ktorú by ste mali urobiť to isté. 228 00:10:36,612 --> 00:10:38,081 Dáva to zmysel? 229 00:10:38,081 --> 00:10:40,580 Ak sa snažíte čítať súbor, ktorý ešte neexistuje, 230 00:10:40,580 --> 00:10:41,590 to bude hádzať chybu. 231 00:10:41,590 --> 00:10:44,340 V opačnom prípade bude vytvorenie súboru pre vás to, čo chcete, na to. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 V pohode. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Teraz môžeme čítať zo súboru. 236 00:10:48,880 --> 00:10:52,570 A to je len trochu ide medzi rôznymi funkciami 237 00:10:52,570 --> 00:10:58,980 že máme pre súbor I / O. Táto vôľa je nutné tento týždeň v pset, 238 00:10:58,980 --> 00:11:00,505 ak si dobre spomínam. 239 00:11:00,505 --> 00:11:02,880 Áno, je to úplne bude nutné tento týždeň v pset. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Takže fgetc vracia ďalší znak. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets práve vracia riadok textu. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Vráti sa nič až do nový riadok, a to zlomí. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Takže fread číta určitý počet bytov a umiestni ich 248 00:11:18,700 --> 00:11:20,700 do matice, ktorá je niečo, čo by mohlo 249 00:11:20,700 --> 00:11:25,485 chcete urobiť s re-size-- by mohla byť užitočná. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Koľko ľudí si prečítala pset spec, mimochodom? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 OK. 254 00:11:32,261 --> 00:11:32,760 [Nepočuteľné] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: OK. 257 00:11:36,580 --> 00:11:37,530 Dobrá. 258 00:11:37,530 --> 00:11:41,940 Rozhodne čítať that--, že je to sranda pset. 259 00:11:41,940 --> 00:11:51,320 Dostanete sa obnoviť zmazané pamäť card-- naozaj vzrušujúce, keď to funguje. 260 00:11:51,320 --> 00:11:54,100 Ale určite, začať čítať, že. 261 00:11:54,100 --> 00:11:56,280 Poď so mnou hovoriť, ak vás máte otázky o tom. 262 00:11:56,280 --> 00:11:59,290 >> OK, tak ako som hovoril, fread číta určitý počet bajtov. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 To je nejaký ľubovoľný počet že budete nastaviť. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 A potom fseek len pohyby do určitej polohy. 267 00:12:08,260 --> 00:12:11,150 Takže možno je vám to jedno o ďalších 10 bajtov. 268 00:12:11,150 --> 00:12:12,880 Len chcete preskočiť dopredu. 269 00:12:12,880 --> 00:12:14,030 Ty nezaujíma ty. 270 00:12:14,030 --> 00:12:16,280 Chcete si prečítať už od bytu 11. 271 00:12:16,280 --> 00:12:18,252 fseek vám umožní urobiť. 272 00:12:18,252 --> 00:12:20,710 Tak to vám umožní byť selektívne o tom, čo čítate. 273 00:12:20,710 --> 00:12:25,880 Vzhľadom k tomu, fgetc, fgets a fread čítanie z určitého miesta v súbore. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Spôsob, ako premýšľať o tom, či sa jedná je náš súbor, keď ste prvýkrát otvoríte, 276 00:12:35,090 --> 00:12:41,140 máte túto pozíciu v súbore ktorý začína na začiatku. 277 00:12:41,140 --> 00:12:45,040 Kedykoľvek budete volať fgetc, fgetf alebo fread, 278 00:12:45,040 --> 00:12:48,875 to bude začať od tento ukazovateľ polohy. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Povedzme, že chcete len čítať tento kus pamäti sem. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Nemôžeš len tak zavolať. 283 00:12:57,960 --> 00:13:02,430 Musíte hľadať tu a potom si prečítajte odtiaľ 284 00:13:02,430 --> 00:13:06,540 alebo čítať, dostane, alebo getc, V závislosti na tom, čo chcete. 285 00:13:06,540 --> 00:13:09,310 Takže hľadať len vám umožní preskočiť časti pamäte. 286 00:13:09,310 --> 00:13:11,590 A to je jediný spôsob, ako môžete preskočiť veci 287 00:13:11,590 --> 00:13:14,012 bez ich prečítaní do vyrovnávacej pamäte. 288 00:13:14,012 --> 00:13:15,470 Znamená to, že zmysel pre každého? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Je zrejmé, že je Veľa paralelné here-- 291 00:13:24,780 --> 00:13:27,780 náš výstup, alebo vstup presmerovanie, ste čítať a písať. 292 00:13:27,780 --> 00:13:31,800 Takže fputc len píše znak do súboru. 293 00:13:31,800 --> 00:13:33,655 fputs píše čiaru. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf vytlačí formátovaný výstup. 296 00:13:37,420 --> 00:13:41,190 Takže ak máte karty, alebo priestor, alebo ktovie čo ešte. 297 00:13:41,190 --> 00:13:44,180 A potom fwrite píše niektoré pole bajtov do súboru. 298 00:13:44,180 --> 00:13:48,860 Tak toto je rovnakým spôsobom fwrite a fread sú analogické 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs, a potom fputc a fgetc-- veľa 300 00:13:57,550 --> 00:14:00,710 Crazy, rýchle veci. 301 00:14:00,710 --> 00:14:05,300 >> Len tak, aby tento handy-- budete mať rôzne časy 302 00:14:05,300 --> 00:14:08,680 kde možno len chcete jeden znak naraz. 303 00:14:08,680 --> 00:14:09,890 Možno, že chcete celý riadok. 304 00:14:09,890 --> 00:14:14,320 S vašou slovníka pset-- ktorý sa skladá z dvoch psets, 305 00:14:14,320 --> 00:14:19,690 Verím, že sme vám celok slovník v textovom formáte 306 00:14:19,690 --> 00:14:22,252 ktorý má každé slovo oddelené líniou. 307 00:14:22,252 --> 00:14:24,210 Takže ak by ste chceli čítať jedným slovom v dobe, 308 00:14:24,210 --> 00:14:31,769 čo môžete použiť, ak čítate a všetci sú oddelené na nových tratiach, 309 00:14:31,769 --> 00:14:33,310 a chcete len jedno slovo v čase? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Divákov: fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Správne. 313 00:14:36,748 --> 00:14:39,960 Fgets-- preto, že sa vráti čo je na jednom riadku. 314 00:14:39,960 --> 00:14:42,750 A ak je každé slovo je jeho vlastné línie, môžeme použiť fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 V pohode. 317 00:14:45,010 --> 00:14:47,290 Dáva to zmysel, všetci? 318 00:14:47,290 --> 00:14:48,020 V pohode? 319 00:14:48,020 --> 00:14:50,020 Jo, budeme sa dostať do tá zábavná časť s ukazovateľmi 320 00:14:50,020 --> 00:14:51,728 veľmi skoro, kde na vás si urobiť nejaké matematiky. 321 00:14:51,728 --> 00:14:52,776 A bude to skvelé. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Posledný step-- zatvorte súbor. 324 00:14:57,740 --> 00:15:01,090 S toľkými vecí tu, jeden z našich vzorov 325 00:15:01,090 --> 00:15:03,550 ak je to možné vrátiť null, skontrolujte null. 326 00:15:03,550 --> 00:15:06,160 Ak otvoríte niečo, radšej zatvorte ho. 327 00:15:06,160 --> 00:15:10,419 OK, takže to nie je všetko, kým ste robiť, ak ste ich zavrel. 328 00:15:10,419 --> 00:15:12,585 Niečo ako, že to nie je viac ako kým tučná dáma spieva. 329 00:15:12,585 --> 00:15:14,130 To je ako zatvorenie súboru. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Ako sa hovorí, jednoducho zopakovať, a to vždy 332 00:15:19,190 --> 00:15:21,750 otvorte súbor skôr, než ste čítania alebo zápisu na neho. 333 00:15:21,750 --> 00:15:24,450 A vždy ho zatvorte, ak ste si ju otvoril. 334 00:15:24,450 --> 00:15:25,460 V poriadku? 335 00:15:25,460 --> 00:15:25,960 V pohode. 336 00:15:25,960 --> 00:15:26,835 >> Tak tu je príklad. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Tak tiny-- ja neviem, či vás chlapci je vidieť, že veľmi dobre. 339 00:15:34,330 --> 00:15:36,805 Kiež by sme mohli zvýšiť jas nejako. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Dovoľte mi, aby som vlastne robiť to, či môžem. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, môžete si chlapci naozaj vidieť, že vôbec, že? 344 00:15:51,470 --> 00:15:52,905 OK, budeme robiť to, potom. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Nepočuteľné] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Predpokladám, že to je oveľa lepšie vidieť. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Môže niekto zistiť, kde my myš šiel je otázka? 351 00:17:19,455 --> 00:17:22,837 Aha, tu je to je-- čo bojuje! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> OK. 354 00:17:49,520 --> 00:17:53,845 V podstate, vy by mal mať typ z myšlienky na to, čo to robí. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Nie je to dokonalé. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Ale radšej by som to vysvetliť, ako tráviť viac času sa snaží správne naformátovať. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 V podstate, ako vidíte tu, začneme sa súbor otvoriť. 361 00:18:07,280 --> 00:18:09,620 A máme nejaké databázový súbor, ktorý sme 362 00:18:09,620 --> 00:18:12,300 otvoru, ktorý hovorí, že ich naši študenti. 363 00:18:12,300 --> 00:18:14,020 A budeme zapisovať. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Tak samozrejme, vrátiť null. 366 00:18:17,720 --> 00:18:19,650 Takže musíme skontrolovať null. 367 00:18:19,650 --> 00:18:22,930 A potom, ak to nie je null, prejdeme. 368 00:18:22,930 --> 00:18:25,660 A ako vidíte, sme priechodná tu. 369 00:18:25,660 --> 00:18:26,960 Tam sú študenti. 370 00:18:26,960 --> 00:18:30,520 Študenti je hash definovaná ako tri. 371 00:18:30,520 --> 00:18:34,060 A to, čo robíme, je, že sme tlač do súboru, nie? 372 00:18:34,060 --> 00:18:36,975 Takže to, čo sme tlač do nášho súboru? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Divákov: Skóre ktoré sú v poli? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Jo. 376 00:18:49,680 --> 00:18:50,980 Skóre, ktoré sú v array-- presne. 377 00:18:50,980 --> 00:18:53,050 Tak sme sa otvoriť tento databázový súbor, ktorý 378 00:18:53,050 --> 00:18:56,040 Predpokladám, že je nejaký druh zo stupňa databázy. 379 00:18:56,040 --> 00:19:01,100 A my sme len tlač skóre každého študenta do tohto súboru. 380 00:19:01,100 --> 00:19:02,140 V pohode? 381 00:19:02,140 --> 00:19:02,640 Dobre. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Úžasné. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Vráťme sa to-- 386 00:19:06,950 --> 00:19:08,646 >> Divákov: Mám rýchly dotaz. 387 00:19:08,646 --> 00:19:11,570 Je printf nie je pre sláčiky? 388 00:19:11,570 --> 00:19:12,870 To je len v ak slučke? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Nie, to je v cykle for. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Nevidím myš veľmi dobre sa tu. 392 00:19:18,810 --> 00:19:21,359 Takže som sa snažil formát, ktorý správne. 393 00:19:21,359 --> 00:19:22,525 Tento držiak by mal byť preč. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Malo by to byť tu. 396 00:19:25,130 --> 00:19:26,605 To je to, čo je vo vašom cykle for. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Tam. 399 00:20:11,180 --> 00:20:12,160 Teraz je to dosť. 400 00:20:12,160 --> 00:20:16,720 Tak to je, ako to má be-- okrem k tej poslednej konzoly, ktoré som zamietol. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Znamená to, že zmysel pre každého? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Budeme sa pohybovať na na ďalšiu vec then-- 405 00:20:23,750 --> 00:20:26,180 ktoré v skutočnosti, budete musieť vidieť kód. 406 00:20:26,180 --> 00:20:28,370 Tak som len tak Kopírovanie, že viac ako práve teraz. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 OK. 409 00:20:32,000 --> 00:20:35,110 Tak idem vám ukázať chlapci tento kód. 410 00:20:35,110 --> 00:20:38,240 A chcem, aby ste sa pokúsila obrázok na to, čo to má robiť. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Takže vzhľadom k tomu that-- trvať minútu alebo tak. 413 00:20:52,480 --> 00:20:54,440 Pokúste sa zistiť, čo sa tu deje. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Nejaké nápady? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Vieme, že máme aspoň dva argumenty príkazového riadku, je to tak? 418 00:22:12,470 --> 00:22:16,270 Predpokladám, že jeden z nich bude že [nepočuteľné] nášho programu je 419 00:22:16,270 --> 00:22:17,530 a potom niečo iné. 420 00:22:17,530 --> 00:22:19,980 Vzhľadom k tomu, keď je [nepočuteľné] je menej ako dva sme kričať na ne. 421 00:22:19,980 --> 00:22:21,140 Je to tak? 422 00:22:21,140 --> 00:22:25,300 A z použitia, vyzerá to, že to bude nejaký súbor. 423 00:22:25,300 --> 00:22:26,260 Všetci sme sa zhodli na to? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Takže teraz, čo je slučka robí? 426 00:22:31,570 --> 00:22:32,570 Čo to prechádza? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Divákov: Všetky súbory. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Presne tak. 430 00:22:37,240 --> 00:22:39,650 To sa deje cez všetky súbory, ktoré sme tam vstup. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Takže pre každý súbor, je to otvára nejaký reťazec tam. 433 00:22:46,040 --> 00:22:47,560 Je to otvorenie tohto súboru. 434 00:22:47,560 --> 00:22:48,060 Je to tak? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 A to čítanie z neho. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Samozrejme, kontrola, či je to null. 439 00:22:55,540 --> 00:22:57,220 A potom je to tlač. 440 00:22:57,220 --> 00:23:01,460 Ak je null, je to len nám hovorí, že to nie je súbor, ktorý existuje. 441 00:23:01,460 --> 00:23:04,290 Vzhľadom k tomu, pamätajte, že sa Prečítajte si náš súbor má existovať. 442 00:23:04,290 --> 00:23:04,810 Je to tak? 443 00:23:04,810 --> 00:23:06,870 S zápis a pripojiť, sa môžete dostať preč s ním. 444 00:23:06,870 --> 00:23:08,970 Ale s čítanie, náš súbor má existovať. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> A potom, ak existuje, Čo tu robíme? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Povedzme, začnite tu. 449 00:23:15,780 --> 00:23:18,815 Čo je to do-- tento prvý znak. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Čo to robí? 452 00:23:21,790 --> 00:23:24,100 Dostáva jeden znak, nie? 453 00:23:24,100 --> 00:23:25,400 Takže to, čo je toto robí? 454 00:23:25,400 --> 00:23:26,775 Začína to prvý znak. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Každý, kto vie EOF? 457 00:23:30,200 --> 00:23:31,170 >> Divákov: Koniec súboru? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Koniec file-- presne. 459 00:23:32,680 --> 00:23:35,310 Takže to pôjde cez celý súbor, je to tak? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 A potom sa to bude aktualizovať podľa dostať všetky následné charakter. 462 00:23:40,780 --> 00:23:41,565 Je to tak? 463 00:23:41,565 --> 00:23:43,636 A čo to robí? 464 00:23:43,636 --> 00:23:44,760 Divákov: Uvedenie že in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: putchar výtlačky na šetrič obrazovky. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Nepočuteľné] znak. 469 00:23:51,950 --> 00:23:54,300 A potom, keď sa [nepočuteľné] to zatvorte súbor. 470 00:23:54,300 --> 00:23:57,370 >> Divákov: Myslíte si, nepotrebujete [? iného? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Nie nevyhnutne. 472 00:23:59,005 --> 00:24:01,480 Myslím, že je to trochu naznačil v tomto. 473 00:24:01,480 --> 00:24:06,780 Pretože tento vráti, aj keď, ako dlho pretože nezachytáva to, že si v poriadku. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Myslím, že je to asi dobrý praxi urobiť iného. 476 00:24:10,250 --> 00:24:15,755 Ale inak nie je vždy nutné najmä 477 00:24:15,755 --> 00:24:17,610 Ak máte niečo ako návrat, ktorý 478 00:24:17,610 --> 00:24:20,640 Znamená to, že v tomto prípade, ak sa zachytí to, váš program sa skončí 479 00:24:20,640 --> 00:24:21,850 a to nikdy nebude mať v tejto oblasti. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Je to skôr pre prípad, kam nemusí nutne vracať niečo. 482 00:24:29,190 --> 00:24:31,370 Vzhľadom k tomu, ak to nebolo vracať niečo, 483 00:24:31,370 --> 00:24:34,430 to by znamenalo, že ak by to bola pravda, Zvyšok by stále beží. 484 00:24:34,430 --> 00:24:36,138 A v tom prípade by chcel false. 485 00:24:36,138 --> 00:24:38,240 Ak je to vracia, a Váš program je koniec, 486 00:24:38,240 --> 00:24:41,960 inak nie je nutné celý čas, v závislosti na kontexte. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, si nejakú otázku? 489 00:24:44,375 --> 00:24:46,100 Divákov: Jo. 490 00:24:46,100 --> 00:24:49,300 Tak sa fgetc získať ďalší znak? 491 00:24:49,300 --> 00:24:50,734 Ako zvýšiť postava? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Jo. 493 00:24:51,400 --> 00:24:52,774 Takže fgetc dostane ďalší znak. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Môžete si ju predstaviť ako C ++ v istom zmysle. 496 00:24:56,866 --> 00:24:58,350 >> Divákov: Takže to, čo bolo EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF je koniec súboru. 498 00:25:00,877 --> 00:25:03,960 Je to len značka, ktorá umožňuje zistiť, že ste na konci súboru. 499 00:25:03,960 --> 00:25:06,742 Takže to bude tlačiť na vašej štandardný výstup. 500 00:25:06,742 --> 00:25:08,950 A potom, že to bude zatvoriť súbor, keď sa to robí. 501 00:25:08,950 --> 00:25:10,700 A potom ideme na Ďalší obrázok, nie? 502 00:25:10,700 --> 00:25:12,660 Takže celkovo, čo tento program robí? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Nepočuteľné] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Jo. 506 00:25:16,900 --> 00:25:18,770 Je to jednoducho vytlačí všetko tam. 507 00:25:18,770 --> 00:25:23,270 Takže ak vy ste niekedy použité CAT a potom názov nejakého file-- 508 00:25:23,270 --> 00:25:26,240 Ja neviem, či niekto z vás má kedy urobil, že na vašom termináli. 509 00:25:26,240 --> 00:25:29,630 Ale ak ste niekedy použiť Príkaz CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 a potom, čo súbor Máte there-- ju 511 00:25:31,880 --> 00:25:37,260 vytlačí ju na vašom termináli, ktorý môže byť super užitočné pre niektoré veci. 512 00:25:37,260 --> 00:25:38,746 Používam to veľa. 513 00:25:38,746 --> 00:25:40,120 Znamená to, že zmysel pre každého? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 V pohode? 516 00:25:42,100 --> 00:25:46,530 >> OK, takže váš úloha now-- buď sami alebo s ľuďmi okolo you-- 517 00:25:46,530 --> 00:25:54,930 je jednoducho napísať jednoduchý program že bude len napísať "Hello, World!" 518 00:25:54,930 --> 00:25:56,255 do súboru. 519 00:25:56,255 --> 00:26:00,215 >> [Nepočuteľné] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Nepočuteľné] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: Bol som rád, že nie Robím to zle minulý týždeň? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Nemyslím si, že to bolo tak zlé. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Som rád, že si tu. 527 00:27:03,520 --> 00:27:04,655 Je to naozaj robí mi to radosť. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Som dievča jednoduchých potešenie. 530 00:27:10,160 --> 00:27:11,688 Len som rád, keď môj oddiel navštevuje. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Takže som len na to, to začalo pre vy, takže môžeme kódovať spoločne. 533 00:27:18,270 --> 00:27:22,290 Nepáči sa mi dávať nikomu na miesto, ak chcete byť. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Obecenstvo: pre kvízu, robiť Máme napísať program? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Môžete byť vyzvaní k písať jednoduché programy ručne. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Jo. 539 00:27:36,590 --> 00:27:38,510 >> Divákov: Kvíz je budúci týždeň, nie? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: kvíz je budúcu stredu. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 To znamená, že je krásny [? CSE?] triedenie strana potom, čo 543 00:27:43,730 --> 00:27:50,390 znamená, že budete mať svoje skóre späť že night-- v koľko hodín? 544 00:27:50,390 --> 00:27:50,890 Kto vie? 545 00:27:50,890 --> 00:27:51,973 Ale bude to, že v noci. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Dobrá. 548 00:28:02,855 --> 00:28:04,250 Ako chceme začať to? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Dám vám hint-- začína týmto. 551 00:28:09,630 --> 00:28:11,455 >> Divákov: Musíte otvoriť súbor. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Jo. 553 00:28:12,250 --> 00:28:14,060 Takže to, čo chceš nazývať? 554 00:28:14,060 --> 00:28:16,150 Myslíte si len chcete volať to "file"? 555 00:28:16,150 --> 00:28:17,480 Poďme uľahčujú. 556 00:28:17,480 --> 00:28:26,752 Takže to, čo je naša fopen-- test výstupov bude? 557 00:28:26,752 --> 00:28:36,130 Nazvime to "Ahoj." 558 00:28:36,130 --> 00:28:37,810 A čo je naším režim? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Čo budeme robiť s týmto súborom? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Divákov: Prečítajte si. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Písanie. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Píšeme na to. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lovely. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, takže máme tento súbor. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Čo musíme urobiť? 572 00:28:56,212 --> 00:28:57,420 Divákov: Skontrolujte, či je null. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Skontrolujte, či je to presne null--. 574 00:28:59,820 --> 00:29:01,980 To je to, čo som chcel počuť. 575 00:29:01,980 --> 00:29:05,930 To by malo byť automatické, a to najmä do značnej miery od tohto okamihu. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Ak začnete segfaulting, budete pravdepodobne ani kontrolovať null niekde. 578 00:29:10,950 --> 00:29:12,480 V deviatich prípadoch z desiatich, to je bude váš chybe. 579 00:29:12,480 --> 00:29:15,400 Takže ak by ste mohol len dostať zvyk, vždy skontrolujte, či je to null, 580 00:29:15,400 --> 00:29:18,150 Váš život sa bude pekné a easy-- alebo jednoduchšie. 581 00:29:18,150 --> 00:29:19,480 >> Tak skontrolujte, či je null. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Takže ak to nie je null, čo je to, čo bang rovná 584 00:29:24,820 --> 00:29:26,784 means-- nie null-- je to platný. 585 00:29:26,784 --> 00:29:27,700 Čo chcete robiť? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Chceme len vytlačiť do tohto súboru, nie? 588 00:29:31,570 --> 00:29:32,923 Takže to, čo budeme používať? 589 00:29:32,923 --> 00:29:34,092 >> Divákov: fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- krásne. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 A fprintf má dve arguments-- kde je to to bude a čo chceme vytlačiť. 593 00:29:44,000 --> 00:29:45,820 Takže to, čo je prvý? 594 00:29:45,820 --> 00:29:46,570 Tam, kde to ide? 595 00:29:46,570 --> 00:29:47,490 >> Divákov: File. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Ide to do súboru. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 A čo chceme vytlačiť? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Hello, world!" 601 00:29:58,065 --> 00:29:58,565 Dobrá. 602 00:29:58,565 --> 00:30:03,670 Máme posledný thing-- ďalšia veľká paradigma tu. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Divákov: Zatvoriť. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Close. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Tu to je. 608 00:30:10,540 --> 00:30:13,384 >> Divákov: Je to happening v prípade, že súbor je null? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Nie, to je v prípade, že to nie je null. 610 00:30:15,050 --> 00:30:16,881 Publikum: Oh, ak je to ne-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Pre fopen a potom dva argumenty, ktoré idú dovnútra, 613 00:30:25,410 --> 00:30:27,655 čo prvý argument na mysli znova? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: argument je rovnako ako meno súboru 615 00:30:30,392 --> 00:30:31,350 že chcete ísť. 616 00:30:31,350 --> 00:30:36,020 Takže po tomto beží, by ste nejaký súbor s názvom "ahoj" 617 00:30:36,020 --> 00:30:38,320 že mal "Hello, World" v ňom. 618 00:30:38,320 --> 00:30:38,820 To je všetko. 619 00:30:38,820 --> 00:30:39,500 Len názov. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Divákov: A pretože je to písanie, Súbor nemusí už existujú. 622 00:30:48,650 --> 00:30:49,675 Je to to, čo si povedal? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Správne. 624 00:30:50,410 --> 00:30:50,910 Presne tak. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Ak je "Hello" ako súbor ešte neexistuje, je to 627 00:30:55,839 --> 00:30:58,380 chystáte vytvoriť súbor s názvom Hello "a napíšte naň pre vás. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> Divákov: Keď hovoríte program napísal do súboru, 630 00:31:03,610 --> 00:31:08,075 prečo píšeš "file" miesto názov súboru a fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Pretože v tomto prípade máme že veľké FILE-- všetko v caps-- hviezdy, 632 00:31:13,600 --> 00:31:14,260 súboru. 633 00:31:14,260 --> 00:31:17,370 Takže je to ukazovateľ na súbor že hovoríš. 634 00:31:17,370 --> 00:31:19,930 To je spôsob, akým sme proste na neho odkazujú. 635 00:31:19,930 --> 00:31:24,850 Takže v tomto prípade je môže myslieť file-- Aha, 636 00:31:24,850 --> 00:31:31,271 môžeme použiť tohle-- súbor tu odkazuje na otvorenie "Hello" 637 00:31:31,271 --> 00:31:32,145 a nechať ho zapísať. 638 00:31:32,145 --> 00:31:34,728 >> Divákov: Mohli by sme dať "Hello" namiesto toho [? púheho?] f súbor? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Nie, pretože "Hello" musia byť otvorené a zapisovať. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Súbor je tu ako označenie, ktoré hovorí, že OK, 642 00:31:45,980 --> 00:31:49,190 túto file-- hello-- že sa pozeráme. 643 00:31:49,190 --> 00:31:50,680 To bol otvorený. 644 00:31:50,680 --> 00:31:52,140 A budeme zapisovať. 645 00:31:52,140 --> 00:31:55,130 Ak stačí použiť "Hello", ktorý je zapuzdrený v ňom. 646 00:31:55,130 --> 00:31:56,846 Takže to bude šalieť. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Myslím, že by ste mohli mať pomenovali. 649 00:32:00,300 --> 00:32:03,960 Dalo by sa urobiť súbor, hviezda, "Hello", rovná. 650 00:32:03,960 --> 00:32:07,840 Ale celá vec je, že vás Potrebujete súboru hviezdy ukazovateľ v poradí 651 00:32:07,840 --> 00:32:09,281 aby mohli tieto funkcie využívať. 652 00:32:09,281 --> 00:32:11,280 Divákov: Mohla by si súbor, hviezda, súbor, "Hello" 653 00:32:11,280 --> 00:32:13,113 alebo si budete musieť dať súbor hviezdu, súbor to? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Dalo by sa robiť súboru, hviezda, "Dobrý deň." 655 00:32:16,330 --> 00:32:19,790 Môžete zmeniť to, aby bez ohľadu na meno, ktoré chcete. 656 00:32:19,790 --> 00:32:22,114 Je to úplne ľubovoľne čo to volá. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Môžete pomenovať to čokoľvek. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Pomenujte ju lietanie špagety, ak ste chceli. 661 00:32:28,020 --> 00:32:29,690 >> Divákov: Čo je to "w" v úvodzovkách pre? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "w" je len režim. 663 00:32:31,540 --> 00:32:33,170 Takže sme zápis do tohto súboru. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Každý dobrý? 666 00:32:35,320 --> 00:32:36,227 Clear? 667 00:32:36,227 --> 00:32:36,981 Áno. 668 00:32:36,981 --> 00:32:40,365 >> Divákov: Takže keď to píše toto súboru, kam sme potom zistíme, že súbor? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: Bude to v rovnakom adresár, ktorý ste v súčasnej dobe. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Ak ste v pset tri a spustenie toho priamo vo Vašom pset 672 00:32:48,880 --> 00:32:52,600 tri zložky bude Tento súbor s názvom "Hello". 673 00:32:52,600 --> 00:32:53,160 V pohode? 674 00:32:53,160 --> 00:32:53,757 Každý dobrý? 675 00:32:53,757 --> 00:32:55,840 Mám pocit, že ste všetci ako sa to, čo je skvelé. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 OK. 678 00:32:57,790 --> 00:33:05,960 Takže späť k mojej prezentácii show-- Mám rád, keď veci fungujú. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Ste chlapci nadšenie? 680 00:33:08,674 --> 00:33:09,465 Ukazovatele sú skvelé. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Berú trochu zabaliť hlavu okolo. 683 00:33:13,580 --> 00:33:15,288 Toto je môj druhý rok výučby ukazovatele. 684 00:33:15,288 --> 00:33:16,850 A myslím, že som sa konečne dostal to. 685 00:33:16,850 --> 00:33:18,650 Takže ak ste sa snažia, je to OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Ako som už povedal skôr, kreslenie obrázkov veľa pomáha s vecami v SK, 688 00:33:24,070 --> 00:33:27,400 rovnako ako ja, že ľudia majú tendenciu premýšľať oh, my sme na počítači. 689 00:33:27,400 --> 00:33:28,399 By sme mali len kód. 690 00:33:28,399 --> 00:33:30,190 No-- obrázky kreslenie vám naozaj pomôže. 691 00:33:30,190 --> 00:33:32,773 A naozaj odporúčame vám preniknúť do vášho učiteľka materskej školy stranu 692 00:33:32,773 --> 00:33:35,010 a vyvediem pastelky alebo fixky a draw. 693 00:33:35,010 --> 00:33:36,110 Vzhľadom k tomu, že vám pomôže. 694 00:33:36,110 --> 00:33:39,380 A či ma vidieť na úradných hodinách, som bude nosiť stohy papiera 695 00:33:39,380 --> 00:33:41,580 s pera kreslenie veci. 696 00:33:41,580 --> 00:33:44,370 >> Tak najmä pointers-- kresliť obrázky. 697 00:33:44,370 --> 00:33:47,970 A som si istý, že sme vlastne bude zostavuje niekoľko fotografií tu. 698 00:33:47,970 --> 00:33:51,270 >> Takže vy všetci dostali vidieť Binky, to v pohode claymation vec. 699 00:33:51,270 --> 00:33:54,720 A myslíme si, že je to naozaj smiešne, keď on exploduje do banda kusov. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Je to nejaký komická pre triedu. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [nepočuteľné] tento skvelý schopnosť aby bolo možné kontrolovať pamäti. 704 00:34:05,900 --> 00:34:10,090 A to je jedna z vecí, ktoré naozaj je to taký silný jazyk. 705 00:34:10,090 --> 00:34:13,469 Ale s veľkými schopnosťami prichádza aj veľkú zodpovednosť. 706 00:34:13,469 --> 00:34:16,230 A bláznivé veci sa môže stať ak si nedáte pozor. 707 00:34:16,230 --> 00:34:18,560 Takže, keď používate ukazovatele, chcete, aby sa 708 00:34:18,560 --> 00:34:21,440 že ste naozaj pochopiť presne to, čo robíte. 709 00:34:21,440 --> 00:34:25,530 Dúfajme, že budúci trochu Čas vám pomôže naozaj pochopiť, 710 00:34:25,530 --> 00:34:27,850 ukazovatele, ako ich používať, a ako manipulovať s nimi. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Takže memory-- Som si istý, máme videl tento diagram. 713 00:34:33,460 --> 00:34:38,540 Takže je to len jednoduchý diagram ako by sa veci uložené v pamäti. 714 00:34:38,540 --> 00:34:43,145 Takže ste v podstate majú tieto obrovské pole jedného bytu blokov 715 00:34:43,145 --> 00:34:46,000 je to, čo máme here-- mierny zvyšuje sa po jednej zakaždým. 716 00:34:46,000 --> 00:34:51,810 To je v hex [nepočuteľné] tak osem-bitové bloky. 717 00:34:51,810 --> 00:34:55,510 A každý blok je spojený s nejakým hexadecimálnom adresu. 718 00:34:55,510 --> 00:34:58,750 Takže ak ste niekedy vidieť 0x, to je len notating 719 00:34:58,750 --> 00:35:00,670 že je to hexadecimálne adresu. 720 00:35:00,670 --> 00:35:03,970 Môžete Predpokladám, že to znamená, niektoré adresy v pamäti. 721 00:35:03,970 --> 00:35:06,935 Hovoríme o adresy pamäti Kedykoľvek vidíte hexadecimálne. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Máme ints sú premenné, plaváky sú premenné, ktoré uchovávajú. 724 00:35:14,630 --> 00:35:16,260 Takže ints ukladanie ints. 725 00:35:16,260 --> 00:35:17,430 Plaváky obchod pláva. 726 00:35:17,430 --> 00:35:20,260 Takže máme aj ukazovatele že obchod adresy pamäti. 727 00:35:20,260 --> 00:35:21,660 To je druh mapovanie. 728 00:35:21,660 --> 00:35:24,240 Ukazovatele sú výhradne pre pamäťové adresy. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Tak to je ako tvoj typ tam. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Váš spotrebič je 32-bit, čo znamená, že vaša adresa pamäte sa štyri bajty. 733 00:35:34,470 --> 00:35:37,830 Takže akýkoľvek ukazovateľ, ktorý máte sa tiež bude štyri bajty. 734 00:35:37,830 --> 00:35:43,200 Alebo či je to štyri byty, pamäti štyri bajty. 735 00:35:43,200 --> 00:35:44,790 Ukazovatele obchod pamäti. 736 00:35:44,790 --> 00:35:46,430 Preto, že sú štyri byty. 737 00:35:46,430 --> 00:35:48,460 Cool-- len chcem zdôrazniť, že. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Mali by ste si tento komiks teraz. 740 00:35:52,220 --> 00:35:55,040 Neviem, koľko z vás sú xkcd fanúšikovia, ale mám rád xkcd. 741 00:35:55,040 --> 00:35:55,780 Je to skvelé. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Dobrá. 744 00:35:57,790 --> 00:36:01,640 Tak vytváranie pointers-- ako som povedal, je to do značnej miery rovnako ako čokoľvek iného. 745 00:36:01,640 --> 00:36:02,930 Máte typ. 746 00:36:02,930 --> 00:36:04,050 Máte meno. 747 00:36:04,050 --> 00:36:04,810 Je to tak? 748 00:36:04,810 --> 00:36:10,410 To je to, čo máme tu. [? Hex?] Hviezdička znamená, že je to ukazovateľ, 749 00:36:10,410 --> 00:36:12,250 a potom, čo chcete hovoriť. 750 00:36:12,250 --> 00:36:15,770 Takže typ predstavuje čo môžete uložiť. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 V poriadku? 753 00:36:17,990 --> 00:36:24,350 Rovnakým spôsobom, že ak budeme robiť celých čísel, vieme, že sme tam ukladanie int. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 S ukazovateľom, je má adresu v pamäti. 756 00:36:30,280 --> 00:36:34,240 Ale čo to znamená, that-- tu je miesto, kde výkres bude hodiť. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Takže v tomto prípade máme niektoré value-- povedzme štyri. 759 00:36:45,980 --> 00:36:49,306 Štyri je na adrese jedna. 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 >> To prvé, kto tu znamená že je to ukazovateľ 2x. 763 00:36:56,170 --> 00:36:56,740 Je to tak? 764 00:36:56,740 --> 00:36:57,628 Je to nejaký ukazovateľ x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x môže byť niečo, čokoľvek. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Či už x je-- povedať x je štyri. 769 00:37:05,130 --> 00:37:07,280 Bude to uložiť adresa tu pamäť. 770 00:37:07,280 --> 00:37:12,260 Takže int, hviezda, x-- to je nejaký iný slot v memory-- 771 00:37:12,260 --> 00:37:13,590 kto vie, čo to je. 772 00:37:13,590 --> 00:37:15,430 Ale bude to tu uložiť adresu. 773 00:37:15,430 --> 00:37:27,040 Takže by to bolo like-- v tomto prípade, bez ohľadu, 774 00:37:27,040 --> 00:37:32,630 je uložený na 0x1--, čo je uložené na adresu, ktorú náš ukazovateľ má k dispozícii, 775 00:37:32,630 --> 00:37:35,280 sa musí zhodovať s To, čo sme určený. 776 00:37:35,280 --> 00:37:40,330 Takže na 0x1, v tomto prípade je to x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 To môže byť jedine int, keď sme pomocou tohto. 779 00:37:49,340 --> 00:37:52,950 >> Podobne, ak máme ďalšie 1R, bez ohľadu na 780 00:37:52,950 --> 00:37:59,130 adresa je uložená s y má byť char-- to isté sa z. 781 00:37:59,130 --> 00:38:05,840 Rovnakým spôsobom vždy, keď vyskúšať a urobiť intx rovná 0,4, 782 00:38:05,840 --> 00:38:09,275 to bude revať na vás a bude ako nie, hovoril ste, že chcel int. 783 00:38:09,275 --> 00:38:10,525 To má byť int. 784 00:38:10,525 --> 00:38:11,900 Prestaň sa snažiť, aby to float. 785 00:38:11,900 --> 00:38:14,150 >> Takže nechať veci byť tým, čím chcú byť. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Nechať veci byť sami sebou. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Takže veľká vec je len bez ohľadu na typ ukazovateľ 790 00:38:23,450 --> 00:38:26,101 to je, to je jediný vec, ktorú tam môžete uložiť. 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 praxou, ako u minulý týždeň, všetko 794 00:38:31,160 --> 00:38:32,817 Zdá sa, naozaj trochu abstraktné. 795 00:38:32,817 --> 00:38:34,150 Chystáme sa urobiť nejakú prax. 796 00:38:34,150 --> 00:38:36,760 To by malo väčší zmysel. 797 00:38:36,760 --> 00:38:44,580 >> Tak odkazov a dereferencing-- je to veľmi dôležité, aby sa tieto priamo. 798 00:38:44,580 --> 00:38:46,630 Stále mám obnoviť tu a tam. 799 00:38:46,630 --> 00:38:48,450 A ja som rád čakať, ktorý z nich chcem? 800 00:38:48,450 --> 00:38:56,080 Takže ampersand bude skutočne dať si referencie alebo adresa. 801 00:38:56,080 --> 00:39:00,100 Tak to vráti adresu pamäť, ktorá je uložená premenná. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Takže to bude naozaj vrátiť k vám hexadecimálne, zatiaľ čo dereferencing ju 804 00:39:07,020 --> 00:39:10,641 sa skutočne deje, aby vám dáta, ktoré sú v ňom uložené. 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 Takže ideme sa pozrieť na príklad naozaj rýchlo, alebo dokonca až nabudúce. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> OK. 810 00:39:19,150 --> 00:39:21,790 Takže musíme naozaj myslíte, starostlivo o tom. 811 00:39:21,790 --> 00:39:23,860 Takže tu máme nejaké celé číslo x. 812 00:39:23,860 --> 00:39:26,485 Budem sa snažiť a kresliť to sa na to najlepšie z mojich schopností. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Takže budeme mať tento slot x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 A to ukladanie päť. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Jeho adresa je 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 V pohode? 821 00:39:43,160 --> 00:39:44,100 Všetky dobré. 822 00:39:44,100 --> 00:39:45,470 >> Takže teraz máme túto ukazovateľ. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Bolo to tu. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 A ampersand nám dáva Adresa niečo. 827 00:39:57,560 --> 00:40:00,780 Takže v tomto prípade, je to adresa x. 828 00:40:00,780 --> 00:40:01,875 Aká je adresa x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- a tento ukazovateľ je 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 V pohode? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Takže si môžete myslieť o tom ukazovateľ, 04, len upozorňuje sem. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 A oni nazývajú odkazy pretože ako sme sa dostať viac do toho 837 00:40:25,740 --> 00:40:28,450 budete vidieť, ukazuje na veci. 838 00:40:28,450 --> 00:40:31,470 A jeden blok ukazuje na ďalšie blok bude oveľa väčší zmysel. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Tak tu sú dve. 841 00:40:33,890 --> 00:40:38,230 A potom tu máme nejaké kópia, ktorá je what-- 0x0C. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 A že to bude dereferencia našej ukazovatele. 844 00:40:43,420 --> 00:40:46,790 >> Takže to, čo hovorí, je OK, tu je náš ukazovateľ. 845 00:40:46,790 --> 00:40:53,090 Hodnota ukladá je 0x04, A čo to hovorí, je na túto adresu 846 00:40:53,090 --> 00:40:54,300 a povedz mi, čo je v ňom. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Tak to je skutočne Čo táto šípka robí. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Môžete myslieť na to ako svoju hviezdu. 851 00:41:01,280 --> 00:41:05,410 Tak OK, keď budeme robiť hviezdu, znamená to nasledovať. 852 00:41:05,410 --> 00:41:06,810 Prejdite na túto adresu. 853 00:41:06,810 --> 00:41:11,430 A to je v podstate len po Táto šípka tejto pamäti kus. 854 00:41:11,430 --> 00:41:15,380 A dať nám to, čo je v nej, čo je 5. 855 00:41:15,380 --> 00:41:18,840 To je dôvod, prečo naše kópia je rovná 5. 856 00:41:18,840 --> 00:41:20,120 Dáva to zmysel? 857 00:41:20,120 --> 00:41:22,769 Potrebuje niekto ma prejsť že znovu, alebo pomalšie? 858 00:41:22,769 --> 00:41:24,560 Chceš, aby som šiel cez to ešte raz? 859 00:41:24,560 --> 00:41:25,060 OK. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Budeme ho prekresliť znova. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Keď začneme, všetci súhlasíme s tým máme niektoré kus pamäti, že je to premenná 864 00:41:37,205 --> 00:41:40,890 x, že nastavíme rovná 5. 865 00:41:40,890 --> 00:41:42,910 Nemáme kontrolu tam, kde je v pamäti. 866 00:41:42,910 --> 00:41:45,520 Takže toto miesto je len náhodne pridelené. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Tam dobre? 869 00:41:48,731 --> 00:41:49,230 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Potom sme sa inicializovať ukazovateľ na int. 872 00:41:53,330 --> 00:41:56,900 To je dôvod, prečo je dovolené, aby ukazoval na x, pretože máme int tu. 873 00:41:56,900 --> 00:42:00,840 Máme ďalší kus pamäti, pretože tento ukazovateľ 874 00:42:00,840 --> 00:42:03,485 je premenná, rovnako ako čokoľvek iného. 875 00:42:03,485 --> 00:42:06,615 Je to náhodne pridelené nejaký priestor v pamäti. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 A to, čo ukladá ich adresa x. 878 00:42:10,830 --> 00:42:13,200 Ampersand znamená adresu x. 879 00:42:13,200 --> 00:42:14,575 Takže to, čo je adresa x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Divákov: Je to 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 Takže then-- posledná. 885 00:42:25,940 --> 00:42:30,650 Máme nejaké copy-- znova len ďalšie premenné. 886 00:42:30,650 --> 00:42:32,520 Takže poďme priradiť nejaké ľubovoľné miesto. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 A my dereferencia našej ukazovatele. 889 00:42:38,080 --> 00:42:42,490 Hviezdička znamená ísť do adresa uložená v mojom ukazovateľ. 890 00:42:42,490 --> 00:42:44,480 Povedz mi, čo tam je. 891 00:42:44,480 --> 00:42:47,290 Takže adresy uloženej v našom ukazovateľ je 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Tak ideme na túto adresu. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Je to ukazuje na túto adresu. 896 00:42:54,590 --> 00:42:57,481 Čo je vo vnútri tohto bloku pamäti? 897 00:42:57,481 --> 00:42:57,980 Je to päť. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Takže to je to, čo sme priradiť svoju kópiu. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Každý dobrý? 902 00:43:04,860 --> 00:43:05,360 V pohode. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- obrázky. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Takže monitorovanie hodnoty here--, som nechám vy si o tom myslíte. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Môžeme čerpať ďalšiu snímku. 909 00:43:27,750 --> 00:43:31,260 Ale ja chcem, aby ste sa pokúsila dôvod cez to na vlastnú päsť po dobu jednej minúty. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Vzhľadom k tomu nedali nás napríklad adresa, 912 00:44:04,149 --> 00:44:06,940 Ja som len robiť ampersand x-- ktorý by mal pomôcť riadiť ho domov. 913 00:44:06,940 --> 00:44:07,950 Ampersand znamená adresy. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Takže v prvej, všetci ísť s prvom riadku. 916 00:44:12,360 --> 00:44:15,690 Niektoré x set je five-- niektoré náhodný slot v pamäti. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int hviezda ukazovateľ je rovný na adresu x, nie? 919 00:44:23,200 --> 00:44:28,180 Int hviezda ukazovateľ vytvára tento blok, volá to ukazovateľ, 920 00:44:28,180 --> 00:44:30,650 a priradí ju na adresu x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Som hrozný na ampersand. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> A teraz, čo robíme, je povedať, OK, dereferencia našej ukazovateľ. 925 00:44:40,550 --> 00:44:42,760 Tak ideme na tlačidlo OK, čo je v našich ukazovateľ? 926 00:44:42,760 --> 00:44:44,820 Je to ampersand x. 927 00:44:44,820 --> 00:44:49,400 Prejsť na ampersand x a priradiť ju. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Takže teraz, ampersand x bude 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Takže v podstate, keď ste dereferencing, idete na tlačidlo OK. 932 00:45:05,174 --> 00:45:07,090 Budeš sa kreslenie obrázky, ako je tento. 933 00:45:07,090 --> 00:45:09,423 Budeš sa kreslenie šípy nad tým, kde je. 934 00:45:09,423 --> 00:45:16,030 Takže choďte do tohto slotu v pamäti, a to buď daj mi tú hodnotu späť alebo ju zmeniť. 935 00:45:16,030 --> 00:45:21,620 V tomto prípade, pretože sme na to hodnota, my ju priradiť ako 35. 936 00:45:21,620 --> 00:45:24,700 Kým v poslednej jeden, ak si všimnete, my 937 00:45:24,700 --> 00:45:27,680 bolo priradenie, čo bolo tu k niečomu inému. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Takže majú túto hroznú tabuľky. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Nie je to tak zlé. 942 00:45:36,890 --> 00:45:37,970 Vy ste na tom pracovať. 943 00:45:37,970 --> 00:45:39,640 Budem čerpať ju na palube. 944 00:45:39,640 --> 00:45:41,306 Chystáme sa vyplniť ho spolu, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Takže uchopiť nejaký papier, drapák partner, začať pracovať. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Budem mať väčší kus kriedy. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Vzhľadom k tomu, že to bude veľa. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 PROFESOR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Začnime s prvým radom. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Začneme tam, potom chlapci môže možno fungovať cez niektoré viac. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 sa rovná b krát c, takže to, čo je? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Nie je to chyták, sľubujem. 963 00:48:23,260 --> 00:48:24,440 >> STUDENT: 4 krát 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESOR: 4 krát 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Takže to, čo je b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 STUDENT: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> PROFESOR: A c? 971 00:48:31,043 --> 00:48:31,542 STUDENT: 5. 972 00:48:31,542 --> 00:48:32,083 PROFESOR: 5. 973 00:48:32,083 --> 00:48:35,960 A potom je to len tak byť ampersand a, b ampersand, 974 00:48:35,960 --> 00:48:38,575 ampersand c, nie? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 To nie je zlé. 977 00:48:40,596 --> 00:48:42,081 Je to dosť jednoduché. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Tak ten budúci. 980 00:48:44,300 --> 00:48:48,725 Rovná časy C, v prípade kto bol neznámy s tým. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Je všetci poznajú s časmi sa rovná? 983 00:48:53,300 --> 00:49:00,105 OK, to všetko means-- je skratka pre rovná časov c. 984 00:49:00,105 --> 00:49:04,840 Môžete si tiež urobiť to s rozdelením, Okrem toho sa, s odčítanie. 985 00:49:04,840 --> 00:49:12,130 Môžete to urobiť je rovná, alebo navyše sa rovná c znamená, rovná a navyše c, mínus rovné 986 00:49:12,130 --> 00:49:15,190 c by sa rovná mínus c. 987 00:49:15,190 --> 00:49:16,690 Je to len syntaktický cukor. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Takže v tomto prípade, sa rovná časov c by nám, čo sa dá? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Opäť platí, že nie je chyták. 992 00:49:28,186 --> 00:49:28,965 >> STUDENT: 100. 993 00:49:28,965 --> 00:49:29,300 >> PROFESOR: 100. 994 00:49:29,300 --> 00:49:30,383 Má niečo zmeniť? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Nie. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Možno, že sa konečne dostanem lepšie na mojej ampersand. 999 00:49:39,850 --> 00:49:42,047 >> STUDENT: OK, je mi ľúto, ako ste sa dostal 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Tak sa rovná krát c, takže časy c. 1002 00:49:46,594 --> 00:49:48,510 STUDENT: Oh, vy používate pre previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESOR: Áno. 1004 00:49:49,135 --> 00:49:51,450 Tak to sú naše posledné hodnoty. 1005 00:49:51,450 --> 00:49:53,990 Jedná sa o to, čo by malo byť použitie ako sme sa presunúť dole, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Takže, b je jediná vec, zmena, nie? 1008 00:50:01,520 --> 00:50:02,910 Takže poďme vyplniť všetko ostatné. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Čo sa b bude? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Byť či nebyť. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Takže to, čo je toto robí? 1015 00:50:20,240 --> 00:50:21,605 Čo je hviezda pa robíš? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> STUDENT: Kód pre umiestnenie pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> STUDENT: Nie, nie tak celkom. 1020 00:50:27,480 --> 00:50:29,470 Takže toto je odkaz d. 1021 00:50:29,470 --> 00:50:31,580 >> Žiak: Takže b je rukou hodnota pa. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESOR: Jo, tak pa je adresa, nie? 1023 00:50:37,340 --> 00:50:42,430 Tak to hovorí ísť tam, kde je skladované a dať mu túto hodnotu. 1024 00:50:42,430 --> 00:50:43,884 Takže to, čo je b? 1025 00:50:43,884 --> 00:50:44,425 STUDENT: 100. 1026 00:50:44,425 --> 00:50:46,534 PROFESOR: 100. 1027 00:50:46,534 --> 00:50:47,450 Perfect. 1028 00:50:47,450 --> 00:50:49,879 OK, takže pc je to, čo sa mení. 1029 00:50:49,879 --> 00:50:51,170 Všetko ostatné zostáva rovnaké. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Čo sa pc bude? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Jednoduchá úloha. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc je rovná pa, a to, čo je pa? 1036 00:51:05,990 --> 00:51:07,049 >> STUDENT: ampersand. 1037 00:51:07,049 --> 00:51:07,840 PROFESOR: Perfect. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Teraz sa dostávame zaujímavý. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, poďme rozbiť tento nadol. 1042 00:51:15,230 --> 00:51:21,110 Po prvé, čo je b krát c, pretože to je ľahká časť tohto jedného, ​​je to tak? 1043 00:51:21,110 --> 00:51:22,360 Časy B c je-- 1044 00:51:22,360 --> 00:51:23,320 >> STUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESOR: Jo, tak Čo je toto robí, 1046 00:51:28,880 --> 00:51:33,705 Či je to hviezda pb, čo sa mení? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> STUDENT: Čo je v the-- 1049 00:51:37,242 --> 00:51:38,200 PROFESOR: Čo je B? 1050 00:51:38,200 --> 00:51:41,340 STUDENT: Čo je v priestore že pb ukazuje. 1051 00:51:41,340 --> 00:51:43,406 PROFESOR: A pb ukazuje to-- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESOR: B. Takže jediný vec zmena je b, pravdu. 1054 00:51:46,740 --> 00:51:50,800 Tak b krát c, 500. 1055 00:51:50,800 --> 00:51:52,367 Takže to je to, čo sa mení teraz. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 V pohode. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lovely. 1060 00:52:00,840 --> 00:52:01,905 Vy ste skvele. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 V poriadku, porušenie tohto jeden dole. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C sa mení, že jo? 1065 00:52:09,630 --> 00:52:11,530 Takže môžeme vyplniť všetko ostatné. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Poďme sa pozrieť. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 OK. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Vieme, že c je bude súčin dvoch čísel, je to tak? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Čo dve čísla, aj keď? 1074 00:52:27,980 --> 00:52:28,970 >> STUDENT: A a C? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESOR: Tak je právo na prvú. 1076 00:52:31,930 --> 00:52:34,385 Takže sme d Menu odkazujúce p na, nie? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P z bodov A, takže vieme, že to bude 100 krát, čo? 1079 00:52:42,870 --> 00:52:46,232 Times, čo robí pc bod? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Body sa. 1082 00:52:48,740 --> 00:52:55,038 Tak 100 krát 100 je 10,000. 1083 00:52:55,038 --> 00:52:56,170 Má to zmysel? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 V pohode. 1086 00:52:58,200 --> 00:53:00,500 Home úsek, chlapci, posledný riadok. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Čo sa mení tu? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> STUDENT: A. 1091 00:53:06,935 --> 00:53:09,435 PROFESOR: A. Perfect, tak všetko ostatné môže zostať rovnaká. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 1094 00:53:16,710 --> 00:53:17,970 A čo je to? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Takže je to doba, čo? 1097 00:53:26,060 --> 00:53:27,120 To je hviezda pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Takže hviezda pb znamená, tu je to, pb, Pb bodov b. 1100 00:53:34,490 --> 00:53:35,370 >> STUDENT: 500. 1101 00:53:35,370 --> 00:53:36,230 >> PROFESOR: 500. 1102 00:53:36,230 --> 00:53:39,236 Takže máme 500 krát 100. 1103 00:53:39,236 --> 00:53:41,758 To je 50,000. 1104 00:53:41,758 --> 00:53:43,216 Páni! 1105 00:53:43,216 --> 00:53:45,646 Pozrite sa na to. 1106 00:53:45,646 --> 00:53:47,982 >> Žiak: Prečo máme & C pre last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESOR: Ospravedlňujem sa. 1108 00:53:48,690 --> 00:53:50,080 STUDENT: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESOR: Moja chyba. 1110 00:53:51,600 --> 00:53:52,890 Veľa písomne. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Každý dobrý? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Nie je to tak zlé, nie? 1115 00:53:56,660 --> 00:53:58,490 Stačí len málo zatiaľ čo k práci. 1116 00:53:58,490 --> 00:54:01,080 Ak máte vyraziť, pochopiť, čo každá časť 1117 00:54:01,080 --> 00:54:03,197 odkazuje to-- ako so všetkým, čo je to, 1118 00:54:03,197 --> 00:54:05,780 yes-- vyraziť na malý problémy a potom sa spoja, 1119 00:54:05,780 --> 00:54:07,345 a môžete urobiť nejaké úžasné veci. 1120 00:54:07,345 --> 00:54:08,970 Tam sú odpovede, ale my sme to. 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 Moje ruky sú kriedovo. 1126 00:54:15,510 --> 00:54:17,970 Takže pridaním alebo odpočítaním int nastaví ukazovateľ 1127 00:54:17,970 --> 00:54:21,890 podľa veľkosti typu ukazovateľ. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Spomeňte si, ako každý druh má inú veľkosť? 1130 00:54:28,390 --> 00:54:34,890 Tak ako double alebo long long znamená osem a int je štyri, ale je jeden znak. 1131 00:54:34,890 --> 00:54:38,360 >> Takže to, čo chcete robiť, je-- jednu vec mať na pamäti, 1132 00:54:38,360 --> 00:54:44,080 je práve to, ako moc sú vaše Hodnota ukazovateľa sa práve mení 1133 00:54:44,080 --> 00:54:46,550 bude závisieť na typ ukazovateľ je. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Každý dobrý s tým? 1136 00:54:51,820 --> 00:54:52,760 Môžem vymazať? 1137 00:54:52,760 --> 00:54:53,440 Sme dobrí? 1138 00:54:53,440 --> 00:54:53,940 Úžasné. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Takže ak máme nejaký ukazovateľ that-- to bude be-- som 1141 00:55:07,501 --> 00:55:08,834 bude robiť to ukazovateľ int. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Ukladá to. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Ak by ste mali povedať, ukazovateľ plus jedna, čo to bude robiť 1146 00:55:20,170 --> 00:55:23,420 sa to bude aktualizovať to podľa veľkosti int 1147 00:55:23,420 --> 00:55:25,950 pretože to je typ ukazovateľ je. 1148 00:55:25,950 --> 00:55:28,260 >> S C, je všetko veľmi prísne a regulované. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Ukazovateľ int bude aktualizovať podľa množstvo priestoru int bude trvať. 1151 00:55:35,260 --> 00:55:36,260 Int je štyri bajty. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Takže to, čo by to premeniť? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Ste práve pridaním štyri na to. 1156 00:55:44,390 --> 00:55:50,040 Teraz ukazovateľ by be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Takže ak je to char a my ukazovateľ plus jedna, čo by to bolo teraz? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Ak je started-- predstierať sme started-- teraz je to 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Poďme sa teraz povedať, že to bol char ukazovateľ, a pridali sme jeden. 1163 00:56:10,850 --> 00:56:11,850 Čo by to zmeniť? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Koľko bytov je char? 1166 00:56:16,030 --> 00:56:16,680 >> Divákov: One. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: One. 1168 00:56:17,304 --> 00:56:18,309 Divákov: Tak 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Tak to by bolo deväť. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Takže len niečo zapamätať. 1172 00:56:23,820 --> 00:56:28,340 Stačí, keď si pridať jeden, nie je to Ak pridáte jedno, ak je to char. 1173 00:56:28,340 --> 00:56:34,190 Je to pridaním koľko bytov typu, že je, 1174 00:56:34,190 --> 00:56:36,960 čo je dôvod, prečo máme Táto rovnica sa tu. 1175 00:56:36,960 --> 00:56:40,190 Takže je to int krát väčšia typu ukazovateľ. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Takže máme príklad tu. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y bol pridelený do tej hodnoty, 0x4, keď sme y a rovný jednej. 1180 00:56:54,430 --> 00:56:56,830 Čo je v tom, čo je v x, nemení. 1181 00:56:56,830 --> 00:56:58,610 Čo robí zmeny je to, čo je v y. 1182 00:56:58,610 --> 00:57:04,980 Adresa uložená v y aktualizovaný o štyri pretože tam sú štyri byty v int 1183 00:57:04,980 --> 00:57:06,097 a je to ukazovateľ int. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Dobrá. 1186 00:57:07,790 --> 00:57:09,123 Takže teraz máme ďalšie cvičenia. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Takže otázka je, čo sa bude tlačiť. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Nejaké nápady? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Divákov: Počet znaky spokojnú mačku? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Presne tak. 1194 00:57:44,490 --> 00:57:45,531 Tak rád so svojím reťazcom. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Má každý dostať, že? 1197 00:57:48,260 --> 00:57:49,509 Chceme ísť cez neho? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Áno, OK. 1200 00:57:52,010 --> 00:57:57,385 Takže to, čo máme here-- I takto oveľa viac. 1201 00:57:57,385 --> 00:57:59,340 Nemám na [Nepočuteľné] smiešne. 1202 00:57:59,340 --> 00:58:01,690 >> Takže máme reťazec tu šťastná mačka. 1203 00:58:01,690 --> 00:58:02,950 Lovely. 1204 00:58:02,950 --> 00:58:05,080 Máme nejaké počítadlo, ktoré sme sledovaní. 1205 00:58:05,080 --> 00:58:11,430 Takže máme nejaký char * ukazovateľ že práve je rovná Str. 1206 00:58:11,430 --> 00:58:14,320 Čo to robí, je, že je to priradenie nejaký ukazovateľ 1207 00:58:14,320 --> 00:58:16,380 na začiatku svojho reťazca. 1208 00:58:16,380 --> 00:58:19,840 Pretože som si istý, ako to bol spomenutý v prednáške, 1209 00:58:19,840 --> 00:58:22,290 dali sme tí chlapci to dátový typ nazvaný reťazec. 1210 00:58:22,290 --> 00:58:29,070 >> Ale naozaj reťazce sú len pole of-- ako char *. 1211 00:58:29,070 --> 00:58:32,330 Je to ukazovateľ na veľa postáv že sú súvislé pamäti. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Takže to len nastaví ju rovná ľubovoľný reťazec je 1214 00:58:36,280 --> 00:58:38,980 identifikovaný kde jeho prvý znak. 1215 00:58:38,980 --> 00:58:42,710 Takže je to len nastavenie nejaký bod rovnajúcu sa začiatok reťazca. 1216 00:58:42,710 --> 00:58:44,130 Každý, kto tam dobre? 1217 00:58:44,130 --> 00:58:44,960 V pohode. 1218 00:58:44,960 --> 00:58:49,840 >> Tak toto je náš dereferencing ukazovateľ. 1219 00:58:49,840 --> 00:58:53,760 Takže to vlastne bude nám nejakú hodnotu tu, 1220 00:58:53,760 --> 00:58:55,610 v našom reťazci, že hovoríme o. 1221 00:58:55,610 --> 00:58:58,342 A hovoríme tak dlho, ako to nie je null zakončenie. 1222 00:58:58,342 --> 00:59:00,550 Takže pokračuj, kým sa nedostanete na koniec reťazca. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Aktualizujte svoj ukazovateľ o jeden. 1225 00:59:04,190 --> 00:59:09,250 Tak R, bude v skutočnosti aktualizuje jeden zakaždým, pretože to je 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 >> Takže to bude prechádzať. 1229 00:59:12,340 --> 00:59:13,290 Bude to aktualizovať. 1230 00:59:13,290 --> 00:59:16,705 Takže prvýkrát v tomto beží, to bude tu na h. 1231 00:59:16,705 --> 00:59:17,590 Bude to aktualizovať. 1232 00:59:17,590 --> 00:59:18,185 >> Bude to. 1233 00:59:18,185 --> 00:59:21,310 Bude to p, y, a tak ďalej a tak ďalej. 1234 00:59:21,310 --> 00:59:22,300 Budeme aktualizovať počítadlo. 1235 00:59:22,300 --> 00:59:26,160 Keď sa dostane na koniec, to práve tlačí, ako ďaleko to dostal. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Áno. 1238 00:59:28,050 --> 00:59:31,475 >> Divákov: Tak to sa počíta priestor ako jeden, nie? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 1: Myslíš, že áno. 1242 00:59:35,222 --> 00:59:36,830 Je to question-- 1243 00:59:36,830 --> 00:59:37,746 >> Divákov: [nepočuteľné]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Žiadne obavy. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 To som urobil. 1248 00:59:42,736 --> 00:59:47,710 Dobre, tak jedna vec, ktorú som pochopiť, že s radom, 1249 00:59:47,710 --> 00:59:51,736 môžete tiež zaobchádzať s ňou ako ukazovateľ, pretože pole sú len 1250 00:59:51,736 --> 00:59:52,860 kontinuálne miesta pamäti. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Takže môžete zaobchádzať s ňou rovnakým spôsobom. 1253 00:59:56,380 --> 00:59:59,000 Môžete ich manipulovať s ukazovateľmi, taky. 1254 00:59:59,000 --> 01:00:04,770 Takže namiesto toho robí, v tomto prípad je analogický vec 1255 01:00:04,770 --> 01:00:07,490 bude polia 0 sa rovná 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Ale rovnako, že reťazec je určený 1258 01:00:15,210 --> 01:00:18,740 do začiatku, kde jeho prvý znak, 1259 01:00:18,740 --> 01:00:22,270 pole je určená kde jeho prvý prvok. 1260 01:00:22,270 --> 01:00:25,120 Pretože vieme, že sme zaručené, že tieto 1261 01:00:25,120 --> 01:00:27,985 sa bude kontinuálne bloky pamäte. 1262 01:00:27,985 --> 01:00:29,360 To je to, čo nám umožňuje, ako to urobiť. 1263 01:00:29,360 --> 01:00:31,193 Vieme, že kontinuálne bloky pamäte. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Takže v tomto prípade, by dereferencing len polia, ktorá nám hovorí, 1266 01:00:36,500 --> 01:00:40,800 OK, prejdite na začiatok vaše pole, ktoré je tu. 1267 01:00:40,800 --> 01:00:42,640 Takže si môžete nastaviť, že sa rovná jednej. 1268 01:00:42,640 --> 01:00:48,610 A v tomto prípade, bez ohľadu na svoje pole typ je, keď ho aktualizovať po druhom, 1269 01:00:48,610 --> 01:00:50,830 to je rovnako ako aktualizácia sa na ďalší index. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Môžete to urobiť, pretože vás Viete, čo je vo vašom poli. 1272 01:00:56,360 --> 01:00:59,770 Tak to vie, koľko sa aktualizovať ukazovateľ by, 1273 01:00:59,770 --> 01:01:02,925 akú adresu ho na to aktualizovať že ste v ďalšom slotu. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Takže je to len iný spôsob, ako písanie polia 0 sa rovná 1, 1276 01:01:09,400 --> 01:01:15,114 pole 1 sa rovná 2, polia držiak 2 sa rovná 3. 1277 01:01:15,114 --> 01:01:16,780 Je to len ďalší spôsob, ako premýšľať o tom. 1278 01:01:16,780 --> 01:01:19,600 Vzhľadom k tomu, že sú spojité bloky v pamäti, 1279 01:01:19,600 --> 01:01:21,830 môžete sa na ne odkazovať buď u polia notation-- 1280 01:01:21,830 --> 01:01:24,390 čo ja osobne nájsť easier-- ale možno 1281 01:01:24,390 --> 01:01:27,347 je potrebné manipulovať s ním striktne podľa adresy pamäti. 1282 01:01:27,347 --> 01:01:28,930 A to je tak, ako by ste to urobil. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Druh viac ako v pohode, čo môžete urobiť 1285 01:01:32,630 --> 01:01:35,213 proti možno nie je niečo, čo ste v skutočnosti bude vykonávať. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Používam ju v 61. 1288 01:01:38,630 --> 01:01:41,710 Vy pravdepodobne nebudete potrebovať sa starať o to príliš veľa. 1289 01:01:41,710 --> 01:01:43,693 Ale ak máte záujem, trvať 61 budúci rok. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Sme v cieľovej rovinke chlapci. 1292 01:01:46,560 --> 01:01:47,510 Ja viem, že je to dlho. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic Memory Allocation-- tak vieme, že ten, 1295 01:01:58,880 --> 01:02:01,790 vecí, keď sme sa rozprávali počas náš prvý časť spoločne, 1296 01:02:01,790 --> 01:02:04,560 sme sa pozreli na swapu funkcie, kde je to 1297 01:02:04,560 --> 01:02:08,010 mimo rámec našej hlavnej funkcie. 1298 01:02:08,010 --> 01:02:14,370 A my sme boli okolo týchto hodnôt že boli účinne kópie. 1299 01:02:14,370 --> 01:02:20,570 >> A akonáhle swapu dokončenie prevedenie, to jednoducho nechal hromadu. 1300 01:02:20,570 --> 01:02:22,830 Pamätajte si, že máme stack rámec pre swap. 1301 01:02:22,830 --> 01:02:26,070 Ponecháva a ty Hodnoty odísť s ním. 1302 01:02:26,070 --> 01:02:27,050 A oni boli preč. 1303 01:02:27,050 --> 01:02:28,615 Nemohli sme nič robiť s nimi a my sme boli smutní 1304 01:02:28,615 --> 01:02:29,989 pretože nemôžeme vymeniť naše hodnoty. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Ale s C, ako som už spomenul, vás majú veľkú moc nad pamäti. 1307 01:02:36,560 --> 01:02:43,310 Takže to, čo môžete urobiť, je môžete prideľovať veci na halde tu 1308 01:02:43,310 --> 01:02:46,830 že zostane tam, kým poviete im inak. 1309 01:02:46,830 --> 01:02:48,280 >> Sú ako dobré deti. 1310 01:02:48,280 --> 01:02:49,150 Oni tam zostať. 1311 01:02:49,150 --> 01:02:50,270 Nemajú odísť. 1312 01:02:50,270 --> 01:02:52,750 Budú tam zostať, kým ste ako, OK, môžete odísť. 1313 01:02:52,750 --> 01:02:55,920 >> Vzhľadom k tomu, čo v zásobníku, who-- sú ako neposlušné deti. 1314 01:02:55,920 --> 01:02:59,160 Budú proste utiecť, keď chcete aby sa tam a potom sú preč. 1315 01:02:59,160 --> 01:03:00,160 Nemôžete dostať ich späť. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Takže haldy je-- budeme hovoriť o malloc a zadarmo, čo 1318 01:03:07,187 --> 01:03:08,895 Som si istý, chlapci počul o v prednáške. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 A to je v podstate spôsob, majú veľmi perzistentné dáta. 1321 01:03:14,210 --> 01:03:18,920 Takže môžete mať dáta okolo tak dlho, ako budete chcieť. 1322 01:03:18,920 --> 01:03:19,546 MHM. 1323 01:03:19,546 --> 01:03:21,475 >> Divákov: Môžete definovať haldy a zásobníka? 1324 01:03:21,475 --> 01:03:24,030 Sú radi miesta, ako dať veci? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Takže sú v podstate prostě-- sú 1326 01:03:26,630 --> 01:03:29,530 spôsob, akým sa vzťahujú len na pamäti. 1327 01:03:29,530 --> 01:03:37,300 Takže haldy len miesta, kde pamäť je alokovaná dynamicky, 1328 01:03:37,300 --> 01:03:40,960 vzhľadom k tomu, stack odkazuje viac na seba rámy 1329 01:03:40,960 --> 01:03:45,950 ktoré sú zásadné pre funkcie, ktoré sú v skutočnosti beží. 1330 01:03:45,950 --> 01:03:47,200 Tie naozaj nemajú kontrolu. 1331 01:03:47,200 --> 01:03:50,690 >> Veľký rozdiel, máte kontrolu cez hromadu, ak chcete. 1332 01:03:50,690 --> 01:03:52,710 Máte menšiu kontrolu nad komínom. 1333 01:03:52,710 --> 01:03:55,030 Zásobníka závisí na funkcie, ktoré sú spustené, 1334 01:03:55,030 --> 01:03:58,320 a poradí, v akom sú beží, a ako sa vráti veci. 1335 01:03:58,320 --> 01:04:01,290 Vzhľadom k tomu, s haldy, as uvidíme, môžete povedať, 1336 01:04:01,290 --> 01:04:06,639 OK, chcem sa túto hodnotu okolo, kým som ti to povedať inak. 1337 01:04:06,639 --> 01:04:08,180 Nie je dovolené, aby sa ho zbaviť. 1338 01:04:08,180 --> 01:04:09,300 Nesmieš ju prepísať. 1339 01:04:09,300 --> 01:04:11,675 Budeš mať okolo tak dlho, ako vám hovorím. 1340 01:04:11,675 --> 01:04:15,780 Dostanete sa byť šéfom v halde, vzhľadom k tomu, stack-- Možno, ak budete 1341 01:04:15,780 --> 01:04:18,080 ako podvádzať svoju cestu môžete byť šéf. 1342 01:04:18,080 --> 01:04:19,340 Ale nie tak celkom. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 A je to naozaj len spomienka. 1345 01:04:22,070 --> 01:04:24,260 Je to len rôzne spôsoby, ako sa odkazovať na pamäti. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> V pohode. 1348 01:04:26,400 --> 01:04:28,630 Takže s tým, ako sa ovládať svoje pamäti. 1349 01:04:28,630 --> 01:04:32,070 Je to s malloc, ktorý budete mať k použitiu. 1350 01:04:32,070 --> 01:04:37,100 Takže je to len krátka pre pridelenie pamäti. 1351 01:04:37,100 --> 01:04:38,459 To je všetko, čo je. 1352 01:04:38,459 --> 01:04:41,250 Je tu veľa ďalších pekných funkcie, ktoré majú Alloc na konci, 1353 01:04:41,250 --> 01:04:42,750 a oni kandidujú na rôzne veci. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Takže keď budete potrebovať úložisko, ktoré je potrebné prečkať aktuálnu funkciu tak, 1356 01:04:49,050 --> 01:04:51,010 že ak Vaša súčasná Funkcie utečie, 1357 01:04:51,010 --> 01:04:55,774 stále máte dáta, ktorá vás dostal od neho chcete používať malloc. 1358 01:04:55,774 --> 01:04:57,190 To bude inicializovať ju na hromadu. 1359 01:04:57,190 --> 01:05:00,140 A ako som povedal, a udržať hovorí, budete ho tam udržať 1360 01:05:00,140 --> 01:05:03,050 kým to povedať inak, čo je dôležité tu. 1361 01:05:03,050 --> 01:05:08,450 >> Takže jedna vec je si všimnúť, a to je zvyčajne veľmi dôležité, 1362 01:05:08,450 --> 01:05:13,620 je, že tento sizeof je super vhodné použiť 1363 01:05:13,620 --> 01:05:16,440 preto, že v závislosti od typu stroje vediete, 1364 01:05:16,440 --> 01:05:22,470 môže mať rôzne množstvá pamäti, že to trvá. 1365 01:05:22,470 --> 01:05:26,870 Takže chcete vždy používať veľkosť tak, že nie ste závislí stroj, 1366 01:05:26,870 --> 01:05:30,300 aby váš kód bude spustiť na akomkoľvek počítači. 1367 01:05:30,300 --> 01:05:32,360 >> A to je len časť písanie dobrý kód. 1368 01:05:32,360 --> 01:05:34,610 Ak to funguje na jednom počítači, ale nie žiadne z ostatných, 1369 01:05:34,610 --> 01:05:36,440 Ako užitočný bol váš program? 1370 01:05:36,440 --> 01:05:38,420 Takže chcete vždy uistite sa, že aj použitie sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Divákov: Tak je to, že rovnako ako veľkosť 10 palcov [nepočuteľné]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Jedná sa o veľkosť 10 ints. 1373 01:05:43,698 --> 01:05:44,197 jo. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Takže veľkosť ints vráti koľko jeden int trvať. 1376 01:05:48,830 --> 01:05:51,530 Alebo veľkosť char, ako veľa robí jednu char vziať. 1377 01:05:51,530 --> 01:05:54,150 A potom, koľko blokov z toho chceš? 1378 01:05:54,150 --> 01:05:57,590 >> Takže v tomto prípade, chceme niečo ktoré môžeme ukladať 10 celých čísel na. 1379 01:05:57,590 --> 01:06:00,240 A to bude fungovať bez ohľadu na stroja, ktorý je v pohode. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Tak koľko bytov bude že vlastne dať? 1382 01:06:04,846 --> 01:06:06,190 Rýchle matematika. 1383 01:06:06,190 --> 01:06:06,787 >> Divákov: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Presne tak. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Takže ďalšia veľká vec. 1388 01:06:12,030 --> 01:06:14,840 Pointer alebo malloc môže vrátiť hodnotu null. 1389 01:06:14,840 --> 01:06:17,910 >> Takže znovu, vždy skontrolujte, uvidíme, či to vrátil null 1390 01:06:17,910 --> 01:06:19,620 než sa pokúsiť s ním nič urobiť. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Ak sa pokúsite dereferencia tento ukazovateľ teraz, 1393 01:06:27,350 --> 01:06:29,720 to len tak segfault pretože si išiel a snažil 1394 01:06:29,720 --> 01:06:31,730 dotknúť null, ak by ste nemali mať. 1395 01:06:31,730 --> 01:06:34,000 Takže vždy skontrolujte, či null. 1396 01:06:34,000 --> 01:06:36,075 Opäť platí, že všetko, čo urobiť. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> To môže vrátiť hodnotu null. 1399 01:06:39,720 --> 01:06:42,740 Bude to návrat null, ak ste buď z vesmíru, alebo z akéhokoľvek dôvodu 1400 01:06:42,740 --> 01:06:44,350 to bežalo do nejakej pamäte chyba. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Niekedy sa jednoducho vráti hodnotu null. 1403 01:06:47,510 --> 01:06:48,990 Takže stačí skontrolovať to. 1404 01:06:48,990 --> 01:06:51,050 To je všetko slide hovorí. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 A potom to, čo máme Tu je volanie zadarmo. 1407 01:06:55,240 --> 01:07:00,550 Takže rovnakým spôsobom, že ak máte otvorenie súboru musíte zatvoriť súbor, 1408 01:07:00,550 --> 01:07:04,340 ak sa vám malloc pamäti, môžete musíte uvoľniť, že pamäť. 1409 01:07:04,340 --> 01:07:06,530 A vy dostanete urobiť naozaj cool veci. 1410 01:07:06,530 --> 01:07:09,624 >> A tam je program, ktorý možno spustiť na zistiť, či ste niekedy netesní pamäti. 1411 01:07:09,624 --> 01:07:11,040 Ale nechcete, aby k úniku pamäte. 1412 01:07:11,040 --> 01:07:11,820 Je to naozaj zlé. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Len pokaziť veci. 1415 01:07:15,020 --> 01:07:20,939 >> Je to zlé, robiť, rovnako ako programovanie múdre, účinnosť návrhu. 1416 01:07:20,939 --> 01:07:22,980 Ale je to tiež tak nejako zo zlé pre váš počítač. 1417 01:07:22,980 --> 01:07:26,780 Takže len voľné veci keď je malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Vy ste vidieť symetria tu. 1420 01:07:30,210 --> 01:07:31,180 Super jednoduché. 1421 01:07:31,180 --> 01:07:33,010 Len voľný, a následne bez ohľadu na ukazovateľ, 1422 01:07:33,010 --> 01:07:34,843 bez ohľadu na názov ukazovateľ je, a to 1423 01:07:34,843 --> 01:07:36,710 sa postará o uvoľnenie za vás. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 V pohode. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Potom sme to. 1428 01:07:42,530 --> 01:07:44,770 Takže sme len tak prejsť tohto programu. 1429 01:07:44,770 --> 01:07:46,560 A potom vy je hotovo. 1430 01:07:46,560 --> 01:07:50,240 >> Takže [nepočuteľné] len hlavné. 1431 01:07:50,240 --> 01:07:51,690 Takže máme nejaké int * ukazovateľ. 1432 01:07:51,690 --> 01:07:53,648 Takže máme ukazovateľ že to bude držať celých čísel. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 A koľko ints to bude držať? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Len jeden. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Veľkosť int. 1439 01:08:01,100 --> 01:08:03,900 >> Skontrolujte sme sa zistiť, či ukazovateľ je null, pretože to 1440 01:08:03,900 --> 01:08:06,130 je, chceme povedať, nerobia nič. 1441 01:08:06,130 --> 01:08:07,065 Je to zlé. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Tak sme vytlačiť nejakú chybu von pamäti, najčastejšie vráti 1, 1444 01:08:12,130 --> 01:08:14,260 ako vy zvyknutí. 1445 01:08:14,260 --> 01:08:17,390 >> A potom tu máme, sme dereferencia našej ukazovatele. 1446 01:08:17,390 --> 01:08:22,840 Takže to znamená, že budeme ukladať niečo, čo na mieste nám bol daný. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * ukazovateľ, alebo malloc vracia adresa, kde zrušil tento 1449 01:08:30,830 --> 01:08:31,750 Pamäť pre vás. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Takže je to v podstate ktorá vám like-- ak vás 1452 01:08:34,800 --> 01:08:38,149 premýšľať o tom, banda domy v okolí 1453 01:08:38,149 --> 01:08:40,640 ktoré chcete, aby Váš nábytok, malloc 1454 01:08:40,640 --> 01:08:43,850 je ako v poriadku, dostanete ísť do domu tri. 1455 01:08:43,850 --> 01:08:45,800 A to vám dáva Adresa domu tri. 1456 01:08:45,800 --> 01:08:48,775 >> Takže to teraz, to Ukazovateľ sa ukladá adresa, 1457 01:08:48,775 --> 01:08:50,149 uloží adresu Vášho domu. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * PTR znamená, OK, ja som v mojom dome. 1460 01:08:54,640 --> 01:08:55,326 V pohode. 1461 01:08:55,326 --> 01:08:56,580 Musím sa dostať nejaké číslo. 1462 01:08:56,580 --> 01:08:59,229 >> Takže sa pýtate na niekoho aby vám nábytok teraz. 1463 01:08:59,229 --> 01:09:00,430 Takže ste si nejaké int. 1464 01:09:00,430 --> 01:09:05,100 A kladie ju do ukazovateľa kde to ukazuje. 1465 01:09:05,100 --> 01:09:08,670 >> A potom sa to len tlač von, ktoré ste zadali kdekoľvek. 1466 01:09:08,670 --> 01:09:11,060 A opäť, referencie. 1467 01:09:11,060 --> 01:09:15,649 Tak to je, ako by ste išli na to adresu a videl, čo tam bolo. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 V pohode? 1470 01:09:17,630 --> 01:09:20,174 >> A potom samozrejme môžeme oslobodiť našu ukazovateľ. 1471 01:09:20,174 --> 01:09:21,590 Nezabudnite oslobodiť svoju ukazovateľ. 1472 01:09:21,590 --> 01:09:22,933 Nezabudnite skontrolovať null. 1473 01:09:22,933 --> 01:09:24,349 Nezabudnite oslobodiť svoju ukazovateľ. 1474 01:09:24,349 --> 01:09:27,270 Máte dve veci si pamätáte z to, alebo ktoré by ste mali pamätať. 1475 01:09:27,270 --> 01:09:27,770 Áno. 1476 01:09:27,770 --> 01:09:31,590 Divákov: [nepočuteľné] veci ako to, char * s. 1477 01:09:31,590 --> 01:09:33,760 Ako to, že sme sa nikdy oslobodiť ty? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Divákov: To sú ako nitky? 1480 01:09:36,450 --> 01:09:39,160 Hovoril ste, že reťazce sú rovnako ako char * s, nie? 1481 01:09:39,160 --> 01:09:41,200 Tak prečo nie my oslobodiť nitky? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: iba zadarmo, ak ste mallocing. 1483 01:09:43,204 --> 01:09:44,620 Publikum: Oh, ak ste mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Takže malloc a zadarmo sú dve veci, 1485 01:09:47,399 --> 01:09:49,000 že by ste mali mať vždy spoločne. 1486 01:09:49,000 --> 01:09:51,630 f open, f zavrieť, dve veci, mali by ste mať k sebe. 1487 01:09:51,630 --> 01:09:54,471 V oboch týchto prípadoch, skontrolujte, či null. 1488 01:09:54,471 --> 01:09:54,971 Áno. 1489 01:09:54,971 --> 01:09:57,130 >> Divákov: Takže zadarmo, je len čo niečo iné 1490 01:09:57,130 --> 01:09:59,690 má byť uložený tam po Tento program sa používa, že? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: Je to len povedať, OK, som urobil s tým. 1492 01:10:01,946 --> 01:10:03,320 Nemusíte sa držať okolo. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 V opačnom prípade bude váš počítač len rád vyskúšať a udržať ju tam. 1495 01:10:08,190 --> 01:10:10,910 A potom can't-- beží do pamäti otázky neskôr. 1496 01:10:10,910 --> 01:10:13,660 Vždy chcete uvoľniť, pretože to vám povie váš počítač, OK, ja som 1497 01:10:13,660 --> 01:10:15,190 urobil s tohto miesta pamäte. 1498 01:10:15,190 --> 01:10:17,190 Môžete ho mať späť Pre mňa pre neskoršie použitie. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 V pohode? 1501 01:10:20,500 --> 01:10:21,320 Áno. 1502 01:10:21,320 --> 01:10:26,950 >> Divákov: Tak sme na% d len pretože double že sa vráti, 1503 01:10:26,950 --> 01:10:28,330 alebo prečo je-- [nepočuteľné]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Divákov: Môžete použiť aj%? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Môžete použiť% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Na poslednú chvíľu otázky? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Choďte do toho. 1511 01:10:38,985 --> 01:10:40,610 Divákov: Mám len rýchly dotaz. 1512 01:10:40,610 --> 01:10:50,200 Takže premenná ptr, that's-- ako s int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 to je len hovorí, že je to ukazuje na miesto v memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Chceš [nepočuteľné]? 1515 01:10:55,600 --> 01:10:58,050 Divákov: začali uznávať takzvané je veľkosť of-- nie, je to OK. 1516 01:10:58,050 --> 01:11:01,292 Ale je to len ukazuje na miesto v pamäť, ktorá je rovnako ako štyri bajty. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Správne. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Takže malloc, ktorých veľkosť int hovorí, OK, ja idem utiecť, 1520 01:11:07,070 --> 01:11:08,780 nájsť štyri bajty pamäte pre vás. 1521 01:11:08,780 --> 01:11:10,700 Keď zistí, že štyri bajtov pamäti to, 1522 01:11:10,700 --> 01:11:14,030 vám dáva späť adresu na to, kde začína, 1523 01:11:14,030 --> 01:11:16,160 a to je to, čo ukladajú v ukazovateli alebo PTR. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Dobre. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Vyzeráte menej zmätený než väčšina ľudia, keď hovorím o ukazovateľ, 1528 01:11:21,700 --> 01:11:23,670 tak som celkom dobrý pocit teraz. 1529 01:11:23,670 --> 01:11:24,520 >> Dobrá. 1530 01:11:24,520 --> 01:11:27,960 Ako vždy, vy by mali mať všetci dostal svoje pset2 známky teraz. 1531 01:11:27,960 --> 01:11:32,769 Viem, že tam boli nejaké váhavý veci, kde sa hovorí, vzorec nie je platný 1532 01:11:32,769 --> 01:11:33,310 alebo tak niečo. 1533 01:11:33,310 --> 01:11:36,166 Ak ste stále, že všetky Vaše stupňa platí na mojej strane. 1534 01:11:36,166 --> 01:11:38,040 Takže môžem poslať vám screenshoty vaše stupňov. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Len mi daj vedieť, ako dobre, ak ste chýba akékoľvek známky alebo niečo 1537 01:11:41,760 --> 01:11:43,060 Nezdá sa, že zmysel. 1538 01:11:43,060 --> 01:11:43,720 Poď ku mne. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Bol som výborný na teba pyšný chalani už, tak len tak ďalej. 1541 01:11:48,830 --> 01:11:50,640 A mať dobrý odpočinok vášho týždňa. 1542 01:11:50,640 --> 01:11:53,440 Som si istý, že budem vidieť niektoré z vás v úradných hodinách. 1543 01:11:53,440 --> 01:11:55,414