1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 ROB BOWDEN: Tere, ma olen Rob Bowden, ja räägime quiz0. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Niisiis, esimene küsimus. 5 00:00:14,545 --> 00:00:17,750 See on küsimus, kus teil on vaja kodeerida number 6 00:00:17,750 --> 00:00:21,270 127 binaarne pirnid. 7 00:00:21,270 --> 00:00:23,550 Kui soovid, võid teha regulaarselt konverteerimine 8 00:00:23,550 --> 00:00:25,950 alates bi-- või alates koma kahekomponentsete. 9 00:00:25,950 --> 00:00:28,300 Aga see ilmselt läheb võtta palju aega. 10 00:00:28,300 --> 00:00:31,750 Ma mõtlen, et sa võiksid aru saada, et OK, 1 on olemas, 2 on olemas, 11 00:00:31,750 --> 00:00:33,650 4 on seal, 8 on seal. 12 00:00:33,650 --> 00:00:39,280 Lihtsam viis, 127 on 128 miinus üks. 13 00:00:39,280 --> 00:00:42,013 See vasakpoolsema lamp on 128-bit. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Nii et 127 on tõesti ainult kõik teiste lampide 16 00:00:47,860 --> 00:00:51,420 sest see on kõige vasakpoolsema lambipirn miinus 1. 17 00:00:51,420 --> 00:00:52,800 Ongi sellele küsimusele. 18 00:00:52,800 --> 00:00:54,060 >> Küsimus üks. 19 00:00:54,060 --> 00:00:56,710 Nii 3 bitti saate moodustavad 8 erinevat väärtusi. 20 00:00:56,710 --> 00:01:01,000 Miks siis on 7 suurima mittenegatiivne koma täisarv saab esindada? 21 00:01:01,000 --> 00:01:04,050 Noh, kui me suudame ainult moodustavad 8 erinevat väärtuste 22 00:01:04,050 --> 00:01:07,430 siis mida me ei kavatse olla esindava on 0 kuni 7. 23 00:01:07,430 --> 00:01:08,745 0 kulub üks väärtusi. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Teine küsimus. 26 00:01:11,190 --> 00:01:14,610 Mis n bitti, mitu erinevat väärtusi saab te esindate? 27 00:01:14,610 --> 00:01:19,080 Niisiis, n bitti, siis on 2 võimalikud väärtused iga bitt. 28 00:01:19,080 --> 00:01:22,300 Nii et meil on 2 võimalikud väärtused esimese biti, 2 võimalikku väärtust 29 00:01:22,300 --> 00:01:24,450 Teise, 2 võimalik kolmanda. 30 00:01:24,450 --> 00:01:28,730 Ja nii see on 2 korda 2 korda 2, ja lõpuks vastus on 2 kuni n. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Küsimus kolm. 33 00:01:31,100 --> 00:01:33,450 Mis 0x50 binaarne? 34 00:01:33,450 --> 00:01:39,490 Seega pidage meeles, et kuueteistkümnendsüsteemis on väga lihtne teisendamine binaarne. 35 00:01:39,490 --> 00:01:43,180 Nii et siin me lihtsalt peame vaatama 5 ja 0 iseseisvalt. 36 00:01:43,180 --> 00:01:45,110 Mis on 5 binaarne? 37 00:01:45,110 --> 00:01:48,400 0101, see on 1 bit ja 4 bit. 38 00:01:48,400 --> 00:01:49,900 Mis on 0 binaarne? 39 00:01:49,900 --> 00:01:50,520 Ei ole keeruline. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Nii lihtsalt neid koos, ja see on täielik number kahendsüsteemis. 42 00:01:54,970 --> 00:01:57,640 01010000. 43 00:01:57,640 --> 00:02:00,439 Ja kui sa tahad, võid sa startida, et kõige vasakpoolsema null. 44 00:02:00,439 --> 00:02:01,105 See on oluline. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Nii siis alternatiivina mis on 0x50 kümnendsüsteemis? 47 00:02:05,733 --> 00:02:08,649 Kui sa tahad, siis could-- kui sa oled rohkem rahul binaarne, 48 00:02:08,649 --> 00:02:11,340 siis võiks võtta, et binaarne vastus ja muuta seda arvesse koma. 49 00:02:11,340 --> 00:02:13,870 Või me võiks lihtsalt meeles et kuueteistkümnendsüsteemis. 50 00:02:13,870 --> 00:02:21,140 Nii et 0 on 0-nda koha ja 5 on 16 kuni esimese koha. 51 00:02:21,140 --> 00:02:25,990 Nii et siin on meil 5 korda 16 esimene pluss 0 korda 16. null, 52 00:02:25,990 --> 00:02:27,520 80. 53 00:02:27,520 --> 00:02:29,710 Ja kui sa vaatasid Pealkirjas esitatud küsimusele, 54 00:02:29,710 --> 00:02:32,920 see oli CS 80, mis oli omamoodi vihjet vastus sellele probleemile. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Küsimus viis. 57 00:02:35,420 --> 00:02:40,320 Meil on see Scratch script, mis on korrates 4 korda maapähklivõi kapslites. 58 00:02:40,320 --> 00:02:42,800 Niisiis, kuidas me nüüd koodi, mis on C? 59 00:02:42,800 --> 00:02:47,730 Noh, meil on siin-- osa rasvases on ainus osa, mida tuli rakendada. 60 00:02:47,730 --> 00:02:51,950 Nii et meil on 4 silmust, mis on silmukoiminen 4 korda printf-se maapähklivõi želee 61 00:02:51,950 --> 00:02:53,910 uue liini probleemi küsib. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Küsimus kuus, teine ​​Scratch probleem. 64 00:02:57,490 --> 00:03:00,210 Me näeme, et oleme igavesti silmus. 65 00:03:00,210 --> 00:03:05,000 Me räägid muutuja i ja siis incrementing i poolt 1. 66 00:03:05,000 --> 00:03:09,580 Nüüd tahame seda teha C. On mitmel moel võiksime seda teinud. 67 00:03:09,580 --> 00:03:12,840 Siin juhtus koodi igavesti silmus nagu while (true). 68 00:03:12,840 --> 00:03:16,600 Nii et me kuulutab muutuja i, lihtsalt nagu meil oli muutuja i Scratch. 69 00:03:16,600 --> 00:03:21,950 Tunnistada muutuja i ja igavesti while (true), ütleme muutuja i. 70 00:03:21,950 --> 00:03:25,260 Nii printf% i-- või võid olen kasutanud% d. 71 00:03:25,260 --> 00:03:27,985 Me ütleme, et muutuva ja siis juurdekasvu see, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Küsimus seitse. 74 00:03:30,830 --> 00:03:35,560 Nüüd tahame teha midagi väga sarnast Mario dot c probleemsete määrata ühe. 75 00:03:35,560 --> 00:03:39,110 Me soovime printida need hashtags, me tahame, et printida viis 76 00:03:39,110 --> 00:03:40,700 kolme ristküliku nende räsi. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Niisiis, kuidas me saame seda teha? 79 00:03:43,162 --> 00:03:45,370 Noh, anname kogu hunnik koodi, ja sa lihtsalt 80 00:03:45,370 --> 00:03:47,560 pea täitma trükivõrgustik funktsiooni. 81 00:03:47,560 --> 00:03:49,540 >> Mis siis PrintGrid välja näeb? 82 00:03:49,540 --> 00:03:51,480 Noh sa oled varem laius ja kõrgus. 83 00:03:51,480 --> 00:03:53,520 Nii et meil on välimise 4 loop, mis on silmukoiminen 84 00:03:53,520 --> 00:03:57,650 üle kõik read käesoleva grid, et me tahame välja printida. 85 00:03:57,650 --> 00:04:01,250 Siis on meil inter-astmeline 4 silmuse, see on trükkimise üle igas veerus. 86 00:04:01,250 --> 00:04:06,210 Nii et igas reas, me trükkida igas veerus, ühe hash. 87 00:04:06,210 --> 00:04:10,045 Siis lõpus reas me printida ühe uue liini, et minna järgmisele reale. 88 00:04:10,045 --> 00:04:11,420 Ja ongi kogu võrku. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Küsimus kaheksa. 91 00:04:13,675 --> 00:04:17,170 Funktsioon nagu PrintGrid on öelnud, et on kõrvaltoime, kuid mitte tagasi 92 00:04:17,170 --> 00:04:17,670 väärtus. 93 00:04:17,670 --> 00:04:19,209 Selgitage vahet. 94 00:04:19,209 --> 00:04:23,080 Nii et see sõltub sinust mäleta mida kõrvaltoime on. 95 00:04:23,080 --> 00:04:25,180 Noh, tagasi value-- me teame PrintGrid ei 96 00:04:25,180 --> 00:04:28,180 on tagastatav väärtus, sest Siin on öeldud, tühine. 97 00:04:28,180 --> 00:04:31,150 Nii et midagi, mis tagastab void ei ole tegelikult tagasi midagi. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Mis on kõrvalmõju? 100 00:04:33,620 --> 00:04:36,620 Noh, kõrvaltoime on midagi, mis justkui ei kao 101 00:04:36,620 --> 00:04:39,500 pärast funktsiooni otsad mis ei olnud just tagasi, 102 00:04:39,500 --> 00:04:41,340 ja see ei olnud just alates sisendeid. 103 00:04:41,340 --> 00:04:44,970 >> Nii näiteks, me võiksime muuta globaalne muutuja. 104 00:04:44,970 --> 00:04:46,590 See oleks kõrvaltoime. 105 00:04:46,590 --> 00:04:49,000 Sellisel juhul väga oluline kõrvaltoime 106 00:04:49,000 --> 00:04:51,070 trükib ekraanile. 107 00:04:51,070 --> 00:04:53,110 Nii et on kõrvaltoime et PrintGrid on. 108 00:04:53,110 --> 00:04:54,980 Trükime neid asju ekraanil. 109 00:04:54,980 --> 00:04:56,370 Ja sa ei mõtle et kuna kõrvalmõjuna 110 00:04:56,370 --> 00:04:58,690 sest see on midagi, mis püsib pärast seda funktsiooni lõpeb. 111 00:04:58,690 --> 00:05:01,481 See on midagi väljapoole Selle funktsiooni, mis lõpuks 112 00:05:01,481 --> 00:05:03,380 on muutunud, sisu ekraanile. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Küsimus üheksa. 115 00:05:05,839 --> 00:05:07,880 Mõtle programmi alla, mille liini numbrid 116 00:05:07,880 --> 00:05:09,740 on lisatud Huvides arutelu. 117 00:05:09,740 --> 00:05:13,480 Nii et selles programmis oleme lihtsalt kutsudes getString, talletades seda 118 00:05:13,480 --> 00:05:16,220 See muutuja s ja seejärel trükkimine muutuja s. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 Niisiis, miks rida üks on olemas. 121 00:05:19,090 --> 00:05:20,920 #include CS50 dot h. 122 00:05:20,920 --> 00:05:23,820 Miks me peame # include CS50 dot h? 123 00:05:23,820 --> 00:05:26,180 Noh me helistades GetString funktsiooni 124 00:05:26,180 --> 00:05:28,840 ja getString on määratletud aastal CS50 raamatukogu. 125 00:05:28,840 --> 00:05:31,600 Nii et kui meil ei oleks #include CS50 dot h, 126 00:05:31,600 --> 00:05:35,760 saaksime, et kaudne deklaratsioon Euroopa getString funktsioon viga 127 00:05:35,760 --> 00:05:36,840 alates tõlkija. 128 00:05:36,840 --> 00:05:40,110 Seega on meil vaja lisada library-- vajame lisada päises faili 129 00:05:40,110 --> 00:05:42,870 muidu kompilaator ei tunnistama, et getString olemas. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Selgitage, miks rida kaks on kohal. 132 00:05:46,140 --> 00:05:47,890 Nii standard io dot h. 133 00:05:47,890 --> 00:05:50,430 See on täpselt sama nagu eelmises ülesandes, 134 00:05:50,430 --> 00:05:53,310 välja arvatud asemel tegelevad GetString, me räägime printf. 135 00:05:53,310 --> 00:05:56,654 Nii et kui me ei öelnud, peame lisada standard io dot h, 136 00:05:56,654 --> 00:05:58,820 siis me ei saaks kasutada printf funktsiooni 137 00:05:58,820 --> 00:06:00,653 sest kompilaatori ei tea midagi. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Miks-- mida tähendab on tühine rida neli? 140 00:06:05,260 --> 00:06:08,010 Nii et siin on meil int main (void). 141 00:06:08,010 --> 00:06:10,600 See on lihtsalt öeldes, et me ei saa mingit käsurea 142 00:06:10,600 --> 00:06:12,280 argumente peamine. 143 00:06:12,280 --> 00:06:17,390 Pea meeles, et me võiksime öelda, int Peamine int argc string argv sulgudes. 144 00:06:17,390 --> 00:06:20,400 Nii et siin me lihtsalt öelda void öelda, et me eirad käsurea argumente. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Selgitage, seoses mälu, täpselt mida getString kooskõlas kuus tulu. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString on tagasi ploki mälu, array tähemärki. 149 00:06:31,640 --> 00:06:34,870 See on tõesti tagastamine kursor esimene märk. 150 00:06:34,870 --> 00:06:37,170 Pea meeles, et string on char täht. 151 00:06:37,170 --> 00:06:41,360 Nii s on viit esimest märgi mis tahes string on 152 00:06:41,360 --> 00:06:43,510 et kasutaja sisestatud klaviatuuri. 153 00:06:43,510 --> 00:06:47,070 Ja see mälu juhtub olema malloced, nii, et mälu on hunnik. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> 13. küsimus. 156 00:06:50,450 --> 00:06:51,960 Mõtle programmi alla. 157 00:06:51,960 --> 00:06:55,579 Nii et kõik see programm teeb on printf-se 1 jagatud 10. 158 00:06:55,579 --> 00:06:57,370 Nii et kui on koostatud ja teostatakse käesoleva programmi 159 00:06:57,370 --> 00:07:01,170 väljundid 0.0, kuigi 1 jagatud 10 on 0,1. 160 00:07:01,170 --> 00:07:02,970 Miks on nii, 0.0? 161 00:07:02,970 --> 00:07:05,510 Noh, see on sellepärast, täisarv rajoon. 162 00:07:05,510 --> 00:07:08,580 Nii 1 on täisarv, 10 on täisarv. 163 00:07:08,580 --> 00:07:11,980 Nii et 1 jagatud 10, kõik käsitatakse täisarvud, 164 00:07:11,980 --> 00:07:16,380 ja C, kui me teeme täisarv rajoonis me kärpima iga koma. 165 00:07:16,380 --> 00:07:19,590 Nii 1 jagatud 10 0, ja siis me üritame 166 00:07:19,590 --> 00:07:24,410 printida, et float, nii null trükkida float on 0,0. 167 00:07:24,410 --> 00:07:27,400 Ja see on põhjus, miks me saada 0,0. 168 00:07:27,400 --> 00:07:28,940 >> Mõtle programmi alla. 169 00:07:28,940 --> 00:07:31,280 Nüüd oleme trükkimine 0.1. 170 00:07:31,280 --> 00:07:34,280 Seega ei ole täisarv rajoonis me lihtsalt printimisel 0,1, 171 00:07:34,280 --> 00:07:37,100 kuid me printimine 28 komakohta. 172 00:07:37,100 --> 00:07:41,810 Ja me saame selle 0.1000, terve hunnik nulli, 5 5 5, blah blah blah. 173 00:07:41,810 --> 00:07:45,495 Nii et küsimus on selles, miks seda teeb printida, et selle asemel täpselt 0,1? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Nii et põhjus, miks siin on nüüd ujukoma ebatäpsus. 176 00:07:49,640 --> 00:07:53,410 Pea meeles, et float on ainult 32 bitti. 177 00:07:53,410 --> 00:07:57,540 Nii saame esindada vaid piiratud arv ujukoma väärtused nende 32 178 00:07:57,540 --> 00:07:58,560 bittides. 179 00:07:58,560 --> 00:08:01,760 Noh seal on lõpuks lõpmatult palju murdarve, 180 00:08:01,760 --> 00:08:04,940 ja seal on lõpmata palju ujuva punkti väärtused 0 ja 1 vahel, 181 00:08:04,940 --> 00:08:07,860 ja me ilmselt võimalik esindada veelgi väärtused kui see. 182 00:08:07,860 --> 00:08:13,230 Nii et me peame tegema ohverdusi olema võimeline esindama Kõige väärtusi. 183 00:08:13,230 --> 00:08:16,960 >> Nii väärtus nagu 0,1, ilmselt Me ei saa esindada, et täpselt. 184 00:08:16,960 --> 00:08:22,500 Seega selle asemel, mis esindab 0,1 teeme saame kõige paremini esindada selles 0.100000 5 5 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 Ja see on üsna lähedal, kuid jaoks palju rakendusi 187 00:08:26,306 --> 00:08:28,430 sa ei pea muretsema ujukoma ebatäpsus, 188 00:08:28,430 --> 00:08:30,930 sest me lihtsalt ei saa esindada kõik ujuvad punktid täpselt. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> 15. küsimus. 191 00:08:33,380 --> 00:08:34,679 Mõtle turvakood. 192 00:08:34,679 --> 00:08:36,630 Me lihtsalt printimisel 1 pluss 1. 193 00:08:36,630 --> 00:08:38,289 Seega ei ole trikk. 194 00:08:38,289 --> 00:08:41,780 1 pluss 1 hindab kuni 2 ja siis me printimisel seda. 195 00:08:41,780 --> 00:08:42,789 See lihtsalt prindib 2. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> 16. küsimus. 198 00:08:44,700 --> 00:08:49,450 Nüüd oleme trükkimine iseloomu 1 pluss iseloomu 1. 199 00:08:49,450 --> 00:08:52,110 Kuidas see ei printida sama asi? 200 00:08:52,110 --> 00:08:57,680 Noh iseloomu 1 pluss märk 1, iseloomu 1 on ASCII väärtus 49. 201 00:08:57,680 --> 00:09:04,840 Nii et see on tõesti öelda, 49 pluss 49, ja lõpuks see saab printida 98. 202 00:09:04,840 --> 00:09:06,130 Nii et see ei prindi 2. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> 17. küsimus. 205 00:09:09,271 --> 00:09:11,520 Viia lõpule paaritu allpool sellisel viisil 206 00:09:11,520 --> 00:09:14,615 et funktsioon tagastab true, kui n on paaritu ja vale, kui n on paarisarv. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 See on suur eesmärk jaoks mod operaator. 209 00:09:19,330 --> 00:09:24,530 Nii et me võtame argument n, Kui n mod 2 võrdub 1, ning 210 00:09:24,530 --> 00:09:28,030 see tähendab, et n jagatud 2 olid ülejäänud. 211 00:09:28,030 --> 00:09:33,270 Kui n jagatud 2 oli ülejäänud, et tähendab, et n on paaritu, nii et me naasta tõsi. 212 00:09:33,270 --> 00:09:34,910 Else me tagasi vale. 213 00:09:34,910 --> 00:09:39,070 Samuti oleks võinud teha n mod 2 võrdsete null, tagastab false, muidu tagastab tõsi. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Mõtle rekursiivne funktsioon allpool. 216 00:09:43,640 --> 00:09:46,920 Seega, kui n on väiksem või võrdne 1, tagastab 1, 217 00:09:46,920 --> 00:09:50,430 muidu tagastamise n korda f n miinus 1. 218 00:09:50,430 --> 00:09:52,556 Mis siis on see funktsioon? 219 00:09:52,556 --> 00:09:54,305 Noh, see on lihtsalt faktoriaali funktsiooni. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 See on kenasti esindatud kui n faktoriaal. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Nii et küsimus 19 nüüd tahame seda rekursiivne funktsioon. 224 00:10:02,310 --> 00:10:04,530 Me tahame, et see korduv. 225 00:10:04,530 --> 00:10:05,874 Niisiis, kuidas me seda teeme? 226 00:10:05,874 --> 00:10:07,790 Noh töötajatele lahusega ja uuesti seal 227 00:10:07,790 --> 00:10:11,090 mitmel moel saad võinud teha et hakkame seda int toode 228 00:10:11,090 --> 00:10:11,812 võrdub 1. 229 00:10:11,812 --> 00:10:13,520 Ja kogu selle silmus, me läheme 230 00:10:13,520 --> 00:10:17,590 tuleb korrutades toote lõppkokkuvõttes lõpuks täielik faktoriaali. 231 00:10:17,590 --> 00:10:21,870 Nii int i võrdub 2, i väiksem või võrdne n, i ++. 232 00:10:21,870 --> 00:10:24,130 >> Sa võid olla ei tea, miks ma võrdub 2. 233 00:10:24,130 --> 00:10:28,380 Noh, pea meeles, et siin on meil veenduge, et meie baasi puhul on õige. 234 00:10:28,380 --> 00:10:32,180 Seega, kui n on väiksem või võrdne 1, me lihtsalt naasmist 1. 235 00:10:32,180 --> 00:10:34,830 Nii et siin me algavad i võrdub 2. 236 00:10:34,830 --> 00:10:39,090 Noh, kui ma oleksin 1, siis the-- või kui n oli 1, siis silmus 237 00:10:39,090 --> 00:10:40,600 ei täita üldse. 238 00:10:40,600 --> 00:10:43,190 Ja nii me oleks lihtsalt tagastamise toote, mis on 1. 239 00:10:43,190 --> 00:10:45,920 Samamoodi, kui n olid midagi alla 1-- 240 00:10:45,920 --> 00:10:49,290 kui see oleks 0, negatiivne 1 whatever-- me tahaks ikkagi naasevad 1 241 00:10:49,290 --> 00:10:52,260 mis on täpselt see, mida rekursiivne versioon teeb. 242 00:10:52,260 --> 00:10:54,660 >> Nüüd, kui n on suurem kui 1, siis me läheme 243 00:10:54,660 --> 00:10:56,550 teha vähemalt üks iteratsiooni see silmus. 244 00:10:56,550 --> 00:11:00,630 Ütleme, et n on 5, siis me oleme kavatse teha toode korda võrdub 2. 245 00:11:00,630 --> 00:11:02,165 Nüüd toode on 2. 246 00:11:02,165 --> 00:11:04,040 Nüüd me ei kavatse teha Toodete korda võrdub 3. 247 00:11:04,040 --> 00:11:04,690 Nüüd on 6. 248 00:11:04,690 --> 00:11:07,500 Toote korda võrdub 4, nüüd on 24. 249 00:11:07,500 --> 00:11:10,420 Toote korda võrdub 5, nüüd on 120. 250 00:11:10,420 --> 00:11:16,730 Siis lõpuks, me naasmist 120, mis on korrektselt 5 faktoriaal. 251 00:11:16,730 --> 00:11:17,510 >> 20. küsimus. 252 00:11:17,510 --> 00:11:22,480 See on see, kus sa pead täitma Selles tabelis koos mis tahes algoritm, 253 00:11:22,480 --> 00:11:25,735 midagi, mida me oleme näinud, et sobib nende algoritmilise perspektiivis 254 00:11:25,735 --> 00:11:28,060 Kohati need asümptootiliseks perspektiivis korda. 255 00:11:28,060 --> 00:11:33,270 Mis siis on algoritm, mis on omega 1, kuid suur O n? 256 00:11:33,270 --> 00:11:35,970 Nii ei saa olla lõpmatult palju vastuseid siin. 257 00:11:35,970 --> 00:11:39,790 Üks, mis me oleme näinud ilmselt kõige sageli on lihtsalt lineaarne otsing. 258 00:11:39,790 --> 00:11:42,050 >> Nii et parimal juhul stsenaariumi kirje oleme 259 00:11:42,050 --> 00:11:44,050 otsin on alustades nimekirja 260 00:11:44,050 --> 00:11:47,400 ja nii omega 1 etappe, Esimene asi, mida me kontrollime, 261 00:11:47,400 --> 00:11:49,740 me lihtsalt kohe tagasi mis me leidsime objekt. 262 00:11:49,740 --> 00:11:52,189 In halvimal juhul, objekt on lõpus, 263 00:11:52,189 --> 00:11:53,730 või objekt ei ole nimekirjas üldse. 264 00:11:53,730 --> 00:11:56,700 Nii et me peame otsima kogu nimekiri kõik n 265 00:11:56,700 --> 00:11:58,480 elemente, ja see on põhjus, miks see o n. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Nüüd on see midagi, mis on nii omega n log n, ja suur O n log n. 268 00:12:04,880 --> 00:12:08,650 Noh kõige olulisemad asi oleme näinud siin on liita omamoodi. 269 00:12:08,650 --> 00:12:12,950 Nii Mestimissortimine, pea meeles, Lõppkokkuvõttes on teeta 270 00:12:12,950 --> 00:12:16,920 n log n, kus teeta on määratletud kui mõlemad omega ja suured O on sama. 271 00:12:16,920 --> 00:12:17,580 Nii n log n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Mis on midagi, mis on omega n ja O n ruudus? 274 00:12:21,970 --> 00:12:23,990 Noh, jälle seal mitu võimalikku vastust. 275 00:12:23,990 --> 00:12:26,440 Siin juhtub öelda mull sorteerida. 276 00:12:26,440 --> 00:12:28,840 Lisatakse omamoodi ka siin töötada. 277 00:12:28,840 --> 00:12:31,400 Pea meeles, et mull omamoodi on, et optimeerida, kui 278 00:12:31,400 --> 00:12:34,630 kui teil on võimalus saada läbi kogu nimekiri 279 00:12:34,630 --> 00:12:37,402 ilma et oleks vaja teha iga vahetuslepingud, siis, noh, 280 00:12:37,402 --> 00:12:40,110 saame kohe tagasi, et loetelu on järjestatud alustada. 281 00:12:40,110 --> 00:12:43,185 Nii et parimal juhul see on lihtsalt omega n. 282 00:12:43,185 --> 00:12:45,960 Kui see ei ole lihtsalt kenasti järjestatud loetelu alustada, 283 00:12:45,960 --> 00:12:48,270 siis meil on O n ruudus vahetustehinguid. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 Ja lõpuks on meil valik sorteeri n ruudus, nii omega ja suur O. 286 00:12:55,610 --> 00:12:56,850 >> 21. küsimus. 287 00:12:56,850 --> 00:12:58,870 Mis on täisarv ülevool? 288 00:12:58,870 --> 00:13:02,160 Hästi taas sarnane varem meil on ainult finitely palju bitte 289 00:13:02,160 --> 00:13:04,255 kuni täisarv, et äkki 32 bitti. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 Oletame, et meil on allkirjastatud täisarv. 292 00:13:09,180 --> 00:13:12,800 Siis lõpuks kõrgeima positiivne arv saame esindada 293 00:13:12,800 --> 00:13:15,910 on 2 kuni 31 miinus 1. 294 00:13:15,910 --> 00:13:19,370 Mis juhtub, kui me püüame siis juurdekasvu et täisarv? 295 00:13:19,370 --> 00:13:25,320 Noh, me läheme 2 kuni 31 miinus 1, kõik viis kuni negatiivne 2 296 00:13:25,320 --> 00:13:26,490 kuni 31. 297 00:13:26,490 --> 00:13:29,470 Nii et see täisarv ülevool on kui te ei hoia suurendamist, 298 00:13:29,470 --> 00:13:32,330 ja lõpuks sa ei saa saa midagi suurem ja see lihtsalt 299 00:13:32,330 --> 00:13:34,520 wrapid kogu tee tagasi ümber negatiivse väärtusega. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Aga buffer overflow? 302 00:13:37,779 --> 00:13:39,820 Nii puhver overflow-- mäletad, mida on puhvri. 303 00:13:39,820 --> 00:13:41,000 See on lihtsalt patakas mälu. 304 00:13:41,000 --> 00:13:43,350 Midagi massiiv on puhver. 305 00:13:43,350 --> 00:13:46,120 Nii buffer overflow on siis, kui püüad pääseda mälu 306 00:13:46,120 --> 00:13:47,880 tähtaja möödumisest, et massiivi. 307 00:13:47,880 --> 00:13:50,410 Nii et kui teil on massiivi suurus 5 ja te 308 00:13:50,410 --> 00:13:53,700 üritada pääsu massiivi sulg 5 või sulg 6 või sulg 7 309 00:13:53,700 --> 00:13:56,610 või midagi peale lõpus või isegi midagi 310 00:13:56,610 --> 00:14:00,790 below-- massiivi sulg negatiivne 1-- kõik need on puhver üle ajama. 311 00:14:00,790 --> 00:14:02,810 Sa puudutad mälu halb viisil. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> Küsimus 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 Nii et see, mida vaja rakendada strlen. 316 00:14:09,100 --> 00:14:11,630 Ja me öelda, et sa ei saa eeldada s ei ole null, 317 00:14:11,630 --> 00:14:13,790 nii et sa ei pea teha mis tahes kontrollimisi for null. 318 00:14:13,790 --> 00:14:16,190 Ja seal on mitu võimalust sa oleks võinud teha seda. 319 00:14:16,190 --> 00:14:18,440 Siin me lihtsalt võtta selge. 320 00:14:18,440 --> 00:14:21,780 Alustame counter, n. n on lugedes, kui palju märke on. 321 00:14:21,780 --> 00:14:25,560 Nii et hakkame 0, ja siis me itereerima kogu nimekirja. 322 00:14:25,560 --> 00:14:29,092 >> Kas te sulg 0 võrdub null terminaator iseloomu? 323 00:14:29,092 --> 00:14:31,425 Pea meeles, me otsime null terminaator iseloomu 324 00:14:31,425 --> 00:14:33,360 et määrata, kui kaua meie string. 325 00:14:33,360 --> 00:14:35,890 See läheb lõpetada kõik asjakohased string. 326 00:14:35,890 --> 00:14:39,400 Nii on s sulg 0 võrdse et null terminaator? 327 00:14:39,400 --> 00:14:42,850 Kui see ei ole, siis me ei kavatse vaadata s sulg 1, s sulg 2. 328 00:14:42,850 --> 00:14:45,050 Hoiame läheb kuni me leida null terminaator. 329 00:14:45,050 --> 00:14:48,580 Kui oleme leidnud, siis siis n sisaldab kogupikkus string, 330 00:14:48,580 --> 00:14:49,942 ja me saame lihtsalt tagasi seda. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> Küsimus 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Nii et see on see, kus te pead tegema kompromiss. 335 00:14:56,050 --> 00:14:59,810 Nii et üks asi on hea ühes Muide, kuid mil viisil on see halb? 336 00:14:59,810 --> 00:15:02,980 Nii et siin, liita omamoodi kipub kiirem mull sorteerida. 337 00:15:02,980 --> 00:15:06,530 Olles seda öelnud selle-- hästi, siis on mitu vastust siin. 338 00:15:06,530 --> 00:15:12,930 Kuid peamine on see, et mull omamoodi on omega n jaoks sorteeritud nimekirja. 339 00:15:12,930 --> 00:15:14,950 >> Pea meeles, et tabel me just nägime. 340 00:15:14,950 --> 00:15:17,600 Nii mull sorteerib omega n, mis oleks parim stsenaarium 341 00:15:17,600 --> 00:15:20,010 on see võimalik lihtsalt minna üle nimekiri kord kindlaks 342 00:15:20,010 --> 00:15:22,270 hey see asi on juba sorteeritud ja tagasi. 343 00:15:22,270 --> 00:15:25,960 Mestimissortimine, ükskõik mida sa teed, on omega n log n. 344 00:15:25,960 --> 00:15:29,200 Nii sorteeritud nimekirja, mull sorteeri läheb kiiremaks. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Nüüd kuidas ahelloendid? 347 00:15:32,430 --> 00:15:36,070 Nii ahelloend võib kasvada ja kahaneb sobitada nii palju elemente nagu vaja. 348 00:15:36,070 --> 00:15:38,489 Olles seda öelnud selle-- nii tavaliselt otsene võrdlus 349 00:15:38,489 --> 00:15:40,280 saab olema seotud nimekirja koos hulga. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Nii et kuigi massiive saab kasva ja kahaneb 352 00:15:44,050 --> 00:15:47,130 sobitada nii palju elemente kui vaja, ahelloend 353 00:15:47,130 --> 00:15:49,600 võrreldes array-- massiiv on ligi pääsema. 354 00:15:49,600 --> 00:15:52,960 Saame indeks ühessegi eriti massiivi element. 355 00:15:52,960 --> 00:15:56,430 >> Nii ahelloend, me ei saa minge viies element, 356 00:15:56,430 --> 00:16:00,260 meil läbida algusest kuni saame viiendale element. 357 00:16:00,260 --> 00:16:03,990 Ja see läheb meid takistada midagi nagu binaarne otsing. 358 00:16:03,990 --> 00:16:08,150 Rääkides binaarne otsing, binaarne otsing kipub olema kiirem kui lineaarne otsing. 359 00:16:08,150 --> 00:16:11,120 Olles seda öelnud selle-- Niisiis, üks võimalik asi 360 00:16:11,120 --> 00:16:13,380 on see, et te ei saa teha binaarne otsi ahelloendid, 361 00:16:13,380 --> 00:16:14,730 saab ainult teha seda massiivid. 362 00:16:14,730 --> 00:16:18,030 Aga ilmselt veelgi olulisem, sa ei saa binaarne otsing 363 00:16:18,030 --> 00:16:20,690 massiivi, mis ei ole järjestatud. 364 00:16:20,690 --> 00:16:23,990 Ettemaksu peate sorteeri massiiv, ja alles siis saab 365 00:16:23,990 --> 00:16:25,370 sa binaarne otsing. 366 00:16:25,370 --> 00:16:27,660 Nii et kui sinu asi ei ole sorteeritud alustada, 367 00:16:27,660 --> 00:16:29,250 siis lineaarne otsing võiks olla kiirem. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> Küsimus 27. 370 00:16:31,740 --> 00:16:34,770 Nii leiavad programmi alla, mis saab olema järgmise slaidi. 371 00:16:34,770 --> 00:16:37,790 Ja see on see, kus me oleme tahame seda selgesõnaliselt 372 00:16:37,790 --> 00:16:39,980 väärtused erinevate muutujad. 373 00:16:39,980 --> 00:16:41,990 Nii et vaatame seda. 374 00:16:41,990 --> 00:16:43,160 >> Nii liinile üks. 375 00:16:43,160 --> 00:16:45,457 Meil on int x võrdub 1. 376 00:16:45,457 --> 00:16:47,040 See on ainuke asi, mis juhtus. 377 00:16:47,040 --> 00:16:50,440 Nii real üks, näeme meie tabelis, et y, a, b ja tmp on kõik 378 00:16:50,440 --> 00:16:51,540 Mustaks värvitud. 379 00:16:51,540 --> 00:16:52,280 Mis on x? 380 00:16:52,280 --> 00:16:53,860 Noh me lihtsalt seadke see võrdub 1. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 Ja siis liinile kaks, noh, näeme, et y on seatud 2 383 00:16:58,770 --> 00:17:00,550 ja laud on juba täidetakse meile. 384 00:17:00,550 --> 00:17:03,040 Nii x on 1 ja y on 2. 385 00:17:03,040 --> 00:17:05,890 >> Nüüd joon kolm, me oleme nüüd sees swap funktsiooni. 386 00:17:05,890 --> 00:17:07,560 Mida me edasi vahetada? 387 00:17:07,560 --> 00:17:11,609 Me sooritanud ampersand x ja-märk y b. 388 00:17:11,609 --> 00:17:15,160 Kui probleem varem märkis, et aadress x 389 00:17:15,160 --> 00:17:17,520 on 0x10 ja aadress y on 0x14. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Nii ja b on võrdne 0x10 ja 0x14 võrra. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Nüüd joon kolm, siis mis on x ja y? 394 00:17:26,250 --> 00:17:28,554 Noh, midagi ei ole muutunud umbes x ja y selles punktis. 395 00:17:28,554 --> 00:17:30,470 Kuigi nad on sees peamine freimi, 396 00:17:30,470 --> 00:17:32,469 nad ikkagi sama väärtused nad tegid varem. 397 00:17:32,469 --> 00:17:34,030 Oleme modifitseerimata tahes mälu. 398 00:17:34,030 --> 00:17:35,710 Nii x on 1, y on 2. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Hea küll. 401 00:17:37,050 --> 00:17:40,300 Nii et nüüd me ütlesime int tmp võrdne täht. 402 00:17:40,300 --> 00:17:44,410 Nii real neli, kõik on sama, välja arvatud tmp. 403 00:17:44,410 --> 00:17:47,130 Me ei ole muutnud väärtused midagi peale tmp. 404 00:17:47,130 --> 00:17:49,230 Me millega tmp võrdne täht. 405 00:17:49,230 --> 00:17:50,620 Mis on täht? 406 00:17:50,620 --> 00:17:56,240 Noh, punktid x, siis täht läheb võrdne x, mis on 1. 407 00:17:56,240 --> 00:18:00,080 Nii et kõik on kopeeritud alla ja tmp on 1. 408 00:18:00,080 --> 00:18:01,110 >> Nüüd järgmisel real. 409 00:18:01,110 --> 00:18:03,380 Star võrdub star b. 410 00:18:03,380 --> 00:18:10,000 Nii realt five-- jälle hästi, kõik on samad, välja arvatud mis tahes täht on. 411 00:18:10,000 --> 00:18:10,830 Mis on täht? 412 00:18:10,830 --> 00:18:13,720 Noh, me just ütles staar on x. 413 00:18:13,720 --> 00:18:16,400 Nii et me muutuvas x võrdsele star b. 414 00:18:16,400 --> 00:18:18,960 Mis on täht b? y. b punktide y. 415 00:18:18,960 --> 00:18:21,030 Nii täht b on y. 416 00:18:21,030 --> 00:18:25,140 Nii et me milles x on võrdne y, ja kõik muu on sama. 417 00:18:25,140 --> 00:18:29,130 Nii näeme järgmisel real, et x on nüüd 2, ja ülejäänud on lihtsalt kopeeritud maha. 418 00:18:29,130 --> 00:18:31,120 >> Nüüd järgmisel real, star b võrdub tmp. 419 00:18:31,120 --> 00:18:34,740 Noh, me just ütles staar b on y, nii et me oleme milles y on võrdne tmp. 420 00:18:34,740 --> 00:18:37,450 Kõik muu on sama, nii et kõik saab kopeeritud maha. 421 00:18:37,450 --> 00:18:42,050 Me milles y on võrdne tmp, mis on üks ja kõik muu on sama. 422 00:18:42,050 --> 00:18:43,210 >> Nüüd lõpuks, liin seitse. 423 00:18:43,210 --> 00:18:44,700 Oleme tagasi põhiülesanne. 424 00:18:44,700 --> 00:18:46,350 Oleme pärast swap on lõppenud. 425 00:18:46,350 --> 00:18:48,972 Me oleme kaotanud, b ja tmp, kuid lõppkokkuvõttes oleme 426 00:18:48,972 --> 00:18:51,180 ei muutu üldse väärtusi midagi selles punktis, 427 00:18:51,180 --> 00:18:52,800 me lihtsalt kopeerida x ja y maha. 428 00:18:52,800 --> 00:18:56,490 Ja me näeme, et x ja y on nüüd 2 ja 1 asemel 1 ja 2. 429 00:18:56,490 --> 00:18:58,160 Swap on edukalt täidetud. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> Küsimus 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Oletame, et sul tekib veateated 434 00:19:03,100 --> 00:19:06,790 Allpool tööajal järgmisel aastal, kui CA või TF. 435 00:19:06,790 --> 00:19:08,930 Soovitage, kuidas määrata igale neist vigadest. 436 00:19:08,930 --> 00:19:11,160 Nii määratlemata viide getString. 437 00:19:11,160 --> 00:19:12,540 Miks võiks sa näed seda? 438 00:19:12,540 --> 00:19:15,380 Noh, kui õpilane kasutab GetString oma koodi 439 00:19:15,380 --> 00:19:20,310 nad on korralikult Hash lisatud CS50 dot h lisada CS50 raamatukogu. 440 00:19:20,310 --> 00:19:22,380 >> Noh, mida nad vaja määrata see viga? 441 00:19:22,380 --> 00:19:26,810 Nad peavad tegema kriips lcs50 juures käsurea kui nad koostamiseks. 442 00:19:26,810 --> 00:19:29,501 Nii et kui nad ei liigu rõkkama kriips lcs50, nad 443 00:19:29,501 --> 00:19:32,000 ei kavatse olla tegelik kood, mis rakendab getString. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> Küsimus 29. 446 00:19:34,170 --> 00:19:36,190 Kaudselt kuulutatakse raamatukogu funktsiooni strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 Noh see nüüd, nad ei ole teha õige hash hulka. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 Sel juhul päisefailis nad peavad sisaldama, on string dot h, 451 00:19:45,410 --> 00:19:48,710 ja sealhulgas string dot h, nüüd student-- nüüd koostaja 452 00:19:48,710 --> 00:19:51,750 on juurdepääs deklaratsioonide strlen, 453 00:19:51,750 --> 00:19:54,120 ja ta teab, et oma koodi kasutab strlen õigesti. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> Küsimus 30. 456 00:19:56,580 --> 00:20:00,240 Rohkem protsenti konverteerimine kui andmed argumente. 457 00:20:00,240 --> 00:20:01,540 Nii et mis see on? 458 00:20:01,540 --> 00:20:06,470 Mäletan hästi, et need protsenti signs-- kuidas nad olulised printf. 459 00:20:06,470 --> 00:20:08,890 Nii printf võiksime percent-- me võime printida midagi 460 00:20:08,890 --> 00:20:11,380 nagu protsenti i längkriipsu n. 461 00:20:11,380 --> 00:20:15,310 Või me võiksime trükkida nagu protsenti i, ruumi protsenti i, ruumi protsenti i. 462 00:20:15,310 --> 00:20:18,950 Nii on iga kõnealuse protsenti märke, peame 463 00:20:18,950 --> 00:20:21,560 sooritama muutuva lõpus printf. 464 00:20:21,560 --> 00:20:26,980 >> Nii et kui me ütleme printf paren protsenti i längkriipsu n lähedal paren, 465 00:20:26,980 --> 00:20:30,270 noh, ütleme, et me oleme trükkimineku täisarv, 466 00:20:30,270 --> 00:20:33,970 aga siis me ei liigu printf täisarv tegelikult printida. 467 00:20:33,970 --> 00:20:37,182 Nii et siin enam protsenti tulemusi kui andmed argumendid? 468 00:20:37,182 --> 00:20:39,390 See ütleb, et meil on terve hulk protsentides, 469 00:20:39,390 --> 00:20:42,445 ja meil ei ole piisavalt muutujad tegelikult täita neid protsente. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> Ja siis kindlasti, et küsimus 31, lõplikult kaotanud 40 baiti ühes plokke. 472 00:20:50,010 --> 00:20:52,350 Nii et see on Valgrind viga. 473 00:20:52,350 --> 00:20:54,720 See on selge, et kuskil oma koodi, 474 00:20:54,720 --> 00:20:59,010 teil on jaotus, mis on 40 baiti suur, et sa malloced 40 baiti, 475 00:20:59,010 --> 00:21:00,515 ja sa ei vabanenud ta. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 Tõenäoliselt sa lihtsalt vaja leida mõned Mälulekke 478 00:21:05,140 --> 00:21:07,650 ja leida, kui teil on vaja tasuta selle ploki mälu. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> Ja küsimus 32 kehtetuks kirjutada suuruse 4. 481 00:21:11,910 --> 00:21:13,250 Jällegi on see Valgrind viga. 482 00:21:13,250 --> 00:21:15,440 Seda ei pea tegema mäluvool nüüd. 483 00:21:15,440 --> 00:21:20,750 See on kõige likely-- Ma mõtlen, et see on mingi vigane mälu õigusi. 484 00:21:20,750 --> 00:21:23,270 Ja kõige tõenäolisem see on mingi omamoodi buffer overflow. 485 00:21:23,270 --> 00:21:26,560 Kui teil on massiiv, võibolla täisarv massiiv, ja olgem 486 00:21:26,560 --> 00:21:30,115 öelda, et see suurus 5, ja sa proovige puudutada massiivi sulg 5. 487 00:21:30,115 --> 00:21:34,150 Nii et kui sa püüad kirjutada, et väärtus, see pole tükk mälu 488 00:21:34,150 --> 00:21:37,440 et sa tegelikult juurdepääsu ja et sa lähed, et saada selle vea, 489 00:21:37,440 --> 00:21:39,272 öeldes vale kirjutada suuruse 4. 490 00:21:39,272 --> 00:21:42,480 Valgrind läheb tunnistama oled püüdes puudutada mälu sobimatult. 491 00:21:42,480 --> 00:21:43,980 >> Ja see on see quiz0. 492 00:21:43,980 --> 00:21:47,065 Ma olen Rob Bowden ja see on CS50. 493 00:21:47,065 --> 00:21:51,104