1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 ROB BOWDEN: Szia, én vagyok Rob Bowden, és beszéljünk quiz0. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Szóval, az első kérdés. 5 00:00:14,545 --> 00:00:17,750 Ez az a kérdés, ahol Ön kódolásához szükséges szám 6 00:00:17,750 --> 00:00:21,270 127 bináris izzók. 7 00:00:21,270 --> 00:00:23,550 Ha akarta, akkor nem a rendes átalakítás 8 00:00:23,550 --> 00:00:25,950 származó bi-- vagy a decimális bináris. 9 00:00:25,950 --> 00:00:28,300 De ami talán megy hogy egy csomó időt. 10 00:00:28,300 --> 00:00:31,750 Úgy értem, akkor rájövünk, hogy, OK, 1 ott 2 van ott, 11 00:00:31,750 --> 00:00:33,650 4. ott, 8 ott. 12 00:00:33,650 --> 00:00:39,280 Könnyebb út, 127 128 mínusz egy. 13 00:00:39,280 --> 00:00:42,013 Ez a bal oldali izzó a 128 bit. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Tehát 127 tényleg csak minden A többi izzók, 16 00:00:47,860 --> 00:00:51,420 mivel ez a bal szélső izzó mínusz 1. 17 00:00:51,420 --> 00:00:52,800 Ez azt a kérdést. 18 00:00:52,800 --> 00:00:54,060 >> Kérdés egy. 19 00:00:54,060 --> 00:00:56,710 Tehát 3 bit tudsz képvisel 8 különböző értékeket. 20 00:00:56,710 --> 00:01:01,000 Akkor miért 7 a legnagyobb nem-negatív decimális egész akkor képvisel? 21 00:01:01,000 --> 00:01:04,050 Nos, ha csak 8 különböző értéket képviselnek, 22 00:01:04,050 --> 00:01:07,430 akkor mi leszünk képviselő a 0-tól 7. 23 00:01:07,430 --> 00:01:08,745 0 vesz fel az egyik értéket. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Kérdés kettő. 26 00:01:11,190 --> 00:01:14,610 Az n bit, hány különböző értékeket képviselt? 27 00:01:14,610 --> 00:01:19,080 Tehát n bit, van 2 lehetséges értékeket minden bit. 28 00:01:19,080 --> 00:01:22,300 Tehát van 2 lehetséges értéke az első bit, 2 lehetséges értékei 29 00:01:22,300 --> 00:01:24,450 a második, 2 lehetséges, hogy a harmadik. 30 00:01:24,450 --> 00:01:28,730 És ez 2-szer 2-szer 2-es és végül a válasz 2 n. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Kérdés három. 33 00:01:31,100 --> 00:01:33,450 Mi 0x50 bináris? 34 00:01:33,450 --> 00:01:39,490 Úgy emlékszem, hogy a hexadecimális nagyon egyszerű átalakítás bináris. 35 00:01:39,490 --> 00:01:43,180 Tehát itt, csak meg kell nézni az 5, és a 0 függetlenül. 36 00:01:43,180 --> 00:01:45,110 Szóval mi 5 bináris? 37 00:01:45,110 --> 00:01:48,400 0101, ez az 1 bit és 4 bit. 38 00:01:48,400 --> 00:01:49,900 Mi 0. bináris? 39 00:01:49,900 --> 00:01:50,520 Nem bonyolult. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Tehát csak őket össze, és ez a teljes szám binárisan. 42 00:01:54,970 --> 00:01:57,640 01.010.000. 43 00:01:57,640 --> 00:02:00,439 És ha akartam, lehetett vegye le, hogy a legbaloldalibb nulla. 44 00:02:00,439 --> 00:02:01,105 Ez lényegtelen. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Szóval akkor alternatívaként, mi van 0x50 tizedes? 47 00:02:05,733 --> 00:02:08,649 Ha akarta, akkor could-- ha kényelmesebb a bináris, 48 00:02:08,649 --> 00:02:11,340 meg tudná venni, hogy a bináris válasz és átalakítani, hogy a tizedes át. 49 00:02:11,340 --> 00:02:13,870 Vagy tudnánk emlékezni hogy hexadecimális. 50 00:02:13,870 --> 00:02:21,140 Annak érdekében, hogy a 0 a 0-ik helyen, és Az 5 van a 16 az első helyen. 51 00:02:21,140 --> 00:02:25,990 Tehát itt, van 5-ször 16-a első, plusz 0 alkalommal 16 a nulla, 52 00:02:25,990 --> 00:02:27,520 80. 53 00:02:27,520 --> 00:02:29,710 És ha nézte a cím arra a kérdésre, 54 00:02:29,710 --> 00:02:32,920 ez volt a CS 80, ami egyfajta tipp, hogy a válasz erre a problémára. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Kérdés öt. 57 00:02:35,420 --> 00:02:40,320 Van ez a Scratch script, ami 4-szer ismétlődő mogyoróvaj zselé. 58 00:02:40,320 --> 00:02:42,800 Szóval hogyan most kódot, hogy a C? 59 00:02:42,800 --> 00:02:47,730 Nos, mi a here-- részt merész az egyetlen olyan része kellett végrehajtani. 60 00:02:47,730 --> 00:02:51,950 Tehát van egy 4 hurok, ami hurkolás 4 alkalommal, printf-nek mogyoróvaj zselé, 61 00:02:51,950 --> 00:02:53,910 az új vonal, mint a probléma kér. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Kérdés hat másik Scratch probléma. 64 00:02:57,490 --> 00:03:00,210 Látjuk, hogy mi vagyunk a hurok örökre. 65 00:03:00,210 --> 00:03:05,000 Azt mondod, hogy az i változó majd megnő i 1. 66 00:03:05,000 --> 00:03:09,580 Most akarom, hogy a C. Van többféle módon tudtuk volna ezt. 67 00:03:09,580 --> 00:03:12,840 Itt történt, hogy a kódot örökre hurok a while (true). 68 00:03:12,840 --> 00:03:16,600 Így kijelentjük i változó, csak mint volt változó i Scratch. 69 00:03:16,600 --> 00:03:21,950 Állapítsa meg az i változó, és örökre while (true), akkor mondjuk az i változó. 70 00:03:21,950 --> 00:03:25,260 Így printf% én-- vagy lehetett volna használni:% d. 71 00:03:25,260 --> 00:03:27,985 Azt mondjuk, hogy a változó, és akkor megnöveljük, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Kérdés hét. 74 00:03:30,830 --> 00:03:35,560 Most akarok valami nagyon hasonlót Mario pont c a problémás beállított egy. 75 00:03:35,560 --> 00:03:39,110 Azt akarjuk, hogy nyomtatni ezeket hashtags, szeretnénk nyomtatni öt 76 00:03:39,110 --> 00:03:40,700 három téglalap ilyen hash-eket. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Szóval, hogyan fogjuk csinálni? 79 00:03:43,162 --> 00:03:45,370 Nos, kapsz egy egész csomó kód, és csak 80 00:03:45,370 --> 00:03:47,560 kell kitölteni a nyomtatási rács funkciót. 81 00:03:47,560 --> 00:03:49,540 >> Szóval, mit PrintGrid néz ki? 82 00:03:49,540 --> 00:03:51,480 Hát te vagy az elmúlt szélesség és a magasság. 83 00:03:51,480 --> 00:03:53,520 Tehát egy külső 4 hurok, ami loop 84 00:03:53,520 --> 00:03:57,650 át az összes a sorok az e rács, amit szeretnénk kinyomtatni. 85 00:03:57,650 --> 00:04:01,250 Aztán ott van az inter beágyazott 4 hurok, ez a nyomtatás az egyes oszlop. 86 00:04:01,250 --> 00:04:06,210 Így minden sorban, mi nyomtatásra minden oszlop, egy hash. 87 00:04:06,210 --> 00:04:10,045 Aztán a végén a sor akkor nyomtasson egy új sort, hogy menjen a következő sor. 88 00:04:10,045 --> 00:04:11,420 És ez az egész hálózatra. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Kérdés nyolc. 91 00:04:13,675 --> 00:04:17,170 A függvény mint PrintGrid azt mondta, hogy van egy mellékhatás, de nem a visszatérés 92 00:04:17,170 --> 00:04:17,670 érték. 93 00:04:17,670 --> 00:04:19,209 Magyarázza meg a különbséget. 94 00:04:19,209 --> 00:04:23,080 Szóval ez támaszkodik te emlékezve mi a mellékhatás is. 95 00:04:23,080 --> 00:04:25,180 Nos, a visszatérés value-- tudjuk PrintGrid nem 96 00:04:25,180 --> 00:04:28,180 van visszatérési értéke, mivel itt azt mondja semmis. 97 00:04:28,180 --> 00:04:31,150 Tehát bármi, ami visszaadja void nem igazán vissza semmit. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Tehát mi a mellékhatás? 100 00:04:33,620 --> 00:04:36,620 Nos, a jelentkező mellékhatások bármit, ami a fajta is fennáll 101 00:04:36,620 --> 00:04:39,500 miután a függvény véget ér hogy nem tért vissza, 102 00:04:39,500 --> 00:04:41,340 és ez nem csak a bemenet. 103 00:04:41,340 --> 00:04:44,970 >> Így, például, mi talán megváltoztat egy globális változót. 104 00:04:44,970 --> 00:04:46,590 Ez lenne egy mellékhatás. 105 00:04:46,590 --> 00:04:49,000 Ebben a konkrét esetben, egy Nagyon fontos mellékhatás 106 00:04:49,000 --> 00:04:51,070 nyomtatja a képernyőre. 107 00:04:51,070 --> 00:04:53,110 Így ez egy mellékhatás hogy PrintGrid van. 108 00:04:53,110 --> 00:04:54,980 Nyomtatunk ezeket a dolgokat a képernyőn. 109 00:04:54,980 --> 00:04:56,370 És tudod gondolni hogy mellékhatásként, 110 00:04:56,370 --> 00:04:58,690 mivel ez a valami, után is fennáll ez a funkció véget ér. 111 00:04:58,690 --> 00:05:01,481 Ez valami körén kívül eső ezt a funkciót, ami végül 112 00:05:01,481 --> 00:05:03,380 alatt megváltozott, az tartalmát a képernyőn. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Kérdés kilenc. 115 00:05:05,839 --> 00:05:07,880 Tekintsük az alábbi program, amelyhez sorszámok 116 00:05:07,880 --> 00:05:09,740 adtak a a vita kedvéért. 117 00:05:09,740 --> 00:05:13,480 Tehát ezt a programot csak hívás getString, tárolás 118 00:05:13,480 --> 00:05:16,220 Ez a változó s parancsot, majd kinyomtatná a változó s. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 Szóval, miért vonalon van jelen. 121 00:05:19,090 --> 00:05:20,920 #include CS50 pont h. 122 00:05:20,920 --> 00:05:23,820 Miért van szükségünk a #include CS50 pont h? 123 00:05:23,820 --> 00:05:26,180 Nos, mi a hívás GetString funkció, 124 00:05:26,180 --> 00:05:28,840 és getString meghatározása A CS50 könyvtárban. 125 00:05:28,840 --> 00:05:31,600 Tehát, ha nem is #include CS50 pont h, 126 00:05:31,600 --> 00:05:35,760 kapnánk, hogy az implicit nyilatkozat A getString függvény hiba 127 00:05:35,760 --> 00:05:36,840 a fordító. 128 00:05:36,840 --> 00:05:40,110 Tehát meg kell, hogy tartalmazza a library-- kell, hogy tartalmazza a header file, 129 00:05:40,110 --> 00:05:42,870 vagy pedig a fordító nem fog elismerik, hogy getString létezik. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Magyarázd meg, miért kettesen van jelen. 132 00:05:46,140 --> 00:05:47,890 Tehát szabványos io pont h. 133 00:05:47,890 --> 00:05:50,430 Ez pontosan ugyanaz mint a korábbi probléma, 134 00:05:50,430 --> 00:05:53,310 kivéve helyett foglalkozik GetString, beszélünk printf. 135 00:05:53,310 --> 00:05:56,654 Tehát, ha nem mondjuk meg kell hogy tartalmazzák a standard io pont h, 136 00:05:56,654 --> 00:05:58,820 akkor nem lesz képes használja a printf függvény, 137 00:05:58,820 --> 00:06:00,653 mert a fordító Nem tud róla. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Why-- mi a jelentősége A semmissé sorban négy? 140 00:06:05,260 --> 00:06:08,010 Tehát itt van int main (void). 141 00:06:08,010 --> 00:06:10,600 Ez csak annyit mondok, hogy Nem kapok semmilyen parancsot 142 00:06:10,600 --> 00:06:12,280 a fő érvek. 143 00:06:12,280 --> 00:06:17,390 Ne feledje, hogy azt mondhatjuk, int Fő int argc karakterlánc argv zárójelben. 144 00:06:17,390 --> 00:06:20,400 Tehát itt csak azt mondani, hogy érvénytelen figyelmen kívül hagyják parancssori paramétereket. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Magyarázza, tekintettel a memória, pontosan mi getString sorban hat vissza. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString visszatér a blokk memória, egy sor karaktert. 149 00:06:31,640 --> 00:06:34,870 Ez tényleg visszatér a mutató az első karaktert. 150 00:06:34,870 --> 00:06:37,170 Ne feledje, hogy a húr egy char kategóriájú. 151 00:06:37,170 --> 00:06:41,360 Így s egy mutató az első karakter bármilyen a húr 152 00:06:41,360 --> 00:06:43,510 hogy a felhasználó a billentyűzeten keresztül bevitt. 153 00:06:43,510 --> 00:06:47,070 És, hogy a memória előfordul, hogy malloced, hogy a memória a kupac. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> 13. kérdés. 156 00:06:50,450 --> 00:06:51,960 Tekintsük az alábbi program. 157 00:06:51,960 --> 00:06:55,579 Szóval az egész programot csinál A printf-nek 1 osztva 10-zel. 158 00:06:55,579 --> 00:06:57,370 Tehát, amikor összeállítják és végre, ez a program 159 00:06:57,370 --> 00:07:01,170 0.0 kimenetek, bár 1 osztva 10 0.1. 160 00:07:01,170 --> 00:07:02,970 Miért van ez 0.0? 161 00:07:02,970 --> 00:07:05,510 Nos, ez azért van, mert Az egész osztály. 162 00:07:05,510 --> 00:07:08,580 Így 1 egész szám, 10 egy egész szám. 163 00:07:08,580 --> 00:07:11,980 Tehát 1 osztva 10 minden kezelik egészek, 164 00:07:11,980 --> 00:07:16,380 és a C, mikor mi egész osztály, mi csonkolni bármely tizedes pont. 165 00:07:16,380 --> 00:07:19,590 Tehát 1 osztva 10 0, és akkor próbálunk 166 00:07:19,590 --> 00:07:24,410 nyomtatni, hogy mivel a float, így nulla nyomtatva a float 0.0. 167 00:07:24,410 --> 00:07:27,400 És ez az, amiért kap 0.0. 168 00:07:27,400 --> 00:07:28,940 >> Tekintsük az alábbi program. 169 00:07:28,940 --> 00:07:31,280 Most már a nyomtatás 0.1. 170 00:07:31,280 --> 00:07:34,280 Tehát nem egész osztály, mi csak a nyomtatás 0,1, 171 00:07:34,280 --> 00:07:37,100 de mi azt nyomtatás 28 tizedesjegy pontossággal. 172 00:07:37,100 --> 00:07:41,810 És hogy ez 0,1000, egy egész csomó A nulla, 5 5 5, bla-bla-bla. 173 00:07:41,810 --> 00:07:45,495 Tehát a kérdés az, hogy miért csinálja nyomtatni, hogy ahelyett, hogy pontosan 0,1? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Tehát az ok itt van most lebegőpontos pontatlanság. 176 00:07:49,640 --> 00:07:53,410 Ne feledje, hogy a float csak 32 bites. 177 00:07:53,410 --> 00:07:57,540 Tehát csak akkor jelenthet véges lebegőpontos értékek azok 32 178 00:07:57,540 --> 00:07:58,560 bit. 179 00:07:58,560 --> 00:08:01,760 Hát van végül végtelenül sok lebegőpontos értékek, 180 00:08:01,760 --> 00:08:04,940 és van végtelen sok úszó pont értékek 0 és 1 közötti, 181 00:08:04,940 --> 00:08:07,860 és mi nyilvánvalóan képesek jelentenek még több értéket, mint ezt. 182 00:08:07,860 --> 00:08:13,230 Tehát van, hogy áldozatokat képes képviselni legtöbb értékeket. 183 00:08:13,230 --> 00:08:16,960 >> Tehát az érték, mint a 0.1, látszólag nem tudjuk pontosan, hogy a képviselt. 184 00:08:16,960 --> 00:08:22,500 Tehát ahelyett, hogy képviselő 0,1 mi az legjobb, amit képviselni ezt 0.100000 5 5 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 És ez elég közel, de a sok alkalmazás 187 00:08:26,306 --> 00:08:28,430 Önnek nem kell aggódnia lebegőpontos pontatlanság, 188 00:08:28,430 --> 00:08:30,930 mert egyszerűen nem képviseli összes lebegő pontokat pontosan. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> 15. kérdés. 191 00:08:33,380 --> 00:08:34,679 Tekintsük az alábbi kódot. 192 00:08:34,679 --> 00:08:36,630 Mi csak a nyomtatás 1 plusz 1. 193 00:08:36,630 --> 00:08:38,289 Tehát nincs trükk itt. 194 00:08:38,289 --> 00:08:41,780 1 plusz 1 értékeli a 2. és akkor mi a nyomtatás azt. 195 00:08:41,780 --> 00:08:42,789 Ez mindig csak 2. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> 16. kérdés. 198 00:08:44,700 --> 00:08:49,450 Most már a nyomtatás a karakter 1 + 1 a karakter. 199 00:08:49,450 --> 00:08:52,110 Szóval, miért nem ez nyomtassa ugyanaz a dolog? 200 00:08:52,110 --> 00:08:57,680 Nos, a karakter 1 és a karakter 1, a karakter ASCII értéke 1-nek 49. 201 00:08:57,680 --> 00:09:04,840 Tehát ez valójában azt mondja: 49 plusz 49, és végül ez fog nyomtatni 98. 202 00:09:04,840 --> 00:09:06,130 Szóval ez nem nyomtat 2. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> 17. kérdés. 205 00:09:09,271 --> 00:09:11,520 Töltse ki a végrehajtás A páratlan alatt oly módon, 206 00:09:11,520 --> 00:09:14,615 hogy a függvény értéke igaz, ha n páratlan, és hamis, ha n páros. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 Ez egy nagy cél A mod operátor. 209 00:09:19,330 --> 00:09:24,530 Így vesszük érv n, ha n mod 2 egyenlő 1-gyel, valamint 210 00:09:24,530 --> 00:09:28,030 ez azt jelenti, hogy n megosztott 2 volt a maradék. 211 00:09:28,030 --> 00:09:33,270 Ha n osztva 2 volt a maradék, ami azt jelenti, hogy n páratlan, ezért vissza igaz. 212 00:09:33,270 --> 00:09:34,910 Különben visszatérünk hamis. 213 00:09:34,910 --> 00:09:39,070 Azt is lehetett volna n mod 2értéke nulla, return false, különben vissza igaz. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Tekintsük a rekurzív függvény alatt. 216 00:09:43,640 --> 00:09:46,920 Így ha n értéke kisebb, mint, vagy egyenlő 1-gyel, vissza 1, 217 00:09:46,920 --> 00:09:50,430 else return f n-szer n-mínusz 1. 218 00:09:50,430 --> 00:09:52,556 Szóval mi ez a funkció? 219 00:09:52,556 --> 00:09:54,305 Nos, ez csak a faktoriális függvény. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 Ezt szépen képviselteti magát n faktoriális. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Tehát kérdés 19 most, szeretnénk ezt rekurzív függvény. 224 00:10:02,310 --> 00:10:04,530 Azt szeretnénk, hogy az iteratív. 225 00:10:04,530 --> 00:10:05,874 Szóval hogyan lehet csinálni? 226 00:10:05,874 --> 00:10:07,790 Nos, a személyzet megoldás, és megint ott van 227 00:10:07,790 --> 00:10:11,090 többféle módon lehetett volna hogy kezdjük ezzel int termék 228 00:10:11,090 --> 00:10:11,812 értéke 1. 229 00:10:11,812 --> 00:10:13,520 És a jelen A hurok, megyünk 230 00:10:13,520 --> 00:10:17,590 kell szorozni a termék, hogy végül a végén a teljes faktoriális. 231 00:10:17,590 --> 00:10:21,870 Így int i = 2, i kisebb vagy egyenlő n, i ++. 232 00:10:21,870 --> 00:10:24,130 >> Lehet, hogy vajon miért az i értéke 2. 233 00:10:24,130 --> 00:10:28,380 Nos, ne feledje, hogy itt van, hogy győződjön meg arról, mi alap esetben helyes. 234 00:10:28,380 --> 00:10:32,180 Így ha n értéke kisebb, mint, vagy egyenlő 1, mi csak vissza 1. 235 00:10:32,180 --> 00:10:34,830 Tehát itt, kezdjük az i = 2. 236 00:10:34,830 --> 00:10:39,090 Nos, ha én is 1, akkor a-- vagy ha n volt 1, akkor az a hurok 237 00:10:39,090 --> 00:10:40,600 nem végrehajtani egyáltalán. 238 00:10:40,600 --> 00:10:43,190 És mi lenne most visszatérés termék, amely 1 lehet. 239 00:10:43,190 --> 00:10:45,920 Hasonlóképpen, ha n voltak valami kisebb 1-- 240 00:10:45,920 --> 00:10:49,290 ha voltak: 0, 1 negatív, whatever-- mi lenne még visszatér az 1., 241 00:10:49,290 --> 00:10:52,260 amely pontosan a rekurzív verzió csinál. 242 00:10:52,260 --> 00:10:54,660 >> Most, ha n értéke nagyobb, 1-nél, akkor megyünk 243 00:10:54,660 --> 00:10:56,550 tenni legalább egy iterációs hurok. 244 00:10:56,550 --> 00:11:00,630 Mondjuk n értéke 5, akkor vagyunk fog tenni a termék értéke 2-szer. 245 00:11:00,630 --> 00:11:02,165 Tehát most a termék 2. 246 00:11:02,165 --> 00:11:04,040 Most fogunk csinálni termék értéke 3 alkalommal. 247 00:11:04,040 --> 00:11:04,690 Most 6. 248 00:11:04,690 --> 00:11:07,500 Termék idő értéke 4, most már 24. 249 00:11:07,500 --> 00:11:10,420 Termék idők = 5, most már a 120. 250 00:11:10,420 --> 00:11:16,730 Így aztán végül, mi vissza 120, amely helyesen 5 faktoriális. 251 00:11:16,730 --> 00:11:17,510 >> 20. kérdés. 252 00:11:17,510 --> 00:11:22,480 Ez az, ahol meg kell adnia Ebben a táblázatban az adott algoritmus, 253 00:11:22,480 --> 00:11:25,735 bármi, amit látott, hogy illik ezek algoritmikus futás 254 00:11:25,735 --> 00:11:28,060 Néha ezek aszimptotikus futási idő. 255 00:11:28,060 --> 00:11:33,270 Tehát mi egy olyan algoritmus, amely az omega 1, de a nagy O n? 256 00:11:33,270 --> 00:11:35,970 Tehát lehet végtelenül Sok válasz van. 257 00:11:35,970 --> 00:11:39,790 Az egyik, hogy láttunk talán leginkább gyakran csak lineáris keresést. 258 00:11:39,790 --> 00:11:42,050 >> Így a legjobb esetben forgatókönyv, a tétel vagyunk 259 00:11:42,050 --> 00:11:44,050 keres a kezdve a lista 260 00:11:44,050 --> 00:11:47,400 és így az omega 1 lépésben, Az első dolog, amit ellenőrizni, 261 00:11:47,400 --> 00:11:49,740 mi csak azonnal vissza hogy megtaláltuk az elemet. 262 00:11:49,740 --> 00:11:52,189 A legrosszabb forgatókönyv esetén, az elem a végén, 263 00:11:52,189 --> 00:11:53,730 vagy az elem nem szerepel a listában egyáltalán. 264 00:11:53,730 --> 00:11:56,700 Tehát meg kell keresni A teljes lista, minden n 265 00:11:56,700 --> 00:11:58,480 elemeket, és ezért ez az o n. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Tehát most már valami, ami mindkét omega n log n, és nagy O n log n. 268 00:12:04,880 --> 00:12:08,650 Nos, a legfontosabb dolog láttunk itt összeolvad sort. 269 00:12:08,650 --> 00:12:12,950 Szóval merge sort, ne feledd, végül a Theta 270 00:12:12,950 --> 00:12:16,920 n log n, ahol théta van definiálva és ha mind az omega nagy-O jelentése azonos. 271 00:12:16,920 --> 00:12:17,580 Mindkét n log n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Mi valami, ami omega n, és O n négyzeten? 274 00:12:21,970 --> 00:12:23,990 Nos, megint ott van Több lehetséges választ. 275 00:12:23,990 --> 00:12:26,440 Itt történetesen mondjuk buborék sort. 276 00:12:26,440 --> 00:12:28,840 Beillesztése sort is itt dolgozik. 277 00:12:28,840 --> 00:12:31,400 Ne feledje, hogy a buborék rendezés van, hogy az optimalizálás ahol, 278 00:12:31,400 --> 00:12:34,630 ha tudja, hogy a teljes lista 279 00:12:34,630 --> 00:12:37,402 anélkül, hogy ezt bármilyen csereügyletek, akkor, nos, 280 00:12:37,402 --> 00:12:40,110 akkor azonnal vissza, hogy a a lista sorrendje kezdeni. 281 00:12:40,110 --> 00:12:43,185 Így a legjobb esetben, ez csak omega n. 282 00:12:43,185 --> 00:12:45,960 Ha nem csak a szép rendezett lista kezdeni, 283 00:12:45,960 --> 00:12:48,270 akkor már O n négyzetes swap. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 És végül, van választék sort n négyzet, mind az omega és a nagy O. 286 00:12:55,610 --> 00:12:56,850 >> 21. kérdés. 287 00:12:56,850 --> 00:12:58,870 Mi egész túlcsordulás? 288 00:12:58,870 --> 00:13:02,160 Hát ismét, hasonlóan a korábbi, már csak véges sok bit 289 00:13:02,160 --> 00:13:04,255 hogy képviselje egy egész szám, így talán 32 bit. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 Tegyük fel, hogy van egy előjeles egész. 292 00:13:09,180 --> 00:13:12,800 Majd végül a legmagasabb pozitív szám tudjuk képviselni 293 00:13:12,800 --> 00:13:15,910 értéke 2-től 31-ig a mínusz 1. 294 00:13:15,910 --> 00:13:19,370 És mi történik, ha megpróbáljuk akkor növeljük, hogy egész szám? 295 00:13:19,370 --> 00:13:25,320 Nos, mi menni 2 és a 31 mínusz 1, egészen a negatív 2 296 00:13:25,320 --> 00:13:26,490 a 31. 297 00:13:26,490 --> 00:13:29,470 Tehát ez az egész túlcsordulás ha folyamatosan növekvõ, 298 00:13:29,470 --> 00:13:32,330 és végül nem lehet fog semmilyen magasabb, és ez csak 299 00:13:32,330 --> 00:13:34,520 pakolások egészen vissza körül negatív értéket. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Mi a helyzet a puffer túlcsordulás? 302 00:13:37,779 --> 00:13:39,820 Így a puffer overflow-- emlékszem, mi az a puffer. 303 00:13:39,820 --> 00:13:41,000 Ez csak egy darab memória. 304 00:13:41,000 --> 00:13:43,350 Olyasmi, mint a tömb egy puffer. 305 00:13:43,350 --> 00:13:46,120 Tehát egy puffer túlcsordulás, amikor megpróbál hozzáférni memória 306 00:13:46,120 --> 00:13:47,880 túl a vége, hogy a tömb. 307 00:13:47,880 --> 00:13:50,410 Tehát, ha van egy tömb méret 5 és 308 00:13:50,410 --> 00:13:53,700 megpróbálja elérni array konzol 5. vagy 6. vagy tartó konzol 7 309 00:13:53,700 --> 00:13:56,610 vagy bármi túl végén, vagy akár bármi 310 00:13:56,610 --> 00:14:00,790 below-- tömb tartó negatív 1-- mind ezek puffer túlcsordulás. 311 00:14:00,790 --> 00:14:02,810 Te megható memória rossz módon. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> 23. kérdés. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 Tehát ezt meg kell végrehajtására strlen. 316 00:14:09,100 --> 00:14:11,630 És azt mondani, hogy akkor vállalnak s nem lesz nulla, 317 00:14:11,630 --> 00:14:13,790 így nem kell nem minden csekket null. 318 00:14:13,790 --> 00:14:16,190 És van több módon tehetett volna ezt. 319 00:14:16,190 --> 00:14:18,440 Itt csak hogy az egyszerű. 320 00:14:18,440 --> 00:14:21,780 Kezdjük egy számláló, n. n értéke számlálás, hogy hány karakter van. 321 00:14:21,780 --> 00:14:25,560 Szóval 0-val kezdődnek, és akkor végighaladni a teljes lista. 322 00:14:25,560 --> 00:14:29,092 >> Az s konzol 0 egyenlő a null terminátor karakter? 323 00:14:29,092 --> 00:14:31,425 Emlékezz keresünk A null terminátor karakter 324 00:14:31,425 --> 00:14:33,360 annak meghatározására, milyen hosszú a karakterlánc. 325 00:14:33,360 --> 00:14:35,890 Ez fog megszüntetni minden vonatkozó húr. 326 00:14:35,890 --> 00:14:39,400 Szóval s konzol 0 egyenlő A null terminátor? 327 00:14:39,400 --> 00:14:42,850 Ha nem, akkor megyünk nézd s konzol 1, s 2 konzol. 328 00:14:42,850 --> 00:14:45,050 Mi folyamatosan megy, amíg meg nem megtalálja a null terminátor. 329 00:14:45,050 --> 00:14:48,580 Ha találtunk, akkor n tartalmazza a teljes hossza a húr, 330 00:14:48,580 --> 00:14:49,942 és mi csak vissza azt. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> 24. kérdés. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Tehát ez az egyik, ahol kell, hogy a kereskedelmi le. 335 00:14:56,050 --> 00:14:59,810 Tehát az egyik dolog, jó egy út, de mi módon ez rossz? 336 00:14:59,810 --> 00:15:02,980 Tehát itt, merge sort hajlamos gyorsabb, mint a buborék rendezés. 337 00:15:02,980 --> 00:15:06,530 Azt mondta, hogy-- is, ott Több válasz itt. 338 00:15:06,530 --> 00:15:12,930 De a legfontosabb az, hogy buborék fajta az omega n egy rendezett lista. 339 00:15:12,930 --> 00:15:14,950 >> Ne feledje, hogy asztali láttunk korábban. 340 00:15:14,950 --> 00:15:17,600 Így buborék rendezi omega a n, a legjobb forgatókönyv 341 00:15:17,600 --> 00:15:20,010 ez tudja, hogy csak megy át A listában egyszer, meg 342 00:15:20,010 --> 00:15:22,270 hé ez a dolog már válogatni, és vissza. 343 00:15:22,270 --> 00:15:25,960 Merge sort, nem számít, milyen te, az omega n log n. 344 00:15:25,960 --> 00:15:29,200 Tehát rendezett lista, buborék sort lesz gyorsabb. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Most mi a linkelt listák? 347 00:15:32,430 --> 00:15:36,070 Tehát egy láncolt lista fejlődik és csökken hogy illeszkedjen a sok elem szükséges. 348 00:15:36,070 --> 00:15:38,489 Azt mondta, így hogy-- általában a közvetlen összehasonlítás 349 00:15:38,489 --> 00:15:40,280 lesz a kapcsolt bejegyzés egy tömb. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Így, bár tömbök könnyen nőnek és zsugorodnak 352 00:15:44,050 --> 00:15:47,130 hogy illeszkedjen a sok elemet szükség szerint, a láncolt lista 353 00:15:47,130 --> 00:15:49,600 összehasonlítva egy array-- egy tömb közvetlen elérésű. 354 00:15:49,600 --> 00:15:52,960 Mi lehet index bármilyen különleges eleme a tömb. 355 00:15:52,960 --> 00:15:56,430 >> Tehát egy láncolt lista, nem tudjuk csak megy az ötödik elem, 356 00:15:56,430 --> 00:16:00,260 van, hogy áthalad a kezdetektől amíg eljutunk az ötödik elem. 357 00:16:00,260 --> 00:16:03,990 És ez fog megakadályoz bennünket abban, csinál valamit, mint a bináris keresés. 358 00:16:03,990 --> 00:16:08,150 Apropó bináris keresés, bináris keresés általában gyorsabb, mint a lineáris keresés. 359 00:16:08,150 --> 00:16:11,120 Azt mondta, hogy-- így egy lehetséges dolog 360 00:16:11,120 --> 00:16:13,380 az, hogy nem tud bináris keresés a kapcsolt listákon, 361 00:16:13,380 --> 00:16:14,730 akkor csak csinálni tömbök. 362 00:16:14,730 --> 00:16:18,030 De talán még ennél is fontosabb, nem tudsz bináris keresés 363 00:16:18,030 --> 00:16:20,690 egy tömb, nincs rendezve. 364 00:16:20,690 --> 00:16:23,990 Upfront szükség lehet rendezni a tömb, és csak ezután lehet 365 00:16:23,990 --> 00:16:25,370 te bináris keresés. 366 00:16:25,370 --> 00:16:27,660 Tehát, ha a dolog nem rendezett kezdeni, 367 00:16:27,660 --> 00:16:29,250 akkor lineáris keresés lehet gyorsabb. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> 27. kérdés. 370 00:16:31,740 --> 00:16:34,770 Tehát úgy a program az alábbi, melyik lesz a következő dia. 371 00:16:34,770 --> 00:16:37,790 És ez az, ahol vagyunk szeretne majd kifejezetten kimondja, 372 00:16:37,790 --> 00:16:39,980 az értékeket a különböző változók. 373 00:16:39,980 --> 00:16:41,990 Szóval nézzük meg azt. 374 00:16:41,990 --> 00:16:43,160 >> Tehát egy vonal. 375 00:16:43,160 --> 00:16:45,457 Van int x = 1. 376 00:16:45,457 --> 00:16:47,040 Ez az egyetlen dolog, ami történt. 377 00:16:47,040 --> 00:16:50,440 Tehát egy sor, látjuk mi táblázat, hogy y, a, b, és az összes tmp 378 00:16:50,440 --> 00:16:51,540 elsötétült. 379 00:16:51,540 --> 00:16:52,280 Tehát mi x? 380 00:16:52,280 --> 00:16:53,860 Nos, csak meg 1-gyel egyenlő. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 Aztán sorban két, jól, azt látjuk, hogy az y értéke 2, 383 00:16:58,770 --> 00:17:00,550 és a tábla már kitöltött nekünk. 384 00:17:00,550 --> 00:17:03,040 Így x értéke 1, és y értéke 2. 385 00:17:03,040 --> 00:17:05,890 >> Most, három sorban, mi most belül a swap funkció. 386 00:17:05,890 --> 00:17:07,560 Mit tettünk át cserélni? 387 00:17:07,560 --> 00:17:11,609 Mentünk ampersand x a, és y-jel a b. 388 00:17:11,609 --> 00:17:15,160 Ha a probléma korábban kijelentette, hogy az x címét 389 00:17:15,160 --> 00:17:17,520 a 0x10, és a címe y 0x14. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Így a és b értéke egyenlő 0x10 és 0x14, ill. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Most három sorban, mi az x és y? 394 00:17:26,250 --> 00:17:28,554 Nos, semmi sem változott x és y körülbelül ezen a ponton. 395 00:17:28,554 --> 00:17:30,470 Annak ellenére, hogy belül a fő verem keret, 396 00:17:30,470 --> 00:17:32,469 még mindig ugyanaz értékeket korábban. 397 00:17:32,469 --> 00:17:34,030 Mi nem módosították memóriát. 398 00:17:34,030 --> 00:17:35,710 Így x értéke 1, y értéke 2. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Rendben van. 401 00:17:37,050 --> 00:17:40,300 Így most azt mondtuk, int tmp megegyezik a csillag. 402 00:17:40,300 --> 00:17:44,410 Tehát négy sorban, minden ugyanaz, kivéve a tmp. 403 00:17:44,410 --> 00:17:47,130 Mi nem változtak meg értékek semmit, kivéve tmp. 404 00:17:47,130 --> 00:17:49,230 Hozunk tmp megegyezik a csillag. 405 00:17:49,230 --> 00:17:50,620 Mi az a csillag? 406 00:17:50,620 --> 00:17:56,240 Nos, a pontokat x, így a csillag fog egyenlő x, ami 1. 407 00:17:56,240 --> 00:18:00,080 Tehát minden másolt le, és tmp értéke 1. 408 00:18:00,080 --> 00:18:01,110 >> Most a következő sorban. 409 00:18:01,110 --> 00:18:03,380 Csillag csillag egyenlő b. 410 00:18:03,380 --> 00:18:10,000 Tehát vonal five-- ismét jól, minden ugyanaz, kivéve a bármilyen csillag van. 411 00:18:10,000 --> 00:18:10,830 Mi az a csillag? 412 00:18:10,830 --> 00:18:13,720 Nos, csak azt mondta a csillag x. 413 00:18:13,720 --> 00:18:16,400 Szóval változó x egyenlő csillag b. 414 00:18:16,400 --> 00:18:18,960 Mi az a csillag b? y. b pont y. 415 00:18:18,960 --> 00:18:21,030 Tehát csillag b y. 416 00:18:21,030 --> 00:18:25,140 Szóval beállítást x = y, és minden más ugyanaz. 417 00:18:25,140 --> 00:18:29,130 Tehát azt látjuk, a következő sorban, hogy x ma 2., és a többiek csak másolja le. 418 00:18:29,130 --> 00:18:31,120 >> Most a következő sorban, csillag b egyenlő tmp. 419 00:18:31,120 --> 00:18:34,740 Nos, mi csak azt mondta, csillag b y, így építünk y egyenlő tmp. 420 00:18:34,740 --> 00:18:37,450 Minden más ugyanaz, így minden lesz másolva le. 421 00:18:37,450 --> 00:18:42,050 Mi beállítás y egyenlő tmp, ami egy, és minden más ugyanaz. 422 00:18:42,050 --> 00:18:43,210 >> Most végre sor hét. 423 00:18:43,210 --> 00:18:44,700 Vagyunk vissza a fő funkciója. 424 00:18:44,700 --> 00:18:46,350 Mi után csere befejeződött. 425 00:18:46,350 --> 00:18:48,972 Elvesztettük a, b, és tmp, de végül mi 426 00:18:48,972 --> 00:18:51,180 nem változik meg értékek semmit ezen a ponton, 427 00:18:51,180 --> 00:18:52,800 mi csak másolja az x és y le. 428 00:18:52,800 --> 00:18:56,490 Úgy látjuk, hogy az x és y most 2 és 1 helyett az 1. és 2. 429 00:18:56,490 --> 00:18:58,160 A sikeresen végrehajtott csere. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> 28. kérdés. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Tegyük fel, hogy találkozik hibaüzenetek 434 00:19:03,100 --> 00:19:06,790 alatt munkaidőben jövőre a CA vagy TF. 435 00:19:06,790 --> 00:19:08,930 Tanácsot, hogyan kell rögzíteni minden egyes ilyen hibákat. 436 00:19:08,930 --> 00:19:11,160 Így undefined reference to getString. 437 00:19:11,160 --> 00:19:12,540 Miért lehet, látod ezt? 438 00:19:12,540 --> 00:19:15,380 Nos, ha a diák használ GetString a saját kódját, 439 00:19:15,380 --> 00:19:20,310 azok megfelelő hash tartalmazza CS50 pont h tartalmazza a CS50 könyvtár. 440 00:19:20,310 --> 00:19:22,380 >> Nos, mit ők kell rögzíteni a hibát? 441 00:19:22,380 --> 00:19:26,810 Meg kell csinálni egy kötőjel lcs50 a parancsot, ha ők összeállítása. 442 00:19:26,810 --> 00:19:29,501 Tehát, ha nem adja át csengés dash lcs50, ők 443 00:19:29,501 --> 00:19:32,000 nem megy, hogy a tényleges kód, amely megvalósítja getString. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> 29. kérdés. 446 00:19:34,170 --> 00:19:36,190 Értelemszerűen nyilvánításáról könyvtári funkció strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 Hát ez most, de még nem megtette a megfelelő hash tartalmazza. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 Ebben a konkrét esetben a header file meg kell tartalmaznia a húr pont h, 451 00:19:45,410 --> 00:19:48,710 beleértve húr pont h most A student-- most a fordító 452 00:19:48,710 --> 00:19:51,750 hozzáfér a nyilatkozatok strlen, 453 00:19:51,750 --> 00:19:54,120 és tudja, hogy a kódot használja STRLEN helyesen. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> 30. kérdés. 456 00:19:56,580 --> 00:20:00,240 Több százalék konverziók mint az adatok érveket. 457 00:20:00,240 --> 00:20:01,540 Szóval, mi ez? 458 00:20:01,540 --> 00:20:06,470 Nos, ne feledjük, hogy ezek a százalékos signs-- hogyan ők vonatkozó printf. 459 00:20:06,470 --> 00:20:08,890 Így printf talán percent-- talán valami nyomtatni 460 00:20:08,890 --> 00:20:11,380 mint százalék i backslash n. 461 00:20:11,380 --> 00:20:15,310 Vagy talán nyomtatni, mint a százalék i, hely, százalék i, hely, százalék i. 462 00:20:15,310 --> 00:20:18,950 Így minden egyes ilyen százalék jelek, szükségünk van 463 00:20:18,950 --> 00:20:21,560 át a változó végén printf. 464 00:20:21,560 --> 00:20:26,980 >> Tehát, ha azt mondjuk, hogy printf zárójel százalék i Backslash n közel zárójel, 465 00:20:26,980 --> 00:20:30,270 nos, azt mondjuk, hogy mi vagyunk a nyomdába egy egész, 466 00:20:30,270 --> 00:20:33,970 de akkor nem adja át printf egy egész szám, hogy ténylegesen nyomtatni. 467 00:20:33,970 --> 00:20:37,182 Tehát itt nagyobb százalék konverzió, mint az adatok érveket? 468 00:20:37,182 --> 00:20:39,390 Ez mondja, hogy van egy csomó százalék, 469 00:20:39,390 --> 00:20:42,445 és nincs elég változó ténylegesen töltse ki e százalékos. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> És akkor biztosan, a kérdés 31, biztosan elveszett 40 bájt egy blokk. 472 00:20:50,010 --> 00:20:52,350 Tehát ez egy Valgrind hiba. 473 00:20:52,350 --> 00:20:54,720 Ez azt mondja, hogy valahol a kódban, 474 00:20:54,720 --> 00:20:59,010 van egy elosztás, amely a 40 bytes nagy így malloced 40 bájt, 475 00:20:59,010 --> 00:21:00,515 és soha nem szabadult meg. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 Legvalószínűbb, hogy csak meg kell találni memóriavesztés, 478 00:21:05,140 --> 00:21:07,650 és találni, ahol meg kell Ebben a mondatban szabad memória. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> És 32. kérdés, érvénytelen írása 4-es méretű. 481 00:21:11,910 --> 00:21:13,250 Ez megint egy Valgrind hiba. 482 00:21:13,250 --> 00:21:15,440 Ez nem kell tennie A memóriavesztés most. 483 00:21:15,440 --> 00:21:20,750 Ez a legtöbb likely-- Úgy értem, hogy valami érvénytelen memória jogokat. 484 00:21:20,750 --> 00:21:23,270 És valószínűleg ez valami egyfajta puffer túlcsordulás. 485 00:21:23,270 --> 00:21:26,560 Ha van egy tömb, talán egy egész sor, és hagyja, hogy a 486 00:21:26,560 --> 00:21:30,115 azt mondják, hogy az 5-ös méret, és megpróbálja megérinteni tömb tartó 5. 487 00:21:30,115 --> 00:21:34,150 Tehát, ha próbál írni a érték, hogy ez nem egy darab memória 488 00:21:34,150 --> 00:21:37,440 hogy valóban van hozzáférése, és így fogsz kapni ezt a hibát, 489 00:21:37,440 --> 00:21:39,272 mondván érvénytelen írása 4-es méretű. 490 00:21:39,272 --> 00:21:42,480 Valgrind fog felismerni te megpróbálta megérinteni a memória nem megfelelő. 491 00:21:42,480 --> 00:21:43,980 >> És ez azt quiz0. 492 00:21:43,980 --> 00:21:47,065 Vagyok Rob Bowden, és ez CS50. 493 00:21:47,065 --> 00:21:51,104