1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 ROB BOWDEN: Ahoj, ja som Rob Bowden, a poďme hovoriť o quiz0. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Takže, prvá otázka. 5 00:00:14,545 --> 00:00:17,750 To je otázka, kde ste potrebovali na kódovanie čísla 6 00:00:17,750 --> 00:00:21,270 127 v binárnej žiarovky. 7 00:00:21,270 --> 00:00:23,550 Ak by ste chceli, mohli by ste robiť pravidelnú konverziu 8 00:00:23,550 --> 00:00:25,950 od bi-- alebo z desiatkovej do binárnej. 9 00:00:25,950 --> 00:00:28,300 Ale to asi bude vziať veľa času. 10 00:00:28,300 --> 00:00:31,750 Myslím, že by ste mohli prísť na to, OK, 1 je tam, 2 je tam, 11 00:00:31,750 --> 00:00:33,650 4 je tam, 8 je tam. 12 00:00:33,650 --> 00:00:39,280 Jednoduchší spôsob, 127 128 mínus jedna. 13 00:00:39,280 --> 00:00:42,013 To vľavo žiarovka je 128-bit. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Takže 127 je naozaj len všetko ostatných žiaroviek, 16 00:00:47,860 --> 00:00:51,420 pretože to je vľavo žiarovka mínus 1. 17 00:00:51,420 --> 00:00:52,800 To je pre túto otázku. 18 00:00:52,800 --> 00:00:54,060 >> Otázka prvá. 19 00:00:54,060 --> 00:00:56,710 Tak s 3 bity môžete predstavujú 8 odlišné hodnoty. 20 00:00:56,710 --> 00:01:01,000 Prečo je teda 7 najväčší non-negatívne desatinné číslo môžete reprezentovať? 21 00:01:01,000 --> 00:01:04,050 No, keď sme len možné predstavujú 8 odlišné hodnoty, 22 00:01:04,050 --> 00:01:07,430 potom, čo budeme mať predstavuje 0 až 7. 23 00:01:07,430 --> 00:01:08,745 0 zaberá jednu z hodnôt. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Otázka dva. 26 00:01:11,190 --> 00:01:14,610 S n bitov, koľko zreteľný Hodnoty môžete reprezentovať? 27 00:01:14,610 --> 00:01:19,080 Takže s n bitov, máte 2 Možné hodnoty pre každý bit. 28 00:01:19,080 --> 00:01:22,300 Takže máme dve možné hodnoty pre prvý bit, 2 možné hodnoty 29 00:01:22,300 --> 00:01:24,450 za druhé, 2 možné, aby tretinu. 30 00:01:24,450 --> 00:01:28,730 A tak to je 2 krát 2 krát 2, a nakoniec odpoveď je 2 až n. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Otázka tri. 33 00:01:31,100 --> 00:01:33,450 Čo je 0x50 v binárnej? 34 00:01:33,450 --> 00:01:39,490 Takže pamätajte, že hexadecimálne má veľmi jednoduchý prevod do dvojkovej sústavy. 35 00:01:39,490 --> 00:01:43,180 Tak tu, len je potrebné sa pozrieť na 5 a 0 nezávisle na sebe. 36 00:01:43,180 --> 00:01:45,110 Takže to, čo je 5 v binárnej? 37 00:01:45,110 --> 00:01:48,400 0101, to je 1 bit a 4-bitová. 38 00:01:48,400 --> 00:01:49,900 Čo je 0 v binárnej? 39 00:01:49,900 --> 00:01:50,520 Nie je zložité. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Takže len dať dohromady, a že je plný počet v binárnej. 42 00:01:54,970 --> 00:01:57,640 01010000. 43 00:01:57,640 --> 00:02:00,439 A ak by ste chceli by ste mohli vzlietnuť, že úplne vľavo nulu. 44 00:02:00,439 --> 00:02:01,105 Je to irelevantné. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Takže alternatívne, čo je 0x50 v desiatkovej sústave? 47 00:02:05,733 --> 00:02:08,649 Ak by ste chceli, môžete could-- ak ste viac vyhovuje binárne, 48 00:02:08,649 --> 00:02:11,340 môžete vziať, že binárne odpoveď a previesť to do desiatkovej. 49 00:02:11,340 --> 00:02:13,870 Alebo by sme mohli len spomenúť že šestnástkové. 50 00:02:13,870 --> 00:02:21,140 Takže je 0 v 0-tom mieste, a 5 je vo 16 na prvé miesto. 51 00:02:21,140 --> 00:02:25,990 Tak tu máme 5 krát 16 k Prvý, plus 0 krát 16 na nulu, 52 00:02:25,990 --> 00:02:27,520 je 80. 53 00:02:27,520 --> 00:02:29,710 A ak ste sa pozrel na Nárok na otázku, 54 00:02:29,710 --> 00:02:32,920 to bol SK 80, ktorý bol druh nápoveda k odpovedi na tento problém. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Otázka päť. 57 00:02:35,420 --> 00:02:40,320 Máme tu Scratch skript, ktorý je opakovať 4 krát arašidové maslo želé. 58 00:02:40,320 --> 00:02:42,800 Tak ako sa teraz kód v C? 59 00:02:42,800 --> 00:02:47,730 No, máme here-- časť tučne je jediná časť, ktorú má za úlohu vykonať. 60 00:02:47,730 --> 00:02:51,950 Takže máme štyri slučky, ktorá je opakovanie 4 doba, printf-ing arašidové maslo želé, 61 00:02:51,950 --> 00:02:53,910 s novou linkou, ako tento problém žiada. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Otázka šesť, ďalší problém Scratch. 64 00:02:57,490 --> 00:03:00,210 Vidíme, že sme v navždy slučky. 65 00:03:00,210 --> 00:03:05,000 Hovoríme, že premenná i a zvyšovanie aj o 1. 66 00:03:05,000 --> 00:03:09,580 Teraz chceme robiť, že v C existujú viac spôsobov, ako to mohol urobiť. 67 00:03:09,580 --> 00:03:12,840 Tu sa stalo kód navždy slučka ako while (true). 68 00:03:12,840 --> 00:03:16,600 Tak sme sa vyhlásiť, že premenná i, len ako by sme mali premennej i poškrabaniu. 69 00:03:16,600 --> 00:03:21,950 Vyhlásiť, že premenná i, a navždy while (true), hovoríme, že premenná i. 70 00:03:21,950 --> 00:03:25,260 Takže printf% Já-- alebo mohol si použiť% d. 71 00:03:25,260 --> 00:03:27,985 Hovoríme, že premenná, a potom ju zvýšiť, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Otázka sedem. 74 00:03:30,830 --> 00:03:35,560 Teraz chceme urobiť niečo veľmi podobného Mario dot c od problému nastaviť jednu. 75 00:03:35,560 --> 00:03:39,110 Chceme vytlačiť tieto hashtag, Ak chceme vytlačiť päť 76 00:03:39,110 --> 00:03:40,700 o tri obdĺžnika týchto hash. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Tak ako budeme robiť, že? 79 00:03:43,162 --> 00:03:45,370 No, my sme vám celý banda kódu, a práve 80 00:03:45,370 --> 00:03:47,560 je potrebné vyplniť vo funkcii tlačového rastra. 81 00:03:47,560 --> 00:03:49,540 >> Tak čo PrintGrid vyzerať? 82 00:03:49,540 --> 00:03:51,480 No vy ste v minulosti šírku a výšku. 83 00:03:51,480 --> 00:03:53,520 Takže máme vonkajšiu 4 slučky, ktorá je smyčkování 84 00:03:53,520 --> 00:03:57,650 cez všetky riadky tohto grid, že chceme vytlačiť. 85 00:03:57,650 --> 00:04:01,250 Potom máme medzi vnorené 4 slučky, to je tlač v každom stĺpci. 86 00:04:01,250 --> 00:04:06,210 Takže pre každý riadok, máme pre tlač každý stĺpec, jeden hash. 87 00:04:06,210 --> 00:04:10,045 Potom sa na konci riadku sme vytlačiť jeden nový riadok prejdete na ďalší riadok. 88 00:04:10,045 --> 00:04:11,420 A to je pre celé siete. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Otázka osem. 91 00:04:13,675 --> 00:04:17,170 Funkcie ako PrintGrid je povedal, aby majú vedľajšie účinky, ale nie návrat 92 00:04:17,170 --> 00:04:17,670 hodnotu. 93 00:04:17,670 --> 00:04:19,209 Vysvetlite rozdiel. 94 00:04:19,209 --> 00:04:23,080 Takže to závisí na vás pamätať čo je to vedľajší účinok je. 95 00:04:23,080 --> 00:04:25,180 No, návrat value-- Vieme PrintGrid nie je 96 00:04:25,180 --> 00:04:28,180 mať návratovú hodnotu, pretože tu sa hovorí, že neplatné. 97 00:04:28,180 --> 00:04:31,150 Takže všetko, čo sa vracia void nie je naozaj nič vracať. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Takže to, čo je vedľajší efekt? 100 00:04:33,620 --> 00:04:36,620 No, vedľajším účinkom je niečo, čo trochu pretrváva 101 00:04:36,620 --> 00:04:39,500 po ukončením funkcie že to nie je len vrátil, 102 00:04:39,500 --> 00:04:41,340 a to nielen z vstupov. 103 00:04:41,340 --> 00:04:44,970 >> Tak, napríklad, môžeme zmeniť globálnu premennú. 104 00:04:44,970 --> 00:04:46,590 To by bol vedľajší efekt. 105 00:04:46,590 --> 00:04:49,000 V tomto konkrétnom prípade, veľmi dôležitý vedľajší efekt 106 00:04:49,000 --> 00:04:51,070 tlačí na obrazovku. 107 00:04:51,070 --> 00:04:53,110 Takže to je vedľajším účinkom že PrintGrid má. 108 00:04:53,110 --> 00:04:54,980 Tlačíme tieto veci na obrazovke. 109 00:04:54,980 --> 00:04:56,370 A na čo si spomeniete že ako vedľajší efekt, 110 00:04:56,370 --> 00:04:58,690 pretože to je niečo, čo pretrváva aj po tejto funkcie skončí. 111 00:04:58,690 --> 00:05:01,481 To je niečo, čo nepatrí do pôsobnosti tejto funkcie, ktorá v konečnom dôsledku 112 00:05:01,481 --> 00:05:03,380 sa zmenil, Obsah obrazovky. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Otázka deväť. 115 00:05:05,839 --> 00:05:07,880 Zvážte program nižšie, ku ktorému čísla riadkov 116 00:05:07,880 --> 00:05:09,740 boli pridané pre saké diskusie. 117 00:05:09,740 --> 00:05:13,480 Takže v tomto programe sme len volanie getString, uložením 118 00:05:13,480 --> 00:05:16,220 do tejto premennej s, a potom tlač tejto premennej s. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 Tak vysvetľujú, prečo je prítomné množstvo raz. 121 00:05:19,090 --> 00:05:20,920 #include CS50 bodka h. 122 00:05:20,920 --> 00:05:23,820 Prečo musíme #include CS50 dot h? 123 00:05:23,820 --> 00:05:26,180 Tak sme volaní GetString funkcie, 124 00:05:26,180 --> 00:05:28,840 a GetString je definovaný v knižnici CS50. 125 00:05:28,840 --> 00:05:31,600 Takže ak sme nemali #include CS50 bodka h, 126 00:05:31,600 --> 00:05:35,760 by sme sa dostali, že implicitné vyhlásenia chyby funkcie GetString 127 00:05:35,760 --> 00:05:36,840 od kompilátora. 128 00:05:36,840 --> 00:05:40,110 Takže musíme zahrnúť library-- musíme zahrnúť hlavičkový súbor, 129 00:05:40,110 --> 00:05:42,870 inak kompilátor nebude uznávajú, že GetString existuje. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Vysvetlite, prečo je prítomná rad dve. 132 00:05:46,140 --> 00:05:47,890 Takže štandardné io bodka h. 133 00:05:47,890 --> 00:05:50,430 Je to úplne rovnaké ako je vyššie uvedené problémy, 134 00:05:50,430 --> 00:05:53,310 s výnimkou toho, vysporiadať sa s GetString, hovoríme o printf. 135 00:05:53,310 --> 00:05:56,654 Takže ak sme nepovedali potrebujeme zahrnúť štandardné io dot h, 136 00:05:56,654 --> 00:05:58,820 potom by sme neboli schopní použiť funkciu printf, 137 00:05:58,820 --> 00:06:00,653 pretože kompilátor by o tom vedieť. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Why-- aký je význam o stratu v rade štyri? 140 00:06:05,260 --> 00:06:08,010 Tak a máme tu int main (void). 141 00:06:08,010 --> 00:06:10,600 To je len hovorím, že sme nedostávajú žiadnu príkazového riadku 142 00:06:10,600 --> 00:06:12,280 Argumenty hlavné. 143 00:06:12,280 --> 00:06:17,390 Pamätajte si, že by sme mohli povedať, int Hlavné int argc reťazec argv zátvorky. 144 00:06:17,390 --> 00:06:20,400 Tak sme tu len povedať, void, že sme ignorujú argumenty príkazového riadku. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Vysvetlenie, s ohľadom na pamäti, presne čo GetString v rade šesť vráti. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString vracia blok pamäť, pole znakov. 149 00:06:31,640 --> 00:06:34,870 Je to naozaj vracia ukazovateľ na prvý znak. 150 00:06:34,870 --> 00:06:37,170 Pamätajte si, že reťazec char hviezda. 151 00:06:37,170 --> 00:06:41,360 Takže s je ukazovateľ na prvý charakter v akejkoľvek reťazec 152 00:06:41,360 --> 00:06:43,510 že užívateľ zadal na klávesnici. 153 00:06:43,510 --> 00:06:47,070 A že pamäť sa stane byť malloced, tak, že pamäť je v halde. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> Otázka 13. 156 00:06:50,450 --> 00:06:51,960 Uvažujme programu nižšie. 157 00:06:51,960 --> 00:06:55,579 Takže všetko, čo tento program robí je printf-ing 1 deleno 10. 158 00:06:55,579 --> 00:06:57,370 Takže keď zostavil a vykonaný, tento program 159 00:06:57,370 --> 00:07:01,170 výstupy 0.0, aj keď 1 deleno 10 je 0,1. 160 00:07:01,170 --> 00:07:02,970 Tak prečo je to 0.0? 161 00:07:02,970 --> 00:07:05,510 No, je to preto, celočíselného delenia. 162 00:07:05,510 --> 00:07:08,580 Tak je celé číslo 1, 10 je celé číslo. 163 00:07:08,580 --> 00:07:11,980 Takže 1 delené 10, všetko je zaobchádzané ako celé čísla, 164 00:07:11,980 --> 00:07:16,380 a C, keď budeme robiť celočíselné delenie, sme skrátiť akékoľvek desatinnou čiarkou. 165 00:07:16,380 --> 00:07:19,590 Takže 1 deleno 10 je 0, a potom sa snažíme 166 00:07:19,590 --> 00:07:24,410 vytlačiť to ako float, tak nula vytlačiť ako plavák je 0.0. 167 00:07:24,410 --> 00:07:27,400 A to je dôvod, prečo sme si 0.0. 168 00:07:27,400 --> 00:07:28,940 >> Uvažujme programu nižšie. 169 00:07:28,940 --> 00:07:31,280 Teraz sme tlač 0.1. 170 00:07:31,280 --> 00:07:34,280 Takže bez delení, sme len tlače 0,1, 171 00:07:34,280 --> 00:07:37,100 ale my sme ho tlače 28 desatinných miest. 172 00:07:37,100 --> 00:07:41,810 A my sme si to 0,1000, celá partia núl, 5 5 5, bla bla bla. 173 00:07:41,810 --> 00:07:45,495 Otázkou teda je, prečo to robí vytlačiť to, že namiesto toho, presne 0,1? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Takže tu dôvod, prečo je teraz s plávajúcou desatinnou čiarkou nepresnosť. 176 00:07:49,640 --> 00:07:53,410 Pamätajte si, že plavák je iba 32 bitov. 177 00:07:53,410 --> 00:07:57,540 Takže môžeme predstavovať iba konečný počet plávajúce bodovej hodnoty s tými 32 178 00:07:57,540 --> 00:07:58,560 bitov. 179 00:07:58,560 --> 00:08:01,760 No tam je nakoniec nekonečne Mnoho plávajúce bodové hodnoty, 180 00:08:01,760 --> 00:08:04,940 a tam je nekonečne veľa plávajúce bodové hodnoty v rozmedzí 0 až 1, 181 00:08:04,940 --> 00:08:07,860 a my sme samozrejme schopní predstavujú aj viac hodnôt, než to. 182 00:08:07,860 --> 00:08:13,230 Takže musíme prinášať obete, aby bolo možné reprezentovať väčšinu hodnoty. 183 00:08:13,230 --> 00:08:16,960 >> Takže hodnota ako 0,1, zrejme nemôžeme predstavovať, že presne. 184 00:08:16,960 --> 00:08:22,500 Takže namiesto toho, čo predstavuje 0,1 robíme najlepšie, čo môžeme reprezentovať túto 0.100000 5 5 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 A to je celkom blízko, ale pre mnoho aplikácií 187 00:08:26,306 --> 00:08:28,430 budete musieť starať o s plávajúcou desatinnou čiarkou nepresnosť, 188 00:08:28,430 --> 00:08:30,930 pretože sme jednoducho nemôže predstavovať všetko plávajúce body presne. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> Otázka 15. 191 00:08:33,380 --> 00:08:34,679 Zvážte pod kód. 192 00:08:34,679 --> 00:08:36,630 Sme len tlač 1 + 1. 193 00:08:36,630 --> 00:08:38,289 Takže tam nie je žiadny trik tu. 194 00:08:38,289 --> 00:08:41,780 1 plus 1 vyhodnocuje 2, a potom tlačíte, že. 195 00:08:41,780 --> 00:08:42,789 To len vytlačí 2. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> Otázka 16. 198 00:08:44,700 --> 00:08:49,450 Teraz sme tlač znaku 1 plus 1 znak. 199 00:08:49,450 --> 00:08:52,110 Tak prečo to nie je vytlačiť to isté? 200 00:08:52,110 --> 00:08:57,680 No postava 1 plus znak 1 znak 1 má hodnotu ASCII 49. 201 00:08:57,680 --> 00:09:04,840 Tak toto je naozaj hovorí, 49 a 49, a nakoniec to bude tlačiť 98. 202 00:09:04,840 --> 00:09:06,130 Takže to netlačí 2. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> Otázka 17. 205 00:09:09,271 --> 00:09:11,520 Dokončiť vykonávanie nepárnych pod takým spôsobom, 206 00:09:11,520 --> 00:09:14,615 že funkcia vracia hodnotu true v prípade, n je nepárne a false, pokiaľ je n párne. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 To je skvelý účel pre mod operátora. 209 00:09:19,330 --> 00:09:24,530 Tak sme sa vziať naše argument n, ak n mod 2 sa rovná 1, dobre 210 00:09:24,530 --> 00:09:28,030 to znamená, že n delí o 2 mal zvyšok. 211 00:09:28,030 --> 00:09:33,270 Ak je n deleno 2 mal zvyšok, ktorý Znamená to, že n je nepárne, a tak sme sa vrátiť true. 212 00:09:33,270 --> 00:09:34,910 Inak sa vrátime false. 213 00:09:34,910 --> 00:09:39,070 Tiež to mohol urobiť n mod 2 rovná nula, vráti false, inak vráti hodnotu true. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Zvážte rekurzívne funkcie nižšie. 216 00:09:43,640 --> 00:09:46,920 Takže ak n je menšie ako alebo rovný 1, vráti 1, 217 00:09:46,920 --> 00:09:50,430 iný návrat n-krát f n mínus 1. 218 00:09:50,430 --> 00:09:52,556 Takže to, čo je táto funkcia? 219 00:09:52,556 --> 00:09:54,305 No, je to len faktoriál funkcie. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 To je dobre zastúpená ako n faktoriál. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Takže otázka 19 teraz, chceme tento rekurzívny funkciu. 224 00:10:02,310 --> 00:10:04,530 Chceme, aby to iteratívny. 225 00:10:04,530 --> 00:10:05,874 Tak ako to urobíme? 226 00:10:05,874 --> 00:10:07,790 No pre zamestnancov riešenie, a opäť je tu 227 00:10:07,790 --> 00:10:11,090 viac spôsobov, ako to mohol urobiť že sme sa začať s týmto produktom int 228 00:10:11,090 --> 00:10:11,812 sa rovná 1. 229 00:10:11,812 --> 00:10:13,520 A v celom tomto slučky for, ideme 230 00:10:13,520 --> 00:10:17,590 k násobenie produkt nakoniec skončiť s plnou faktoriálu. 231 00:10:17,590 --> 00:10:21,870 Takže pre int i sa rovná 2, aj je menšie alebo rovné n, i ++. 232 00:10:21,870 --> 00:10:24,130 >> Tie by mohli byť čudujete, prečo som sa rovná 2. 233 00:10:24,130 --> 00:10:28,380 No, pamätajte, že tu musíme uistite sa, že naša základňa prípad je v poriadku. 234 00:10:28,380 --> 00:10:32,180 Takže ak n je menšie alebo rovné 1, sme len vracia 1. 235 00:10:32,180 --> 00:10:34,830 Tak tu sme sa začať na i rovná 2. 236 00:10:34,830 --> 00:10:39,090 No, ak by som mal 1, potom the-- alebo ak n bola 1, potom pre sláčiky 237 00:10:39,090 --> 00:10:40,600 by sa vykonávať vôbec. 238 00:10:40,600 --> 00:10:43,190 A tak by sme len návrat produkt, ktorý je 1. 239 00:10:43,190 --> 00:10:45,920 Podobne, pokiaľ je n boli niečo menej ako 1-- 240 00:10:45,920 --> 00:10:49,290 keby to bolo 0, negatívne 1, whatever-- mohli by sme sa vracia 1, 241 00:10:49,290 --> 00:10:52,260 čo je presne to, čo rekurzívne verzia robí. 242 00:10:52,260 --> 00:10:54,660 >> Teraz, keď n je väčšie ako 1, potom budeme 243 00:10:54,660 --> 00:10:56,550 urobiť aspoň jednu iterácia tejto slučky. 244 00:10:56,550 --> 00:11:00,630 Takže povedzme, že n je 5, potom sme robiť časy produktu sa rovná 2. 245 00:11:00,630 --> 00:11:02,165 Takže teraz Produkt je 2. 246 00:11:02,165 --> 00:11:04,040 Teraz budeme robiť Časy produkt rovná 3. 247 00:11:04,040 --> 00:11:04,690 Teraz je to 6. 248 00:11:04,690 --> 00:11:07,500 Časy produktu sa rovná 4, teraz je to 24. 249 00:11:07,500 --> 00:11:10,420 Časy produktu sa rovná 5, teraz je to 120. 250 00:11:10,420 --> 00:11:16,730 Takže nakoniec vraciame 120, ktorý je správne 5 faktoriál. 251 00:11:16,730 --> 00:11:17,510 >> Otázka 20. 252 00:11:17,510 --> 00:11:22,480 To je ten, kde je nutné vyplniť V tejto tabuľke sa daný algoritmus, 253 00:11:22,480 --> 00:11:25,735 niečo, čo sme videli, že hodia tieto algoritmické beh 254 00:11:25,735 --> 00:11:28,060 Časy tieto asymptotickej dobu chodu. 255 00:11:28,060 --> 00:11:33,270 Takže to, čo je algoritmus, ktorý je omega 1, ale veľký O n? 256 00:11:33,270 --> 00:11:35,970 Takže tam môže byť nekonečne veľa odpovedí tu. 257 00:11:35,970 --> 00:11:39,790 Ten, ktorý sme videli asi najviac Často je len lineárne hľadanie. 258 00:11:39,790 --> 00:11:42,050 >> Takže v najlepšom prípade scenár, bod sme 259 00:11:42,050 --> 00:11:44,050 hľadá je začiatku zoznamu 260 00:11:44,050 --> 00:11:47,400 a tak v omega 1 krokov, Prvá vec, ktorú sme sa zistiť, 261 00:11:47,400 --> 00:11:49,740 práve sme okamžite vrátiť že sme našli položku. 262 00:11:49,740 --> 00:11:52,189 V najhoršom prípade, položka je na konci, 263 00:11:52,189 --> 00:11:53,730 alebo položka nie je v zozname vôbec. 264 00:11:53,730 --> 00:11:56,700 Takže musíme hľadať celý zoznam, všetky n 265 00:11:56,700 --> 00:11:58,480 prvky, a to je dôvod, prečo je o n. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Takže teraz je to niečo, čo ich oboch omega n log n, a veľký O n log n. 268 00:12:04,880 --> 00:12:08,650 No najdôležitejšia vec sme tu videli, je zlúčiť druh. 269 00:12:08,650 --> 00:12:12,950 Takže zlúčiť druh, pamätajte, je nakoniec Theta 270 00:12:12,950 --> 00:12:16,920 n log n, v ktorom je definovaná theta ak obidva omega a veľké O sú rovnaké. 271 00:12:16,920 --> 00:12:17,580 Obaja n log n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Čo je to niečo, čo je omega N, O a N druhú? 274 00:12:21,970 --> 00:12:23,990 No, zase je tu viac možných odpovedí. 275 00:12:23,990 --> 00:12:26,440 Tu náhodou povedať Bublinkové triedenie. 276 00:12:26,440 --> 00:12:28,840 Vloženie sort by tiež pracovať tu. 277 00:12:28,840 --> 00:12:31,400 Pamätajte si, že bublina druh je, že optimalizácia, kde 278 00:12:31,400 --> 00:12:34,630 ak ste schopní sa dostať celý zoznam 279 00:12:34,630 --> 00:12:37,402 aby bolo nutné robiť všetky swapy, potom dobre, 280 00:12:37,402 --> 00:12:40,110 môžeme okamžite vrátiť, že Zoznam bol radené začať. 281 00:12:40,110 --> 00:12:43,185 Takže v najlepšom prípade, je to len omega n. 282 00:12:43,185 --> 00:12:45,960 Ak to nie je len pekne triedený zoznam začať s, 283 00:12:45,960 --> 00:12:48,270 potom máme O n na druhú swapy. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 A konečne, máme výber druhu pre n na druhú, ako omega a veľké O. 286 00:12:55,610 --> 00:12:56,850 >> Otázka 21. 287 00:12:56,850 --> 00:12:58,870 Čo je integer overflow? 288 00:12:58,870 --> 00:13:02,160 Tak znovu, podobne ako predtým, máme len konečne veľa bitov 289 00:13:02,160 --> 00:13:04,255 k predstavuje celé číslo, tak možno 32 bitov. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 Povedzme, že máme celé číslo so znamienkom. 292 00:13:09,180 --> 00:13:12,800 Potom nakoniec najvyššej kladné číslo môžeme reprezentovať 293 00:13:12,800 --> 00:13:15,910 je 2 až 31 mínus 1. 294 00:13:15,910 --> 00:13:19,370 Takže to, čo sa stane, keď sa snažíme potom prírastok, že číslo? 295 00:13:19,370 --> 00:13:25,320 No, my pôjdeme od 2 do 31 mínus 1, celú cestu až do negatívneho 2 296 00:13:25,320 --> 00:13:26,490 do 31. 297 00:13:26,490 --> 00:13:29,470 Tak toto číslo pretečeniu keď budete mať zvyšovanie, 298 00:13:29,470 --> 00:13:32,330 a nakoniec nemôžete dostať sa vyššie, a to len 299 00:13:32,330 --> 00:13:34,520 zábaly celú cestu späť okolo na zápornú hodnotu. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Čo o pretečeniu vyrovnávacej pamäti? 302 00:13:37,779 --> 00:13:39,820 Takže vyrovnávacia overflow-- Pamätáš si, čo buffer. 303 00:13:39,820 --> 00:13:41,000 Je to len kus pamäte. 304 00:13:41,000 --> 00:13:43,350 Niečo ako pole je vyrovnávacia pamäť. 305 00:13:43,350 --> 00:13:46,120 Takže buffer overflow je, keď pokuse o prístup k pamäti 306 00:13:46,120 --> 00:13:47,880 po skončení tohto poľa. 307 00:13:47,880 --> 00:13:50,410 Takže ak máte pole o veľkosti 5 a vami 308 00:13:50,410 --> 00:13:53,700 pri pokuse o prístup pole držiak 5 alebo 6 alebo držiak držiak 7, 309 00:13:53,700 --> 00:13:56,610 alebo niečo mimo koniec, alebo dokonca niečo 310 00:13:56,610 --> 00:14:00,790 below-- pole držiak negatívny 1-- všetky z nich sú pretečeniu vyrovnávacej pamäti. 311 00:14:00,790 --> 00:14:02,810 Vy sa dotknete pamäte v zlých cestách. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> Otázka 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 Takže v tomto ten, ktorý potrebujete realizovať strlen. 316 00:14:09,100 --> 00:14:11,630 A povieme vám, že môžete Predpokladáme, s nebude null, 317 00:14:11,630 --> 00:14:13,790 takže sa nemusíte vykonať akúkoľvek kontrolu NULL. 318 00:14:13,790 --> 00:14:16,190 A existuje niekoľko spôsobov, ako si to mohol urobiť. 319 00:14:16,190 --> 00:14:18,440 Tu sme len vziať jednoduchá. 320 00:14:18,440 --> 00:14:21,780 Začneme s protiprúdom, n. n je počítanie koľko znakov existujú. 321 00:14:21,780 --> 00:14:25,560 Takže začneme na 0, a potom sme iterovat cez celý zoznam. 322 00:14:25,560 --> 00:14:29,092 >> Je to držiak 0 rovná null zakončenie postava? 323 00:14:29,092 --> 00:14:31,425 Pamätajte si, že hľadáme null zakončenie znak 324 00:14:31,425 --> 00:14:33,360 určiť, ako dlho náš reťazec. 325 00:14:33,360 --> 00:14:35,890 Že sa chystá ukončiť všetky príslušné reťazec. 326 00:14:35,890 --> 00:14:39,400 Takže je to držiak 0 rovná do terminátora null? 327 00:14:39,400 --> 00:14:42,850 Ak tomu tak nie je, potom budeme pozrite sa na s držiakom 1, s držiakom 2. 328 00:14:42,850 --> 00:14:45,050 Ideme, kým sme nájsť zakončený nulovým znakom. 329 00:14:45,050 --> 00:14:48,580 Potom, čo sme našli, potom n obsahuje celková dĺžka reťazca, 330 00:14:48,580 --> 00:14:49,942 a my môžeme len vrátiť to. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> Otázka 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Takže to je ten, kde sa majú robiť kompromis. 335 00:14:56,050 --> 00:14:59,810 Takže jedna vec je dobrá v jednom cesta, ale v čom je to zlé? 336 00:14:59,810 --> 00:15:02,980 Tak tu, zlúčiť druh inklinuje byť rýchlejší ako bubliny druhu. 337 00:15:02,980 --> 00:15:06,530 Potom, čo povedal that-- dobre, tam tu viac odpovedí. 338 00:15:06,530 --> 00:15:12,930 Ale hlavné je, že bublina druh je omega n pre triedený zoznamu. 339 00:15:12,930 --> 00:15:14,950 >> Pamätajte si, že tabuľky sme práve videli predtým. 340 00:15:14,950 --> 00:15:17,600 Takže bublina radí omegou n, najlepší scenár 341 00:15:17,600 --> 00:15:20,010 je, že je schopný len tak cez zoznam raz, určiť 342 00:15:20,010 --> 00:15:22,270 hej toto je už triedené a návrat. 343 00:15:22,270 --> 00:15:25,960 Triedenie zlučovaním, bez ohľadu na to, čo robíte, je omega n log n. 344 00:15:25,960 --> 00:15:29,200 Tak pre triedený zoznam, bublinková druh to bude rýchlejšie. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Čo je teraz prepojený zoznamy? 347 00:15:32,430 --> 00:15:36,070 Takže spájať zoznam môže zväčšiť a zmenšiť aby sa zmestili toľko prvkov podľa potreby. 348 00:15:36,070 --> 00:15:38,489 Mať hovoril, that-- tak obvykle priame porovnanie 349 00:15:38,489 --> 00:15:40,280 bude spojený zoznam s radom. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Takže aj keď pole môže ľahko zväčšiť a zmenšiť 352 00:15:44,050 --> 00:15:47,130 aby sa zmestili čo najviac prvkov podľa potreby, spájať zoznam 353 00:15:47,130 --> 00:15:49,600 v porovnaní s array-- An pole má náhodný prístup. 354 00:15:49,600 --> 00:15:52,960 Môžeme index do niektorého Najmä prvok poľa. 355 00:15:52,960 --> 00:15:56,430 >> Takže pre spájať zoznam, nemôžeme stačí ísť do piateho elementu, 356 00:15:56,430 --> 00:16:00,260 musíme prejsť od začiatku až sa dostaneme do piateho elementu. 357 00:16:00,260 --> 00:16:03,990 A to sa deje, aby sa zabránilo nás od niečo ako binárne vyhľadávanie. 358 00:16:03,990 --> 00:16:08,150 Keď už hovoríme o binárne vyhľadávanie, binárne vyhľadávanie má tendenciu byť rýchlejší ako lineárny vyhľadávania. 359 00:16:08,150 --> 00:16:11,120 Mať hovoril, that-- tak, jedno možné vec 360 00:16:11,120 --> 00:16:13,380 je to, že nemôžete urobiť binárne hľadať v spojových zoznamov, 361 00:16:13,380 --> 00:16:14,730 môžete to urobiť len na poliach. 362 00:16:14,730 --> 00:16:18,030 Ale pravdepodobne dôležitejšie, nemôžete robiť binárne vyhľadávanie 363 00:16:18,030 --> 00:16:20,690 na poli, ktoré nie je zoradená. 364 00:16:20,690 --> 00:16:23,990 Vopred budete potrebovať vyriešiť polia, a až potom môže 365 00:16:23,990 --> 00:16:25,370 urobíte binárne vyhľadávanie. 366 00:16:25,370 --> 00:16:27,660 Takže ak vaša vec nie je triedený začať, 367 00:16:27,660 --> 00:16:29,250 potom lineárne hľadanie môže byť rýchlejší. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> Otázka 27. 370 00:16:31,740 --> 00:16:34,770 Takže zvážte program nižšie, ktorá bude v ďalšej snímku. 371 00:16:34,770 --> 00:16:37,790 A to je ten, kde sme bude chcieť výslovne uviesť, 372 00:16:37,790 --> 00:16:39,980 hodnoty pre rôzne premenné. 373 00:16:39,980 --> 00:16:41,990 Tak sa poďme pozrieť na to. 374 00:16:41,990 --> 00:16:43,160 >> Takže prvom riadku. 375 00:16:43,160 --> 00:16:45,457 Máme int x = 1. 376 00:16:45,457 --> 00:16:47,040 To je jediná vec, čo sa stalo. 377 00:16:47,040 --> 00:16:50,440 Takže v prvom riadku, vidíme v našej Tabuľka, že y, a, b, a TMP sú 378 00:16:50,440 --> 00:16:51,540 zatemnenie. 379 00:16:51,540 --> 00:16:52,280 Takže to, čo je x? 380 00:16:52,280 --> 00:16:53,860 Tak sme len nastaviť ju na hodnotu 1. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 A potom riadok dva, dobre, vidíme, že y je nastavené na 2, 383 00:16:58,770 --> 00:17:00,550 a tabuľka je už vyplniť pre nás. 384 00:17:00,550 --> 00:17:03,040 Takže x je 1 a y je 2. 385 00:17:03,040 --> 00:17:05,890 >> Teraz, riadok tri, my sme teraz vnútri funkcie pamäti. 386 00:17:05,890 --> 00:17:07,560 Čo sme sa prejsť k výmene? 387 00:17:07,560 --> 00:17:11,609 Minuli sme ampersand x pre a ampersand y za b. 388 00:17:11,609 --> 00:17:15,160 V prípade, že problém skôr uviedol, že adresa x 389 00:17:15,160 --> 00:17:17,520 je 0x10, a adresa y je 0x14. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Tak a a b sa rovnajú 0x10 a 0x14, resp. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Teraz na riadku tri, čo sú x a y? 394 00:17:26,250 --> 00:17:28,554 No, nič sa nezmenilo o x a y v tomto bode. 395 00:17:28,554 --> 00:17:30,470 Aj keď sú vnútri hlavného rámu zásobníka, 396 00:17:30,470 --> 00:17:32,469 majú stále rovnaké Hodnoty, ktoré predtým. 397 00:17:32,469 --> 00:17:34,030 Nemáme zmenil nejaké pamäti. 398 00:17:34,030 --> 00:17:35,710 Takže x je 1, y je 2. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Dobrá. 401 00:17:37,050 --> 00:17:40,300 Takže teraz sme si povedali, int tmp rovná hrať. 402 00:17:40,300 --> 00:17:44,410 Takže na linke štyri, všetko je rovnaké, okrem zvýšiť. 403 00:17:44,410 --> 00:17:47,130 Sme sa zmenili hodnoty o ničom tmp. 404 00:17:47,130 --> 00:17:49,230 Sme nastaviť tmp rovno hrať. 405 00:17:49,230 --> 00:17:50,620 Čo je to hviezda? 406 00:17:50,620 --> 00:17:56,240 No, body x, teda hviezda bude rovné x, čo je 1. 407 00:17:56,240 --> 00:18:00,080 Takže všetko je skopírovaný dole, a TMP je nastavená na hodnotu 1. 408 00:18:00,080 --> 00:18:01,110 >> Teraz ďalší riadok. 409 00:18:01,110 --> 00:18:03,380 Hviezda rovná hviezda b. 410 00:18:03,380 --> 00:18:10,000 Takže súlade opäť five-- dobre, všetko je rovnaký, s výnimkou, čo hviezda je. 411 00:18:10,000 --> 00:18:10,830 Čo je to hviezda? 412 00:18:10,830 --> 00:18:13,720 No, my sme len povedali hviezda je x. 413 00:18:13,720 --> 00:18:16,400 Takže meníme x rovnakého hviezdy b. 414 00:18:16,400 --> 00:18:18,960 Čo je to hviezda b? y. b body y. 415 00:18:18,960 --> 00:18:21,030 Takže hviezda b je y. 416 00:18:21,030 --> 00:18:25,140 Takže sme nastavenie x rovná y, a všetko ostatné je rovnaké. 417 00:18:25,140 --> 00:18:29,130 Vidíme teda, v ďalšom riadku, že x je teraz 2, a zvyšok sú práve skopírovali nadol. 418 00:18:29,130 --> 00:18:31,120 >> Teraz, v ďalšom riadku, hviezda b sa rovná tmp. 419 00:18:31,120 --> 00:18:34,740 No, my práve povedal hviezda b je y, takže sme nastavenie y rovné tmp. 420 00:18:34,740 --> 00:18:37,450 Všetko ostatné je rovnaké, takže všetko, čo dostane kopírované. 421 00:18:37,450 --> 00:18:42,050 Sme nastavení y sa rovná tmp, čo je jeden, a všetko ostatné je rovnaké. 422 00:18:42,050 --> 00:18:43,210 >> Teraz konečne, riadok sedem. 423 00:18:43,210 --> 00:18:44,700 Sme späť v hlavnej funkcie. 424 00:18:44,700 --> 00:18:46,350 Sme po swapu je hotová. 425 00:18:46,350 --> 00:18:48,972 Prišli sme a, b, a tmp, ale nakoniec sme 426 00:18:48,972 --> 00:18:51,180 sa nemení žiadne hodnoty na nič v tomto bode, 427 00:18:51,180 --> 00:18:52,800 sme len skopírovať x a y nadol. 428 00:18:52,800 --> 00:18:56,490 A vidíme, že x a y sú Teraz 2 a 1 miesto 1 a 2. 429 00:18:56,490 --> 00:18:58,160 Swap bol úspešne vykonaný. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> Otázka 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Predpokladajme, že sa stretnete chybové správy 434 00:19:03,100 --> 00:19:06,790 Nižšie počas úradných hodín budúci rok ako CA alebo TF. 435 00:19:06,790 --> 00:19:08,930 Poradiť, ako opraviť každý z týchto chýb. 436 00:19:08,930 --> 00:19:11,160 Tak nedefinovaný odkaz na getString. 437 00:19:11,160 --> 00:19:12,540 Prečo by ste vidieť? 438 00:19:12,540 --> 00:19:15,380 No, ak študent používa GetString v ich kóde, 439 00:19:15,380 --> 00:19:20,310 majú riadne Hash súčasťou CS50 dot h zahrnúť knižnice CS50. 440 00:19:20,310 --> 00:19:22,380 >> No, čo sa im Potrebujete opraviť túto chybu? 441 00:19:22,380 --> 00:19:26,810 Čo musíte urobiť, pomlčka lcs50 na príkazový riadok, keď sú kompiláciu. 442 00:19:26,810 --> 00:19:29,501 Takže v prípade, že neprejde zvonenie pomlčka lcs50, sú 443 00:19:29,501 --> 00:19:32,000 nebude mať skutočný kód, ktorý implementuje getString. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> Otázka 29. 446 00:19:34,170 --> 00:19:36,190 Implicitne vyhlásení knižničný funkcie strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 No to teraz, oni nemajú urobil správny hash patrí. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 V tomto konkrétnom prípade, súbor hlavičky treba započítať, je reťazec bodka h, 451 00:19:45,410 --> 00:19:48,710 vrátane reťazca bodka h, teraz student-- teraz kompilátor 452 00:19:48,710 --> 00:19:51,750 má prístup k vyhlásenie o strlen, 453 00:19:51,750 --> 00:19:54,120 a vie, že váš kód používa strlen správne. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> Otázka 30. 456 00:19:56,580 --> 00:20:00,240 Viac percent konverzie než dátových argumentov. 457 00:20:00,240 --> 00:20:01,540 Tak čo je to? 458 00:20:01,540 --> 00:20:06,470 Dobre si pamätám, že tieto percent signs--, ako sú relevantné pre printf. 459 00:20:06,470 --> 00:20:08,890 Takže printf môžeme percent-- by sme mohli niečo vytlačiť 460 00:20:08,890 --> 00:20:11,380 ako percento aj spätné lomítka n. 461 00:20:11,380 --> 00:20:15,310 Alebo môžeme vytlačiť ako percenta aj, priestor, percenta aj, priestor, percenta aj. 462 00:20:15,310 --> 00:20:18,950 Takže pre každý z nich znaky percenta, musíme 463 00:20:18,950 --> 00:20:21,560 odovzdať premennú na konci printf. 464 00:20:21,560 --> 00:20:26,980 >> Takže keď povieme printf Paren percent aj spätné lomítka n úzke zátvorka, 465 00:20:26,980 --> 00:20:30,270 No, môžeme povedať, že sme do tlače celé číslo, 466 00:20:30,270 --> 00:20:33,970 ale potom sme neprejdú printf číslo skutočne vytlačiť. 467 00:20:33,970 --> 00:20:37,182 Tak tu viac percent konverzie dát než argumenty? 468 00:20:37,182 --> 00:20:39,390 To hovorí, že máme celá partia percent, 469 00:20:39,390 --> 00:20:42,445 a nemáme dostatok premenné skutočne vyplniť v týchto percent. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> A potom určite pre otázku 31, definitívne stratil 40 bytov v jednom bloku. 472 00:20:50,010 --> 00:20:52,350 Tak to je chyba Valgrind. 473 00:20:52,350 --> 00:20:54,720 To hovorí, že niekde v kóde, 474 00:20:54,720 --> 00:20:59,010 máte prídel, ktorý je 40 byty veľké, takže si malloced 40 bajtov, 475 00:20:59,010 --> 00:21:00,515 a nikdy ju oslobodil. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 S najväčšou pravdepodobnosťou stačí nájsť nejaký únik pamäte, 478 00:21:05,140 --> 00:21:07,650 a zistiť, kde je potrebné oslobodiť tento blok pamäte. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> A otázka 32, neplatný zápis o veľkosti 4. 481 00:21:11,910 --> 00:21:13,250 Opäť je to chyba Valgrind. 482 00:21:13,250 --> 00:21:15,440 To nemusí robiť s úniky teraz pamäti. 483 00:21:15,440 --> 00:21:20,750 To je najviac likely-- myslím, že je to akési neplatné pamäte práv. 484 00:21:20,750 --> 00:21:23,270 A s najväčšou pravdepodobnosťou je to nejaký druh pretečeniu vyrovnávacej pamäti. 485 00:21:23,270 --> 00:21:26,560 Kde máte pole, možno číslo poľa, a poďme 486 00:21:26,560 --> 00:21:30,115 hovoria, že je to o veľkosti 5, a skúste sa dotknúť poľa držiaka 5. 487 00:21:30,115 --> 00:21:34,150 Takže ak sa pokúsite napísať, že hodnota, to nie je kus pamäti 488 00:21:34,150 --> 00:21:37,440 že ste skutočne majú prístup, a takže budete mať túto chybu, 489 00:21:37,440 --> 00:21:39,272 hovorí neplatný zápis o veľkosti 4. 490 00:21:39,272 --> 00:21:42,480 Valgrind bude poznať, že ste snaží sa dotknúť pamäť nevhodne. 491 00:21:42,480 --> 00:21:43,980 >> A to je pre quiz0. 492 00:21:43,980 --> 00:21:47,065 Som Rob Bowden, a to je CS50. 493 00:21:47,065 --> 00:21:51,104