1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 ROB Bowden: Živjo, jaz sem Rob Bowden, in kaj je govoril o quiz0. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Torej, prvo vprašanje. 5 00:00:14,545 --> 00:00:17,750 To je vprašanje, kjer ste potrebovali za kodiranje številke 6 00:00:17,750 --> 00:00:21,270 127 v binarnih žarnice. 7 00:00:21,270 --> 00:00:23,550 Če bi želeli, bi lahko storiti redno konverzijo 8 00:00:23,550 --> 00:00:25,950 od bi-- ali iz decimalnega v binarni. 9 00:00:25,950 --> 00:00:28,300 Ampak to je verjetno, da bo vzeti veliko časa. 10 00:00:28,300 --> 00:00:31,750 Mislim, lahko ugotovimo, da je OK, 1 je tam, 2 je tam, 11 00:00:31,750 --> 00:00:33,650 4 je v tam, 8 je notri. 12 00:00:33,650 --> 00:00:39,280 Lažji način, 127 je 128 minus ena. 13 00:00:39,280 --> 00:00:42,013 Da Skrajna leva žarnica je 128-bit. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Torej, 127 je res prav vse drugih žarnic, 16 00:00:47,860 --> 00:00:51,420 saj to je skrajno levi žarnica minus 1. 17 00:00:51,420 --> 00:00:52,800 To je to, za to vprašanje. 18 00:00:52,800 --> 00:00:54,060 >> Eno vprašanje. 19 00:00:54,060 --> 00:00:56,710 Torej s 3 bitov lahko predstavljajo 8 različni vrednosti. 20 00:00:56,710 --> 00:01:01,000 Zakaj, potem, je 7 največja nenegativna desetiško celo lahko predstavlja? 21 00:01:01,000 --> 00:01:04,050 No, če smo lahko le predstavljajo 8 različne vrednosti, 22 00:01:04,050 --> 00:01:07,430 potem kaj bomo, da bo predstavlja 0 do 7. 23 00:01:07,430 --> 00:01:08,745 0 zavzame eno od vrednot. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Vprašanje dva. 26 00:01:11,190 --> 00:01:14,610 Z n bitov, koliko se razlikuje vrednosti, ki jih lahko predstavlja? 27 00:01:14,610 --> 00:01:19,080 Torej, z n bitov, imate 2 Možne vrednosti za vsakega nekaj. 28 00:01:19,080 --> 00:01:22,300 Torej imamo 2 možne vrednosti Prvi bit, 2 možne vrednosti 29 00:01:22,300 --> 00:01:24,450 za sekundo, 2 mogoče za tretjino. 30 00:01:24,450 --> 00:01:28,730 In tako, da je 2-krat 2-krat 2, in na koncu je odgovor 2 do n. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Vprašanje tri. 33 00:01:31,100 --> 00:01:33,450 Kaj je 0x50 v binarno? 34 00:01:33,450 --> 00:01:39,490 Torej, ne pozabite, da je v šestnajstiškem zelo enostavna pretvorba v binarno. 35 00:01:39,490 --> 00:01:43,180 Torej, tukaj, smo morali gledati 5 in 0 neodvisno. 36 00:01:43,180 --> 00:01:45,110 Torej, kaj je 5 v binarno? 37 00:01:45,110 --> 00:01:48,400 0101, to je 1 bit in 4 bit. 38 00:01:48,400 --> 00:01:49,900 Kaj je 0 v dvojiškem? 39 00:01:49,900 --> 00:01:50,520 Ni zapleteno. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Torej, samo jih skupaj, in da je polno število v binarno. 42 00:01:54,970 --> 00:01:57,640 01010000. 43 00:01:57,640 --> 00:02:00,439 In če si hotel si lahko vzlet to najbolj levi nič. 44 00:02:00,439 --> 00:02:01,105 To je nepomembno. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Torej, potem pa, kaj je 0x50 na decimalko? 47 00:02:05,733 --> 00:02:08,649 Če boste želeli, vam could-- če ste bolj zadovoljni z binarno, 48 00:02:08,649 --> 00:02:11,340 ti bi lahko to binarno odgovor in spremeniti, da na decimalko. 49 00:02:11,340 --> 00:02:13,870 Ali pa samo ne pozabite, da šestnajstiški. 50 00:02:13,870 --> 00:02:21,140 Tako da je 0 v 0-tem mestu, in 5 je v 16 do prvega kraja. 51 00:02:21,140 --> 00:02:25,990 Torej, tukaj imamo 5 krat 16 do Prvi, plus 0 krat 16 na nič, 52 00:02:25,990 --> 00:02:27,520 80. 53 00:02:27,520 --> 00:02:29,710 In če si pogledal Naslov na vprašanje, 54 00:02:29,710 --> 00:02:32,920 je bilo CS 80, ki je bil nekako namig za odgovor na ta problem. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Vprašanje pet. 57 00:02:35,420 --> 00:02:40,320 Imamo to scratch scenarij, ki je ponavljanje 4-krat žele arašidovo maslo. 58 00:02:40,320 --> 00:02:42,800 Torej, kako bomo zdaj koda v C? 59 00:02:42,800 --> 00:02:47,730 No, mi here-- imajo vlogo pri bold je edini del, ki ga je imel za izvedbo. 60 00:02:47,730 --> 00:02:51,950 Torej imamo 4 zanke, ki je zanka 4 krat, printf-ing arašidovo maslo žele, 61 00:02:51,950 --> 00:02:53,910 z novo linijo kot problem zahteva. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Vprašanje šest, druga Scratch problem. 64 00:02:57,490 --> 00:03:00,210 Vidimo, da smo v večno zanko. 65 00:03:00,210 --> 00:03:05,000 Mi praviš spremenljivo i in nato povečevanje i s 1. 66 00:03:05,000 --> 00:03:09,580 Zdaj želimo narediti, da obstajajo v C. več načinov smo lahko naredili to. 67 00:03:09,580 --> 00:03:12,840 Tu se je zgodilo, da kodo večno zanko kot while (true). 68 00:03:12,840 --> 00:03:16,600 Tako izjavljamo variabilnega i, samo kot smo imeli spremenljivo jaz v nič. 69 00:03:16,600 --> 00:03:21,950 Razglasi spremenljivko i, in za vedno while (true), rečemo spremenljivko i. 70 00:03:21,950 --> 00:03:25,260 Torej printf% i-- ali pa bi jih uporabiti% d. 71 00:03:25,260 --> 00:03:27,985 Pravimo, da je spremenljivka, in nato prirastek, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Vprašanje sedem. 74 00:03:30,830 --> 00:03:35,560 Zdaj želimo narediti nekaj zelo podobnega Mario dot c od problema nastaviti enega. 75 00:03:35,560 --> 00:03:39,110 Želimo, da natisnete te oznake tem, želimo natisniti pet 76 00:03:39,110 --> 00:03:40,700 za tri pravokotnik teh haše. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Torej, kako bomo to naredili? 79 00:03:43,162 --> 00:03:45,370 No, smo vam celoten kup kode, in si 80 00:03:45,370 --> 00:03:47,560 morajo izpolniti funkcijo print omrežja. 81 00:03:47,560 --> 00:03:49,540 >> Torej, kaj PrintGrid izgledal? 82 00:03:49,540 --> 00:03:51,480 No, ti si preteklost širina in višina. 83 00:03:51,480 --> 00:03:53,520 Torej imamo zunanjo 4 zanka, ki je zanka 84 00:03:53,520 --> 00:03:57,650 nad vsemi vrstami ta omrežje, ki ga želimo natisniti. 85 00:03:57,650 --> 00:04:01,250 Potem imamo med ugnezdeno 4 zanke, da je tisk v vsakem stolpcu. 86 00:04:01,250 --> 00:04:06,210 Torej, za vsako vrsto, tiskamo za vsak stolpec, single hash. 87 00:04:06,210 --> 00:04:10,045 Nato na koncu vrstice tiskamo Enotna nova linija, da gredo v naslednjo vrstico. 88 00:04:10,045 --> 00:04:11,420 In to je to, za celotno omrežje. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Vprašanje osem. 91 00:04:13,675 --> 00:04:17,170 Funkcija kot PrintGrid je dejal, da imajo stranske učinke, ne pa vrnitev 92 00:04:17,170 --> 00:04:17,670 vrednost. 93 00:04:17,670 --> 00:04:19,209 Pojasnite razliko. 94 00:04:19,209 --> 00:04:23,080 Torej, to se zanaša na vas spomnimo kaj stranski učinek. 95 00:04:23,080 --> 00:04:25,180 No, vrnitev value-- vemo PrintGrid ne 96 00:04:25,180 --> 00:04:28,180 imajo povratno vrednost, saj Tukaj piše neveljavne. 97 00:04:28,180 --> 00:04:31,150 Torej kaj, da se vrne void v resnici ne vrne ničesar. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Torej, kaj je stranski učinek? 100 00:04:33,620 --> 00:04:36,620 No, stranski učinek je vse, kar nekako ne izgine 101 00:04:36,620 --> 00:04:39,500 Po koncu funkcijskih da ni bil pravkar vrnil, 102 00:04:39,500 --> 00:04:41,340 in to ni bilo samo od vhodov. 103 00:04:41,340 --> 00:04:44,970 >> Tako, na primer, bi lahko spremeniti globalno spremenljivko. 104 00:04:44,970 --> 00:04:46,590 Da bi bil stranski učinek. 105 00:04:46,590 --> 00:04:49,000 V tem konkretnem primeru, zelo pomembni stranski učinek 106 00:04:49,000 --> 00:04:51,070 izpisuje na zaslon. 107 00:04:51,070 --> 00:04:53,110 Tako, da je stranski učinek da PrintGrid ima. 108 00:04:53,110 --> 00:04:54,980 Tiskamo te stvari na zaslonu. 109 00:04:54,980 --> 00:04:56,370 In si lahko zamislite ki kot stranski učinek, 110 00:04:56,370 --> 00:04:58,690 saj to je nekaj, kar ponavlja, ko se konča ta funkcija. 111 00:04:58,690 --> 00:05:01,481 To je nekaj, kar spada na področje te funkcije, ki na koncu 112 00:05:01,481 --> 00:05:03,380 se spremenili, vsebina zaslona. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Vprašanje devet. 115 00:05:05,839 --> 00:05:07,880 Razmislite program spodaj, na katere številke vrstic 116 00:05:07,880 --> 00:05:09,740 Dodani so bili za sake razprave. 117 00:05:09,740 --> 00:05:13,480 Torej, v tem programu smo pravkar kliče GetString, jo shranite 118 00:05:13,480 --> 00:05:16,220 V to spremenljivko s, in nato natisnete to spremenljivko s. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 Torej, razloži, zakaj je prva vrstica prisotna. 121 00:05:19,090 --> 00:05:20,920 #include CS50 dot h. 122 00:05:20,920 --> 00:05:23,820 Zakaj moramo #include CS50 dot h? 123 00:05:23,820 --> 00:05:26,180 Pa smo kličeš GetString funkcijo, 124 00:05:26,180 --> 00:05:28,840 in GetString je definirano v knjižnici CS50. 125 00:05:28,840 --> 00:05:31,600 Torej, če nismo imeli #include CS50 dot h, 126 00:05:31,600 --> 00:05:35,760 bomo dobili, da je implicitno izjavo napake funkcije GetString 127 00:05:35,760 --> 00:05:36,840 od prevajalnika. 128 00:05:36,840 --> 00:05:40,110 Zato moramo vključiti library-- moramo vključiti datoteko glave, 129 00:05:40,110 --> 00:05:42,870 ali pa prevajalnik ne bo priznavajo, da GetString obstaja. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Pojasnite, zakaj je druga vrstica prisotna. 132 00:05:46,140 --> 00:05:47,890 Torej standardno io pika h. 133 00:05:47,890 --> 00:05:50,430 To je popolnoma enaka kot prejšnji problem, 134 00:05:50,430 --> 00:05:53,310 razen, namesto da se ukvarjajo z GetString, govorimo o printf. 135 00:05:53,310 --> 00:05:56,654 Torej, če mi ni povedal, da potrebujemo vključuje standardni io dot h, 136 00:05:56,654 --> 00:05:58,820 potem ne bi mogli uporabiti funkcijo printf, 137 00:05:58,820 --> 00:06:00,653 ker prevajalnik ne bi vedel o tem. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Why-- kaj je pomen za ničen v skladu s štirimi? 140 00:06:05,260 --> 00:06:08,010 Torej, tukaj imamo int main (praznino). 141 00:06:08,010 --> 00:06:10,600 To je samo rekel, da smo niso dobili nobenega ukazno vrstico 142 00:06:10,600 --> 00:06:12,280 Glavni argumenti. 143 00:06:12,280 --> 00:06:17,390 Ne pozabite, da lahko rečemo, int Glavni int argc niz argv nosilci. 144 00:06:17,390 --> 00:06:20,400 Torej, tukaj smo pravkar rekel, nična, da smo zanemarjamo argumente ukazne vrstice. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Pojasnite, v zvezi s spominom, točno kaj GetString v skladu šest vrne. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString se vrača blok spomin, nabor znakov. 149 00:06:31,640 --> 00:06:34,870 To je res vrača kazalec na prvi znak. 150 00:06:34,870 --> 00:06:37,170 Ne pozabite, da je niz char zvezda. 151 00:06:37,170 --> 00:06:41,360 Torej y je kazalec na prvi lik v katerikoli niz je 152 00:06:41,360 --> 00:06:43,510 da uporabnik vnese preko tipkovnice. 153 00:06:43,510 --> 00:06:47,070 In da je spomin se zgodi, da se malloced, tako, da je pomnilnik v kup. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> Vprašanje 13. 156 00:06:50,450 --> 00:06:51,960 Razmislite o programu spodaj. 157 00:06:51,960 --> 00:06:55,579 Tako da vse ta program počne je printf-ing 1 deljeno z 10. 158 00:06:55,579 --> 00:06:57,370 Torej pri zbiranju in izvajajo ta program 159 00:06:57,370 --> 00:07:01,170 izhodi 0.0, čeprav 1 deljeno z 10 je 0,1. 160 00:07:01,170 --> 00:07:02,970 Torej, zakaj je 0.0? 161 00:07:02,970 --> 00:07:05,510 No, to pa zato, ker za deljenje celih. 162 00:07:05,510 --> 00:07:08,580 Torej 1 je celo število, 10 je celo število. 163 00:07:08,580 --> 00:07:11,980 Torej 1 deljeno z 10, vse se obravnava kot cela števila, 164 00:07:11,980 --> 00:07:16,380 in C, ko bomo deljenje celih števil, smo skrajšajte vsako decimalno vejico. 165 00:07:16,380 --> 00:07:19,590 Torej 1 deljeno z 10 je 0, nato pa skušamo 166 00:07:19,590 --> 00:07:24,410 za tiskanje, ki kot likvidna sredstva, zato nič natisnjena kot likvidna sredstva, je 0,0. 167 00:07:24,410 --> 00:07:27,400 In zato smo dobili 0,0. 168 00:07:27,400 --> 00:07:28,940 >> Razmislite o programu spodaj. 169 00:07:28,940 --> 00:07:31,280 Zdaj smo tiskanje 0.1. 170 00:07:31,280 --> 00:07:34,280 Tako da ni celo število delitev, smo samo tiskanje 0,1, 171 00:07:34,280 --> 00:07:37,100 vendar smo ga za tiskanje na 28 decimalnih mest. 172 00:07:37,100 --> 00:07:41,810 In smo dobili to 0,1000, cel kup ničel, 5 5 5, blah blah blah. 173 00:07:41,810 --> 00:07:45,495 Torej je vprašanje, zakaj to počne tukaj tiskanje, da namesto natanko 0,1? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Torej razlog, tukaj je zdaj plavajočo vejico nenatančnosti. 176 00:07:49,640 --> 00:07:53,410 Ne pozabite, da je plovec samo 32 bitov. 177 00:07:53,410 --> 00:07:57,540 Tako bomo lahko predstavlja le končno število s plavajočo vejico s tistimi 32 178 00:07:57,540 --> 00:07:58,560 bitov. 179 00:07:58,560 --> 00:08:01,760 No, tam je na koncu neskončno veliko plavajočo vejico, 180 00:08:01,760 --> 00:08:04,940 in tam je neskončno mnogo plavajoči točkovne vrednosti v med 0 in 1, 181 00:08:04,940 --> 00:08:07,860 in smo očitno sposobni predstavljajo še več vrednosti, kot to. 182 00:08:07,860 --> 00:08:13,230 Zato moramo žrtvovati za lahko predstavljajo večino vrednosti. 183 00:08:13,230 --> 00:08:16,960 >> Tako vrednost kot 0,1, očitno ne moremo predstavljati, da je točno. 184 00:08:16,960 --> 00:08:22,500 Torej, namesto, ki predstavlja 0,1 delamo najboljše, kar lahko predstavlja to 0.100000 5 5 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 In to je zelo blizu, vendar za veliko aplikacij 187 00:08:26,306 --> 00:08:28,430 boste morali skrbeti plavajočo vejico nenatančnosti, 188 00:08:28,430 --> 00:08:30,930 ker preprosto ne moremo predstavljati vse plavajoče točke natančno. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> Vprašanje 15. 191 00:08:33,380 --> 00:08:34,679 Razmislite kodo spodaj. 192 00:08:34,679 --> 00:08:36,630 Mi samo tiskanje 1 plus 1. 193 00:08:36,630 --> 00:08:38,289 Torej ni trik tukaj. 194 00:08:38,289 --> 00:08:41,780 1 plus 1 ovrednoti na 2, in Nato smo tiskanjem da. 195 00:08:41,780 --> 00:08:42,789 To preprosto natisne 2. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> Vprašanje 16. 198 00:08:44,700 --> 00:08:49,450 Zdaj smo natisnili značaja 1 plus 1 znak. 199 00:08:49,450 --> 00:08:52,110 Torej, zakaj se to ne počne natisniti isto stvar? 200 00:08:52,110 --> 00:08:57,680 No znak 1 plus znak 1 znak 1 ima ASCII vrednost 49. 201 00:08:57,680 --> 00:09:04,840 Torej, to se pravi: 49 plus 49, in navsezadnje to se bo tiskanje 98. 202 00:09:04,840 --> 00:09:06,130 Tako da to ne natisne 2. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> Vprašanje 17. 205 00:09:09,271 --> 00:09:11,520 Dokončati izvedbo čudno spodaj tako 206 00:09:11,520 --> 00:09:14,615 da funkcija vrne true, če n je čudno, in false, če je n celo. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 To je velik cilj za mod operaterja. 209 00:09:19,330 --> 00:09:24,530 Torej vzamemo argumenta n, če je n mod 2 enaka 1, ter 210 00:09:24,530 --> 00:09:28,030 to pomeni, da je n razdelimo z 2 imel preostanek. 211 00:09:28,030 --> 00:09:33,270 Če je n 2, deljeno s še eno preostalem, da pomeni, da je n liho, zato smo se vrnili res. 212 00:09:33,270 --> 00:09:34,910 Else vrnemo false. 213 00:09:34,910 --> 00:09:39,070 Lahko so tudi storili n mod 2 enaka nič, vrne false, sicer vrne true. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Razmislite rekurzivno funkcijo spodaj. 216 00:09:43,640 --> 00:09:46,920 Torej, če je n manj kot ali enaka 1, vrne 1, 217 00:09:46,920 --> 00:09:50,430 drugje donos n krat f n minus 1. 218 00:09:50,430 --> 00:09:52,556 Torej, kaj je ta funkcija? 219 00:09:52,556 --> 00:09:54,305 No, to je samo faktorski funkcija. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 To je lepo zastopana kot n fakulteto. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Torej, vprašanje je sedaj 19, želimo Ob tej rekurzivno funkcijo. 224 00:10:02,310 --> 00:10:04,530 Želimo, da bi se ponavlja. 225 00:10:04,530 --> 00:10:05,874 Torej, kako to storimo? 226 00:10:05,874 --> 00:10:07,790 Tudi za zaposlene raztopina, in spet tam 227 00:10:07,790 --> 00:10:11,090 več načinov, kako bi lahko naredili da smo začeli s tem int izdelka 228 00:10:11,090 --> 00:10:11,812 enaka 1. 229 00:10:11,812 --> 00:10:13,520 In ves ta zanko, gremo 230 00:10:13,520 --> 00:10:17,590 da se pomnoži proizvod na koncu končajo s polnim fakulteto. 231 00:10:17,590 --> 00:10:21,870 Torej za int i je enak 2, i manjša ali enaka n, i ++. 232 00:10:21,870 --> 00:10:24,130 >> Morda se sprašujete, zakaj sem enak 2. 233 00:10:24,130 --> 00:10:28,380 No, ne pozabite, da imamo tu na poskrbite, da je naša osnovna pravilna. 234 00:10:28,380 --> 00:10:32,180 Torej, če je n manj kot ali enaka 1, smo le vračajo 1. 235 00:10:32,180 --> 00:10:34,830 Torej, tukaj smo začeli na i je enak 2. 236 00:10:34,830 --> 00:10:39,090 No, če bi bil jaz 1, nato the-- ali če so n 1, nato pa za zanko 237 00:10:39,090 --> 00:10:40,600 ne bi izvršitev sploh. 238 00:10:40,600 --> 00:10:43,190 In tako bi mi prav Vračilo izdelek, ki je 1. 239 00:10:43,190 --> 00:10:45,920 Podobno, so bili, če je n nič manj kot 1-- 240 00:10:45,920 --> 00:10:49,290 če bi bilo 0, negativna 1, whatever-- še vedno bi se vrača 1, 241 00:10:49,290 --> 00:10:52,260 kar je točno to, kar rekurzivni različica počne. 242 00:10:52,260 --> 00:10:54,660 >> Zdaj, če je n večji od 1, nato pa si bomo 243 00:10:54,660 --> 00:10:56,550 narediti vsaj eno iteracija te zanke. 244 00:10:56,550 --> 00:11:00,630 Torej, recimo, da je n 5, nato pa smo storili večkrat izdelkov enak 2. 245 00:11:00,630 --> 00:11:02,165 Torej, zdaj je izdelek 2. 246 00:11:02,165 --> 00:11:04,040 Zdaj bomo storili krat izdelka enaka 3. 247 00:11:04,040 --> 00:11:04,690 Zdaj je 6. 248 00:11:04,690 --> 00:11:07,500 Krat izdelka enaka 4, zdaj pa je 24. 249 00:11:07,500 --> 00:11:10,420 Krat izdelka enaka 5, zdaj je 120. 250 00:11:10,420 --> 00:11:16,730 Torej v končni fazi, smo se vračajo 120, ki je pravilno 5 fakulteto. 251 00:11:16,730 --> 00:11:17,510 >> Vprašanje 20. 252 00:11:17,510 --> 00:11:22,480 To je tista, v kateri ste morali izpolniti v tej tabeli s danem algoritmu 253 00:11:22,480 --> 00:11:25,735 vse, kar smo videli, da prilega te algoritmično tek 254 00:11:25,735 --> 00:11:28,060 krat ti asimptotske časi delovanja. 255 00:11:28,060 --> 00:11:33,270 Torej, kaj je algoritem, ki je omega 1, a big O n? 256 00:11:33,270 --> 00:11:35,970 Tako bi lahko prišlo do neskončno več odgovorov tukaj. 257 00:11:35,970 --> 00:11:39,790 Tisti, ki smo videli verjetno najbolj Pogosto je samo linearno iskanje. 258 00:11:39,790 --> 00:11:42,050 >> Torej v najboljšem primeru scenarij, postavka smo 259 00:11:42,050 --> 00:11:44,050 išče je na začetek seznama 260 00:11:44,050 --> 00:11:47,400 in tako z omega od 1 korakov, Prva stvar, ki jo želite preveriti, 261 00:11:47,400 --> 00:11:49,740 smo samo takoj vrniti da smo našli postavko. 262 00:11:49,740 --> 00:11:52,189 V najslabšem primeru, postavka je na koncu, 263 00:11:52,189 --> 00:11:53,730 ali element ni na seznamu sploh. 264 00:11:53,730 --> 00:11:56,700 Zato moramo iskati Celoten seznam, vse n 265 00:11:56,700 --> 00:11:58,480 elemente, in to je razlog, zakaj je o n. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Torej, sedaj pa je nekaj, kar je tako omega n log n in big O n log n. 268 00:12:04,880 --> 00:12:08,650 No, najbolj pomembna stvar smo videli tu zlivanjem. 269 00:12:08,650 --> 00:12:12,950 Torej z zlivanjem, se spomnite, navsezadnje Theta 270 00:12:12,950 --> 00:12:16,920 n log n, kjer je theta opredeljen če sta oba omega in velik O isti. 271 00:12:16,920 --> 00:12:17,580 Tako n log n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Kaj je nekaj, kar je omega n in O n na kvadrat? 274 00:12:21,970 --> 00:12:23,990 No, spet tam več možnih odgovorov. 275 00:12:23,990 --> 00:12:26,440 Tu se zgodi, da rečem mehurček vrste. 276 00:12:26,440 --> 00:12:28,840 Vstavitev nekako bi tudi deloval. 277 00:12:28,840 --> 00:12:31,400 Ne pozabite, da mehurček vrste ima to optimizacijo kjer, 278 00:12:31,400 --> 00:12:34,630 če ste sposobni, da bi dobili skozi celoten seznam 279 00:12:34,630 --> 00:12:37,402 ne da bi morali storiti morebitne zamenjave, potem, no, 280 00:12:37,402 --> 00:12:40,110 bomo lahko takoj vrne, da Seznam je bil razvrščen na začetku. 281 00:12:40,110 --> 00:12:43,185 Torej v najboljšem primeru to je samo omega n. 282 00:12:43,185 --> 00:12:45,960 Če to ni samo lepo razporejene seznam za začetek, 283 00:12:45,960 --> 00:12:48,270 potem imamo O n kvadrat zamenjavami. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 In končno, imamo izbire vrste za n kvadrat, tako omega in velika O. 286 00:12:55,610 --> 00:12:56,850 >> Vprašanje 21. 287 00:12:56,850 --> 00:12:58,870 Kaj je celo overflow? 288 00:12:58,870 --> 00:13:02,160 No spet, podobna prej, imamo le finitely veliko bitov 289 00:13:02,160 --> 00:13:04,255 da predstavljajo celo število, tako da morda 32 bitov. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 Recimo, da imamo podpisano celo število. 292 00:13:09,180 --> 00:13:12,800 Nato pa na koncu najvišje pozitivno število moremo predstavljati 293 00:13:12,800 --> 00:13:15,910 2 do 31 minus 1. 294 00:13:15,910 --> 00:13:19,370 Torej, kaj se zgodi, če skušamo nato prirastek to celo? 295 00:13:19,370 --> 00:13:25,320 No, bomo šli od 2 do 31 minus 1, vse tja do negativnega 2 296 00:13:25,320 --> 00:13:26,490 do 31. 297 00:13:26,490 --> 00:13:29,470 Torej, to je celo overflow ko boste obdržali povečevanje, 298 00:13:29,470 --> 00:13:32,330 in na koncu ne moreš dobili koli višje in to samo 299 00:13:32,330 --> 00:13:34,520 obloge vso pot nazaj okoli negativno vrednost. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Kaj pa buffer overflow? 302 00:13:37,779 --> 00:13:39,820 Torej buffer overflow-- spomnite, kaj je buffer. 303 00:13:39,820 --> 00:13:41,000 To je samo kos pomnilnika. 304 00:13:41,000 --> 00:13:43,350 Nekaj ​​podobnega array je buffer. 305 00:13:43,350 --> 00:13:46,120 Torej buffer overflow je, ko ko skuša dostopiti do pomnilnika 306 00:13:46,120 --> 00:13:47,880 po koncu tega niza. 307 00:13:47,880 --> 00:13:50,410 Torej, če imate matrika velikosti 5 in vas 308 00:13:50,410 --> 00:13:53,700 poskušali dostopati matrike nosilec 5 ali 6 nosilec ali nosilec 7, 309 00:13:53,700 --> 00:13:56,610 ali kaj dlje konec, ali pa celo nič 310 00:13:56,610 --> 00:14:00,790 below-- matrika nosilec negativen 1-- vseh tistih, ki so varovalni preplavljena. 311 00:14:00,790 --> 00:14:02,810 Ste dotika spomin na slabe načine. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> Vprašanje 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 Tako da v tem tistega, ki ga potrebujete izvajati strlen. 316 00:14:09,100 --> 00:14:11,630 In vam povem, da si lahko prevzame s ne bo null, 317 00:14:11,630 --> 00:14:13,790 tako da ne bi bilo treba storiti vse ček za nično. 318 00:14:13,790 --> 00:14:16,190 In obstaja več načinov lahko bi to naredil. 319 00:14:16,190 --> 00:14:18,440 Tu vzemite enostavna. 320 00:14:18,440 --> 00:14:21,780 Začnemo s števcem, n. n je Računamo, koliko znakov obstaja. 321 00:14:21,780 --> 00:14:25,560 Tako smo začeli na 0, nato pa smo Ponovil skozi celoten seznam. 322 00:14:25,560 --> 00:14:29,092 >> Je y nosilec 0 enaka null terminator lik? 323 00:14:29,092 --> 00:14:31,425 Zapomni si iščemo null terminator znak 324 00:14:31,425 --> 00:14:33,360 določiti, kako dolgo je naša niz je. 325 00:14:33,360 --> 00:14:35,890 To se dogaja, da prekine vse pomembne niz. 326 00:14:35,890 --> 00:14:39,400 Torej je s oklepaj 0 enaka na null terminator? 327 00:14:39,400 --> 00:14:42,850 Če ni, potem si bomo poglej ov nosilec 1, e 2 konzoli. 328 00:14:42,850 --> 00:14:45,050 Še naprej bomo, dokler ne bomo najti null terminator. 329 00:14:45,050 --> 00:14:48,580 Ko smo ga našli, potem n vsebuje Skupna dolžina niza, 330 00:14:48,580 --> 00:14:49,942 in bomo lahko samo, da se vrnete. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> Vprašanje 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Torej, to je tista, v kateri ste morali narediti kompromis. 335 00:14:56,050 --> 00:14:59,810 Torej, ena stvar, ki je dobra v enem način, vendar na kakšen način je to slabo? 336 00:14:59,810 --> 00:15:02,980 Torej, tukaj, z zlivanjem nagiba k hitreje kot nekakšen mehurček. 337 00:15:02,980 --> 00:15:06,530 Ob dejal that-- dobro, tam je več odgovorov tukaj. 338 00:15:06,530 --> 00:15:12,930 Ampak glavno pa je, da mehurček vrste je omega n za urejenem seznamu. 339 00:15:12,930 --> 00:15:14,950 >> Ne pozabite, da tabelo smo pravkar videli prej. 340 00:15:14,950 --> 00:15:17,600 Torej bubble razvrsti omega n, najboljši scenarij 341 00:15:17,600 --> 00:15:20,010 je, da je lahko samo iti čez Seznam enkrat, določi 342 00:15:20,010 --> 00:15:22,270 hej ta stvar je že razporejene in povratka. 343 00:15:22,270 --> 00:15:25,960 Zlivanjem, ne glede na to, kaj boste to storili, je omega n log n. 344 00:15:25,960 --> 00:15:29,200 Torej za razvrščen seznam mehurček nekako se dogaja, da se hitreje. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Kaj pa zdaj povezan sezname? 347 00:15:32,430 --> 00:15:36,070 Tako lahko povezani seznam raste in krčila da se prilega toliko elementov, kot je potrebno. 348 00:15:36,070 --> 00:15:38,489 Ob dejal, da that-- običajno neposredna primerjava 349 00:15:38,489 --> 00:15:40,280 se bo povezana seznam s paleto. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Torej, čeprav lahko nizi hitro raste in krčila 352 00:15:44,050 --> 00:15:47,130 da se prilega kot mnoge elemente kot je potrebno, povezani seznam 353 00:15:47,130 --> 00:15:49,600 primerjavi z array-- AN Niz ima naključni dostop. 354 00:15:49,600 --> 00:15:52,960 Mi lahko kazalo v katero koli Zlasti element matrike. 355 00:15:52,960 --> 00:15:56,430 >> Tako za povezani seznam, ne moremo pojdite na peti element, 356 00:15:56,430 --> 00:16:00,260 moramo prečkati od začetka dokler ne pridemo do petega elementa. 357 00:16:00,260 --> 00:16:03,990 In to se dogaja, da nam preprečujejo delaš nekaj podobnega binarno iskanje. 358 00:16:03,990 --> 00:16:08,150 Ko že govorimo o binarni iskanje, binarno iskanje kaže, da je hitreje kot linearno iskanje. 359 00:16:08,150 --> 00:16:11,120 Ob dejal that-- tako, ena možna stvar 360 00:16:11,120 --> 00:16:13,380 je, da ne moreš narediti binarno iskanje na povezanih seznamov, 361 00:16:13,380 --> 00:16:14,730 lahko to stori le na nizi. 362 00:16:14,730 --> 00:16:18,030 Verjetno pa je še pomembneje, ne moreš narediti binarno iskanje 363 00:16:18,030 --> 00:16:20,690 na paleto, ki ni razvrščena. 364 00:16:20,690 --> 00:16:23,990 Vnaprej boste morda morali razvrstiti matrika, in šele nato lahko 365 00:16:23,990 --> 00:16:25,370 vam binarno iskanje. 366 00:16:25,370 --> 00:16:27,660 Torej, če je vaša stvar, ki je ne urejene tako, da začnete z, 367 00:16:27,660 --> 00:16:29,250 potem bi linearna iskanje hitrejše. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> Vprašanje 27. 370 00:16:31,740 --> 00:16:34,770 Tako menijo program spodaj, ki bo v naslednji diapozitiv. 371 00:16:34,770 --> 00:16:37,790 In to je tista, v kateri smo želeli izrecno navesti 372 00:16:37,790 --> 00:16:39,980 vrednosti za različne spremenljivke. 373 00:16:39,980 --> 00:16:41,990 Tako da je pogled na to. 374 00:16:41,990 --> 00:16:43,160 >> Torej liniji. 375 00:16:43,160 --> 00:16:45,457 Imamo int x enak 1. 376 00:16:45,457 --> 00:16:47,040 To je edina stvar, ki se je zgodilo. 377 00:16:47,040 --> 00:16:50,440 Torej na prvi liniji, vidimo v našem tabela, da y, b, in TMP vse 378 00:16:50,440 --> 00:16:51,540 Stemnilo ven. 379 00:16:51,540 --> 00:16:52,280 Torej, kaj je x? 380 00:16:52,280 --> 00:16:53,860 Pa smo le nastavljena enaka 1. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 In potem vrstico dve, no, vidimo, da je y nastavljen na 2, 383 00:16:58,770 --> 00:17:00,550 in miza je že izpolniti za nas. 384 00:17:00,550 --> 00:17:03,040 Torej je x 1 in je y 2. 385 00:17:03,040 --> 00:17:05,890 >> Zdaj, linija tri, smo zdaj znotraj funkcije zamenjavi. 386 00:17:05,890 --> 00:17:07,560 Kaj se peljemo, da bi zamenjali? 387 00:17:07,560 --> 00:17:11,609 Smo opravili znak pove x za in znaka & y za b. 388 00:17:11,609 --> 00:17:15,160 Če težava prej navedla, da naslov x 389 00:17:15,160 --> 00:17:17,520 je 0x10 in naslov y je 0x14. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Torej in b sta enaka 0x10 in 0x14 oz. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Zdaj na liniji tri, kaj sta x in y? 394 00:17:26,250 --> 00:17:28,554 No, se ni nič spremenilo okoli x in y na tej točki. 395 00:17:28,554 --> 00:17:30,470 Čeprav oni znotraj glavnega dimnika okvirjem, 396 00:17:30,470 --> 00:17:32,469 imajo še vedno enaka Vrednosti so naredili prej. 397 00:17:32,469 --> 00:17:34,030 Nismo spreminjali spomin. 398 00:17:34,030 --> 00:17:35,710 Torej je x 1, y 2. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Vse je v redu. 401 00:17:37,050 --> 00:17:40,300 Torej, zdaj smo rekli int tmp enaka zvezda. 402 00:17:40,300 --> 00:17:44,410 Torej na liniji štiri, vse je enaka, razen za tmp. 403 00:17:44,410 --> 00:17:47,130 Nismo spremenili nobene vrednosti ničesar razen tmp. 404 00:17:47,130 --> 00:17:49,230 Postavljamo tmp enak zvezda. 405 00:17:49,230 --> 00:17:50,620 Kaj je zvezda? 406 00:17:50,620 --> 00:17:56,240 No, a kaže na x, torej zvezda bo enaka x, ki je 1. 407 00:17:56,240 --> 00:18:00,080 Torej je vse kopira navzdol, in je TMP nastavljen na 1. 408 00:18:00,080 --> 00:18:01,110 >> Zdaj naslednji vrstici. 409 00:18:01,110 --> 00:18:03,380 Star je enaka zvezda b. 410 00:18:03,380 --> 00:18:10,000 Torej po liniji five-- dobro spet vse je enaka, razen glede zvezda je. 411 00:18:10,000 --> 00:18:10,830 Kaj je zvezda? 412 00:18:10,830 --> 00:18:13,720 No, mi je pravkar dejal zvezda je x. 413 00:18:13,720 --> 00:18:16,400 Tako da smo spreminjanje x do enakega zvezdic b. 414 00:18:16,400 --> 00:18:18,960 Kaj je zvezda b? y. b točke na y. 415 00:18:18,960 --> 00:18:21,030 Torej zvezda je b y. 416 00:18:21,030 --> 00:18:25,140 Tako da smo nastavitev x enak y, in vse ostalo je isto. 417 00:18:25,140 --> 00:18:29,130 Tako vidimo v naslednji vrstici, ki je zdaj x 2, in ostali so samo kopirali navzdol. 418 00:18:29,130 --> 00:18:31,120 >> Zdaj v naslednjo vrstico, zvezda b enaka tmp. 419 00:18:31,120 --> 00:18:34,740 No, mi je pravkar dejal zvezda b je y, tako da smo nastavitev y enaka tmp. 420 00:18:34,740 --> 00:18:37,450 Vse ostalo je enako, da dobi vse kopirali navzdol. 421 00:18:37,450 --> 00:18:42,050 Mi nastavitev y enak NTU, ki je on, in vse ostalo je enako. 422 00:18:42,050 --> 00:18:43,210 >> Zdaj končno, linija sedem. 423 00:18:43,210 --> 00:18:44,700 Vrnili smo se v glavno funkcijo. 424 00:18:44,700 --> 00:18:46,350 Mi smo po swap končan. 425 00:18:46,350 --> 00:18:48,972 Izgubili smo A, B, in tmp, toda na koncu smo 426 00:18:48,972 --> 00:18:51,180 se ne spreminja katerokoli vrednost karkoli na tej točki, 427 00:18:51,180 --> 00:18:52,800 smo samo kopirajte X in Y navzdol. 428 00:18:52,800 --> 00:18:56,490 In vidimo, da sta X in Y zdaj 2 in 1 namesto 1 in 2. 429 00:18:56,490 --> 00:18:58,160 Swap je uspešno izvedena. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> Vprašanje 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Denimo, da ste naleteli na sporočila o napakah 434 00:19:03,100 --> 00:19:06,790 Spodaj v času uradnih ur prihodnje leto kot CA ali TF. 435 00:19:06,790 --> 00:19:08,930 Svetuje, kako popraviti vsako od teh napak. 436 00:19:08,930 --> 00:19:11,160 Torej undefined sklicevanje na GetString. 437 00:19:11,160 --> 00:19:12,540 Zakaj lahko vidite to? 438 00:19:12,540 --> 00:19:15,380 No, če študent uporablja GetString v svojem kodeksu, 439 00:19:15,380 --> 00:19:20,310 so Hash ustrezno vključeni CS50 dot h vključuje knjižnico CS50. 440 00:19:20,310 --> 00:19:22,380 >> No, kaj so morali to popraviti? 441 00:19:22,380 --> 00:19:26,810 Morajo storiti pomišljaj lcs50 na ukazni vrstici, ko si ponovno prevesti. 442 00:19:26,810 --> 00:19:29,501 Torej, če ne preide Jek dash lcs50, oni 443 00:19:29,501 --> 00:19:32,000 ne dogaja, da imajo dejansko kodo, ki izvaja GetString. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> Vprašanje 29. 446 00:19:34,170 --> 00:19:36,190 Implicitno razglasi Funkcija knjižnica strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 No to sedaj, pa niso narejeno pravilno hash vključujejo. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 V tem konkretnem primeru je datoteka glava morajo vključiti, je niz dot h, 451 00:19:45,410 --> 00:19:48,710 vključno godalni dot h, zdaj student-- sedaj prevajalnik 452 00:19:48,710 --> 00:19:51,750 ima dostop do Izjave strlen, 453 00:19:51,750 --> 00:19:54,120 in ve, da kodo uporablja strlen pravilno. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> Vprašanje 30. 456 00:19:56,580 --> 00:20:00,240 Več odstotka konverzije od argumentov podatkov. 457 00:20:00,240 --> 00:20:01,540 Torej, kaj je to? 458 00:20:01,540 --> 00:20:06,470 Dobro se spominjam, da so ti odstotkov signs-- kako oni so pomembni za printf. 459 00:20:06,470 --> 00:20:08,890 Torej, v printf bi mi percent-- smo lahko natisnete nekaj 460 00:20:08,890 --> 00:20:11,380 kot odstotek i n poševnica nazaj. 461 00:20:11,380 --> 00:20:15,310 Ali bi lahko tiskamo kot odstotno i, prostor, odstotka i, prostor, odstotka i. 462 00:20:15,310 --> 00:20:18,950 Torej za vsakega od tistih, znaki za odstotek, se moramo 463 00:20:18,950 --> 00:20:21,560 prenesti spremenljivko konec printf. 464 00:20:21,560 --> 00:20:26,980 >> Torej, če rečemo printf paren odstotkov i n poševnica nazaj tesne paren, 465 00:20:26,980 --> 00:20:30,270 dobro, smo rekli, da smo tiskanjem celo število, 466 00:20:30,270 --> 00:20:33,970 potem pa mi ne gre printf število dejansko natisniti. 467 00:20:33,970 --> 00:20:37,182 Tako da tukaj več odstotkov pretvorbe od argumentov podatkov? 468 00:20:37,182 --> 00:20:39,390 Ki je rekel, da imamo cel kup odstotkih, 469 00:20:39,390 --> 00:20:42,445 in nimamo dovolj spremenljivk dejansko izpolnite v teh odstotkih. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> In potem zagotovo, pri vprašanju 31, dokončno izgubil 40 bajtov v enem blokov. 472 00:20:50,010 --> 00:20:52,350 Tako da je to napaka Valgrind. 473 00:20:52,350 --> 00:20:54,720 To se pravi, da nekje v kodi, 474 00:20:54,720 --> 00:20:59,010 imate dodelitev, ki je 40 bajta velika, tako da malloced 40 bajtov, 475 00:20:59,010 --> 00:21:00,515 in nikoli ga osvobodili. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 Najverjetneje morate samo da bi našli nekaj pomnilnika, 478 00:21:05,140 --> 00:21:07,650 in našli, če boste morali sprostiti ta blok pomnilnika. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> In vprašanje 32, neveljavna write velikosti 4. 481 00:21:11,910 --> 00:21:13,250 Tudi to je napaka Valgrind. 482 00:21:13,250 --> 00:21:15,440 To pa ni treba narediti v spomin razpoka zdaj. 483 00:21:15,440 --> 00:21:20,750 To je najbolj likely-- Mislim, da je nekakšen neveljavnih pravic pomnilnik. 484 00:21:20,750 --> 00:21:23,270 In najverjetneje je to nekaj neke vrste buffer overflow. 485 00:21:23,270 --> 00:21:26,560 Kjer imate niz, morda celo paleto in dovolimo, 486 00:21:26,560 --> 00:21:30,115 pravijo, da je velikosti 5, in si poskusite dotik matrično nosilec 5. 487 00:21:30,115 --> 00:21:34,150 Torej, če boste poskušali pisati, da vrednost, ki ni kos pomnilnika 488 00:21:34,150 --> 00:21:37,440 da ste dejansko imajo dostop do informacij in tako da boste dobili to napako, 489 00:21:37,440 --> 00:21:39,272 rekoč neveljavno pisanje velikosti 4. 490 00:21:39,272 --> 00:21:42,480 Valgrind se dogaja, da priznajo, da ste poskušamo dotakniti spomin neprimerno. 491 00:21:42,480 --> 00:21:43,980 >> In to je to za quiz0. 492 00:21:43,980 --> 00:21:47,065 Jaz sem Rob Bowden, in to je CS50. 493 00:21:47,065 --> 00:21:51,104