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šichni. 4 00:00:13,365 --> 00:00:14,365 Vítejte zpět na části. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Krásný den out--, což je důvod, proč jsem Jistě, tam jsou jen čtyři z vás 7 00:00:18,700 --> 00:00:21,180 a není náš obvyklý balíček. 8 00:00:21,180 --> 00:00:22,670 Byl jsem nemocný tento víkend. 9 00:00:22,670 --> 00:00:24,294 Takže nemám Starburst pro vás. 10 00:00:24,294 --> 00:00:26,400 A já, může začít kašlat strašně po celou dobu to. 11 00:00:26,400 --> 00:00:27,790 Takže jen mějte se mnou. 12 00:00:27,790 --> 00:00:30,624 Budu opravdu snažit a dostat se přes to první, 13 00:00:30,624 --> 00:00:32,290 ale předtím, než jsem se kašle útok. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Ale jen se snadno na mě s málo bit-- to je vše, co jsem se zeptat. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Takže náš program pro today-- jen reminder-- váš kvíz je příští týden. 18 00:00:44,289 --> 00:00:46,830 Řekl jsem vám to poslední týden, takže to by se chytit tě nepřipraveného. 19 00:00:46,830 --> 00:00:47,954 Tak jsem tě znovu připomínat. 20 00:00:47,954 --> 00:00:49,180 Příští týden si kvíz. 21 00:00:49,180 --> 00:00:52,730 Za tímto účelem, příští týden je část bude mnohem 22 00:00:52,730 --> 00:00:55,180 of-- Budu se snažit a pracovat v nějaké recenzi. 23 00:00:55,180 --> 00:00:58,130 Takže pokud vy mohl pomozte mi tím, že mi posílá 24 00:00:58,130 --> 00:01:00,990 věci, které vám vyhovuje se, že jste starosti, 25 00:01:00,990 --> 00:01:03,530 témata, která byste chtěli pro me k pokrytí, to by bylo skvělé. 26 00:01:03,530 --> 00:01:05,740 Tak jsem si vyzkoušet a pracovat je do naší sekci příští týden 27 00:01:05,740 --> 00:01:11,540 nebo zaslat vám další materiál nebo prep že byste mohli dostat jinde. 28 00:01:11,540 --> 00:01:12,150 >> Yeah! 29 00:01:12,150 --> 00:01:13,520 Stále více lidí se blíží! 30 00:01:13,520 --> 00:01:17,320 Myslel jsem si, že jsem to udělal špatně poslední týden, že nikdo nechce, aby se vrátil? 31 00:01:17,320 --> 00:01:18,065 Bojím se. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Takže další tři věci že budeme jít přes 34 00:01:21,100 --> 00:01:24,850 jsou přesměrování, soubor I / O, a pak ukazatele a dynamické paměti. 35 00:01:24,850 --> 00:01:29,160 Jsem si jistý, že jste všichni mimořádně nadšeni pointers-- oblíbené téma každého z nás, 36 00:01:29,160 --> 00:01:31,310 tak jednoduché pochopit. 37 00:01:31,310 --> 00:01:33,130 Jsem si jistý, kluci všichni dostali, že jo? 38 00:01:33,130 --> 00:01:39,510 >> Takže popořadě, redirection-- to je v podstatě jen způsob, 39 00:01:39,510 --> 00:01:42,920 kontrolovat, jak se vstup věci do svého programu, 40 00:01:42,920 --> 00:01:44,606 jak vy výstupní věci z programu. 41 00:01:44,606 --> 00:01:46,980 Mezi hlavní způsoby, jak kluci Byly interakci s ním 42 00:01:46,980 --> 00:01:51,650 je jen přes standardní výstup s tiskovým obrazovky zde. 43 00:01:51,650 --> 00:01:55,940 Ale existují způsoby, jak pipe-- jak vidíme zde 44 00:01:55,940 --> 00:01:58,980 je jedním z našich words-- druhu z potrubí, aby informace 45 00:01:58,980 --> 00:02:02,850 nebo že data do souboru ze souboru. 46 00:02:02,850 --> 00:02:05,820 Je to jen různé způsoby dostat věci do vašeho programu 47 00:02:05,820 --> 00:02:10,681 a ze svého programu, místo toho, jen je tisk na této obrazovce 48 00:02:10,681 --> 00:02:12,430 nebo zadáním věci z příkazového řádku. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Takže první je malá větší než stříšky. 51 00:02:18,030 --> 00:02:22,085 Takže output-- to prostě vytiskne výstup do souboru místo na obrazovce. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Takže pokud jste měli něco, co tištěné "Hello, world!" na obrazovku, 54 00:02:29,500 --> 00:02:32,400 pokud jste to místo k output.text, že 55 00:02:32,400 --> 00:02:35,220 vytvoří tento soubor s názvem output.text. 56 00:02:35,220 --> 00:02:38,550 A když jej otevřete, bude to říci: "Hello, world!" tam. 57 00:02:38,550 --> 00:02:41,410 To může být super užitečná Pokud máte spoustu chyb 58 00:02:41,410 --> 00:02:43,430 ve skutečnosti, jak vidíme v tomto jednom. 59 00:02:43,430 --> 00:02:46,810 Pokud tak učiníte dvě stříšky, že to bude vytisknout chybové zprávy. 60 00:02:46,810 --> 00:02:52,090 >> Takže pokud máte problém s kompilace, má mnoho chyb 61 00:02:52,090 --> 00:02:56,770 a jste stále utápí ve snaze listovat v příkazovém řádku 62 00:02:56,770 --> 00:02:59,110 přes všechny nimi, můžete jen vytisknout do souboru, 63 00:02:59,110 --> 00:03:02,130 otevřít tak, aby tento soubor můžete jimi procházet snadněji. 64 00:03:02,130 --> 00:03:05,160 Vlastně jsem používal to hodně, když jsem byl ladění 65 00:03:05,160 --> 00:03:07,970 moje 181 psets pro strojové učení. 66 00:03:07,970 --> 00:03:10,000 Takže to může být super užitečné později. 67 00:03:10,000 --> 00:03:18,370 Je to také užitečné, pokud máte program že možná je generování knihovny 68 00:03:18,370 --> 00:03:20,430 nebo vytváření nějakého souboru řetězců, a 69 00:03:20,430 --> 00:03:22,846 musí být schopni vidět, že je to generování je správně. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 To je způsob, jak to udělat. 72 00:03:25,160 --> 00:03:28,280 >> Takže pokud si je vytisknout do souboru, vás mohou snadněji zkoumat je, že jo? 73 00:03:28,280 --> 00:03:30,930 Versus snaží posouvat prostřednictvím příkazového řádku. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 A pak jedna věc k poznámce je to, že jen s větším 76 00:03:35,820 --> 00:03:40,090 než stříšky, pokud píšete do souboru, který již exists-- 77 00:03:40,090 --> 00:03:44,990 tak jako když jsme běželi to první čas, dáme ji do output.text, 78 00:03:44,990 --> 00:03:49,970 a pak jsme měli druhý program že vytisknout to jako programu dva 79 00:03:49,970 --> 00:03:54,250 a dělal větší než output.text, přepíše that-- tak 80 00:03:54,250 --> 00:03:56,715 přepsat to, co bylo kdy v tento soubor začít. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Takže pokud chcete připojit do souboru, protože zde vidíme, 83 00:04:00,750 --> 00:04:04,779 stačí udělat dva větší než znaky. 84 00:04:04,779 --> 00:04:05,820 A připojí k ní. 85 00:04:05,820 --> 00:04:06,750 Nebude jej přepsat. 86 00:04:06,750 --> 00:04:09,770 Takže pokud budete potřebovat ke spuštění více programy a druh udržet 87 00:04:09,770 --> 00:04:13,170 Trať, co všechno z nich jsou se vracet k vám do souboru, 88 00:04:13,170 --> 00:04:14,190 to je způsob, jak to udělat. 89 00:04:14,190 --> 00:04:17,231 Pokud vás nezajímá, co je ve vašem souboru a to smí být přepsány, 90 00:04:17,231 --> 00:04:19,204 stačí použít jeden větší než. 91 00:04:19,204 --> 00:04:20,600 Znamená to, že smysl pro každého? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Diváků: Jako tečka lomítko ahoj větší než výstup dot textu, jako je dvakrát, 94 00:04:31,140 --> 00:04:34,030 to bude jen ukázat pouze na výstupu dot textu druhé time-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Správně. 96 00:04:34,810 --> 00:04:40,450 Tak to by v podstatě jen zcela přepsat, co se tam začít. 97 00:04:40,450 --> 00:04:44,260 Pokud tento soubor zde, output.text již 98 00:04:44,260 --> 00:04:48,230 existuje, v podstatě cokoliv, co říkají že opět s jedním Greater 99 00:04:48,230 --> 00:04:51,920 než si můžete jen myslet na to, as, jako by nahradil soubor. 100 00:04:51,920 --> 00:04:54,824 Stejně jako když jste ukládání Word dokument a vy uložit jako, 101 00:04:54,824 --> 00:04:57,365 a budete mít stejný název, a úplně přepíše to-- 102 00:04:57,365 --> 00:04:58,680 je to stejný druh věci. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Každý, kdo má nějaké otázky týkající se jen výstup do souboru? 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 samozřejmě, pokud jste zvrátit směru šipky, můžete to udělat vstup. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Takže když vy jste měl jako Caesar nebo Visioneer 110 00:05:19,960 --> 00:05:23,195 a vy jste museli na vstup něco, jste měli řádce příkazu 111 00:05:23,195 --> 00:05:24,960 že ve skutečnosti je to vstup. 112 00:05:24,960 --> 00:05:27,410 To je další způsob, jak to udělat. 113 00:05:27,410 --> 00:05:30,520 Takže namísto čekání na příkazovém řádku, 114 00:05:30,520 --> 00:05:33,800 jako když jste požádáni o zpráva v Caesar nebo Visioneer, 115 00:05:33,800 --> 00:05:36,490 pokud byste měli textový soubor která měla svou zprávu, 116 00:05:36,490 --> 00:05:38,280 můžete jen zadejte jej do toho. 117 00:05:38,280 --> 00:05:44,930 >> Takže kdyby to bylo jako tečka lomítko Caesar 3 méně než šipky vstupního textu, který 118 00:05:44,930 --> 00:05:47,240 je vaše zpráva, že poběží v pohodě. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Když je váš program Caesar skutečně požádáni o zadání od uživatele, 121 00:05:54,020 --> 00:05:57,360 to by už mít, protože které jste zadali v tomto souboru. 122 00:05:57,360 --> 00:05:58,830 To je jen další způsob, jak. 123 00:05:58,830 --> 00:06:02,445 Jen zpáteční output-- stačí zadat pro vaše data. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> A pak ten poslední je trubka. 126 00:06:06,680 --> 00:06:07,780 Tak tohle je docela v pohodě. 127 00:06:07,780 --> 00:06:09,890 Vzhledem k tomu, že vám umožní mít výstup jednoho 128 00:06:09,890 --> 00:06:13,695 Program a dát ho jako vstup do jiného programu. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Nevím, jestli někdo z vás hrál si s rozluštit 131 00:06:18,630 --> 00:06:20,590 že CS50 může mít vám dal, ale to by 132 00:06:20,590 --> 00:06:27,380 vám umožní vzít nějaký vzorek souboru, zadejte jej do šifrování, 133 00:06:27,380 --> 00:06:30,350 a potom odtud typ že do dešifrování 134 00:06:30,350 --> 00:06:32,470 aby se ujistil, že se ukázalo stejné. 135 00:06:32,470 --> 00:06:34,050 Takže je to něco jako třícestného smyčky. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Jít na to. 138 00:06:39,423 --> 00:06:41,785 >> Diváků: Pokud program má více vstupů, 139 00:06:41,785 --> 00:06:47,646 existuje způsob, jak to říct, který vstup použít textový soubor nebo výstup? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Má více vstupů. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Ať už soubor s input--, když je to žádá o vstup, který poprvé, je to 143 00:07:00,430 --> 00:07:03,240 bude předpokládat, myslím, že je to bude potrubí v celém souboru. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Takže pokud máte více vstupů, ty jsi bude potrubí ve více souborech. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Takže pokud se ptáte zpráv třikrát v kódu, 148 00:07:12,390 --> 00:07:15,230 budete se uvedení ve třech různých souborů. 149 00:07:15,230 --> 00:07:15,980 A to bude šílené. 150 00:07:15,980 --> 00:07:18,188 A neměli byste mít obávat, že právě teď. 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 jen výstup jednoho program používá vstup do druhé. 154 00:07:26,822 --> 00:07:27,665 Každý, kdo tam dobře? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 V pohodě. 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 pravděpodobně nebudete mít se dělat příliš mnoho s ním. 160 00:07:32,890 --> 00:07:35,670 Ale měli byste pochopit, způsobů, jak můžete použít. 161 00:07:35,670 --> 00:07:38,910 A tam jsou některé případy, které budete chtít používat. 162 00:07:38,910 --> 00:07:44,590 >> Takže souboru I / O- vím, co jsi saying-- jsme zvyklí čtení 163 00:07:44,590 --> 00:07:50,500 a písemně na naši obrazovku tam, který je standardem v a standardní výstup. 164 00:07:50,500 --> 00:07:54,370 A to je to, co vy jste byli dělá od začátku třídy zde. 165 00:07:54,370 --> 00:07:58,220 Ale můžete také číst a zapisovat soubory, což je vše, soubor I / O-, tak vstupní soubor, 166 00:07:58,220 --> 00:07:59,850 Výstup je vše, co znamená. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Takže to v podstatě znamená, že můžete ukládat data. 169 00:08:04,360 --> 00:08:08,460 >> Když si jen vytisknout na obrazovka, je to v podstatě pryč, že jo? 170 00:08:08,460 --> 00:08:12,507 Jakmile budete dělat "Dobrý den, svět "a spusťte" Hello world " 171 00:08:12,507 --> 00:08:14,090 vytiskne "Hello World" na obrazovku. 172 00:08:14,090 --> 00:08:16,370 Ale nemůžete opravdu cokoliv s ním odtamtud. 173 00:08:16,370 --> 00:08:18,950 Uložíte-li v textu soubor, pak se najednou 174 00:08:18,950 --> 00:08:22,789 máte tato data, která máte dovoleno manipulovat nebo jej do souboru, 175 00:08:22,789 --> 00:08:24,080 nebo dát do programu později. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Jedním z důvodů, proč proč to děláme je to jen 178 00:08:29,290 --> 00:08:31,560 jako způsob, jak ukládat data pro pozdější použití. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Mám pár kroků zde jen procházky standardní 181 00:08:37,279 --> 00:08:39,450 I / O. V prvním kroku, budete je třeba vytvořit odkaz 182 00:08:39,450 --> 00:08:43,480 do souboru se všemi čepice FILE hvězda souboru. 183 00:08:43,480 --> 00:08:45,740 Tak, že vytvoří ukazatel na soubor. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Takže chcete otevřít. 186 00:08:49,650 --> 00:08:52,940 A vy říkáte, a to doslova, jen soubor rovná fopen. 187 00:08:52,940 --> 00:08:57,400 A to bude návrat ukazatel na soubor, který jste právě otevřeli. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Viděl jsem pár z vás chlapi v úředních hodinách. 190 00:09:01,460 --> 00:09:07,400 >> Ale jedna z věcí, je remember-- ukazatele 191 00:09:07,400 --> 00:09:10,409 mohou být některé adresa nebo null, že jo? 192 00:09:10,409 --> 00:09:12,700 Pokud bychom někdy případ, kdy něco, co se může vrátit null, 193 00:09:12,700 --> 00:09:14,990 co máme dělat předtím, než jsme vůbec používat? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Musíme zjistit, zda je null nebo není, že jo? 196 00:09:19,000 --> 00:09:23,600 Vzhledem k tomu, že někteří z vás mohli mít problém, kdy bez ohledu na předmět 197 00:09:23,600 --> 00:09:26,110 byl vrácen v útěku byl nulový. 198 00:09:26,110 --> 00:09:28,170 Pokusili jste se provést některé funkce na to. 199 00:09:28,170 --> 00:09:29,770 A počítač místo porušené. 200 00:09:29,770 --> 00:09:30,725 Je to tak? 201 00:09:30,725 --> 00:09:33,640 Vsadím se, že pár z vás může měli tuto otázku. 202 00:09:33,640 --> 00:09:38,890 >> Tak s fopen, bude fopen buď vrátí ukazatel na soubor, 203 00:09:38,890 --> 00:09:41,200 nebo když se něco pokazí, to bude vrátit NULL. 204 00:09:41,200 --> 00:09:45,980 Takže vždy je třeba zkontrolovat že se nevrátil null 205 00:09:45,980 --> 00:09:47,880 předtím, než se pokusíte udělat něco jiného. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 To je jako standardní paradigmatu že budete potřebovat tady. 208 00:09:51,974 --> 00:09:54,390 Pokud je to vůbec možné, že něco, co by se mohl vrátit null, 209 00:09:54,390 --> 00:09:56,590 zkontrolujte, zda je není, než budete pokračovat. 210 00:09:56,590 --> 00:09:58,911 V opačném případě budete získat krásné chyb webu. 211 00:09:58,911 --> 00:10:00,410 A nikdo rád s nimi zacházet. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Tak jak vidíme tady, první argument je jen cesta k souboru. 214 00:10:06,410 --> 00:10:09,380 Pokud neexistuje, že soubor, to bude vytvořit tento soubor. 215 00:10:09,380 --> 00:10:10,713 A je to jen bude prázdné. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 A pak druhý argument je režim, který chcete. 218 00:10:13,080 --> 00:10:14,610 Chceme číst z tohoto souboru? 219 00:10:14,610 --> 00:10:15,560 Chcete napsat z něj? 220 00:10:15,560 --> 00:10:16,476 Chcete se připojit? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Takže vlastně to, co jsem právě said-- v případě, že soubor neexistuje 223 00:10:20,670 --> 00:10:23,400 a vy se snažíte číst je to, že to bude házet chybu. 224 00:10:23,400 --> 00:10:26,890 Pokud je soubor name-- líbilo, kdyby file.text ještě neexistuje 225 00:10:26,890 --> 00:10:29,250 a chcete psát na to, bude to vytvořit 226 00:10:29,250 --> 00:10:33,110 prázdný soubor s názvem file.text pro vás. 227 00:10:33,110 --> 00:10:36,612 A pokud se chcete připojit, kterou byste měli udělat totéž. 228 00:10:36,612 --> 00:10:38,081 Dává to smysl? 229 00:10:38,081 --> 00:10:40,580 Pokud se snažíte číst soubor, který ještě neexistuje, 230 00:10:40,580 --> 00:10:41,590 to bude házet chybu. 231 00:10:41,590 --> 00:10:44,340 V opačném případě bude vytvoření souboru pro vás to, co chcete, na to. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 V pohodě. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Nyní můžeme číst ze souboru. 236 00:10:48,880 --> 00:10:52,570 A to je jen trochu jde mezi různými funkcemi 237 00:10:52,570 --> 00:10:58,980 že máme pro soubor I / O. Tato vůle je nutné tento týden v pset, 238 00:10:58,980 --> 00:11:00,505 pokud si dobře vzpomínám. 239 00:11:00,505 --> 00:11:02,880 Ano, je to naprosto bude nutné tento týden v pset. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Takže fgetc vrací další znak. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets právě vrací řádek textu. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Vrátí se nic až do nový řádek, a to zlomí. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Takže fread čte určitý počet bytů a umístí je 248 00:11:18,700 --> 00:11:20,700 do matice, která je něco, co by mohlo 249 00:11:20,700 --> 00:11:25,485 chcete udělat s re-size-- by mohla být užitečná. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Kolik lidí si přečetla pset spec, mimochodem? 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 [Neslyšitelné] 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 Rozhodně číst that--, že je to legrace pset. 259 00:11:41,940 --> 00:11:51,320 Dostanete se obnovit smazané paměť card-- opravdu vzrušující, když to funguje. 260 00:11:51,320 --> 00:11:54,100 Ale určitě, začít číst, že. 261 00:11:54,100 --> 00:11:56,280 Pojď se mnou mluvit, pokud vás máte otázky o tom. 262 00:11:56,280 --> 00:11:59,290 >> OK, tak jak jsem říkal, fread čte určitý počet bajtů. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 To je nějaký libovolný počet že budete nastavit. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 A pak fseek jen pohyby do určité polohy. 267 00:12:08,260 --> 00:12:11,150 Takže možná je vám to jedno o dalších 10 bajtů. 268 00:12:11,150 --> 00:12:12,880 Jen chcete přeskočit dopředu. 269 00:12:12,880 --> 00:12:14,030 Ty nezajímá ty. 270 00:12:14,030 --> 00:12:16,280 Chcete si přečíst již od bytu 11. 271 00:12:16,280 --> 00:12:18,252 fseek vám umožní udělat. 272 00:12:18,252 --> 00:12:20,710 Tak to vám umožní být selektivní o tom, co čtete. 273 00:12:20,710 --> 00:12:25,880 Vzhledem k tomu, fgetc, fgets a fread čtení z určitého místa v souboru. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Způsob, jak přemýšlet o tom, zda se jedná je náš soubor, když jste poprvé otevřete, 276 00:12:35,090 --> 00:12:41,140 máte tuto pozici v souboru který začíná na začátku. 277 00:12:41,140 --> 00:12:45,040 Kdykoli budete volat fgetc, fgetf nebo fread, 278 00:12:45,040 --> 00:12:48,875 to bude začít od tento ukazatel polohy. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Řekněme, že chcete jen číst 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š jen tak zavolat. 283 00:12:57,960 --> 00:13:02,430 Musíte hledat tady a pak si přečtěte odtud 284 00:13:02,430 --> 00:13:06,540 nebo číst, dostane, nebo getc, V závislosti na tom, co chcete. 285 00:13:06,540 --> 00:13:09,310 Takže hledat jen vám umožní přeskočit části paměti. 286 00:13:09,310 --> 00:13:11,590 A to je jediný způsob, jak můžete přeskočit věci 287 00:13:11,590 --> 00:13:14,012 bez jejich přečtení do vyrovnávací paměti. 288 00:13:14,012 --> 00:13:15,470 Znamená to, že smysl pro každého? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Je zřejmé, že je Hodně paralelní here-- 291 00:13:24,780 --> 00:13:27,780 náš výstup, nebo vstup přesměrování, jste číst a psát. 292 00:13:27,780 --> 00:13:31,800 Takže fputc jen píše znak do souboru. 293 00:13:31,800 --> 00:13:33,655 fputs píše čáru. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf vytiskne formátovaný výstup. 296 00:13:37,420 --> 00:13:41,190 Takže pokud máte karty, nebo prostor, nebo kdoví co ještě. 297 00:13:41,190 --> 00:13:44,180 A pak fwrite píše některé pole bajtů do souboru. 298 00:13:44,180 --> 00:13:48,860 Tak tohle je stejným způsobem fwrite a fread jsou analogické 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs, a pak fputc a fgetc-- spousta 300 00:13:57,550 --> 00:14:00,710 Crazy, rychlé věci. 301 00:14:00,710 --> 00:14:05,300 >> Jen tak, aby tento handy-- budete mít různé časy 302 00:14:05,300 --> 00:14:08,680 kde možná jen chcete jeden znak najednou. 303 00:14:08,680 --> 00:14:09,890 Možná, že chcete celý řádek. 304 00:14:09,890 --> 00:14:14,320 S vaší slovníku pset-- který se skládá ze dvou psets, 305 00:14:14,320 --> 00:14:19,690 Věřím, že jsme vám celek slovník v textovém formátu 306 00:14:19,690 --> 00:14:22,252 který má každé slovo odděleny linií. 307 00:14:22,252 --> 00:14:24,210 Takže pokud byste chtěli číst jedním slovem v době, 308 00:14:24,210 --> 00:14:31,769 co můžete použít, pokud čtete a všichni jsou odděleny na nových tratích, 309 00:14:31,769 --> 00:14:33,310 a chcete jen jedno slovo v čase? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Diváků: fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Správně. 313 00:14:36,748 --> 00:14:39,960 Fgets-- proto, že se vrátí co je na jednom řádku. 314 00:14:39,960 --> 00:14:42,750 A je-li každé slovo je jeho vlastní linie, můžeme použít fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 V pohodě. 317 00:14:45,010 --> 00:14:47,290 Dává to smysl, všichni? 318 00:14:47,290 --> 00:14:48,020 V pohodě? 319 00:14:48,020 --> 00:14:50,020 Jo, budeme se dostat do ta zábavná část s ukazateli 320 00:14:50,020 --> 00:14:51,728 velmi brzy, kde na vás si udělat nějaké matematiky. 321 00:14:51,728 --> 00:14:52,776 A bude to skvělé. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Poslední step-- zavřete soubor. 324 00:14:57,740 --> 00:15:01,090 S tolika věcí tady, jeden z našich vzorů 325 00:15:01,090 --> 00:15:03,550 je-li to možné vrátit null, zkontrolujte null. 326 00:15:03,550 --> 00:15:06,160 Pokud otevřete něco, radši zavřete jej. 327 00:15:06,160 --> 00:15:10,419 OK, takže to není vše, dokud jste dělat, pokud jste je zavřel. 328 00:15:10,419 --> 00:15:12,585 Něco jako, že to není více než dokud tlustá dáma zpívá. 329 00:15:12,585 --> 00:15:14,130 To je jako zavření souboru. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Jak se říká, prostě zopakovat, a to vždy 332 00:15:19,190 --> 00:15:21,750 otevřete soubor dříve, než jste čtení nebo zápisu na něj. 333 00:15:21,750 --> 00:15:24,450 A vždy jej zavřete, pokud jste si ji otevřel. 334 00:15:24,450 --> 00:15:25,460 V pořádku? 335 00:15:25,460 --> 00:15:25,960 V pohodě. 336 00:15:25,960 --> 00:15:26,835 >> Tak tady je příklad. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Tak tiny-- já nevím, jestli vás kluci je vidět, že velmi dobře. 339 00:15:34,330 --> 00:15:36,805 Kéž bychom mohli zvýšit jas nějak. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Dovolte mi, abych vlastně dělat to, jestli můžu. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, můžete si kluci opravdu vidět, že vůbec, že? 344 00:15:51,470 --> 00:15:52,905 OK, budeme dělat to, pak. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Neslyšitelné] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Předpokládám, že to je mnohem lepší vidět. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Může někdo zjistit, kde my myš šel je otázka? 351 00:17:19,455 --> 00:17:22,837 Aha, tady je to je-- co 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 podstatě, vy by měl mít typ z myšlenky na to, co to dělá. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Není to dokonalé. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Ale raději bych to vysvětlit, než trávit více času se snaží správně naformátovat. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 V podstatě, jak vidíte zde, začneme se soubor otevřít. 361 00:18:07,280 --> 00:18:09,620 A máme nějaké databázový soubor, který jsme 362 00:18:09,620 --> 00:18:12,300 otvoru, který říká, že je naši studenti. 363 00:18:12,300 --> 00:18:14,020 A budeme zapisovat. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Tak samozřejmě, vrátit null. 366 00:18:17,720 --> 00:18:19,650 Takže musíme zkontrolovat null. 367 00:18:19,650 --> 00:18:22,930 A pak, pokud to není null, projdeme. 368 00:18:22,930 --> 00:18:25,660 A jak vidíte, jsme průchozí zde. 369 00:18:25,660 --> 00:18:26,960 Tam jsou studenti. 370 00:18:26,960 --> 00:18:30,520 Studenti je hash definována jako tři. 371 00:18:30,520 --> 00:18:34,060 A to, co děláme, je, že jsme tisk do souboru, ne? 372 00:18:34,060 --> 00:18:36,975 Takže to, co jsme tisk do našeho souboru? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Diváků: Skóre které jsou 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, které jsou v array-- přesně. 377 00:18:50,980 --> 00:18:53,050 Tak jsme se otevřít tento databázový soubor, který 378 00:18:53,050 --> 00:18:56,040 Předpokládám, že je nějaký druh ze stupně databáze. 379 00:18:56,040 --> 00:19:01,100 A my jsme jen tisk skóre každého studenta do tohoto souboru. 380 00:19:01,100 --> 00:19:02,140 V pohodě? 381 00:19:02,140 --> 00:19:02,640 Dobře. 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 Vraťme se to-- 386 00:19:06,950 --> 00:19:08,646 >> Diváků: Mám rychlý dotaz. 387 00:19:08,646 --> 00:19:11,570 Je printf není pro smyčce? 388 00:19:11,570 --> 00:19:12,870 To je jen v pokud smyčce? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Ne, to je v cyklu for. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Nevidím myš velmi dobře se zde. 392 00:19:18,810 --> 00:19:21,359 Takže jsem se snažil formát, který správně. 393 00:19:21,359 --> 00:19:22,525 Tento držák by měl být pryč. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Mělo by to být tady. 396 00:19:25,130 --> 00:19:26,605 To je to, co je ve vašem cyklu 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 Teď je to dost. 400 00:20:12,160 --> 00:20:16,720 Tak to je, jak to má be-- kromě k té poslední konzole, které jsem zamítl. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Znamená to, že smysl pro každého? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Budeme se pohybovat na na další věc then-- 405 00:20:23,750 --> 00:20:26,180 které ve skutečnosti, budete muset vidět kód. 406 00:20:26,180 --> 00:20:28,370 Tak jsem jen tak Kopírování, že více než právě teď. 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 jdu vám ukázat kluci tento kód. 410 00:20:35,110 --> 00:20:38,240 A chci, abyste se pokusila obrázek na to, co to má dělat. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Takže vzhledem k tomu that-- trvat minutu nebo tak. 413 00:20:52,480 --> 00:20:54,440 Pokuste se zjistit, co se tady děje. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Nějaké nápady? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Víme, že máme alespoň dva argumenty příkazového řádku, je to tak? 418 00:22:12,470 --> 00:22:16,270 Předpokládám, že jeden z nich bude že [neslyšitelné] našeho programu je 419 00:22:16,270 --> 00:22:17,530 a pak něco jiného. 420 00:22:17,530 --> 00:22:19,980 Vzhledem k tomu, když je [neslyšitelné] je méně než dva jsme křičet na ně. 421 00:22:19,980 --> 00:22:21,140 Je to tak? 422 00:22:21,140 --> 00:22:25,300 A z použití, vypadá to, že to bude nějaký soubor. 423 00:22:25,300 --> 00:22:26,260 Všichni jsme se shodli na to? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Takže teď, co je smyčka dělá? 426 00:22:31,570 --> 00:22:32,570 Co to prochází? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Diváků: Všechny soubory. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Přesně tak. 430 00:22:37,240 --> 00:22:39,650 To se děje přes všechny soubory, které jsme tam vstup. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Takže pro každý soubor, je to otevírá nějaký řetězec tam. 433 00:22:46,040 --> 00:22:47,560 Je to otevření tohoto souboru. 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 čtení z něj. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Samozřejmě, kontrola, jestli je to null. 439 00:22:55,540 --> 00:22:57,220 A pak je to tisk. 440 00:22:57,220 --> 00:23:01,460 Pokud je null, je to jen nám říká, že to není soubor, který existuje. 441 00:23:01,460 --> 00:23:04,290 Vzhledem k tomu, pamatujte, že se Přečtěte si náš soubor má existovat. 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 připojit, se můžete dostat pryč s ním. 444 00:23:06,870 --> 00:23:08,970 Ale s čtení, náš soubor má existovat. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> A pak, pokud existuje, Co tady děláme? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Řekněme, začněte zde. 449 00:23:15,780 --> 00:23:18,815 Co je to do-- tento první znak. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Co to dělá? 452 00:23:21,790 --> 00:23:24,100 Dostává jeden znak, ne? 453 00:23:24,100 --> 00:23:25,400 Takže to, co je tohle dělá? 454 00:23:25,400 --> 00:23:26,775 Začíná to první znak. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Každý, kdo ví EOF? 457 00:23:30,200 --> 00:23:31,170 >> Diváků: Konec souboru? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Konec file-- přesně. 459 00:23:32,680 --> 00:23:35,310 Takže to půjde přes celý soubor, je to tak? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 A pak se to bude aktualizovat podle dostat všechny 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 co to dělá? 464 00:23:43,636 --> 00:23:44,760 Diváků: Uvedení že in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: putchar výtisky na spořič obrazovky. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Neslyšitelné] znak. 469 00:23:51,950 --> 00:23:54,300 A pak, když se [neslyšitelné] to zavřete soubor. 470 00:23:54,300 --> 00:23:57,370 >> Diváků: Myslíte si, nepotřebujete [? jiného? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Ne nutně. 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 Protože tento vrátí, i když, jak dlouho protože nezachycuje to, že jsi v pořádku. 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 udělat jiného. 476 00:24:10,250 --> 00:24:15,755 Ale jinak není vždy nutné zejména 477 00:24:15,755 --> 00:24:17,610 Máte-li něco jako návrat, který 478 00:24:17,610 --> 00:24:20,640 Znamená to, že v tomto případě, pokud se zachytí to, váš program se skončí 479 00:24:20,640 --> 00:24:21,850 a to nikdy nebude mít v této oblasti. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Je to spíš pro případ, kam nemusí nutně vracet něco. 482 00:24:29,190 --> 00:24:31,370 Vzhledem k tomu, pokud to nebylo vracet něco, 483 00:24:31,370 --> 00:24:34,430 to by znamenalo, že pokud by to byla pravda, Zbytek by stále běží. 484 00:24:34,430 --> 00:24:36,138 A v tom případě by chtěl false. 485 00:24:36,138 --> 00:24:38,240 Pokud je to vrací, a Váš program je konec, 486 00:24:38,240 --> 00:24:41,960 jinak není nutné celý čas, v závislosti na kontextu. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacobe, jsi nějakou otázku? 489 00:24:44,375 --> 00:24:46,100 Diváků: Jo. 490 00:24:46,100 --> 00:24:49,300 Tak se fgetc získat další znak? 491 00:24:49,300 --> 00:24:50,734 Jak zvýšit 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 další znak. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Můžete si ji představit jako C ++ v jistém smyslu. 496 00:24:56,866 --> 00:24:58,350 >> Diváků: Takže to, co bylo EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF je konec souboru. 498 00:25:00,877 --> 00:25:03,960 Je to jen značka, která umožňuje zjistit, že jste na konci souboru. 499 00:25:03,960 --> 00:25:06,742 Takže to bude tisknout na vaší standardní výstup. 500 00:25:06,742 --> 00:25:08,950 A pak, že to bude zavřít soubor, když se to dělá. 501 00:25:08,950 --> 00:25:10,700 A pak jdeme na Další obrázek, ne? 502 00:25:10,700 --> 00:25:12,660 Takže celkově, co tento program dělá? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Neslyšitelné] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Jo. 506 00:25:16,900 --> 00:25:18,770 Je to prostě vytiskne všechno tam. 507 00:25:18,770 --> 00:25:23,270 Takže pokud vy jste někdy použité CAT a pak název nějakého file-- 508 00:25:23,270 --> 00:25:26,240 Já nevím, jestli někdo z vás má kdy udělal, že na vašem terminálu. 509 00:25:26,240 --> 00:25:29,630 Ale pokud jste někdy použít Příkaz CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 a poté, co soubor Máte there-- ji 511 00:25:31,880 --> 00:25:37,260 vytiskne ji na vašem terminálu, který může být super užitečné pro některé věci. 512 00:25:37,260 --> 00:25:38,746 Používám to hodně. 513 00:25:38,746 --> 00:25:40,120 Znamená to, že smysl pro každého? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 V pohodě? 516 00:25:42,100 --> 00:25:46,530 >> OK, takže váš úkol now-- buď sami nebo s lidmi kolem you-- 517 00:25:46,530 --> 00:25:54,930 je prostě napsat jednoduchý program že bude jen napsat "Hello, World!" 518 00:25:54,930 --> 00:25:56,255 do souboru. 519 00:25:56,255 --> 00:26:00,215 >> [Neslyšitelné] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Neslyšitelné] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: Byl jsem rád, že ne Dělám to špatně minulý týden? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Nemyslím si, že to bylo tak špatné. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Jsem rád, že jsi tady. 527 00:27:03,520 --> 00:27:04,655 Je to opravdu dělá mi to radost. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Jsem holka jednoduchých potěšení. 530 00:27:10,160 --> 00:27:11,688 Jen jsem rád, když můj oddíl navštěvuje. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Takže jsem jen na to, to začalo pro vy, takže můžeme kódovat společně. 533 00:27:18,270 --> 00:27:22,290 Nelíbí se mi dávat nikomu na místo, pokud chcete být. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Obecenstvo: pro kvízu, dělat Máme napsat program? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Můžete být vyzváni k psát jednoduché programy ručně. 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áků: Kvíz je příští týden, ne? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: kvíz je příští středu. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 To znamená, že je krásný [? CSE?] třídění strana poté, což 543 00:27:43,730 --> 00:27:50,390 znamená, že budete mít své skóre zpět že night-- v kolik hodin? 544 00:27:50,390 --> 00:27:50,890 Kdo ví? 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 Jak chceme začít 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číná tímto. 551 00:28:09,630 --> 00:28:11,455 >> Diváků: Musíte otevřít soubor. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Jo. 553 00:28:12,250 --> 00:28:14,060 Takže to, co chceš nazývat? 554 00:28:14,060 --> 00:28:16,150 Myslíte si jen chcete volat to "file"? 555 00:28:16,150 --> 00:28:17,480 Pojďme usnadňují. 556 00:28:17,480 --> 00:28:26,752 Takže to, co je naše fopen-- test výstupů bude? 557 00:28:26,752 --> 00:28:36,130 Nazvěme to "Ahoj." 558 00:28:36,130 --> 00:28:37,810 A co je naším režim? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Co budeme dělat s tímto souborem? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Diváků: Přečtěte si. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Psaní. 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 soubor. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Co musíme udělat? 572 00:28:56,212 --> 00:28:57,420 Diváků: Zkontrolujte, zda je null. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Zkontrolujte, zda je to přesně null--. 574 00:28:59,820 --> 00:29:01,980 To je to, co jsem chtěl slyšet. 575 00:29:01,980 --> 00:29:05,930 To by mělo být automatické, a to zejména do značné míry od tohoto okamžiku. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Pokud začnete segfaulting, budete pravděpodobně ani kontrolovat null někde. 578 00:29:10,950 --> 00:29:12,480 V devíti případech z deseti, to je bude váš chybě. 579 00:29:12,480 --> 00:29:15,400 Takže pokud byste mohl jen dostat zvyk, vždy zkontrolujte, jestli je to null, 580 00:29:15,400 --> 00:29:18,150 Váš život se bude pěkné a easy-- nebo jednodušší. 581 00:29:18,150 --> 00:29:19,480 >> Tak zkontrolujte, zda je null. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Takže pokud to není null, což je to, co bang rovná 584 00:29:24,820 --> 00:29:26,784 means-- ne null-- je to platný. 585 00:29:26,784 --> 00:29:27,700 Co chcete dělat? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Chceme jen vytisknout do tohoto souboru, ne? 588 00:29:31,570 --> 00:29:32,923 Takže to, co budeme používat? 589 00:29:32,923 --> 00:29:34,092 >> Diváků: fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- krásné. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 A fprintf má dvě arguments-- kde je to to bude a co chceme vytisknout. 593 00:29:44,000 --> 00:29:45,820 Takže to, co je první? 594 00:29:45,820 --> 00:29:46,570 Tam, kde to jde? 595 00:29:46,570 --> 00:29:47,490 >> Diváků: File. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Jde to do souboru. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 A co chceme vytisknout? 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-- další velká paradigma zde. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Diváků: Zavřít. 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 Tady to je. 608 00:30:10,540 --> 00:30:13,384 >> Diváků: Je to happening v případě, že soubor je null? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Ne, to je v případě, že to není null. 610 00:30:15,050 --> 00:30:16,881 Publikum: Oh, je-li to ne-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Pro fopen a poté dva argumenty, které jdou dovnitř, 613 00:30:25,410 --> 00:30:27,655 co první argument na mysli znovu? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: argument je stejně jako jméno souboru 615 00:30:30,392 --> 00:30:31,350 že chcete jít. 616 00:30:31,350 --> 00:30:36,020 Takže po tomto běží, byste nějaký soubor s názvem "ahoj" 617 00:30:36,020 --> 00:30:38,320 že měl "Hello, World" v něm. 618 00:30:38,320 --> 00:30:38,820 To je všechno. 619 00:30:38,820 --> 00:30:39,500 Jen název. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Diváků: A protože je to psaní, Soubor nemusí již existují. 622 00:30:48,650 --> 00:30:49,675 Je to to, co jsi řekl? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Správně. 624 00:30:50,410 --> 00:30:50,910 Přesně tak. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Pokud je "Hello" jako soubor dosud neexistuje, je to 627 00:30:55,839 --> 00:30:58,380 chystáte vytvořit soubor s názvem Hello "a napište na něj pro vás. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> Diváků: Když říkáte program napsal do souboru, 630 00:31:03,610 --> 00:31:08,075 proč píšeš "file" místo název souboru a fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Protože v tomto případě máme že velké FILE-- vše v caps-- hvězdy, 632 00:31:13,600 --> 00:31:14,260 souboru. 633 00:31:14,260 --> 00:31:17,370 Takže je to ukazatel na soubor že mluvíš. 634 00:31:17,370 --> 00:31:19,930 To je způsob, jakým jsme prostě na něj odkazují. 635 00:31:19,930 --> 00:31:24,850 Takže v tomto případě je může myslet file-- Aha, 636 00:31:24,850 --> 00:31:31,271 můžeme použít tohle-- soubor zde odkazuje na otevření "Hello" 637 00:31:31,271 --> 00:31:32,145 a nechat ho zapsat. 638 00:31:32,145 --> 00:31:34,728 >> Diváků: Mohli bychom dát "Hello" místo toho [? pouhého?] f soubor? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Ne, protože "Hello" musí být otevřené a zapisovat. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Soubor je zde jako označení, které říká, že OK, 642 00:31:45,980 --> 00:31:49,190 tuto file-- hello-- že se díváme. 643 00:31:49,190 --> 00:31:50,680 To byl otevřen. 644 00:31:50,680 --> 00:31:52,140 A budeme zapisovat. 645 00:31:52,140 --> 00:31:55,130 Pokud stačí použít "Hello", který je zapouzdřen v něm. 646 00:31:55,130 --> 00:31:56,846 Takže to bude šílet. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Myslím, že byste mohli mít pojmenovali. 649 00:32:00,300 --> 00:32:03,960 Dalo by se udělat soubor, hvězda, "Hello", rovná. 650 00:32:03,960 --> 00:32:07,840 Ale celá věc je, že vás Potřebujete souboru hvězdy ukazatel v pořadí 651 00:32:07,840 --> 00:32:09,281 aby mohli tyto funkce využívat. 652 00:32:09,281 --> 00:32:11,280 Diváků: Mohla bys soubor, hvězda, soubor, "Hello" 653 00:32:11,280 --> 00:32:13,113 nebo si budete muset dát soubor hvězdu, soubor to? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Dalo by se dělat souboru, hvězda, "Dobrý den." 655 00:32:16,330 --> 00:32:19,790 Můžete změnit to, aby bez ohledu na jméno, které chcete. 656 00:32:19,790 --> 00:32:22,114 Je to zcela libovolně co to jmenuje. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Můžete pojmenovat to cokoliv. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Pojmenujte ji létání špagety, pokud jste chtěli. 661 00:32:28,020 --> 00:32:29,690 >> Diváků: Co je to "w" v uvozovkách pro? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "w" je jen režim. 663 00:32:31,540 --> 00:32:33,170 Takže jsme zápis do tohoto souboru. 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 Ano. 668 00:32:36,981 --> 00:32:40,365 >> Diváků: Takže když to píše toto souboru, kam jsme pak zjistíme, že soubor? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: Bude to ve stejném adresář, který jste v současné době. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Pokud jste v pset tři a spuštění toho přímo ve Vašem pset 672 00:32:48,880 --> 00:32:52,600 tři složky bude Tento soubor s názvem "Hello". 673 00:32:52,600 --> 00:32:53,160 V pohodě? 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 jste všichni jak se to, což je skvělé. 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 zpět k mé prezentaci show-- Mám rád, když věci fungují. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Jste kluci nadšení? 680 00:33:08,674 --> 00:33:09,465 Ukazatele jsou skvělé. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Berou trochu zabalit hlavu kolem. 683 00:33:13,580 --> 00:33:15,288 Toto je můj druhý rok výuky ukazatele. 684 00:33:15,288 --> 00:33:16,850 A myslím, že jsem se konečně dostal to. 685 00:33:16,850 --> 00:33:18,650 Takže pokud jste se snaží, je to OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Jak jsem již řekl dříve, kreslení obrázků hodně pomáhá s věcmi v CS, 688 00:33:24,070 --> 00:33:27,400 stejně jako já, že lidé mají tendenci přemýšlet oh, my jsme na počítači. 689 00:33:27,400 --> 00:33:28,399 Bychom měli jen kód. 690 00:33:28,399 --> 00:33:30,190 No-- obrázky kreslení vám opravdu pomůže. 691 00:33:30,190 --> 00:33:32,773 A opravdu doporučujeme vám proniknout do vašeho učitelka mateřské školy stranu 692 00:33:32,773 --> 00:33:35,010 a vyvedu pastelky nebo fixy a draw. 693 00:33:35,010 --> 00:33:36,110 Vzhledem k tomu, že vám pomůže. 694 00:33:36,110 --> 00:33:39,380 A jestli mě vidět na úředních hodinách, jsem bude nosit stohy papíru 695 00:33:39,380 --> 00:33:41,580 s pera kreslení věci. 696 00:33:41,580 --> 00:33:44,370 >> Tak zejména pointers-- kreslit obrázky. 697 00:33:44,370 --> 00:33:47,970 A jsem si jistý, že jsme vlastně bude sestavuje několik fotografií zde. 698 00:33:47,970 --> 00:33:51,270 >> Takže vy všichni dostali vidět Binky, to v pohodě claymation věc. 699 00:33:51,270 --> 00:33:54,720 A myslíme si, že je to opravdu legrační, když on exploduje do banda kusů. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Je to nějaký komická pro třídu. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [neslyšitelné] tento skvělý schopnost aby bylo možné kontrolovat paměti. 704 00:34:05,900 --> 00:34:10,090 A to je jedna z věcí, které opravdu je to takový silný jazyk. 705 00:34:10,090 --> 00:34:13,469 Ale s velkými schopnostmi přichází i velkou zodpovědnost. 706 00:34:13,469 --> 00:34:16,230 A bláznivé věci se může stát pokud si nedáte pozor. 707 00:34:16,230 --> 00:34:18,560 Takže, když používáte ukazatele, chcete, aby se 708 00:34:18,560 --> 00:34:21,440 že jste opravdu pochopit přesně to, co děláte. 709 00:34:21,440 --> 00:34:25,530 Doufejme, že příští trochu Čas vám pomůže opravdu pochopit, 710 00:34:25,530 --> 00:34:27,850 ukazatele, jak je používat, a jak manipulovat s nimi. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Takže memory-- Jsem si jistý, máme viděl tento diagram. 713 00:34:33,460 --> 00:34:38,540 Takže je to jen jednoduchý diagram jak by se věci uložené v paměti. 714 00:34:38,540 --> 00:34:43,145 Takže jste v podstatě mají tyto obrovské pole jednoho bytu bloků 715 00:34:43,145 --> 00:34:46,000 je to, co máme here-- mírný zvyšuje se po jedné pokaždé. 716 00:34:46,000 --> 00:34:51,810 To je v hex [neslyšitelné] tak osm-bitové bloky. 717 00:34:51,810 --> 00:34:55,510 A každý blok je spojen s nějakým hexadecimálním adresu. 718 00:34:55,510 --> 00:34:58,750 Takže pokud jste někdy vidět 0x, to je jen notating 719 00:34:58,750 --> 00:35:00,670 že je to hexadecimální adresu. 720 00:35:00,670 --> 00:35:03,970 Můžete Předpokládám, že to znamená, některé adresy v paměti. 721 00:35:03,970 --> 00:35:06,935 Mluvíme o adresy paměti Kdykoli vidíte hexadecimální. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Máme ints jsou proměnné, plováky jsou proměnné, které uchovávají. 724 00:35:14,630 --> 00:35:16,260 Takže ints ukládání ints. 725 00:35:16,260 --> 00:35:17,430 Plováky obchod plave. 726 00:35:17,430 --> 00:35:20,260 Takže máme také ukazatele že obchod adresy paměti. 727 00:35:20,260 --> 00:35:21,660 To je druh mapování. 728 00:35:21,660 --> 00:35:24,240 Ukazatele jsou výhradně pro paměťové adresy. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Tak to je jako tvůj typ tam. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Váš spotřebič je 32-bit, což znamená, že vaše adresa paměti je čtyři bajty. 733 00:35:34,470 --> 00:35:37,830 Takže jakýkoli ukazatel, který máte se také bude čtyři bajty. 734 00:35:37,830 --> 00:35:43,200 Anebo jestli je to čtyři byty, paměti čtyři bajty. 735 00:35:43,200 --> 00:35:44,790 Ukazatele obchod paměti. 736 00:35:44,790 --> 00:35:46,430 Proto, že jsou čtyři byty. 737 00:35:46,430 --> 00:35:48,460 Cool-- jen chci zdůraznit, že. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Měli byste si tento komiks teď. 740 00:35:52,220 --> 00:35:55,040 Nevím, kolik z vás jsou xkcd fanoušci, ale mám rád xkcd. 741 00:35:55,040 --> 00:35:55,780 Je to skvělé. 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áření pointers-- jak jsem řekl, je to do značné míry stejně jako cokoliv jiného. 745 00:36:01,640 --> 00:36:02,930 Máte typ. 746 00:36:02,930 --> 00:36:04,050 Máte jméno. 747 00:36:04,050 --> 00:36:04,810 Je to tak? 748 00:36:04,810 --> 00:36:10,410 To je to, co máme tady. [? Hex?] Hvězdička znamená, že je to ukazatel, 749 00:36:10,410 --> 00:36:12,250 a pak, co chcete říkat. 750 00:36:12,250 --> 00:36:15,770 Takže typ představuje co můžete uložit. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 V pořádku? 753 00:36:17,990 --> 00:36:24,350 Stejným způsobem, že pokud budeme dělat celých čísel, víme, že jsme tam ukládání int. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 S ukazatelem, je má adresu v paměti. 756 00:36:30,280 --> 00:36:34,240 Ale co to znamená, that-- tady je místo, kde výkres bude hodit. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Takže v tomto případě máme některé value-- řekněme čtyři. 759 00:36:45,980 --> 00:36:49,306 Čtyři 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 první, kdo zde znamená že je to ukazatel 2x. 763 00:36:56,170 --> 00:36:56,740 Je to tak? 764 00:36:56,740 --> 00:36:57,628 Je to nějaký ukazatel x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x může být něco, cokoliv. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Ať už x je-- říci x je čtyři. 769 00:37:05,130 --> 00:37:07,280 Bude to uložit adresa zde paměť. 770 00:37:07,280 --> 00:37:12,260 Takže int, hvězda, x-- to je nějaký jiný slot v memory-- 771 00:37:12,260 --> 00:37:13,590 kdo ví, co to je. 772 00:37:13,590 --> 00:37:15,430 Ale bude to tady uložit adresu. 773 00:37:15,430 --> 00:37:27,040 Takže by to bylo like-- v tomto případě, bez ohledu, 774 00:37:27,040 --> 00:37:32,630 je uložen na 0x1--, co je uloženo na adresu, kterou náš ukazatel má k dispozici, 775 00:37:32,630 --> 00:37:35,280 se musí shodovat s To, co jsme určen. 776 00:37:35,280 --> 00:37:40,330 Takže na 0x1, v tomto případě je to x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 To může být jedině int, když jsme pomocí tohoto. 779 00:37:49,340 --> 00:37:52,950 >> Podobně, pokud máme další 1R, bez ohledu na 780 00:37:52,950 --> 00:37:59,130 adresa je uložena s y má být char-- totéž se z. 781 00:37:59,130 --> 00:38:05,840 Stejným způsobem vždy, když vyzkoušet a udělat intx rovná 0,4, 782 00:38:05,840 --> 00:38:09,275 to bude řvát na vás a bude jako ne, říkal jste, že chtěl int. 783 00:38:09,275 --> 00:38:10,525 To má být int. 784 00:38:10,525 --> 00:38:11,900 Přestaň se snažit, aby to float. 785 00:38:11,900 --> 00:38:14,150 >> Takže nechat věci být tím, čím chtějí být. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Nechat věci být sami sebou. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Takže velká věc je jen bez ohledu na typ ukazatel 790 00:38:23,450 --> 00:38:26,101 to je, to je jediný věc, kterou tam můžete uložit. 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 praxí, jako u minulý týden, všechno 794 00:38:31,160 --> 00:38:32,817 Zdá se, opravdu trochu abstraktní. 795 00:38:32,817 --> 00:38:34,150 Chystáme se udělat nějakou praxi. 796 00:38:34,150 --> 00:38:36,760 To by mělo větší smysl. 797 00:38:36,760 --> 00:38:44,580 >> Tak odkazů a dereferencing-- je to velmi důležité, aby se tyto přímo. 798 00:38:44,580 --> 00:38:46,630 Stále mám obnovit tu a tam. 799 00:38:46,630 --> 00:38:48,450 A já jsem rád čekat, který z nich chci? 800 00:38:48,450 --> 00:38:56,080 Takže ampersand bude skutečně dát si reference nebo adresa. 801 00:38:56,080 --> 00:39:00,100 Tak to vrátí adresu paměť, která je uložena proměnná. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Takže to bude opravdu vrátit k vám hexadecimální, zatímco dereferencing ji 804 00:39:07,020 --> 00:39:10,641 se skutečně děje, aby vám data, která jsou v něm uloženy. 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 jdeme se podívat na příklad opravdu rychle, nebo dokonce až příště. 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 opravdu myslíte, pečlivě o tom. 811 00:39:21,790 --> 00:39:23,860 Takže tady máme nějaké celé číslo x. 812 00:39:23,860 --> 00:39:26,485 Budu se snažit a kreslit to se na to nejlepší z mých schopností. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Takže budeme mít tento slot x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 A to ukládání pět. 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 pohodě? 821 00:39:43,160 --> 00:39:44,100 Všechny dobré. 822 00:39:44,100 --> 00:39:45,470 >> Takže teď máme tuto ukazatel. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Bylo to tady. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 A ampersand nám dává Adresa něco. 827 00:39:57,560 --> 00:40:00,780 Takže v tomto případě, je to adresa x. 828 00:40:00,780 --> 00:40:01,875 Jaká je adresa x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- a tento ukazatel je 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 V pohodě? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Takže si můžete myslet o tom ukazatel, 04, jen 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 protože jak jsme se dostat více do toho 837 00:40:25,740 --> 00:40:28,450 budete vidět, ukazuje na věci. 838 00:40:28,450 --> 00:40:31,470 A jeden blok ukazuje na další blok bude mnohem větší smysl. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Tak tady jsou dvě. 841 00:40:33,890 --> 00:40:38,230 A pak tu máme nějaké kopie, která 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 dereference naší ukazatele. 844 00:40:43,420 --> 00:40:46,790 >> Takže to, co říká, je OK, tady je náš ukazatel. 845 00:40:46,790 --> 00:40:53,090 Hodnota ukládá je 0x04, A co to říká, je na tuto adresu 846 00:40:53,090 --> 00:40:54,300 a řekni mi, co je v něm. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Tak to je skutečně Co tato šipka dělá. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Můžete myslet na to jako svoji hvězdu. 851 00:41:01,280 --> 00:41:05,410 Tak OK, když budeme dělat hvězdu, znamená to následovat. 852 00:41:05,410 --> 00:41:06,810 Přejděte na tuto adresu. 853 00:41:06,810 --> 00:41:11,430 A to je v podstatě jen po Tato šipka této paměti kus. 854 00:41:11,430 --> 00:41:15,380 A dát nám to, co je v ní, což je 5. 855 00:41:15,380 --> 00:41:18,840 To je důvod, proč naše kopie je rovna 5. 856 00:41:18,840 --> 00:41:20,120 Dává to smysl? 857 00:41:20,120 --> 00:41:22,769 Potřebuje někdo mě projít že znovu, nebo pomaleji? 858 00:41:22,769 --> 00:41:24,560 Chceš, abych šel přes to ještě jednou? 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 překreslit znovu. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Když začneme, všichni souhlasíme s tím máme některé kus paměti, že je to proměnná 864 00:41:37,205 --> 00:41:40,890 x, že nastavíme rovna 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 místo je jen náhodně přiděleno. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Tam dobře? 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 Pak jsme se inicializovat ukazatel na int. 872 00:41:53,330 --> 00:41:56,900 To je důvod, proč je dovoleno, aby ukazoval na x, protože máme int zde. 873 00:41:56,900 --> 00:42:00,840 Máme další kus paměti, protože tento ukazatel 874 00:42:00,840 --> 00:42:03,485 je proměnná, stejně jako cokoliv jiného. 875 00:42:03,485 --> 00:42:06,615 Je to náhodně přiděleno nějaký prostor v paměti. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 A to, co ukládá je 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, co je adresa x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Diváků: 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 nějaké copy-- znovu jen další proměnné. 886 00:42:30,650 --> 00:42:32,520 Takže pojďme přiřadit nějaké libovolné místo. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 A my dereference naší ukazatele. 889 00:42:38,080 --> 00:42:42,490 Hvězdička znamená jít do adresa uložena v mém ukazatel. 890 00:42:42,490 --> 00:42:44,480 Řekni mi, co tam je. 891 00:42:44,480 --> 00:42:47,290 Takže adresy uložené v našem ukazatel je 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Tak jdeme na tuto adresu. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Je to ukazuje na tuto adresu. 896 00:42:54,590 --> 00:42:57,481 Co je uvnitř tohoto bloku paměti? 897 00:42:57,481 --> 00:42:57,980 Je to pět. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Takže to je to, co jsme přiřadit svou kopii. 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 pohodě. 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 sledování hodnoty here--, jsem 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 čerpat další snímek. 909 00:43:27,750 --> 00:43:31,260 Ale já chci, abyste se pokusila důvod přes to na vlastní pěst po dobu jedné minuty. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Vzhledem k tomu nedali nás například adresa, 912 00:44:04,149 --> 00:44:06,940 Já jsem jen dělat ampersand x-- který by měl pomoci řídit ho domů. 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 první, všichni jít s prvním řádku. 916 00:44:12,360 --> 00:44:15,690 Některé x set je five-- některé 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 hvězda ukazatel je roven na adresu x, ne? 919 00:44:23,200 --> 00:44:28,180 Int hvězda ukazatel vytváří tento blok, volá to ukazatel, 920 00:44:28,180 --> 00:44:30,650 a přiřadí ji na adresu x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Jsem hrozný na ampersandy. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> A teď, co děláme, je říci, OK, dereference naší ukazatel. 925 00:44:40,550 --> 00:44:42,760 Tak jdeme na tlačítko OK, co je v našich ukazatel? 926 00:44:42,760 --> 00:44:44,820 Je to ampersand x. 927 00:44:44,820 --> 00:44:49,400 Přejít na ampersand x a přiřadit ji. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Takže teď, 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 podstatě, když jste dereferencing, jdete na tlačítko OK. 932 00:45:05,174 --> 00:45:07,090 Budeš se kreslení obrázky, jako je tento. 933 00:45:07,090 --> 00:45:09,423 Budeš se kreslení šípy nad tím, kde je. 934 00:45:09,423 --> 00:45:16,030 Takže jděte do tohoto slotu v paměti, a to buď dej mi tu hodnotu zpět nebo ji změnit. 935 00:45:16,030 --> 00:45:21,620 V tomto případě, protože jsme na to hodnota, my ji přiřadit jako 35. 936 00:45:21,620 --> 00:45:24,700 Zatímco v poslední jeden, pokud si všimnete, my 937 00:45:24,700 --> 00:45:27,680 bylo přiřazení, co bylo tady k něčemu jinému. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Takže mají tuto strašlivou tabulky. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Není to tak špatné. 942 00:45:36,890 --> 00:45:37,970 Vy jste na tom pracovat. 943 00:45:37,970 --> 00:45:39,640 Budu čerpat ji na palubě. 944 00:45:39,640 --> 00:45:41,306 Chystáme se vyplnit ho spolu, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Takže uchopit nějaký papír, drapák partner, začít pracovat. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Budu mít větší kus křídy. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Vzhledem k tomu, že to bude hodně. 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čněme s první řadou. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Začneme tam, pak kluci může možná fungovat přes některé více. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 se rovná b krát c, takže to, co je? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Není to chyták, slibuju. 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, co 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 pak je to jen tak být ampersand a, b ampersand, 974 00:48:35,960 --> 00:48:38,575 ampersand c, ne? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 To není špatné. 977 00:48:40,596 --> 00:48:42,081 Je to dost jednoduché. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Tak ten příští. 980 00:48:44,300 --> 00:48:48,725 Rovná časy C, v případě kdo byl neznámý s tím. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Je všichni znají s časy se rovná? 983 00:48:53,300 --> 00:49:00,105 OK, to vše means-- je zkratka pro rovná časů c. 984 00:49:00,105 --> 00:49:04,840 Můžete si také udělat to s rozdělením, Kromě toho se, s odčítání. 985 00:49:04,840 --> 00:49:12,130 Můžete to udělat je rovna, nebo navíc se rovná c znamená, rovná a navíc c, minus rovné 986 00:49:12,130 --> 00:49:15,190 c by se rovná minus c. 987 00:49:15,190 --> 00:49:16,690 Je to jen syntaktický cukr. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Takže v tomto případě, se rovná časů c by nám, co se dá? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Opět platí, že není 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á něco změnit? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Ne. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Možná, že se konečně dostanu lépe na mé ampersandy. 999 00:49:39,850 --> 00:49:42,047 >> STUDENT: OK, je mi líto, jak jste se dostal 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Tak se rovná krát c, takže časy c. 1002 00:49:46,594 --> 00:49:48,510 STUDENT: Oh, vy používáte pro previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESOR: Ano. 1004 00:49:49,135 --> 00:49:51,450 Tak to jsou naše poslední hodnoty. 1005 00:49:51,450 --> 00:49:53,990 Jedná se o to, co by mělo být použití jak jsme se přesunout dolů, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Takže, b je jediná věc, změna, ne? 1008 00:50:01,520 --> 00:50:02,910 Takže pojďme vyplnit všechno ostatní. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Co se b bude? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Být či nebýt. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Takže to, co je tohle dělá? 1015 00:50:20,240 --> 00:50:21,605 Co je hvězda pa děláš? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> STUDENT: Kód pro umístění pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> STUDENT: Ne, ne tak docela. 1020 00:50:27,480 --> 00:50:29,470 Takže toto je odkaz d. 1021 00:50:29,470 --> 00:50:31,580 >> Žák: Takže b je rukou hodnota pa. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESOR: Jo, tak pa je adresa, ne? 1023 00:50:37,340 --> 00:50:42,430 Tak to říká jít tam, kde je skladovány a dát mu tuto hodnotu. 1024 00:50:42,430 --> 00:50:43,884 Takže to, co 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, co se mění. 1029 00:50:49,879 --> 00:50:51,170 Vše ostatní zůstává stejné. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Co se pc bude? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Jednoduchý úkol. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc je rovna pa, a to, co 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 Nyní se dostáváme zajímavý. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, pojďme rozbít tenhle dolů. 1042 00:51:15,230 --> 00:51:21,110 Za prvé, co je b krát c, protože to je snadná část tohoto jednoho, 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 Co je tohle dělá, 1046 00:51:28,880 --> 00:51:33,705 Jestli je to hvězda pb, co se mění? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> STUDENT: Co je v the-- 1049 00:51:37,242 --> 00:51:38,200 PROFESOR: Co je B? 1050 00:51:38,200 --> 00:51:41,340 STUDENT: Co je v prostoru ž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ý věc změna 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, co se mění teď. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 V pohodě. 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 jste skvěle. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 V pořádku, porušení tohoto jeden dolů. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C se mění, že jo? 1065 00:52:09,630 --> 00:52:11,530 Takže můžeme vyplnit všechno ostatní. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Pojďme se podívat. 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 Víme, že c je bude součin dvou čísel, je to tak? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Co dvě čísla, i když? 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 první. 1076 00:52:31,930 --> 00:52:34,385 Takže jsme d Menu odkazující p na, ne? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P z bodů A, takže víme, že to bude 100 krát, co? 1079 00:52:42,870 --> 00:52:46,232 Times, co dělá pc bod? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Body se. 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 smysl? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 V pohodě. 1086 00:52:58,200 --> 00:53:00,500 Home úsek, kluci, poslední řádek. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Co se mění tady? 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še ostatní může zůstat stejná. 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 co 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, co? 1097 00:53:26,060 --> 00:53:27,120 To je hvězda pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Takže hvězda pb znamená, tady je to, pb, Pb bodů 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 Podívejte se na to. 1106 00:53:45,646 --> 00:53:47,982 >> Žák: Proč máme & C pro last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESOR: Omlouvám se. 1108 00:53:48,690 --> 00:53:50,080 STUDENT: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESOR: Moje chyba. 1110 00:53:51,600 --> 00:53:52,890 Spousta písemně. 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 Není to tak zlé, ne? 1115 00:53:56,660 --> 00:53:58,490 Stačí jen málo zatímco k práci. 1116 00:53:58,490 --> 00:54:01,080 Máte-li vyrazit, pochopit, co každá část 1117 00:54:01,080 --> 00:54:03,197 odkazuje to-- jako se vším, co je to, 1118 00:54:03,197 --> 00:54:05,780 yes-- vyrazit na malý problémy a pak se spojí, 1119 00:54:05,780 --> 00:54:07,345 a můžete udělat nějaké úžasné věci. 1120 00:54:07,345 --> 00:54:08,970 Tam jsou odpovědi, ale my jsme 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 Mé ruce jsou křídově bílé. 1126 00:54:15,510 --> 00:54:17,970 Takže přidáním nebo odečtením int nastaví ukazatel 1127 00:54:17,970 --> 00:54:21,890 podle velikosti typu ukazatel. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Vzpomeňte si, jak každý druh má jinou velikost? 1130 00:54:28,390 --> 00:54:34,890 Tak jako double nebo long long znamená osm a int je čtyři, ale je jeden znak. 1131 00:54:34,890 --> 00:54:38,360 >> Takže to, co chcete dělat, je-- jednu věc mít na paměti, 1132 00:54:38,360 --> 00:54:44,080 je právě to, jak moc jsou vaše Hodnota ukazatele se právě mění 1133 00:54:44,080 --> 00:54:46,550 bude záviset na typ ukazatel 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 Mohu vymazat? 1137 00:54:52,760 --> 00:54:53,440 Jsme dobří? 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 pokud máme nějaký ukazatel that-- to bude be-- jsem 1141 00:55:07,501 --> 00:55:08,834 bude dělat to ukazatel int. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Ukládá to. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Pokud byste měli říct, ukazatel plus jedna, co to bude dělat 1146 00:55:20,170 --> 00:55:23,420 se to bude aktualizovat to podle velikosti int 1147 00:55:23,420 --> 00:55:25,950 protože to je typ ukazatel je. 1148 00:55:25,950 --> 00:55:28,260 >> S C, je všechno velmi přísné a regulované. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Ukazatel int bude aktualizovat podle množství prostoru int bude trvat. 1151 00:55:35,260 --> 00:55:36,260 Int je čtyři bajty. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Takže to, co by to proměnit? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Jste právě přidáním čtyři na to. 1156 00:55:44,390 --> 00:55:50,040 Nyní ukazatel by be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Takže pokud je to char a my ukazatel plus jedna, co by to bylo teď? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Pokud je started-- předstírat jsme started-- teď je to 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Pojďme se nyní říci, že to byl char ukazatel, a přidali jsme jeden. 1163 00:56:10,850 --> 00:56:11,850 Co by to změnit? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Kolik bytů je char? 1166 00:56:16,030 --> 00:56:16,680 >> Diváků: One. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: One. 1168 00:56:17,304 --> 00:56:18,309 Diváků: Tak 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Tak to by bylo devět. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Takže jen něco zapamatovat. 1172 00:56:23,820 --> 00:56:28,340 Stačí, když si přidat jeden, není to Přidáte-li jedno, pokud je to char. 1173 00:56:28,340 --> 00:56:34,190 Je to přidáním kolik bytů typu, že je, 1174 00:56:34,190 --> 00:56:36,960 což je důvod, proč máme Tato rovnice se zde. 1175 00:56:36,960 --> 00:56:40,190 Takže je to int krát větší typu ukazatel. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Takže máme příklad zde. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y byl přidělen do té hodnoty, 0x4, když jsme y a roven jedné. 1180 00:56:54,430 --> 00:56:56,830 Co je v tom, co je v x, nemění. 1181 00:56:56,830 --> 00:56:58,610 Co dělá změny je to, co je v y. 1182 00:56:58,610 --> 00:57:04,980 Adresa uložena v y aktualizován o čtyři protože tam jsou čtyři byty v int 1183 00:57:04,980 --> 00:57:06,097 a je to ukazatel 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 teď máme další cvičení. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Takže otázka je, co se bude tisknout. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Nějaké nápady? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Diváků: Počet znaky spokojenou kočku? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Přesně tak. 1194 00:57:44,490 --> 00:57:45,531 Tak rád se svým řetězcem. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Má každý dostat, že? 1197 00:57:48,260 --> 00:57:49,509 Chceme jít přes něj? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Ano, OK. 1200 00:57:52,010 --> 00:57:57,385 Takže to, co máme here-- I takhle mnohem víc. 1201 00:57:57,385 --> 00:57:59,340 Nemám na [Neslyšitelné] směšně. 1202 00:57:59,340 --> 00:58:01,690 >> Takže máme řetězec tady šťastná kočka. 1203 00:58:01,690 --> 00:58:02,950 Lovely. 1204 00:58:02,950 --> 00:58:05,080 Máme nějaké počítadlo, které jsme sledování. 1205 00:58:05,080 --> 00:58:11,430 Takže máme nějaký char * ukazatel že právě je rovna Str. 1206 00:58:11,430 --> 00:58:14,320 Co to dělá, je, že je to přiřazení nějaký ukazatel 1207 00:58:14,320 --> 00:58:16,380 na začátku svého řetězce. 1208 00:58:16,380 --> 00:58:19,840 Protože jsem si jistý, jak to byl zmíněn v přednášce, 1209 00:58:19,840 --> 00:58:22,290 dali jsme ti kluci to datový typ nazvaný řetězec. 1210 00:58:22,290 --> 00:58:29,070 >> Ale opravdu řetězce jsou jen pole of-- jako char *. 1211 00:58:29,070 --> 00:58:32,330 Je to ukazatel na spoustu postav že jsou souvislé paměti. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Takže to jen nastaví ji rovná libovolný řetězec je 1214 00:58:36,280 --> 00:58:38,980 identifikován kde jeho první znak. 1215 00:58:38,980 --> 00:58:42,710 Takže je to jen nastavení nějaký bod rovnající se začátek řetězce. 1216 00:58:42,710 --> 00:58:44,130 Každý, kdo tam dobře? 1217 00:58:44,130 --> 00:58:44,960 V pohodě. 1218 00:58:44,960 --> 00:58:49,840 >> Tak tohle je náš dereferencing ukazatel. 1219 00:58:49,840 --> 00:58:53,760 Takže to vlastně bude nám nějakou hodnotu tady, 1220 00:58:53,760 --> 00:58:55,610 v našem řetězci, že mluvíme o. 1221 00:58:55,610 --> 00:58:58,342 A říkáme tak dlouho, jak to není null zakončení. 1222 00:58:58,342 --> 00:59:00,550 Takže pokračuj, dokud se nedostanete na konec řetězce. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Aktualizujte svůj ukazatel o jeden. 1225 00:59:04,190 --> 00:59:09,250 Tak R, bude ve skutečnosti aktualizuje jeden pokaždé, protož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 procházet. 1229 00:59:12,340 --> 00:59:13,290 Bude to aktualizovat. 1230 00:59:13,290 --> 00:59:16,705 Takže poprvé v tomto běží, to bude zde na h. 1231 00:59:16,705 --> 00:59:17,590 Bude to aktualizovat. 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 dále a tak dále. 1234 00:59:21,310 --> 00:59:22,300 Budeme aktualizovat počítadlo. 1235 00:59:22,300 --> 00:59:26,160 Když se dostane na konec, to právě tiskne, jak daleko to dostal. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Ano. 1238 00:59:28,050 --> 00:59:31,475 >> Diváků: Tak to se počítá prostor jako jeden, ne? 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 ano. 1242 00:59:35,222 --> 00:59:36,830 Je to question-- 1243 00:59:36,830 --> 00:59:37,746 >> Diváků: [neslyšitelné]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Žádné obavy. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 To jsem udělal. 1248 00:59:42,736 --> 00:59:47,710 Dobře, tak jedna věc, kterou jsem pochopit, že s řadou, 1249 00:59:47,710 --> 00:59:51,736 můžete také zacházet s ní jako ukazatel, protože pole jsou jen 1250 00:59:51,736 --> 00:59:52,860 kontinuální místa paměti. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Takže můžete zacházet s ní stejným způsobem. 1253 00:59:56,380 --> 00:59:59,000 Můžete je manipulovat s ukazateli, taky. 1254 00:59:59,000 --> 01:00:04,770 Takže místo toho dělá, v tomto případ je analogický věc 1255 01:00:04,770 --> 01:00:07,490 bude pole 0 se rovná 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Ale stejně, že řetězec je určen 1258 01:00:15,210 --> 01:00:18,740 do začátku, kde jeho první znak, 1259 01:00:18,740 --> 01:00:22,270 pole je určena kde jeho první prvek. 1260 01:00:22,270 --> 01:00:25,120 Protože víme, že jsme zaručeno, že tyto 1261 01:00:25,120 --> 01:00:27,985 se bude kontinuální bloky paměti. 1262 01:00:27,985 --> 01:00:29,360 To je to, co nám umožňuje, jak to udělat. 1263 01:00:29,360 --> 01:00:31,193 Víme, že kontinuální bloky paměti. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Takže v tomto případě, by dereferencing jen pole, která nám říká, 1266 01:00:36,500 --> 01:00:40,800 OK, přejděte na začátek vaše pole, které je zde. 1267 01:00:40,800 --> 01:00:42,640 Takže si můžete nastavit, že se rovná jedné. 1268 01:00:42,640 --> 01:00:48,610 A v tomto případě, bez ohledu na své pole typ je, když ho aktualizovat po druhém, 1269 01:00:48,610 --> 01:00:50,830 to je stejně jako aktualizace se na další index. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Můžete to udělat, protože vás Víte, co je ve vašem poli. 1272 01:00:56,360 --> 01:00:59,770 Tak to ví, kolik se aktualizovat ukazatel by, 1273 01:00:59,770 --> 01:01:02,925 jakou adresu ho na to aktualizovat že jste v dalším slotu. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Takže je to jen jiný způsob, jak psaní pole 0 se rovná 1, 1276 01:01:09,400 --> 01:01:15,114 pole 1 se rovná 2, pole držák 2 se rovná 3. 1277 01:01:15,114 --> 01:01:16,780 Je to jen další způsob, jak přemýšlet o tom. 1278 01:01:16,780 --> 01:01:19,600 Vzhledem k tomu, že jsou spojité bloky v paměti, 1279 01:01:19,600 --> 01:01:21,830 můžete se na ně odkazovat buď u pole notation-- 1280 01:01:21,830 --> 01:01:24,390 což já osobně najít easier-- ale možná 1281 01:01:24,390 --> 01:01:27,347 je třeba manipulovat s ním striktně podle adresy paměti. 1282 01:01:27,347 --> 01:01:28,930 A to je tak, jak byste to udělal. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Druh víc jako v pohodě, co můžete udělat 1285 01:01:32,630 --> 01:01:35,213 proti možná není něco, co jste ve skutečnosti bude provádět. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Používám ji v 61. 1288 01:01:38,630 --> 01:01:41,710 Vy pravděpodobně nebudete potřebovat se starat o to příliš mnoho. 1289 01:01:41,710 --> 01:01:43,693 Ale pokud máte zájem, trvat 61 příští rok. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Jsme v cílové rovince kluci. 1292 01:01:46,560 --> 01:01:47,510 Já vím, že je to dlouho. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic Memory Allocation-- tak víme, že ten, 1295 01:01:58,880 --> 01:02:01,790 věcí, když jsme si povídali během náš první část společně, 1296 01:02:01,790 --> 01:02:04,560 jsme se podívali na swapu funkce, kde je to 1297 01:02:04,560 --> 01:02:08,010 mimo rámec naší hlavní funkce. 1298 01:02:08,010 --> 01:02:14,370 A my jsme byli kolem těchto hodnot že byly účinně kopie. 1299 01:02:14,370 --> 01:02:20,570 >> A jakmile swapu dokončení provedení, to prostě nechal hromadu. 1300 01:02:20,570 --> 01:02:22,830 Pamatujte si, že máme stack rámec pro swap. 1301 01:02:22,830 --> 01:02:26,070 Ponechává a ty Hodnoty odejít s ním. 1302 01:02:26,070 --> 01:02:27,050 A oni byli pryč. 1303 01:02:27,050 --> 01:02:28,615 Nemohli jsme nic dělat s nimi a my jsme byli smutní 1304 01:02:28,615 --> 01:02:29,989 protože nemůžeme vyměnit naše hodnoty. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Ale s C, jak jsem již zmínil, vás mají velkou moc nad paměti. 1307 01:02:36,560 --> 01:02:43,310 Takže to, co můžete udělat, je můžete přidělovat věci na haldě zde 1308 01:02:43,310 --> 01:02:46,830 že zůstane tam, dokud řeknete jim jinak. 1309 01:02:46,830 --> 01:02:48,280 >> Jsou jako hodné děti. 1310 01:02:48,280 --> 01:02:49,150 Oni tam zůstat. 1311 01:02:49,150 --> 01:02:50,270 Nemají odejít. 1312 01:02:50,270 --> 01:02:52,750 Budou tam zůstat, dokud jste jako, OK, můžete odejít. 1313 01:02:52,750 --> 01:02:55,920 >> Vzhledem k tomu, co v zásobníku, who-- jsou jako zlobivé děti. 1314 01:02:55,920 --> 01:02:59,160 Budou prostě utéct, když chcete aby se tam a pak jsou pryč. 1315 01:02:59,160 --> 01:03:00,160 Nemůžete dostat je zpět. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Takže haldy je-- budeme mluvit o malloc a zdarma, což 1318 01:03:07,187 --> 01:03:08,895 Jsem si jistý, kluci slyšel o v přednášce. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 A to je v podstatě způsob, mají velmi perzistentní data. 1321 01:03:14,210 --> 01:03:18,920 Takže můžete mít data kolem tak dlouho, jak budete chtít. 1322 01:03:18,920 --> 01:03:19,546 MHM. 1323 01:03:19,546 --> 01:03:21,475 >> Diváků: Můžete definovat haldy a zásobníku? 1324 01:03:21,475 --> 01:03:24,030 Jsou rádi místa, jak dát věci? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Takže jsou v podstatě prostě-- jsou 1326 01:03:26,630 --> 01:03:29,530 způsob, jakým se vztahují jen na paměti. 1327 01:03:29,530 --> 01:03:37,300 Takže haldy jen místa, kde paměť je alokována dynamicky, 1328 01:03:37,300 --> 01:03:40,960 vzhledem k tomu, stack odkazuje více na sebe rámy 1329 01:03:40,960 --> 01:03:45,950 které jsou zásadní pro funkce, které jsou ve skutečnosti běží. 1330 01:03:45,950 --> 01:03:47,200 Ty opravdu nemají kontrolu. 1331 01:03:47,200 --> 01:03:50,690 >> Velký rozdíl, máte kontrolu přes hromadu, pokud chcete. 1332 01:03:50,690 --> 01:03:52,710 Máte menší kontrolu nad komínem. 1333 01:03:52,710 --> 01:03:55,030 Zásobníku závisí na funkce, které jsou spuštěny, 1334 01:03:55,030 --> 01:03:58,320 a pořadí, v jakém jsou běží, a jak se vrátí věci. 1335 01:03:58,320 --> 01:04:01,290 Vzhledem k tomu, s haldy, as uvidíme, můžete říci, 1336 01:04:01,290 --> 01:04:06,639 OK, chci se tuto hodnotu kolem, dokud jsem ti to říct jinak. 1337 01:04:06,639 --> 01:04:08,180 Není dovoleno, aby se ho zbavit. 1338 01:04:08,180 --> 01:04:09,300 Nesmíš ji přepsat. 1339 01:04:09,300 --> 01:04:11,675 Budeš mít kolem tak dlouho, jak vám říkám. 1340 01:04:11,675 --> 01:04:15,780 Dostanete se být šéfem v haldě, vzhledem k tomu, stack-- Možná, pokud budete 1341 01:04:15,780 --> 01:04:18,080 jako podvádět svou cestu můžete být šéf. 1342 01:04:18,080 --> 01:04:19,340 Ale ne tak docela. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 A je to opravdu jen vzpomínka. 1345 01:04:22,070 --> 01:04:24,260 Je to jen různé způsoby, jak se odkazovat na paměti. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> V pohodě. 1348 01:04:26,400 --> 01:04:28,630 Takže s tím, jak se ovládat své paměti. 1349 01:04:28,630 --> 01:04:32,070 Je to s malloc, který budete mít k použití. 1350 01:04:32,070 --> 01:04:37,100 Takže je to jen krátká pro přidělení paměti. 1351 01:04:37,100 --> 01:04:38,459 To je vše, co je. 1352 01:04:38,459 --> 01:04:41,250 Je tu spoustu dalších pěkných funkce, které mají Alloc na konci, 1353 01:04:41,250 --> 01:04:42,750 a oni kandidují na různé věci. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Takže když budete potřebovat úložiště, které je třeba přečkat aktuální funkci tak, 1356 01:04:49,050 --> 01:04:51,010 že pokud Vaše současná Funkce uteče, 1357 01:04:51,010 --> 01:04:55,774 stále máte data, která vás dostal od něj chcete používat malloc. 1358 01:04:55,774 --> 01:04:57,190 To bude inicializovat ji na hromadu. 1359 01:04:57,190 --> 01:05:00,140 A jak jsem řekl, a udržet říká, budete ho tam udržet 1360 01:05:00,140 --> 01:05:03,050 dokud to říct jinak, což je důležité zde. 1361 01:05:03,050 --> 01:05:08,450 >> Takže jedna věc je si všimnout, a to je obvykle velmi důležité, 1362 01:05:08,450 --> 01:05:13,620 je, že tento sizeof je super vhodné použít 1363 01:05:13,620 --> 01:05:16,440 proto, že v závislosti na typu stroje vedete, 1364 01:05:16,440 --> 01:05:22,470 může mít různá množství paměti, že to trvá. 1365 01:05:22,470 --> 01:05:26,870 Takže chcete vždy používat velikost tak, že nejste závislí stroj, 1366 01:05:26,870 --> 01:05:30,300 aby váš kód bude spustit na jakémkoli počítači. 1367 01:05:30,300 --> 01:05:32,360 >> A to je jen část psaní dobrý kód. 1368 01:05:32,360 --> 01:05:34,610 Pokud to funguje na jednom počítači, ale ne žádné z ostatních, 1369 01:05:34,610 --> 01:05:36,440 Jak užitečný byl váš program? 1370 01:05:36,440 --> 01:05:38,420 Takže chcete vždy ujistěte se, že i použití sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Diváků: Tak je to, že stejně jako velikost 10 palců [neslyšitelné]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Jedná se o velikost 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 velikost ints vrátí kolik jeden int trvat. 1376 01:05:48,830 --> 01:05:51,530 Nebo velikost char, jak hodně dělá jednu char vzít. 1377 01:05:51,530 --> 01:05:54,150 A pak, kolik bloků z toho chceš? 1378 01:05:54,150 --> 01:05:57,590 >> Takže v tomto případě, chceme něco které můžeme ukládat 10 celých čísel na. 1379 01:05:57,590 --> 01:06:00,240 A to bude fungovat bez ohledu na stroje, který je v pohodě. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Tak kolik bytů bude že vlastně dát? 1382 01:06:04,846 --> 01:06:06,190 Rychlé matematika. 1383 01:06:06,190 --> 01:06:06,787 >> Diváků: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Přesně tak. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Takže další velká věc. 1388 01:06:12,030 --> 01:06:14,840 Pointer nebo malloc může vrátit hodnotu null. 1389 01:06:14,840 --> 01:06:17,910 >> Takže znovu, vždy zkontrolujte, uvidíme, jestli to vrátil null 1390 01:06:17,910 --> 01:06:19,620 než se pokusit s ním nic udělat. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Pokusíte-li se dereference tento ukazatel nyní, 1393 01:06:27,350 --> 01:06:29,720 to jen tak segfault protože jsi šel a snažil 1394 01:06:29,720 --> 01:06:31,730 dotknout null, pokud byste neměli mít. 1395 01:06:31,730 --> 01:06:34,000 Takže vždy zkontrolujte, zda null. 1396 01:06:34,000 --> 01:06:36,075 Opět platí, že vše, co udělat. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> To může vrátit hodnotu null. 1399 01:06:39,720 --> 01:06:42,740 Bude to návrat null, pokud jste buď z vesmíru, nebo z jakéhokoli důvodu 1400 01:06:42,740 --> 01:06:44,350 to běželo do nějaké paměti chyba. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Někdy se prostě vrátí hodnotu null. 1403 01:06:47,510 --> 01:06:48,990 Takže stačí zkontrolovat to. 1404 01:06:48,990 --> 01:06:51,050 To je vše slide říká. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 A pak to, co máme Zde je volání zdarma. 1407 01:06:55,240 --> 01:07:00,550 Takže stejným způsobem, že pokud máte otevření souboru musíte zavřít soubor, 1408 01:07:00,550 --> 01:07:04,340 pokud se vám malloc paměti, můžete musíte uvolnit, že paměť. 1409 01:07:04,340 --> 01:07:06,530 A vy dostanete udělat opravdu cool věci. 1410 01:07:06,530 --> 01:07:09,624 >> A tam je program, který lze spustit na zjistit, jestli jste někdy netěsní paměti. 1411 01:07:09,624 --> 01:07:11,040 Ale nechcete, aby k úniku paměti. 1412 01:07:11,040 --> 01:07:11,820 Je to opravdu špatné. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Jen zkazit věci. 1415 01:07:15,020 --> 01:07:20,939 >> Je to špatné, dělat, stejně jako programování moudré, účinnost návrhu. 1416 01:07:20,939 --> 01:07:22,980 Ale je to také tak nějak ze špatné pro váš počítač. 1417 01:07:22,980 --> 01:07:26,780 Takže jen volné věci když je malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Vy jste vidět symetrie zde. 1420 01:07:30,210 --> 01:07:31,180 Super jednoduché. 1421 01:07:31,180 --> 01:07:33,010 Jen volný, a následně bez ohledu na ukazatel, 1422 01:07:33,010 --> 01:07:34,843 bez ohledu na název ukazatel je, a to 1423 01:07:34,843 --> 01:07:36,710 se postará o uvolnění za vás. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 V pohodě. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Pak jsme to. 1428 01:07:42,530 --> 01:07:44,770 Takže jsme jen tak projít tohoto programu. 1429 01:07:44,770 --> 01:07:46,560 A pak vy je hotovo. 1430 01:07:46,560 --> 01:07:50,240 >> Takže [neslyšitelné] jen hlavní. 1431 01:07:50,240 --> 01:07:51,690 Takže máme nějaké int * ukazatel. 1432 01:07:51,690 --> 01:07:53,648 Takže máme ukazatel že to bude držet celých čísel. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 A kolik ints to bude držet? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Jen jeden. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Velikost int. 1439 01:08:01,100 --> 01:08:03,900 >> Zkontrolujte jsme se zjistit, zda ukazatel je null, protože to 1440 01:08:03,900 --> 01:08:06,130 je, chceme říci, nedělají nic. 1441 01:08:06,130 --> 01:08:07,065 Je to špatné. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Tak jsme vytisknout nějakou chybu ven paměti, nejčastěji vrátí 1, 1444 01:08:12,130 --> 01:08:14,260 jako vy zvyklí. 1445 01:08:14,260 --> 01:08:17,390 >> A pak tady máme, jsme dereference naší ukazatele. 1446 01:08:17,390 --> 01:08:22,840 Takže to znamená, že budeme ukládat něco, co na místě nám byl dán. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * ukazatel, nebo malloc vrací adresa, kde zrušil tento 1449 01:08:30,830 --> 01:08:31,750 Paměť pro 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 podstatě která vám like-- pokud vás 1452 01:08:34,800 --> 01:08:38,149 přemýšlet o tom, banda domy v okolí 1453 01:08:38,149 --> 01:08:40,640 které chcete, aby Váš nábytek, malloc 1454 01:08:40,640 --> 01:08:43,850 je jako v pořádku, dostanete jít do domu tři. 1455 01:08:43,850 --> 01:08:45,800 A to vám dává Adresa domu tři. 1456 01:08:45,800 --> 01:08:48,775 >> Takže to teď, to Ukazatel se ukládá adresa, 1457 01:08:48,775 --> 01:08:50,149 uloží adresu Vašeho domu. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * PTR znamená, OK, já jsem v mém domě. 1460 01:08:54,640 --> 01:08:55,326 V pohodě. 1461 01:08:55,326 --> 01:08:56,580 Musím se dostat nějaké číslo. 1462 01:08:56,580 --> 01:08:59,229 >> Takže se ptáte na někoho aby vám nábytek teď. 1463 01:08:59,229 --> 01:09:00,430 Takže jste si nějaké int. 1464 01:09:00,430 --> 01:09:05,100 A klade ji do ukazatele kde to ukazuje. 1465 01:09:05,100 --> 01:09:08,670 >> A pak se to jen tisk ven, které jste zadali kdekoli. 1466 01:09:08,670 --> 01:09:11,060 A opět, reference. 1467 01:09:11,060 --> 01:09:15,649 Tak to je, jako byste šli na to adresu a viděl, co tam bylo. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 V pohodě? 1470 01:09:17,630 --> 01:09:20,174 >> A pak samozřejmě můžeme osvobodit naši ukazatel. 1471 01:09:20,174 --> 01:09:21,590 Nezapomeňte osvobodit svou ukazatel. 1472 01:09:21,590 --> 01:09:22,933 Nezapomeňte zkontrolovat null. 1473 01:09:22,933 --> 01:09:24,349 Nezapomeňte osvobodit svou ukazatel. 1474 01:09:24,349 --> 01:09:27,270 Máte dvě věci si pamatujete z to, nebo které byste měli pamatovat. 1475 01:09:27,270 --> 01:09:27,770 Ano. 1476 01:09:27,770 --> 01:09:31,590 Diváků: [neslyšitelné] věci jako to, char * s. 1477 01:09:31,590 --> 01:09:33,760 Jak to, že jsme se nikdy osvobodit ty? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Diváků: To jsou jako nitky? 1480 01:09:36,450 --> 01:09:39,160 Říkal jste, že řetězce jsou stejně jako char * s, ne? 1481 01:09:39,160 --> 01:09:41,200 Tak proč ne my osvobodit nitky? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: pouze zdarma, pokud jste mallocing. 1483 01:09:43,204 --> 01:09:44,620 Publikum: Oh, pokud jste mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Takže malloc a zdarma jsou dvě věci, 1485 01:09:47,399 --> 01:09:49,000 že byste měli mít vždy společně. 1486 01:09:49,000 --> 01:09:51,630 f open, f zavřít, dvě věci, měli byste mít k sobě. 1487 01:09:51,630 --> 01:09:54,471 V obou těchto případech, zkontrolujte, zda null. 1488 01:09:54,471 --> 01:09:54,971 Ano. 1489 01:09:54,971 --> 01:09:57,130 >> Diváků: Takže zdarma, je jen což něco jiného 1490 01:09:57,130 --> 01:09:59,690 má být uložen tam po Tento program se používá, že? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: Je to jen říct, OK, jsem udělal s tím. 1492 01:10:01,946 --> 01:10:03,320 Nemusíte se držet kolem. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 V opačném případě bude váš počítač jen rád vyzkoušet a udržet ji tam. 1495 01:10:08,190 --> 01:10:10,910 A pak can't-- běží do paměti otázky později. 1496 01:10:10,910 --> 01:10:13,660 Vždy chcete uvolnit, protože to vám řekne váš počítač, OK, já jsem 1497 01:10:13,660 --> 01:10:15,190 udělal s tohoto místa paměti. 1498 01:10:15,190 --> 01:10:17,190 Můžete ho mít zpět Pro mě pro pozdější použití. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 V pohodě? 1501 01:10:20,500 --> 01:10:21,320 Ano. 1502 01:10:21,320 --> 01:10:26,950 >> Diváků: Tak jsme na% d jen protože double že se vrátí, 1503 01:10:26,950 --> 01:10:28,330 nebo proč je-- [neslyšitelné]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Diváků: Můžete použít i%? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Můžete použít% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Na poslední chvíli otázky? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Jděte do toho. 1511 01:10:38,985 --> 01:10:40,610 Diváků: Mám jen rychlý dotaz. 1512 01:10:40,610 --> 01:10:50,200 Takže proměnná ptr, that's-- jako s int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 to je jen říká, že je to ukazuje na místo v memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Chceš [neslyšitelné]? 1515 01:10:55,600 --> 01:10:58,050 Diváků: začaly uznávat takzvané je velikost of-- ne, je to OK. 1516 01:10:58,050 --> 01:11:01,292 Ale je to jen ukazuje na místo v paměť, která je stejně jako čtyři bajty. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Správně. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Takže malloc, jejichž velikost int říká, OK, já jdu utéct, 1520 01:11:07,070 --> 01:11:08,780 najít čtyři bajty paměti pro vás. 1521 01:11:08,780 --> 01:11:10,700 Když zjistí, že čtyři bajtů paměti to, 1522 01:11:10,700 --> 01:11:14,030 vám dává zpět adresu na to, kde začíná, 1523 01:11:14,030 --> 01:11:16,160 a to je to, co ukládají v ukazateli nebo PTR. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Dobře. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Vypadáte méně zmatený než většina lidé, když mluvím o ukazatel, 1528 01:11:21,700 --> 01:11:23,670 tak jsem docela dobrý pocit teď. 1529 01:11:23,670 --> 01:11:24,520 >> Dobrá. 1530 01:11:24,520 --> 01:11:27,960 Jako vždy, vy by měli mít všichni dostal své pset2 známky nyní. 1531 01:11:27,960 --> 01:11:32,769 Vím, že tam byly nějaké váhavý věci, kde se říká, vzorec není platný 1532 01:11:32,769 --> 01:11:33,310 nebo tak něco. 1533 01:11:33,310 --> 01:11:36,166 Pokud jste stále, že všechny Vaše stupně platí na mé straně. 1534 01:11:36,166 --> 01:11:38,040 Takže mohu poslat vám screenshoty vaše stupňů. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Jen mi dej vědět, jak dobře, pokud jste chybí jakékoliv známky nebo něco 1537 01:11:41,760 --> 01:11:43,060 Nezdá se, že smysl. 1538 01:11:43,060 --> 01:11:43,720 Pojď ke mně. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Byl jsem výborný na tebe pyšný kluci už, tak jen tak dál. 1541 01:11:48,830 --> 01:11:50,640 A mít dobrý odpočinek vašeho týdne. 1542 01:11:50,640 --> 01:11:53,440 Jsem si jistý, že budu vidět některé z vás v úředních hodinách. 1543 01:11:53,440 --> 01:11:55,414