1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON HIRSCHHORN: Welcome az A5, mindenkinek. 3 00:00:07,820 --> 00:00:11,270 Van egy izgalmas hét áll előttünk, leginkább azért, mert olyan sok új 4 00:00:11,270 --> 00:00:12,350 arcok ebben a szobában. 5 00:00:12,350 --> 00:00:12,920 Ez csodálatos. 6 00:00:12,920 --> 00:00:15,740 Sok van itt véletlenül, ami még jobb. 7 00:00:15,740 --> 00:00:18,220 Így remélhetőleg akkor tartsa csatlakozott hozzánk. 8 00:00:18,220 --> 00:00:20,220 >> Ezen a héten fogunk tölteni A nagy szakasz 9 00:00:20,220 --> 00:00:21,870 felkészülés a kvíz. 10 00:00:21,870 --> 00:00:26,580 Így egy a napirenden, fogunk beszélni egy kicsit a forrásokat az osztály, 11 00:00:26,580 --> 00:00:30,350 hanem a vetélkedő, majd megint, költeni a nagy osztály beszéd 12 00:00:30,350 --> 00:00:31,390 a kérdésekre. 13 00:00:31,390 --> 00:00:33,900 Amint kész választ a kérdése van, vagy ha a kérdésre 14 00:00:33,900 --> 00:00:39,010 természetes módon vezet bennünket, hogy néhány kódolás, azt van minta problémák midterms 15 00:00:39,010 --> 00:00:43,180 múlt, hogy mi lesz Élőtömeg fejezet együtt, hogy az is, hogy akár más 16 00:00:43,180 --> 00:00:45,420 Jó téma, hogy fedezze. 17 00:00:45,420 --> 00:00:48,280 >> Tehát az első, ahogy átmentek a elmúlt pár hét, hogy emlékeztessem önöket 18 00:00:48,280 --> 00:00:51,700 srácok, van egy csomó források áll a tanfolyam. 19 00:00:51,700 --> 00:00:55,020 Sokan közülük hihetetlenül hasznos , mint te is, hogy 20 00:00:55,020 --> 00:00:57,280 tanulmány kvíz 0, mivel ez a kedd délután. 21 00:00:57,280 --> 00:00:59,630 Tehát az összes voltatok tanul egy kicsit. 22 00:00:59,630 --> 00:01:02,640 >> Vannak jegyzetek és a forrás kódot, amit kell 23 00:01:02,640 --> 00:01:04,050 feltétlenül nézd meg. 24 00:01:04,050 --> 00:01:05,019 Nézze meg a rövidnadrág. 25 00:01:05,019 --> 00:01:07,470 Nézze meg study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 És aztán, az alább felsorolt, számos egyéb források. 27 00:01:11,770 --> 00:01:14,020 >> Ismét kvíz 0 holnap at 01:00. 28 00:01:14,020 --> 00:01:18,230 Ha még nem tette meg, ellenőrizze ki a Névjegy Quiz 0 dokumentumot a 29 00:01:18,230 --> 00:01:21,370 Természetesen honlapja kitalálni ahol szedi a teszt. 30 00:01:21,370 --> 00:01:25,770 A kvíz indul 1:10 és ér véget 70. perccel később. 31 00:01:25,770 --> 00:01:29,610 Tehát, ha megmutatod után 01:10, akkor fog kapni, hogy sokan kevesebb perc 32 00:01:29,610 --> 00:01:30,940 mint 70, hogy a kvízt. 33 00:01:30,940 --> 00:01:33,570 Ügyeljen arra, hogy ott időben. 34 00:01:33,570 --> 00:01:38,690 Ha hosszabbító tanuló vagy más tesztelés megfontolások 35 00:01:38,690 --> 00:01:40,400 Lehet, hogy nem a 01:00 holnap. 36 00:01:40,400 --> 00:01:43,540 De ismétlem, ellenőrizze a Névjegy Quiz 0 dokumentumot, győződjön meg róla, hogy mikor 37 00:01:43,540 --> 00:01:44,760 szedi a teszt. 38 00:01:44,760 --> 00:01:46,440 Írtam 75 percig itt. 39 00:01:46,440 --> 00:01:48,580 Azt hiszem, ez így van, nem a 70. 40 00:01:48,580 --> 00:01:53,420 >> Ez magában foglalja az összes anyagot egy hét 0 a múlt heti előadás szerdán. 41 00:01:53,420 --> 00:01:59,350 És újra, ezt a kvízt, hogy egy dokumentumot, akkor kap egy kétoldalas és a 8. 42 00:01:59,350 --> 00:02:03,770 1/2 11 papírlapra, amit kap használni tudnivalókat a teszt. 43 00:02:03,770 --> 00:02:08,570 Sokan, ha nem a legtöbb ember, hogy megállapította, hogy az egyetlen hasznos módja 44 00:02:08,570 --> 00:02:11,970 hogy tanulmányozza a kvíz, hogy hogy készítsen tanulmányt lap, a 45 00:02:11,970 --> 00:02:13,730 egy sider, saját. 46 00:02:13,730 --> 00:02:17,710 Tehát nézd meg múlt is, ha láttad korábbiak. 47 00:02:17,710 --> 00:02:19,960 Érje el, hogy a barátok, hogy mi ők üzembe övék. 48 00:02:19,960 --> 00:02:23,610 >> De a kéz lefelé, a legjobb módja, akkor tanulmány célja, hogy menjen át mindent, és 49 00:02:23,610 --> 00:02:26,530 whittle le, hogy mit kell vagy kellene nem tartozik azon lapra 50 00:02:26,530 --> 00:02:30,570 papírt, mert ez csak egy nagyon hasznos módja, hogy megbizonyosodjon arról, 51 00:02:30,570 --> 00:02:33,620 mész keresztül mindent, és van némi ismerete is. 52 00:02:33,620 --> 00:02:36,690 A legtöbb ember, azt látjuk, még akkor is, már a papírt ül 53 00:02:36,690 --> 00:02:39,840 mellettük a kvíz, ne kapcsolja hozzá, mert megint, nagyon 54 00:02:39,840 --> 00:02:43,290 folyamat megy keresztül az információ segített nekik tanulni. 55 00:02:43,290 --> 00:02:45,370 >> Van valakinek kérdése a kvíz 0-ra? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 Van mindenkinek - 58 00:02:51,450 --> 00:02:53,230 Nem fogok csinálni egy kézfeltartással. 59 00:02:53,230 --> 00:02:53,550 Mindegy. 60 00:02:53,550 --> 00:02:54,790 Azt akartam megkérdezni, hogy ki kezdte tanulmányozni. 61 00:02:54,790 --> 00:02:58,360 De nem akarom, hogy te az összes nem emelje fel a kezét. 62 00:02:58,360 --> 00:03:01,290 Szóval, mint mondtam - igen, Avi, megy előre. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Mi lenne hasznos dolog , hogy az egyik lapozó? 64 00:03:04,205 --> 00:03:05,875 >> DIÁK: Ez rajtad múlik. 65 00:03:05,875 --> 00:03:08,210 >> JASON HIRSCHHORN: kapsz használja ítélőképességét. 66 00:03:08,210 --> 00:03:13,220 Hasznos dolog, hogy az egyik lapozó, Ha zavaros a nagy O 67 00:03:13,220 --> 00:03:17,510 runtime különböző típusú keresések és rendezi, tedd, hogy ott a 68 00:03:17,510 --> 00:03:18,760 praktikus dandy chart. 69 00:03:18,760 --> 00:03:22,250 Így, ha azt kérte, hogy a kvíz, akkor nem kell, hogy megpróbálja kitalálni 70 00:03:22,250 --> 00:03:23,560 ki vagy ok a runtime. 71 00:03:23,560 --> 00:03:24,730 Tudod csak másolja le. 72 00:03:24,730 --> 00:03:28,320 Ha megnézzük a vetélkedők múlt, sok alkalommal, ott futási idő kérdése. 73 00:03:28,320 --> 00:03:34,150 Tehát, hogy lenne egy példa a jó dolog, hogy vedd fel a one-pager. 74 00:03:34,150 --> 00:03:37,450 >> Egyéb jó dolog feltenni, ha zavaros, hogyan kell nyilatkozni a 75 00:03:37,450 --> 00:03:40,570 funkció vagy mi a különböző részein A funkció nyilatkozatban, írja 76 00:03:40,570 --> 00:03:43,400 hogy ott, a generikus és akkor talán egy példát. 77 00:03:43,400 --> 00:03:47,290 Ha zavaros a mutatók, egy diagram, hogy milyen mutatók munka 78 00:03:47,290 --> 00:03:48,660 talán tényleg hasznos. 79 00:03:48,660 --> 00:03:52,440 Ha zavaros rekurzió, a minta rekurzív függvény ott 80 00:03:52,440 --> 00:03:54,980 is bizonyítja, hogy nagyon hasznos. 81 00:03:54,980 --> 00:03:57,290 Vajon, hogy adjak néhány ötletet? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Meg kell érteni a teljes fordítási folyamat, mint a 83 00:04:01,820 --> 00:04:03,220 , hogy hogyan működik a rendszer? 84 00:04:03,220 --> 00:04:06,620 >> JASON HIRSCHHORN: Everything hogy a már szabályozott lehetett 85 00:04:06,620 --> 00:04:08,060 jelenik meg a kvíz. 86 00:04:08,060 --> 00:04:08,930 Kérdések - 87 00:04:08,930 --> 00:04:11,300 de a lényeg, néhány dolog lesz súlyozott erősen, mint mások. 88 00:04:11,300 --> 00:04:14,330 Vannak dolgok jöttek fel újra és újra az osztályban, a 89 00:04:14,330 --> 00:04:15,590 előadás, és a részt. 90 00:04:15,590 --> 00:04:17,220 Más dolog, hogy nem jön gyakran. 91 00:04:17,220 --> 00:04:22,900 >> Már sokat beszéltünk # include és -L valamit, és mik azok jelent 92 00:04:22,900 --> 00:04:24,390 A fordítási folyamat. 93 00:04:24,390 --> 00:04:29,120 Már beszéltünk sokat GDB, ragaszkodunk, azokat a különböző lobogók, amit használni 94 00:04:29,120 --> 00:04:33,100 állítjuk össze valamit, és mi make15 például igazán 95 00:04:33,100 --> 00:04:34,510 eszközök és valóban. 96 00:04:34,510 --> 00:04:38,110 Mi nem beszélünk olyan sokat minden egyes lépés 97 00:04:38,110 --> 00:04:39,240 A fordítási folyamat. 98 00:04:39,240 --> 00:04:40,410 Még mindig beszéltünk róla. 99 00:04:40,410 --> 00:04:42,550 Tehát ez még mindig valami, amit ismernie kell. 100 00:04:42,550 --> 00:04:44,610 De ismétlem, mi nem lesz - 101 00:04:44,610 --> 00:04:49,140 dolog, hogy jön fel gyakrabban az osztályban nagyobb valószínűséggel jön több 102 00:04:49,140 --> 00:04:52,495 gyakran, és erőteljesebben súlyozva a teszt. 103 00:04:52,495 --> 00:04:53,280 >> Cool. 104 00:04:53,280 --> 00:04:54,580 Minden más kérdések kvíz 0-ra? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, így tettem egy listát téma a fórumon. 107 00:05:00,050 --> 00:05:01,550 Mentem át a tantervet. 108 00:05:01,550 --> 00:05:07,340 Végigmentem a felülvizsgálati szakaszban a Tegnap este és a diák, hogy dolgozzon ki 109 00:05:07,340 --> 00:05:13,710 egy nem teljes lista a témák hogy van fedett eddig CS50 110 00:05:13,710 --> 00:05:16,800 és a dolgok, hogy esetleg jelenik meg a kvíz. 111 00:05:16,800 --> 00:05:19,900 Szóval nem fog átmenni minden egyes egy ilyen. 112 00:05:19,900 --> 00:05:22,370 Ez lenne szükség sokkal több idő, mint mi most. 113 00:05:22,370 --> 00:05:26,880 De hogy ezt ide, hogy remélhetőleg jog a memória, hogy a dolgokat, amelyek 114 00:05:26,880 --> 00:05:28,420 vagy nem annyira ismerős veled. 115 00:05:28,420 --> 00:05:32,850 >> És én szeretem tölteni a nagy részét részben választ a kérdésekre 116 00:05:32,850 --> 00:05:35,130 ezeket a témákat, témákat, nem tartoznak ide. 117 00:05:35,130 --> 00:05:36,130 Mi lehet írni pszeudo kódot. 118 00:05:36,130 --> 00:05:40,010 Mi lehet írni igazi kódot annak érdekében, hogy - 119 00:05:40,010 --> 00:05:44,280 Tudok válaszolni a kérdésre, és segít mindenki alapvetően megérteni 120 00:05:44,280 --> 00:05:48,330 sok ilyen téma, így érezni fogja előkészített és kényelmes megy 121 00:05:48,330 --> 00:05:50,150 A teszt holnap. 122 00:05:50,150 --> 00:05:52,300 Így olvasd át a listát. 123 00:05:52,300 --> 00:05:54,780 A remélhetőleg jöttek § néhány kérdéssel is. 124 00:05:54,780 --> 00:05:58,480 Ha készen áll, emeld fel a kezed és mi lesz az induláshoz. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Ne feledje, a kérdés akkor, nincsenek hülye kérdések. 127 00:06:05,200 --> 00:06:06,250 Azt hallottam, hogy sok. 128 00:06:06,250 --> 00:06:09,490 És a kérdésekre van, hajlandó vagyok fogadni, sok más ember mind 129 00:06:09,490 --> 00:06:11,740 itt ül és figyeli Online vannak is. 130 00:06:11,740 --> 00:06:13,770 Így csak segíteni az embereknek a kérdéseket. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> Marcus: között a verem, és a halom, van egy előre kiosztott 133 00:06:18,040 --> 00:06:22,880 százalékos memória, ami definiált ez a verem, vagy a kupac? 134 00:06:22,880 --> 00:06:25,010 Vagy hogyan működik ez pontosan? 135 00:06:25,010 --> 00:06:26,230 >> JASON HIRSCHHORN: jó kérdés. 136 00:06:26,230 --> 00:06:28,640 Megyek vissza nyom egy kicsit. 137 00:06:28,640 --> 00:06:30,910 Vajon mindenki - 138 00:06:30,910 --> 00:06:31,660 kérjük, hogy őszinte legyek itt. 139 00:06:31,660 --> 00:06:34,130 Tudom, kérem, hogy emelje fel a keze előtt a társaik. 140 00:06:34,130 --> 00:06:38,510 De vannak emberek, akik úgy érzik, kellemetlen a stack és halom 141 00:06:38,510 --> 00:06:42,980 és szeretné, hogy menjen át, hogy s milyen jelent? 142 00:06:42,980 --> 00:06:43,880 Emelje fel a kezét, ha - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 Köszönöm. 145 00:06:45,120 --> 00:06:48,420 Szóval megyek át a köteget, és A halom nagyon gyorsan, majd 146 00:06:48,420 --> 00:06:50,370 beköltözik választ a kérdésre. 147 00:06:50,370 --> 00:06:58,250 >> Tehát, ha kihúzzuk a dobozt, hogy képviselje memória a számítógépen, amit néhány 148 00:06:58,250 --> 00:07:02,160 dolgok, amik ebben a dobozban? 149 00:07:02,160 --> 00:07:03,630 Main. 150 00:07:03,630 --> 00:07:04,020 A fő funkciója. 151 00:07:04,020 --> 00:07:05,890 Hol fő menni? 152 00:07:05,890 --> 00:07:08,090 >> DIÁK: [hallható]. 153 00:07:08,090 --> 00:07:09,390 >> JASON HIRSCHHORN: így fogunk tedd fő ide. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Mi más megy ebben a dobozban? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> DIÁK: A funkciók, hogy hívja. 158 00:07:18,140 --> 00:07:19,020 >> JASON HIRSCHHORN: A funkciók hogy hívjuk. 159 00:07:19,020 --> 00:07:20,440 És hova mennek? 160 00:07:20,440 --> 00:07:21,300 >> DIÁK: A verem. 161 00:07:21,300 --> 00:07:22,380 >> JASON HIRSCHHORN: ők megy a verem. 162 00:07:22,380 --> 00:07:27,350 Így fogjuk hívni ezt a dolog itt a verem. 163 00:07:27,350 --> 00:07:31,880 És fel tetején, mi van a kupac. 164 00:07:31,880 --> 00:07:35,450 Tehát memória nem egy doboz, mint ez. 165 00:07:35,450 --> 00:07:37,330 De valójában nagyon hasonló. 166 00:07:37,330 --> 00:07:40,840 Ez lesz egy csomó doboz feletti és több, attól függően, hogy mekkora a 167 00:07:40,840 --> 00:07:43,730 számítógép, vagy hogy mekkora a memória. 168 00:07:43,730 --> 00:07:46,950 >> Az idézet, idézet vége "alulról" a verem. 169 00:07:46,950 --> 00:07:50,880 És van több dolog hogy megy a verem. 170 00:07:50,880 --> 00:07:53,840 És ezek függenek a funkciók van a kódban. 171 00:07:53,840 --> 00:07:57,780 Mindig van egy funkció a code úgynevezett fő, így mindig a 172 00:07:57,780 --> 00:08:00,480 rész itt, a verem szentelt fő. 173 00:08:00,480 --> 00:08:03,980 >> Ezek a szakaszok a verem nevezzük verem kereteket. 174 00:08:03,980 --> 00:08:09,580 Ha a hívás másik funkció, mondjuk fő kéri, bináris keresési funkció, 175 00:08:09,580 --> 00:08:11,075 teszünk egy keret a verem. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Pontosabban fogunk adományoz egy darab memória a 178 00:08:17,320 --> 00:08:22,960 számítógépen tárolni bináris keresés helyi változók és futtatni a bináris 179 00:08:22,960 --> 00:08:24,150 keresés kódot. 180 00:08:24,150 --> 00:08:26,810 >> Így hívjuk bináris keresés. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 Ebben darab memória, megyünk tárolja a lokális változók. 183 00:08:33,340 --> 00:08:35,270 Fogunk tárolja a printf hívások. 184 00:08:35,270 --> 00:08:38,159 Bármi is történik, hogy a funkció fog tárolni ott. 185 00:08:38,159 --> 00:08:40,350 Bináris keresést fog végrehajtani. 186 00:08:40,350 --> 00:08:42,210 Ez lesz a teljes végrehajtás. 187 00:08:42,210 --> 00:08:47,450 Mi az a szó, hogy a C jelenti hogy a függvény 188 00:08:47,450 --> 00:08:49,306 befejezni a végrehajtás? 189 00:08:49,306 --> 00:08:50,040 >> DIÁK: Return. 190 00:08:50,040 --> 00:08:50,870 >> JASON HIRSCHHORN: Vissza. 191 00:08:50,870 --> 00:08:53,230 Tehát, ha látsz egy return utasítást, A függvény befejezi 192 00:08:53,230 --> 00:08:54,350 ha eléri ezt. 193 00:08:54,350 --> 00:08:56,740 Így a bináris keresés hit a nyereségüket. 194 00:08:56,740 --> 00:09:01,360 Ez a rész a memória alapvetően felszabadul. 195 00:09:01,360 --> 00:09:03,510 És a fő megy vissza a végrehajtás. 196 00:09:03,510 --> 00:09:07,240 Így fő szünetelteti ahol volt, hívás bináris keresés, egy kis visszatérési értéke, 197 00:09:07,240 --> 00:09:08,700 , és a végrehajtást. 198 00:09:08,700 --> 00:09:10,840 Ez a stack frame eltűnik. 199 00:09:10,840 --> 00:09:14,810 >> Ha hívjuk a rekurzív függvényt, amely egy olyan funkció, amely magát mint 200 00:09:14,810 --> 00:09:18,480 és vége, lehet, hogy - mondjuk, nem bináris keresés rekurzívan. 201 00:09:18,480 --> 00:09:21,520 Mi lehet, hogy a bináris keresés első verzió, bináris keresés két, bináris keresés 202 00:09:21,520 --> 00:09:24,090 három, bináris keresés négy, bináris keresés öt. 203 00:09:24,090 --> 00:09:27,950 És akkor ez az utolsó a bináris keresést öt majd nyomja meg a alapeset, és a verem 204 00:09:27,950 --> 00:09:31,010 keretek megy vissza, és tartsa záró amíg vissza a fő. 205 00:09:31,010 --> 00:09:32,530 Mi mehet át rekurzió egy kicsit. 206 00:09:32,530 --> 00:09:35,530 De mindez azt mondani, ha hívás több funkciót egy időben, 207 00:09:35,530 --> 00:09:39,250 hogy lesz-e több stack keretek verem. 208 00:09:39,250 --> 00:09:42,900 >> A kupac, másrészt, akár itt nem a funkció, 209 00:09:42,900 --> 00:09:44,380 nem lokális változók. 210 00:09:44,380 --> 00:09:48,920 Ez a dinamikusan kiosztott változókat. 211 00:09:48,920 --> 00:09:57,210 Tehát ezek a változók, amelyek lehetnek inicializált akár fő-, vagy a 212 00:09:57,210 --> 00:09:58,640 funkció, amely fő hívásokat. 213 00:09:58,640 --> 00:10:00,790 Bárhol a kódot, akkor lehet inicializálni. 214 00:10:00,790 --> 00:10:04,360 És inicializálni dinamikusan kiosztott változó. 215 00:10:04,360 --> 00:10:06,970 Mi funkció C használunk? 216 00:10:06,970 --> 00:10:07,600 >> DIÁK: Malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON HIRSCHHORN: Malloc. 218 00:10:09,240 --> 00:10:10,800 Hívd malloc. 219 00:10:10,800 --> 00:10:12,260 Kapsz egy helyet a memóriában. 220 00:10:12,260 --> 00:10:15,020 És ez a hely a memória van a kupac. 221 00:10:15,020 --> 00:10:18,840 És ez a hely a memória marad ott, amíg a hívás ingyenes. 222 00:10:18,840 --> 00:10:22,670 >> Tehát dinamikusan kiosztott változók halom fog létezni, amíg te 223 00:10:22,670 --> 00:10:25,250 szeretnénk, hogy létezik, és nem fognak menj el, amíg Ön kifejezetten 224 00:10:25,250 --> 00:10:26,760 mondd meg nekik, hogy menjen el. 225 00:10:26,760 --> 00:10:29,670 Hozhat létre őket egy funkciót. 226 00:10:29,670 --> 00:10:31,930 Ez a funkció a stack keret eltűnik. 227 00:10:31,930 --> 00:10:35,490 De ez változó is létezik A halom, amíg felszabadul, 228 00:10:35,490 --> 00:10:39,650 potenciálisan a függvény neve bináris keresés, vagy bármi. 229 00:10:39,650 --> 00:10:42,580 >> Tehát azok halom változókat ott , ameddig csak akarod 230 00:10:42,580 --> 00:10:43,490 őket, hogy maradjanak ott. 231 00:10:43,490 --> 00:10:46,090 És kap fel itt. 232 00:10:46,090 --> 00:10:47,450 És akkor a következő lesz fel oda. 233 00:10:47,450 --> 00:10:50,210 Tartják egyre töltött be, és maradj ott, amíg nem hívja ingyenes. 234 00:10:50,210 --> 00:10:52,870 >> És lényegében a halomból és a veremből, egyre Marcus kérdésére, 235 00:10:52,870 --> 00:10:54,500 egymás felé növekszik. 236 00:10:54,500 --> 00:10:57,730 És ha befut egymást, akkor már használják fel az összes memóriát a 237 00:10:57,730 --> 00:11:01,330 a számítógép, és a program kilép mert nincs több memória 238 00:11:01,330 --> 00:11:02,420 elhagyta a használata. 239 00:11:02,420 --> 00:11:07,290 A közöttük, vannak esetleg más dolog. 240 00:11:07,290 --> 00:11:10,980 De a jelen persze, Nem kell aggódnia, hogy. 241 00:11:10,980 --> 00:11:12,020 >> Szóval ez volt a válasz a kérdésedre. 242 00:11:12,020 --> 00:11:13,520 Ne aggódj miatta. 243 00:11:13,520 --> 00:11:15,550 De ez volt a hosszú választ. 244 00:11:15,550 --> 00:11:17,800 Mindössze annyit kell tudni, hogy a halomból és a stack - 245 00:11:17,800 --> 00:11:18,900 az egyik az alján kezdődik. 246 00:11:18,900 --> 00:11:19,570 A stack nem. 247 00:11:19,570 --> 00:11:20,790 A kupac van ott. 248 00:11:20,790 --> 00:11:21,990 Ők közelebb egymáshoz. 249 00:11:21,990 --> 00:11:23,110 >> És, ha hozzáérnek, ez a gond. 250 00:11:23,110 --> 00:11:24,500 Ha elfogyott a memória. 251 00:11:24,500 --> 00:11:28,760 De amellett, hogy tudjuk, hol azok, mi mind a tárolt 252 00:11:28,760 --> 00:11:30,512 verem és a kupac. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: amikor ütköznek, az, hogy a verem túlcsordulás? 255 00:11:33,570 --> 00:11:35,670 >> JASON HIRSCHHORN: amikor ütköznek, ez nem verem túlcsordulás. 256 00:11:35,670 --> 00:11:38,340 Egy stack túlcsordulást egy másik terület hogy mi mehet át, ha akarsz. 257 00:11:38,340 --> 00:11:40,020 OK, akkor gyere vissza, hogy egy kicsit. 258 00:11:40,020 --> 00:11:42,730 >> Diák: És mi az a szó a ha elérik egymást, a 259 00:11:42,730 --> 00:11:44,450 verem, és a kupac? 260 00:11:44,450 --> 00:11:46,640 >> JASON HIRSCHHORN: Most, ne aggódj. 261 00:11:46,640 --> 00:11:47,750 Csak tudni - 262 00:11:47,750 --> 00:11:50,530 Fogok válaszolni a kérdésre óra után. 263 00:11:50,530 --> 00:11:52,680 Ha befut egymást, elfogyott memória, mert nincs több, 264 00:11:52,680 --> 00:11:53,330 hely van. 265 00:11:53,330 --> 00:11:55,450 >> DIÁK: Bocs, mi az a szegmens hiba? 266 00:11:55,450 --> 00:11:58,710 >> JASON HIRSCHHORN: A szegmens hiba lehet szükség - 267 00:11:58,710 --> 00:12:02,240 ez attól függ, hogy miért a szegmens hiba hívják. 268 00:12:02,240 --> 00:12:06,260 Néha, a verem túlcsordulás, akkor az mondjuk seg hiba, mint a hiba. 269 00:12:06,260 --> 00:12:08,180 >> Diák: És mi a dereferencing null változó? 270 00:12:08,180 --> 00:12:10,040 Ez a szegmens hiba? 271 00:12:10,040 --> 00:12:11,480 >> JASON HIRSCHHORN: Dereferencing null pointer - 272 00:12:11,480 --> 00:12:17,850 OK, így ha van egy mutató, hogy beállított értéke NULL, mutatók, visszahívás, 273 00:12:17,850 --> 00:12:20,270 store memória címek mint az értéküket. 274 00:12:20,270 --> 00:12:23,660 És egy null mutató lényegében tárolása 0, akkor a 0-ik 275 00:12:23,660 --> 00:12:26,670 foglalkozni a változó. 276 00:12:26,670 --> 00:12:30,010 Tehát 0x, 0, 0, 0, 0, satöbbi. 277 00:12:30,010 --> 00:12:35,030 Ez a 0-ik cím memóriában, hogy ez nem a mi kép, az ott 278 00:12:35,030 --> 00:12:38,800 valahol, ez fenntartva a számítógép. 279 00:12:38,800 --> 00:12:40,130 Mi nem szabad hozzányúlni. 280 00:12:40,130 --> 00:12:44,680 >> Tehát, amikor a program végrehajtása, ha valamit akar menni a memóriába 281 00:12:44,680 --> 00:12:48,990 cím 0, akkor tudja, hogy , hogy egy üres értéket. 282 00:12:48,990 --> 00:12:50,820 Tudja, semmi sem ott. 283 00:12:50,820 --> 00:12:53,420 Tehát, ha megpróbálja használni valami ott és kezelni valami hasonló van, vagy 284 00:12:53,420 --> 00:12:58,355 akar menni az adott helyre, akkor lesz, hogy a szegmens hiba vagy hiba. 285 00:12:58,355 --> 00:13:00,520 Van, hogy a kérdésére? 286 00:13:00,520 --> 00:13:03,170 >> És most megyek vissza verem túlcsordulás. 287 00:13:03,170 --> 00:13:09,560 A dolgok a verem, ahogy a srácok látott, hogy - hadd dolgozzon szoros 288 00:13:09,560 --> 00:13:11,966 fel egy verem keret. 289 00:13:11,966 --> 00:13:15,050 Lehet mindenki látja ezt? 290 00:13:15,050 --> 00:13:16,650 Tehát a verem keret. 291 00:13:16,650 --> 00:13:23,260 Mi megtakarítás egy tömb, mint a helyi változó ez a funkció. 292 00:13:23,260 --> 00:13:29,510 Tehát mondjuk a tömb öt foltok. 293 00:13:29,510 --> 00:13:33,230 Mind az öt azoknak lesznek tárolva abban a szekcióban keretben. 294 00:13:33,230 --> 00:13:37,540 >> Ha elkezdjük írni túl határai ezt a tömböt - 295 00:13:37,540 --> 00:13:43,990 Tehát, ha elkezdjük írni a, mondjuk, hogy ez 0-ra. 296 00:13:43,990 --> 00:13:46,800 Ezek az öt indexek a mi tömb. 297 00:13:46,800 --> 00:13:50,980 Ha elkezdjük írni a mutató 5, amely nem kell, ha van egy 298 00:13:50,980 --> 00:13:55,900 tömb 5-ös, akkor elkezdjük írni a index 6, 7, 8, 9, kapunk Stack 299 00:13:55,900 --> 00:13:57,960 Overflow hiba. 300 00:13:57,960 --> 00:14:00,510 >> Általában ez nem - 301 00:14:00,510 --> 00:14:04,910 akkor talán bajba ha átmegy az egyik. 302 00:14:04,910 --> 00:14:08,640 De általában, akkor kap a a legtöbb baj, ha átmegy a sok 303 00:14:08,640 --> 00:14:12,770 és megy eddig több mint, hogy írsz mint a feladó címét, hogy a 304 00:14:12,770 --> 00:14:16,080 funkció, amelynek székhelye a a köteg alsó keretben. 305 00:14:16,080 --> 00:14:16,520 >> Mert, ugye? 306 00:14:16,520 --> 00:14:17,670 You - a - sajnálom. 307 00:14:17,670 --> 00:14:18,550 Nem ", mert igaza van." 308 00:14:18,550 --> 00:14:20,470 >> A verem keret, akkor A lokális változók. 309 00:14:20,470 --> 00:14:27,090 A legalján a verem keret a feladó címét. 310 00:14:27,090 --> 00:14:28,790 Ez az, ahol a függvény megy, ha vége. 311 00:14:28,790 --> 00:14:33,750 És ha felülírja, hogy a visszatérő cím, akkor, amikor ez a verem keret, 312 00:14:33,750 --> 00:14:36,680 amikor megy keresztül a stack keret és végrehajtása minden sorban, akkor 313 00:14:36,680 --> 00:14:40,350 fog menni az új feladó címét ami írva van, hanem a 314 00:14:40,350 --> 00:14:40,910 tényleges egy. 315 00:14:40,910 --> 00:14:45,050 És így láttuk Egyes biztonsági rések 316 00:14:45,050 --> 00:14:46,780 megtörténhet a számítógépek. 317 00:14:46,780 --> 00:14:52,760 >> Tehát verem túlcsordulás, a rövid, amikor felülírja az a része a verem 318 00:14:52,760 --> 00:14:55,440 kéne használni, a helyi változót kéne használni, és 319 00:14:55,440 --> 00:14:58,070 különösen akkor, ha elkezd felülírás fontos dolgokat, mint a 320 00:14:58,070 --> 00:14:59,100 vissza címét. 321 00:14:59,100 --> 00:15:00,090 És ez az, ahol kapsz egy hiba. 322 00:15:00,090 --> 00:15:03,980 Vagy talán még meg tudná kezdeni akár írásban be - 323 00:15:03,980 --> 00:15:05,370 azt mondják, bináris keresés volt fölött fő. 324 00:15:05,370 --> 00:15:07,790 Ha felülírta sokat, akkor lehetne írni a fő. 325 00:15:07,790 --> 00:15:10,230 De általában, akkor kap egy hiba előtt Ezután, mivel a számítógép tudja 326 00:15:10,230 --> 00:15:12,270 csinálsz, amit nem csinál. 327 00:15:12,270 --> 00:15:12,560 Igen. 328 00:15:12,560 --> 00:15:13,910 >> Diák: És mi a különbség között a verem túlcsordulás 329 00:15:13,910 --> 00:15:16,940 és a puffer túlcsordulás? 330 00:15:16,940 --> 00:15:19,420 >> JASON HIRSCHHORN: Buffer túlcsordulás egy általánosabb jellegű 331 00:15:19,420 --> 00:15:20,395 amit én csak le. 332 00:15:20,395 --> 00:15:22,610 >> DIÁK: Tehát egy verem túlcsordulás olyan Például egy puffer túlcsordulás. 333 00:15:22,610 --> 00:15:23,420 >> JASON HIRSCHHORN: Pontosan. 334 00:15:23,420 --> 00:15:28,700 Ez egy tömb tudunk gondolni, mint a puffer, a hely a dolgok, hogy menjen be 335 00:15:28,700 --> 00:15:30,600 Ez a stack buffer overflow. 336 00:15:30,600 --> 00:15:33,210 Mi is van egy halom puffer túlcsordulás. 337 00:15:33,210 --> 00:15:36,870 Ha volt egy puffer, amely gyakran van egy tömb a halom, és 338 00:15:36,870 --> 00:15:40,600 felülírták ezeket határokat, akkor azt van egy halom puffer túlcsordulás. 339 00:15:40,600 --> 00:15:44,870 >> Túlmutat a tanfolyam, ők észlelt egy kicsit másképp. 340 00:15:44,870 --> 00:15:48,040 A fordító különleges módon kimutatására minden. 341 00:15:48,040 --> 00:15:50,660 De egy buffer overflow egy általánosabb típusú, amit leírt, 342 00:15:50,660 --> 00:15:54,090 ami egy stack buffer overflow. 343 00:15:54,090 --> 00:15:56,240 Vajon, hogy a kérdésére? 344 00:15:56,240 --> 00:15:57,910 Édes. 345 00:15:57,910 --> 00:16:01,850 >> Voltak egyéb kapcsolódó kérdéseket a verem, vagy a halom? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Igen. 348 00:16:05,510 --> 00:16:08,220 >> DIÁK: Tudom, hogy ingyenesen húrok mert ők a halom 349 00:16:08,220 --> 00:16:09,305 és nem akarod, hogy szivárog a memória. 350 00:16:09,305 --> 00:16:12,240 De van, hogy kiszabadítsa a globális változók és az ilyesmi? 351 00:16:12,240 --> 00:16:14,335 Vagy akkor automatikusan szabadult? 352 00:16:14,335 --> 00:16:15,700 >> JASON HIRSCHHORN: Jó kérdés. 353 00:16:15,700 --> 00:16:22,340 Így CS50.H hozunk létre, ez a dolog Ön hívott egy string. 354 00:16:22,340 --> 00:16:23,800 A string tényleg mi? 355 00:16:23,800 --> 00:16:24,810 >> DIÁK: Char csillag. 356 00:16:24,810 --> 00:16:29,180 >> JASON HIRSCHHORN: A char csillag, egy mutatót egy karakter, egy mutatót 357 00:16:29,180 --> 00:16:30,650 egy sor karakter. 358 00:16:30,650 --> 00:16:32,210 Ez az, amit a húr. 359 00:16:32,210 --> 00:16:36,050 Ezért fel kell szabadítanunk, mert getstring, amit sokat használtam - 360 00:16:36,050 --> 00:16:38,370 string name egyenlő getstring - 361 00:16:38,370 --> 00:16:43,560 hogy mallocs nekünk néhány memóriát a halom, majd visszatér a mutatót a 362 00:16:43,560 --> 00:16:47,230 első karakter, amely karakterlánc egy char csillag. 363 00:16:47,230 --> 00:16:52,760 >> Tehát látszólag, ha nem írásban ingyen bármelyik húrok 364 00:16:52,760 --> 00:16:55,600 hogy már hívott eddig, akkor már szivárog fel memóriát. 365 00:16:55,600 --> 00:16:57,430 Persze, még nem beszéltünk , így senki sem ütött 366 00:16:57,430 --> 00:16:58,520 bajt csinálja. 367 00:16:58,520 --> 00:16:59,980 De jövőre, igen. 368 00:16:59,980 --> 00:17:03,990 Amikor hívja getstring, akkor mallocing helyet a kupac. 369 00:17:03,990 --> 00:17:07,640 És ha nem hívja szabad később, hogy szöveg, akkor a memóriavesztés. 370 00:17:07,640 --> 00:17:09,440 Ez a válasz a kérdésére? 371 00:17:09,440 --> 00:17:10,606 >> Igen 372 00:17:10,606 --> 00:17:15,020 >> DIÁK: Tehát, hogy nem, hogy ne használjuk ingyenes mielőtt cserébe? 373 00:17:15,020 --> 00:17:18,510 Mint hatálya alá tartozik, azt hiszem, ha azt mondjuk, mint int main belül 374 00:17:18,510 --> 00:17:24,410 hatálya a kód, ami az említett kapcsos zárójelek, mielőtt - 375 00:17:24,410 --> 00:17:26,140 tudod, hol azt Rendszerint vissza. 376 00:17:26,140 --> 00:17:27,950 Ne tegye ingyenes előtte? 377 00:17:27,950 --> 00:17:31,000 >> JASON HIRSCHHORN: Tehát akkor tegye ingyen bárhova is kíván tenni ingyenes. 378 00:17:31,000 --> 00:17:33,810 Mivel ezek a dinamikusan kiosztott változó, mert lehet 379 00:17:33,810 --> 00:17:39,170 élnek túlmutat egy adott funkciót, ha hívja malloc egy 380 00:17:39,170 --> 00:17:44,140 külön funkció, például a getstring, akkor hívja ingyen fő. 381 00:17:44,140 --> 00:17:46,050 Nem kell nevezni az adott funkció 382 00:17:46,050 --> 00:17:47,570 ahol malloc hívják. 383 00:17:47,570 --> 00:17:50,340 De nem kell, hogy hívják főétkezések előtt visszatér. 384 00:17:50,340 --> 00:17:51,120 >> És ez tényleg attól függ. 385 00:17:51,120 --> 00:17:54,960 Attól függ, hogy miért malloced hogy helyet az első helyen. 386 00:17:54,960 --> 00:17:57,320 Vannak, akik hívják szabad elég gyorsan. 387 00:17:57,320 --> 00:17:59,220 Vannak, akik nem hívja-ig ingyenes A végén a program. 388 00:17:59,220 --> 00:18:00,660 És akkor megy át és a szabad mindent. 389 00:18:00,660 --> 00:18:03,597 Attól függ, hogy miért hívott malloc. 390 00:18:03,597 --> 00:18:11,270 >> DIÁK: És mit mondasz ha hívják használat getstring? 391 00:18:11,270 --> 00:18:13,320 Azt mondanám, hogy szabad, mi? 392 00:18:13,320 --> 00:18:20,040 >> JASON HIRSCHHORN: Tehát a szintaxis ingyen egyszerűen szabad, nyílt paren, közel 393 00:18:20,040 --> 00:18:22,130 paren, és a név a mutató. 394 00:18:22,130 --> 00:18:26,410 Tehát, ha írsz karakterlánc nevét egyenlők getstring, teszel név itt. 395 00:18:26,410 --> 00:18:27,760 Ez a neve a mutató. 396 00:18:27,760 --> 00:18:30,570 És tudja, hogy szabad, hogy a memória. 397 00:18:30,570 --> 00:18:33,920 >> DIÁK: Tehát, ha felszabadítja, hogy az emlékezet, a mutató továbbra is rámutat arra a helyre 398 00:18:33,920 --> 00:18:34,970 a memória? 399 00:18:34,970 --> 00:18:39,020 Vagy ez a mutató is kiürítették a címet, hogy mutat. 400 00:18:39,020 --> 00:18:40,290 >> JASON HIRSCHHORN: Meg kell próbálni. 401 00:18:40,290 --> 00:18:41,430 Meg kell kód. 402 00:18:41,430 --> 00:18:43,880 Hadd jöjjön vissza, ha eljutunk kódolás, és hagyja, hogy a kód. 403 00:18:43,880 --> 00:18:46,000 És ha azt szeretnénk, hogy kitaláljuk, a válasz az, hogy akkor is kód 404 00:18:46,000 --> 00:18:46,690 időközben. 405 00:18:46,690 --> 00:18:49,100 De ez egy nagy kérdés. 406 00:18:49,100 --> 00:18:53,480 >> DIÁK: Lehetséges, hogy szabad valamit túl korán? 407 00:18:53,480 --> 00:18:58,530 Szóval, még mindig szükség van, hogy a program és felszabadította, hogy memóriát? 408 00:18:58,530 --> 00:18:59,200 >> JASON HIRSCHHORN: Igen. 409 00:18:59,200 --> 00:19:03,020 Lehetséges, ha szabad valamit és akkor újra használni, akkor 410 00:19:03,020 --> 00:19:06,890 befut egy hiba. 411 00:19:06,890 --> 00:19:10,810 De ez rajtad, mert megszabadult valamit, majd felszólította, hogy később. 412 00:19:10,810 --> 00:19:13,940 Szóval ez volt a programozó hibája. 413 00:19:13,940 --> 00:19:14,780 De igen. 414 00:19:14,780 --> 00:19:17,760 Lehet írni, hogy. 415 00:19:17,760 --> 00:19:19,240 >> Van még kérdése van - 416 00:19:19,240 --> 00:19:19,760 Igen. 417 00:19:19,760 --> 00:19:22,820 >> DIÁK: Tehát, ha elvárják, hogy csak a szabad azt általában, mielőtt a 418 00:19:22,820 --> 00:19:25,490 program véget ér, ez azt jelenti, ha a a program véget ér, és nem szabad, hogy, 419 00:19:25,490 --> 00:19:27,580 hogy a memória még mindig osztják? 420 00:19:27,580 --> 00:19:31,330 >> JASON HIRSCHHORN: Ha a program véget ér és elfelejtette a szabad valamit, akkor 421 00:19:31,330 --> 00:19:34,390 hogy a memória osztottak az egész élettartama a program. 422 00:19:34,390 --> 00:19:37,670 Amikor a program bezárul teljesen hogy a memória nem megy 423 00:19:37,670 --> 00:19:39,490 hogy ott örökre. 424 00:19:39,490 --> 00:19:42,080 A számítógép elég okos ahhoz, hogy tudja, hogy amikor a program bezárul, azt 425 00:19:42,080 --> 00:19:46,440 kell megszabadulni minden a memória járt a program. 426 00:19:46,440 --> 00:19:51,240 >> Vannak azonban olyan eszközök is futtatható a program érzékeli, ha, ha a 427 00:19:51,240 --> 00:19:54,720 program befejeződött, elfelejtette Szabadítson fel memóriát. 428 00:19:54,720 --> 00:19:57,960 És itt a következő probléma meg, ahol a akkor használja malloc és használata 429 00:19:57,960 --> 00:20:02,610 mutatók, akkor fog futni ezen a program a programot, hogy ha, 430 00:20:02,610 --> 00:20:06,530 amikor a fő visszatér, hogy volt egy kis dolog, hogy maradt unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Így nem fognak maradni malloced örökre a számítógépen. 432 00:20:09,130 --> 00:20:11,720 Ez lenne a pazarló, mert a nagyon gyorsan, számítógépek 433 00:20:11,720 --> 00:20:12,960 akkor elfogy a memória. 434 00:20:12,960 --> 00:20:16,450 De ha addig, amíg a végén a programozni, és ők nem szabadult, és az 435 00:20:16,450 --> 00:20:20,260 a program kilép, ez még egy probléma hogy ez az eszköz segít kezelni. 436 00:20:20,260 --> 00:20:21,520 >> DIÁK: Ez Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON HIRSCHHORN: Ez nevű Valgrind. 438 00:20:22,910 --> 00:20:23,520 És te leszel - 439 00:20:23,520 --> 00:20:25,780 >> DIÁK: De nem kell tudni, hogy a kvíz, igaz? 440 00:20:25,780 --> 00:20:27,600 Úgy értem, ez volt beszélt egy kicsit az előadás. 441 00:20:27,600 --> 00:20:33,600 >> JASON HIRSCHHORN: Tehát Valgrind az a neve, hogy a szerszám. 442 00:20:33,600 --> 00:20:37,180 Tudta, mit csinál a elég a kvíz. 443 00:20:37,180 --> 00:20:40,200 De még nem használta még a probléma meg, mert nem volt 444 00:20:40,200 --> 00:20:43,520 a probléma meg, hogy kifejezetten foglalkozott A malloc vagy a malloc. 445 00:20:43,520 --> 00:20:45,330 Szóval nem használt Valgrind még. 446 00:20:45,330 --> 00:20:47,760 De nem fogja használni hamarabb mint később. 447 00:20:47,760 --> 00:20:48,710 >> DIÁK: Meg tudná ismételni mi Valgrind van? 448 00:20:48,710 --> 00:20:49,190 >> JASON HIRSCHHORN: Tessék? 449 00:20:49,190 --> 00:20:51,240 >> DIÁK: Meg tudná ismételni, amit a célja Valgring van? 450 00:20:51,240 --> 00:20:53,100 >> JASON HIRSCHHORN: Valgrind a neve - 451 00:20:53,100 --> 00:20:59,890 mint a GDB segít hibakeresés a programban, Valgrind segít kitalálni, ha 452 00:20:59,890 --> 00:21:03,210 a dolgok nem szabadult amikor a program bezárul. 453 00:21:03,210 --> 00:21:05,110 Így lesz futtatni a programot. 454 00:21:05,110 --> 00:21:09,230 És az a program kilép, és azt fogja mondani A program neve malloc ennyi 455 00:21:09,230 --> 00:21:13,670 szor ennyi bájt, és csak az úgynevezett szabad ezt sokszor. 456 00:21:13,670 --> 00:21:16,520 És így maradt ennyi bájt anélkül, hogy szabadult. 457 00:21:16,520 --> 00:21:18,050 Vagy azt mondom, hogy már felszabadult mindent. 458 00:21:18,050 --> 00:21:19,070 Szép munka. 459 00:21:19,070 --> 00:21:19,480 >> DIÁK: OK. 460 00:21:19,480 --> 00:21:21,060 És úgy hívják Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON HIRSCHHORN: V-A-L-R-G-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> DIÁK: A kérdés mutatók. 463 00:21:25,970 --> 00:21:30,080 Tehát mondjuk van n csillag x egyenlő valamit. 464 00:21:30,080 --> 00:21:33,330 Ez egyenlő, amit te olyan van az, hogy mi is betenni 465 00:21:33,330 --> 00:21:36,120 mi x mutat, vagy a mutató az x? 466 00:21:36,120 --> 00:21:37,690 >> JASON HIRSCHHORN: Tud ismételje meg a kérdést? 467 00:21:37,690 --> 00:21:39,340 Vonhatunk le, amíg mondod? 468 00:21:39,340 --> 00:21:42,710 >> DIÁK: A kvíz, valóban, a akit küldött nekünk, olyan volt, mint, char 469 00:21:42,710 --> 00:21:46,520 csillag igazság egyenlő CS50 sziklák, igaz? 470 00:21:46,520 --> 00:21:52,190 Akkor ez azt jelenti, hogy CS50 sziklák az, hogy mi az igazság mutat? 471 00:21:52,190 --> 00:21:55,810 >> JASON HIRSCHHORN: Tehát te beszélsz egy char csillag egy string, hogyan 472 00:21:55,810 --> 00:21:56,460 , ami működik? 473 00:21:56,460 --> 00:21:56,890 Igen. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 Nézzük felhívni a itt. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE BESZÉLGETÉS] 477 00:22:07,100 --> 00:22:11,130 >> JASON HIRSCHHORN: Tehát ez a változó lesz típusú char csillag. 478 00:22:11,130 --> 00:22:14,580 Mekkora egy változó típusú char csillag? 479 00:22:14,580 --> 00:22:15,510 Hány bájt? 480 00:22:15,510 --> 00:22:16,450 >> DIÁKOK: Négy. 481 00:22:16,450 --> 00:22:18,210 >> JASON HIRSCHHORN: Ez a négy bájt. 482 00:22:18,210 --> 00:22:21,420 Hány jogok változó int típusú csillag? 483 00:22:21,420 --> 00:22:22,210 >> DIÁKOK: Négy. 484 00:22:22,210 --> 00:22:24,910 >> JASON HIRSCHHORN: négy bájt. 485 00:22:24,910 --> 00:22:28,280 Ha ez a mutató, akkor mindig négy bájt, mert a mutatók, a 486 00:22:28,280 --> 00:22:30,070 értéke egy memória cím. 487 00:22:30,070 --> 00:22:35,160 És a memória címek a CS50 készülék négy bájt hosszú. 488 00:22:35,160 --> 00:22:42,900 Tehát, ha hívjuk getstring, vagy amikor mondjuk, stringname egyenlő, majd 489 00:22:42,900 --> 00:22:46,140 idézőjelek közé tenni a szöveget, mi üzembe - 490 00:22:46,140 --> 00:22:46,920 Nos, ez egy kicsit más. 491 00:22:46,920 --> 00:22:48,630 Megteszünk getString, mint a példa. 492 00:22:48,630 --> 00:22:52,150 Vagy char csillag valamit megegyezik a húr. 493 00:22:52,150 --> 00:22:54,360 Sajnálom, hogy nekem a példa , amit olvas? 494 00:22:54,360 --> 00:22:57,590 >> DIÁK: char csillag igazság értéke "CS50 sziklák" idézőjelek. 495 00:22:57,590 --> 00:23:02,260 >> JASON HIRSCHHORN: Szóval ez a csillag, ez a hívjuk ezt a változót x számára 496 00:23:02,260 --> 00:23:04,060 általános célokra. 497 00:23:04,060 --> 00:23:05,970 Készítettünk egy nevű változó x. 498 00:23:05,970 --> 00:23:07,610 Ez a típus char csillag. 499 00:23:07,610 --> 00:23:10,950 Ez a mutató a sorozat A karakterek. 500 00:23:10,950 --> 00:23:12,200 Tehát itt - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Szóval így ez dolgozni a memóriában. 503 00:23:25,890 --> 00:23:27,410 Ez tárolja a memória cím. 504 00:23:27,410 --> 00:23:31,770 Ez tárolja a memória címét az első karakter a tömbben. 505 00:23:31,770 --> 00:23:33,830 És amikor ezt követően a mutató, akkor, 506 00:23:33,830 --> 00:23:35,200 hogy az első karakter. 507 00:23:35,200 --> 00:23:38,780 >> És ha ezt olvasod ezt a dolgot, mint a egy sor, a számítógép smart 508 00:23:38,780 --> 00:23:42,930 ahhoz, hogy tudja, olvassa el ezt az egészet amíg nem lesz a holtjáték 0-ra. 509 00:23:42,930 --> 00:23:45,530 De ha olvasod, hogy egy karakter egy időben, így te iterációjával keresztül 510 00:23:45,530 --> 00:23:49,910 ez a szöveg, akkor csak olvasni a karakter, addig, amíg nem kap 511 00:23:49,910 --> 00:23:50,850 backslash 0-ra. 512 00:23:50,850 --> 00:23:52,335 Ez lehet, hogy nem felelt meg kérdés, mégis. 513 00:23:52,335 --> 00:23:55,610 >> DIÁK: Igen, de még nem malloced, hogy a tér 514 00:23:55,610 --> 00:23:58,400 de erre mutató. 515 00:23:58,400 --> 00:24:02,510 >> JASON HIRSCHHORN: Szóval nem vagyok benne biztos pontosan mit nézel, 516 00:24:02,510 --> 00:24:03,640 mert nem hogy ezt kvíz. 517 00:24:03,640 --> 00:24:06,370 Ezt kellett volna, hogy a hasznos erőforrás egy másik TF. 518 00:24:06,370 --> 00:24:11,380 Ha létrehoz egy string a verem vagy a helyi változó, akkor az 519 00:24:11,380 --> 00:24:16,920 csak sor a díjak helyett általában char csillag mutat 520 00:24:16,920 --> 00:24:18,600 egy húr. 521 00:24:18,600 --> 00:24:20,550 De nem tudom. 522 00:24:20,550 --> 00:24:25,065 Ez lehet egy mutatót, hogy egy másik string a verem is. 523 00:24:25,065 --> 00:24:27,240 Igen. 524 00:24:27,240 --> 00:24:31,116 >> DIÁK: Tudom, hogy meg kell, hogy memóriát, ha a mutató 525 00:24:31,116 --> 00:24:33,360 egyre kijelentette belül A másik funkció. 526 00:24:33,360 --> 00:24:36,740 Szüksége van, hogy nem ugyanaz a dolog, ha ez nyilvánítása belső fő, 527 00:24:36,740 --> 00:24:39,570 Ön használja belsejébe fő? 528 00:24:39,570 --> 00:24:43,590 >> JASON HIRSCHHORN: Szóval igen. 529 00:24:43,590 --> 00:24:46,670 Ön kijelenti, a mutató minden memória cím a memóriában. 530 00:24:46,670 --> 00:24:51,440 Ez lehet a memória cím a helyi változó, bár sokszor, 531 00:24:51,440 --> 00:24:55,760 az emberek nem nyilvánítja memória címek a helyi változókat, mivel mennek 532 00:24:55,760 --> 00:24:59,890 el egyszer, hogy a függvény, amely Ezért általában malloc dolgokat. 533 00:24:59,890 --> 00:25:04,630 De igen, akkor kijelenti, a mutató egy másik helyi változót. 534 00:25:04,630 --> 00:25:06,360 Ez csak általában nem történt meg. 535 00:25:06,360 --> 00:25:09,480 De vessünk egy pillantást speciális dolog után osztályban. 536 00:25:09,480 --> 00:25:10,650 Igen. 537 00:25:10,650 --> 00:25:12,350 >> DIÁK: Azt hiszem, ez a fajta A mi kérik. 538 00:25:12,350 --> 00:25:16,930 Úgy tűnik furcsának, hogy inicializálás a mutató nem a 539 00:25:16,930 --> 00:25:20,760 címet, de azt, hogy milyen úgy tűnik, mint egy értéket. 540 00:25:20,760 --> 00:25:25,970 Úgy tűnik, a CS50 az, mi van benne A dolog, hogy mutatott, és 541 00:25:25,970 --> 00:25:28,820 nem a tényleges cím, nem igaz? 542 00:25:28,820 --> 00:25:30,520 >> JASON HIRSCHHORN: Ennyi nem ez a helyzet, mégis. 543 00:25:30,520 --> 00:25:32,470 Ez nem az, hogy mi történik. 544 00:25:32,470 --> 00:25:35,910 Ha kijelentik char csillag, ez egy memória cím. 545 00:25:35,910 --> 00:25:38,860 Mutatók mind memória címek mutat valami mást. 546 00:25:38,860 --> 00:25:41,480 Ez valami más lehet a stack, de szinte mindig van a 547 00:25:41,480 --> 00:25:43,440 halom, ahogy látni fogjuk használni. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 De stringname egyenlő idézőjel "GetString," azt látjuk, hogy mi 550 00:25:53,500 --> 00:25:55,010 nézd át ezt, és kód. 551 00:25:55,010 --> 00:26:01,190 getString szöveg nem kerül mentésre hogy a változó, vagy bármi más a húr 552 00:26:01,190 --> 00:26:04,580 neve nem kerül mentésre, amely változó, mert ez nem így 553 00:26:04,580 --> 00:26:06,070 mutatók működik. 554 00:26:06,070 --> 00:26:06,770 Van ennek értelme? 555 00:26:06,770 --> 00:26:07,170 >> DIÁK: Igen. 556 00:26:07,170 --> 00:26:08,570 >> JASON HIRSCHHORN: OK. 557 00:26:08,570 --> 00:26:11,690 Remélhetőleg, ez nem volt zavaró senkinek. 558 00:26:11,690 --> 00:26:15,732 De ha igen, akkor nézd meg újra egy kicsit, mert mi valóban megy 559 00:26:15,732 --> 00:26:19,240 kódolni valamit, ami remélhetőleg dolgozni, húrok, és segít úgy érzi, 560 00:26:19,240 --> 00:26:22,170 kényelmesebb velük. 561 00:26:22,170 --> 00:26:24,869 >> Más kérdés az ezekhez kapcsolódó témákat, illetve más téma, hogy 562 00:26:24,869 --> 00:26:26,119 Teszek vissza? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 És - 565 00:26:34,840 --> 00:26:36,310 most. 566 00:26:36,310 --> 00:26:37,630 Igen, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: Tehát ez teljesen független, de mi csak megy át 568 00:26:39,860 --> 00:26:42,760 nagyon gyorsan, amit tudnunk kell, hogy a különbség a 32 és a 569 00:26:42,760 --> 00:26:46,345 64 bites gép? 570 00:26:46,345 --> 00:26:47,740 >> JASON HIRSCHHORN: Igen. 571 00:26:47,740 --> 00:26:52,111 Tehát 32 bit, hogy hány bájt? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: Ez a négy bájt. 573 00:26:53,060 --> 00:26:54,360 >> JASON HIRSCHHORN: Ez a négy bájt. 574 00:26:54,360 --> 00:26:58,420 És 64 bit, hogy hány bájt? 575 00:26:58,420 --> 00:26:59,112 >> DIÁK: Nyolc. 576 00:26:59,112 --> 00:27:00,610 >> JASON HIRSCHHORN: Nyolc bájt. 577 00:27:00,610 --> 00:27:03,980 Tehát még egyszer, nyolc bit egy bájt. 578 00:27:03,980 --> 00:27:08,340 A CS50 készülék 32 bites gép. 579 00:27:08,340 --> 00:27:13,650 Így a memória címek négy bájt hosszú. 580 00:27:13,650 --> 00:27:17,460 Vannak 2 32 memória címeket. 581 00:27:17,460 --> 00:27:21,310 0-2 a 32 mínusz 1. 582 00:27:21,310 --> 00:27:27,630 És én nem vagyok biztos, de ez talán a körét, amit meg kell 583 00:27:27,630 --> 00:27:35,230 tudja, egy 32 bites gép, hogy az emlékezet címek, ismét négy bájt hosszú, 584 00:27:35,230 --> 00:27:39,620 és ez a maximális összeg memória címeket. 585 00:27:39,620 --> 00:27:41,680 >> Továbbá, adattípusok - 586 00:27:41,680 --> 00:27:45,020 ez lehet valami olyan jól, hogy érdemes megjegyezni. 587 00:27:45,020 --> 00:27:49,610 Akkora, mint egy adattípus függ A gép éppen dolgozik. 588 00:27:49,610 --> 00:27:56,760 Tehát egy karakter, egy karakter, az, hogy hogyan hány bájt a mi CS50 készülék? 589 00:27:56,760 --> 00:27:57,980 Egy byte. 590 00:27:57,980 --> 00:28:02,310 És ez tényleg egy bájt, mint továbbá a 64 bites gép. 591 00:28:02,310 --> 00:28:05,920 >> És a legtöbb adattípusok ugyanannyi bájtok mindkét gépen. 592 00:28:05,920 --> 00:28:11,620 De néhány adattípusok más lesz mindkét gépen. 593 00:28:11,620 --> 00:28:14,590 Szóval ez lenne esetleg a egyetlen dolog, amit tudnod kell. 594 00:28:14,590 --> 00:28:16,710 >> De még ez, azt hiszem, túl a határokat - 595 00:28:16,710 --> 00:28:20,990 Szinte biztosra veszem, ha visszatekintünk A régi vetélkedők, azt mondja, feltételezzük, 596 00:28:20,990 --> 00:28:24,090 kódolási probléma, amit használ 32 bites gép. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 De vannak, hogy együtt haladjon, hogy Ha esetleg érdekel, vannak 599 00:28:30,620 --> 00:28:35,920 adattípusok, hogy az azonos méret minden gépen. 600 00:28:35,920 --> 00:28:42,670 >> Ha láttál valami hasonló uint32_t, akkor lehet, hogy 601 00:28:42,670 --> 00:28:43,260 Nem láttam, hogy az. 602 00:28:43,260 --> 00:28:44,290 Ez az adat típusát. 603 00:28:44,290 --> 00:28:47,570 Ez azt mondja, hogy 32 bit nem számít mi ez a gép be van kapcsolva. 604 00:28:47,570 --> 00:28:50,350 Tehát, amikor az emberek írásban hordozható kódot, akkor valószínűleg nem fogja használni ints. 605 00:28:50,350 --> 00:28:53,260 Ők inkább használja ezeket az egyéb adatok típusok, hogy tudják ugyanaz lesz 606 00:28:53,260 --> 00:28:54,780 méret minden egyes gépen. 607 00:28:54,780 --> 00:28:58,080 608 00:28:58,080 --> 00:28:58,250 Madhu. 609 00:28:58,250 --> 00:29:00,150 >> Madhu: Volt egy kérdés A fordítási folyamat. 610 00:29:00,150 --> 00:29:04,110 Tehát, ha írsz egy programot, amely könyvtár, mint a CS50, vagy valami 611 00:29:04,110 --> 00:29:06,840 így, tudom, hogy a könyvtár kell, egy bizonyos ponton, hogy 612 00:29:06,840 --> 00:29:08,590 össze és kapcsolódik be 613 00:29:08,590 --> 00:29:13,380 De mennyi az, ami történik közben összeállítása a program? 614 00:29:13,380 --> 00:29:15,880 Milyen része, hogy a könyvtár a folyamat fordul elő, amikor 615 00:29:15,880 --> 00:29:18,560 összeállításakor a saját programot? 616 00:29:18,560 --> 00:29:24,020 >> JASON HIRSCHHORN: Akkor menjünk át általában a következő lépéseket foglalja ezt a folyamatot. 617 00:29:24,020 --> 00:29:26,280 Írja meg. C file. 618 00:29:26,280 --> 00:29:33,530 Az Ön. Ac fájlt, # include a fejléc könyvtárak, például cs50.h. 619 00:29:33,530 --> 00:29:39,480 Mit jelent az, hogy az éles tartalmazzák sorban azért, hogy a programot? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Hozzáteszi, a prototípus a funkciókat a fejléc 622 00:29:43,350 --> 00:29:45,120 fájlokat a könyvtárakban. 623 00:29:45,120 --> 00:29:45,600 >> JASON HIRSCHHORN: Pontosan. 624 00:29:45,600 --> 00:29:49,870 Hozzáteszi, ezek a függvények prototípusai a kódot. 625 00:29:49,870 --> 00:29:55,230 Tehát, amikor a kód van fordítva A korai szakaszban a fordító tudja 626 00:29:55,230 --> 00:29:59,250 hogy ezek a funkciók valóban létezik, és hogy valahol azokat meghatározott. 627 00:29:59,250 --> 00:30:02,460 Az. H fájlok nem tartalmazzák a meghatározások ezeket a funkciókat, vagy hogyan 628 00:30:02,460 --> 00:30:03,950 ahol ténylegesen dolgoznak. 629 00:30:03,950 --> 00:30:07,960 Cs50.h csak olyasmit tartalmaz, hogy azt mondja: getstring egy igazi dolog, 630 00:30:07,960 --> 00:30:09,270 megtörténhet. 631 00:30:09,270 --> 00:30:14,240 És standardio.h mondja printf van egy igazi dolog, ami történhet. 632 00:30:14,240 --> 00:30:23,190 >> Tehát a C nyelv ezzel. Fejléc fájl kerül vált néhány 633 00:30:23,190 --> 00:30:27,750 géppel olvasható kód, amely végül lesz kapcsolva bináris 634 00:30:27,750 --> 00:30:30,030 kód, 0 és 1-es. 635 00:30:30,030 --> 00:30:33,590 És ez a kód, hogy végül kerül végrehajtásra. 636 00:30:33,590 --> 00:30:38,550 A-l CS50 sor - például ha írsz csenget - 637 00:30:38,550 --> 00:30:41,830 és akkor többek között-l CS50, beírt, hogy be 638 00:30:41,830 --> 00:30:42,180 És látod, hogy. 639 00:30:42,180 --> 00:30:43,890 Amikor írsz, hogy, akkor látni, hogy line up itt. 640 00:30:43,890 --> 00:30:47,740 És látni fogjuk, hogy a második, amikor mi kódot, vagy később, amikor kódot. 641 00:30:47,740 --> 00:30:50,390 >> De az-l CS50 online csinál valamit Egy kicsit más, mint 642 00:30:50,390 --> 00:30:52,440 Az # include cs50.h. 643 00:30:52,440 --> 00:30:56,300 Mit jelent, hogy a-l CS50 vonal csinálni? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Azt akarom mondani, hogy összeköti A könyvtár a funkció 646 00:31:00,310 --> 00:31:02,710 hívja, mint a. o fájlokat. 647 00:31:02,710 --> 00:31:08,200 >> JASON HIRSCHHORN: Tehát nagyon szoros, ha nem spot-on. 648 00:31:08,200 --> 00:31:16,220 A-l CS50 azon a bináris fájlt és egyesíti azt a bináris fájl. 649 00:31:16,220 --> 00:31:21,410 Tehát cs50.h, nincs értelme fordult cs50.h a C nyelv bináris minden 650 00:31:21,410 --> 00:31:23,130 egyes alkalommal, ez használt. 651 00:31:23,130 --> 00:31:26,650 Ez lenne butaság, mert az lenne hulladék sok időt. 652 00:31:26,650 --> 00:31:30,420 Így már össze és vált egy futtatható. 653 00:31:30,420 --> 00:31:35,430 És most ez lesz egyesíteni a fájl végén. 654 00:31:35,430 --> 00:31:38,370 Így azok, 1-es és 0-mennek egyesíteni Ön is 655 00:31:38,370 --> 00:31:39,150 és 0 a végén. 656 00:31:39,150 --> 00:31:43,670 Tehát most akkor valójában a tényleges 1 és 0, amely meghatározza, hogyan getstring, 657 00:31:43,670 --> 00:31:47,890 például működik, vagy hogyan printf, például működik. 658 00:31:47,890 --> 00:31:52,750 >> És további információkat, van egy rövid fordítók hogy Nate ad, hogy 659 00:31:52,750 --> 00:31:55,410 akkor nézd meg, hogy megy át ezeket a lépéseket. 660 00:31:55,410 --> 00:31:56,050 De - 661 00:31:56,050 --> 00:31:56,560 Igen. 662 00:31:56,560 --> 00:32:01,700 >> DIÁK: Vajon mindig. O fájlok amikor már a könyvtárban formában, 663 00:32:01,700 --> 00:32:06,764 készen kell egyesíteni, kapcsolódik - mint a ők a bináris kódot? 664 00:32:06,764 --> 00:32:07,600 >> JASON HIRSCHHORN: OK. 665 00:32:07,600 --> 00:32:08,420 Mi - 666 00:32:08,420 --> 00:32:11,780 >> Diák: Van, hogy minden esetben a A könyvtárak, ha összekapcsolják őket? 667 00:32:11,780 --> 00:32:12,500 >> JASON HIRSCHHORN: Igen. 668 00:32:12,500 --> 00:32:17,300 Tehát ott van. S kép, ami lehet gépi kód, amelyet akkor is lehet 669 00:32:17,300 --> 00:32:17,975 rejtélyes neked. 670 00:32:17,975 --> 00:32:19,410 Önnek nem kell aggódnia azoknak. 671 00:32:19,410 --> 00:32:24,930 De általában, igen, akkor majd legyen. o fájlok kész. 672 00:32:24,930 --> 00:32:27,170 >> DIÁK: Tehát, ha hajó könyvtár, nem csak a hajó 673 00:32:27,170 --> 00:32:28,880 a. h és. o? 674 00:32:28,880 --> 00:32:32,210 Nem hajó a. C vagy a. S. 675 00:32:32,210 --> 00:32:33,070 >> JASON HIRSCHHORN: So - 676 00:32:33,070 --> 00:32:36,260 és ez ebben a rövid is, ha úgy tűnik, hogy ezt az információt egy jön 677 00:32:36,260 --> 00:32:36,700 kicsit gyorsan. 678 00:32:36,700 --> 00:32:39,870 De a rövid a fordító beszél erről is. 679 00:32:39,870 --> 00:32:43,290 Ha a hajó egy könyvtárat, ha a hajó a. h, a header fájlt, azok 680 00:32:43,290 --> 00:32:46,290 funkció prototípusok, és az 1-es és a 0-k, ennyit meg kell adni. 681 00:32:46,290 --> 00:32:50,640 Nem kell adni, hogy az funkció, a. c file. 682 00:32:50,640 --> 00:32:56,360 Mivel a pont az absztrakció, vagy a pont API-k, a lényeg ebben az SPL, 683 00:32:56,360 --> 00:32:59,650 A Stanford hordozható könyvtár, ez az Ön számára, hogy nem kell aggódnia, hogy az új 684 00:32:59,650 --> 00:33:04,220 GRect működik, vagy hogyan mozog működik, vagy hogyan adjunk működik. 685 00:33:04,220 --> 00:33:06,520 Mindössze annyit kell tudni, hogy add egy olyan funkció, amely akkor 686 00:33:06,520 --> 00:33:08,880 használható, és ez teszi ezt. 687 00:33:08,880 --> 00:33:12,760 Szóval tényleg nem kell tudni, hogyan ez a C nyelven írt Csak azt kell 688 00:33:12,760 --> 00:33:15,460 tudja, itt van a funkció, amit igen, és itt van az 1-es és 0 689 00:33:15,460 --> 00:33:18,870 ha szeretné használni őket. 690 00:33:18,870 --> 00:33:19,530 >> Cool. 691 00:33:19,530 --> 00:33:26,980 Egyéb kérdés a fordítók és egyéb témákról a fórumon? 692 00:33:26,980 --> 00:33:30,300 >> DIÁK: Nekem van egy kérdés, végrehajtási rekurzív függvények. 693 00:33:30,300 --> 00:33:31,170 A kérdés rekurzió. 694 00:33:31,170 --> 00:33:33,030 Volt egy olyan érzésem, hogy jön fel. 695 00:33:33,030 --> 00:33:38,310 Úgyhogy gyorsan megy át rekurzió egy speciális 696 00:33:38,310 --> 00:33:40,690 Például egy faktoriális függvény. 697 00:33:40,690 --> 00:33:44,920 Mivel ez egy példa, hogy Gyakran merül fel, vagy használnak 698 00:33:44,920 --> 00:33:46,170 hogy bemutassa rekurzió. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Tehát a "4!" olvassa a 4. faktoriális. 701 00:33:56,410 --> 00:33:59,120 És mit jelent 4 faktoriális jelent? 702 00:33:59,120 --> 00:34:00,696 Mit akar ez csinálni? 703 00:34:00,696 --> 00:34:02,235 Hogyan számítjuk 4 faktoriális? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4-szer 3-szor 2-szer 1. 706 00:34:07,960 --> 00:34:11,889 >> Tehát egy másik módja, hogy írjon 4. factorial az, hogy írni ezt. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4-szer 3 faktoriális. 709 00:34:19,022 --> 00:34:22,080 Mivel a 3 faktoriális van 3-szor 2-szer 1. 710 00:34:22,080 --> 00:34:27,580 Így 4-szer 3 faktoriális 4 szer 3-szor 2-szer 1. 711 00:34:27,580 --> 00:34:32,679 Ezért faktoriálisa nagy jelölt rekurzió, mert 712 00:34:32,679 --> 00:34:36,630 Nyilvánvaló, hogy van valami, ami történik, újra és újra és újra a 713 00:34:36,630 --> 00:34:39,820 kevesebb a dolgokat, amíg elérjük a végét. 714 00:34:39,820 --> 00:34:42,570 Mikor éri el az 1, 1 faktoriális 1 lehet. 715 00:34:42,570 --> 00:34:43,719 Nem lehet ennél jóval többre. 716 00:34:43,719 --> 00:34:47,219 0 faktoriális is meghatározni, mint 1. 717 00:34:47,219 --> 00:34:50,679 Tehát, amikor már az 1 vagy 0, akkor a végén, és akkor 718 00:34:50,679 --> 00:34:53,219 elindultunk vissza. 719 00:34:53,219 --> 00:34:59,540 Tehát, ha azt akartam írni egy rekurzív funkció kiszámításához a faktoriális, 720 00:34:59,540 --> 00:35:02,170 fogunk írni néhány pszeudokódját az, hogy most. 721 00:35:02,170 --> 00:35:03,300 Mielőtt írni, hogy pszeudokódja - 722 00:35:03,300 --> 00:35:05,660 Adok nektek egy pár percig írni a pszeudo kódot, vagy csak azt gondolom, 723 00:35:05,660 --> 00:35:09,600 róla - van két dolog, minden rekurzív függvény szüksége. 724 00:35:09,600 --> 00:35:12,530 Mi ez a két dolog? 725 00:35:12,530 --> 00:35:13,220 >> JACK: Meg nevezi magát. 726 00:35:13,220 --> 00:35:13,680 >> JASON HIRSCHHORN: Noah? 727 00:35:13,680 --> 00:35:14,460 Ó, Jack. 728 00:35:14,460 --> 00:35:15,100 Rajta. 729 00:35:15,100 --> 00:35:16,640 >> JACK: Meg nevezi magát. 730 00:35:16,640 --> 00:35:19,220 >> JASON HIRSCHHORN: Tehát egy rekurzív funkciót kell rekurzív hívás, a 731 00:35:19,220 --> 00:35:20,220 hívás is. 732 00:35:20,220 --> 00:35:20,770 Ez az egyik. 733 00:35:20,770 --> 00:35:21,510 És mi a másik dolog? 734 00:35:21,510 --> 00:35:22,250 >> JACK: alapesetben. 735 00:35:22,250 --> 00:35:23,780 >> JASON HIRSCHHORN: alapesetben. 736 00:35:23,780 --> 00:35:26,940 Az alapeset az, hogy itt van az, amikor megállunk. 737 00:35:26,940 --> 00:35:29,510 Tehát a függvény hívódik. 738 00:35:29,510 --> 00:35:31,410 Az alapeset az első. 739 00:35:31,410 --> 00:35:33,710 Azt akarom tudni, ha a végén. 740 00:35:33,710 --> 00:35:37,110 És ha nem a végén, akkor hogy a rekurzív hívást. 741 00:35:37,110 --> 00:35:39,880 És végig ezt a funkciót ismét, ellenőrizze az alapeset újra. 742 00:35:39,880 --> 00:35:42,575 Ha nem a végén, hogy a Egy másik rekurzív hívás 743 00:35:42,575 --> 00:35:44,130 satöbbi, satöbbi. 744 00:35:44,130 --> 00:35:47,110 >> Ezért rekurzív függvények mindig Szükségünk van azokra alap esetben és a 745 00:35:47,110 --> 00:35:48,210 rekurzív hívások. 746 00:35:48,210 --> 00:35:51,280 Ha nem rendelkezik a rekurzív hívást, nem lenne rekurzív függvény. 747 00:35:51,280 --> 00:35:53,210 Ha nem egy alapeset, akkor megy örökké, és 748 00:35:53,210 --> 00:35:54,780 nem lenne vége. 749 00:35:54,780 --> 00:35:57,870 És az alapeset mindig első, mert akkor mindig szeretné ellenőrizni 750 00:35:57,870 --> 00:36:00,420 ha a végén az első. 751 00:36:00,420 --> 00:36:04,770 Szóval mielőtt némi pszeudokódja, miért nem egy percig gondolkodni 752 00:36:04,770 --> 00:36:09,360 hogy egy rekurzív faktoriális függvény írnának? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Is, annyi, mint te csinálsz, az írás ki egy ív papír 755 00:36:26,010 --> 00:36:27,960 mit kell majd ezt a kvízt holnap. 756 00:36:27,960 --> 00:36:32,160 Így valószínűleg jó gyakorlat, hogy a arról, hogy a kódot írsz 757 00:36:32,160 --> 00:36:34,420 le a papírlapra - 758 00:36:34,420 --> 00:36:35,160 vagy meg tudod csinálni ezt. 759 00:36:35,160 --> 00:36:36,710 Tudod, hol a pontosvessző van. 760 00:36:36,710 --> 00:36:37,660 Emlékszel a szintaxis. 761 00:36:37,660 --> 00:36:40,400 Mert nem kell tudnia, hogy a fordító mondani hibát. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Továbbá, e vonalak mentén, holnap, amikor a Ön kódolási probléma, ha 764 00:37:07,240 --> 00:37:11,490 rohant az idő, vagy ha nagyon zavaros, hogy hogyan kéne 765 00:37:11,490 --> 00:37:16,030 írni az adott dolog a C, a megillet, hogy írni pszeudo-kód 766 00:37:16,030 --> 00:37:18,160 vagy írjon megjegyzéseket is. 767 00:37:18,160 --> 00:37:21,940 Mert van részlegesen elismerheti a sok a kérdés a kvíz. 768 00:37:21,940 --> 00:37:24,840 Szóval, lehet, hogy rohant, vagy talán csak szabad összekeverni. 769 00:37:24,840 --> 00:37:28,030 Írás a megjegyzéseket, vagy pszeudo-kód gyakran módon, hogy 770 00:37:28,030 --> 00:37:29,360 kaphat részleges hitelt. 771 00:37:29,360 --> 00:37:31,440 >> Tehát ne hagyja valamit üres a kvíz. 772 00:37:31,440 --> 00:37:33,490 Nincs szankciók amivel a dolgok be 773 00:37:33,490 --> 00:37:37,650 Sőt, amivel a pszeudo-kódot vagy észrevételeket fog segíteni a gréder 774 00:37:37,650 --> 00:37:40,410 kitalálni, ha valóban tudja, mi te beszélsz, és talán díjat 775 00:37:40,410 --> 00:37:42,030 néhány részlegesen elismerheti ezt. 776 00:37:42,030 --> 00:37:44,510 >> Szintén végig ezeket a sorokat, olvashatóan. 777 00:37:44,510 --> 00:37:47,650 Ha nem tudjuk igazán, hogy mit írsz, nem fogunk hívni 778 00:37:47,650 --> 00:37:49,900 éjfélkor holnap szám ki, amit írtál. 779 00:37:49,900 --> 00:37:51,520 Mi csak megy, hogy vegye le pontokat. 780 00:37:51,520 --> 00:37:56,570 Írja meg egyértelműen, mi is halljuk, vagy inkább, tudjuk olvasni, amit írtál. 781 00:37:56,570 --> 00:38:00,230 >> És ha azt mondja, két mondat, ne írj egy bekezdést. 782 00:38:00,230 --> 00:38:02,280 Kövesse az utasításokat. 783 00:38:02,280 --> 00:38:03,500 Írja meg egyértelműen. 784 00:38:03,500 --> 00:38:07,720 Írni és ezeket az észrevételeket, vagy pszeudokódját kérdésekre, amelyek 785 00:38:07,720 --> 00:38:10,270 díjat részlegesen elismerheti. 786 00:38:10,270 --> 00:38:12,520 >> OK, menjünk faktoriális. 787 00:38:12,520 --> 00:38:15,000 Tehát van egy függvényt faktoriális. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Ha én tényleg írni ezt a C-ben mit kell tenni, mielőtt a nevet 790 00:38:21,550 --> 00:38:22,800 A funkció? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 A visszatérési típus, amely ebben az eset, akkor adja meg int. 793 00:38:30,060 --> 00:38:35,450 És akkor belül a kapcsos zárójelek, a mi megy benne a kapcsos zárójelek a 794 00:38:35,450 --> 00:38:36,850 egy funkciót? 795 00:38:36,850 --> 00:38:37,950 >> DIÁKOK: Argumentum típusát. 796 00:38:37,950 --> 00:38:39,150 >> JASON HIRSCHHORN: A érveket. 797 00:38:39,150 --> 00:38:42,680 Tehát faktoriális valószínűleg hogy egy érvet. 798 00:38:42,680 --> 00:38:44,500 Ez valószínűleg csak akkor kerülhet egy érv. 799 00:38:44,500 --> 00:38:49,450 És azt mondom, hogy elviszem egész úgynevezett x. 800 00:38:49,450 --> 00:38:52,770 És ismét, amikor az írás a prototípusa egy funkció vagy írásban funkció 801 00:38:52,770 --> 00:38:57,110 a kódot, mielőtt azt definiálta volna, akkor írni az adatokat típusát és nevét 802 00:38:57,110 --> 00:39:01,370 hogy a változó ezt a funkciót csak. 803 00:39:01,370 --> 00:39:06,350 Így adja át néhány számot ebbe az funkciót, akkor az a továbbiakban mint x 804 00:39:06,350 --> 00:39:07,340 belsőleg. 805 00:39:07,340 --> 00:39:08,755 >> Megvan a faktoriális függvény. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Szükségünk van két dolog, a alapeset és a rekurzív hívást. 808 00:39:15,850 --> 00:39:20,900 Mi az alapja esetében factorial? 809 00:39:20,900 --> 00:39:24,850 Valaki, aki azt írta, hogy ki és ki nem beszélt még, hogy mi az alap 810 00:39:24,850 --> 00:39:26,100 esetében faktoriális? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> DIÁK: Ha n kisebb, mint 2 vissza 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON HIRSCHHORN: Ha az n kevesebb, mint 2 vissza 1. 814 00:39:33,520 --> 00:39:37,216 Szeretem ezt, mert gondoskodik a 0 és 1. 815 00:39:37,216 --> 00:39:45,290 Tehát mi nem x <2 vissza 1. 816 00:39:45,290 --> 00:39:47,870 Ha kap telt 0, ha kap telt el 1, ez a funkció 817 00:39:47,870 --> 00:39:49,790 azonnal vissza 1. 818 00:39:49,790 --> 00:39:54,020 Ha kap telt el néhány nagyobb szám vagy egyenlő, mint 2, megyünk 819 00:39:54,020 --> 00:39:55,370 megvan a rekurzív hívást. 820 00:39:55,370 --> 00:39:57,855 >> És hogyan fog ez működni? 821 00:39:57,855 --> 00:40:01,070 Lehet valaki, aki dolgozott ezen a aki nem beszélt még nekem a 822 00:40:01,070 --> 00:40:07,380 rekurzív hívás ezt a funkciót pszeudokód? 823 00:40:07,380 --> 00:40:10,770 Ha kap telt el a számot x és ez nagyobb, mint 2, mi 824 00:40:10,770 --> 00:40:13,370 akarunk csinálni? 825 00:40:13,370 --> 00:40:17,930 Mi is példát írt oldalon, hogy lehet, hogy kapsz egy tippet. 826 00:40:17,930 --> 00:40:20,770 >> DIÁK: Hívja x-szer faktoriálisát x mínusz 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON HIRSCHHORN: Pontosan így van. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Megyünk vissza x-szer faktoriálisát x mínusz 1. 830 00:40:37,750 --> 00:40:41,810 És, bár én írtam fel, alapvetően, hogy mit mondott az angol, 831 00:40:41,810 --> 00:40:44,580 ez a faktoriális függvény lesz megint hívott. 832 00:40:44,580 --> 00:40:46,320 Ez lesz végre az x mínusz 1. 833 00:40:46,320 --> 00:40:49,320 Nem lesz visszatérni néhány egész szám, akkor majd szorozzuk a két 834 00:40:49,320 --> 00:40:52,050 együtt, és ez az érték lesz visszatért bármi hívják ezt 835 00:40:52,050 --> 00:40:55,010 faktoriális függvény, ami egy másik példánya 836 00:40:55,010 --> 00:40:58,420 ez a faktoriális függvény. 837 00:40:58,420 --> 00:41:01,360 >> Annak érdekében, hogy egy példa egy rekurzív funkció, egy nagyon 838 00:41:01,360 --> 00:41:02,530 egyszerű rekurzív függvény. 839 00:41:02,530 --> 00:41:04,530 De a legtöbb közülük, mint ez. 840 00:41:04,530 --> 00:41:11,170 Ha szeretnél egy jó rekurzív kihívást a kvíz, próbálja kódolás 841 00:41:11,170 --> 00:41:13,230 bináris keresés rekurzívan. 842 00:41:13,230 --> 00:41:18,950 Mert ha igen bináris keresés probléma meg három, akkor valószínűleg nem is 843 00:41:18,950 --> 00:41:21,730 iteratív egy while ciklus. 844 00:41:21,730 --> 00:41:23,700 >> De ez is lehet írni rekurzívan. 845 00:41:23,700 --> 00:41:26,310 Fogsz kell írni a saját külön funkció, amely némi 846 00:41:26,310 --> 00:41:29,020 különböző parancssori - vagy Nem parancssori argumentumok, néhány 847 00:41:29,020 --> 00:41:30,910 más csak a rendszeres érveket. 848 00:41:30,910 --> 00:41:33,870 De meg tudná írni bináris keresés rekurzívan is. 849 00:41:33,870 --> 00:41:36,190 >> DIÁK: Tehát akkor is írt, ahelyett, hogy x mínusz 1, akkor 850 00:41:36,190 --> 00:41:39,502 volna is írt x mínusz mínusz, vagy ha volna 851 00:41:39,502 --> 00:41:40,830 írásos mínusz mínusz x. 852 00:41:40,830 --> 00:41:44,740 Lehet csak magyarázni nagyon gyorsan, hogy miért ezek lennének a különböző dolgokat, 853 00:41:44,740 --> 00:41:49,510 mint mi a különbség a között x mínusz mínusz és a mínusz mínusz x? 854 00:41:49,510 --> 00:41:51,320 >> JASON HIRSCHHORN: Nem, nem vagyok megyek bele. 855 00:41:51,320 --> 00:41:55,500 De én beszélni veled után osztályban. x mínusz mínusz, mínusz mínusz x 856 00:41:55,500 --> 00:41:57,780 csökkentse x 1. 857 00:41:57,780 --> 00:41:59,090 De mégis egy kicsit másképp. 858 00:41:59,090 --> 00:42:00,340 De én nem akarok belemenni. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 További kérdések a rekurzió vagy ez a funkció? 861 00:42:09,090 --> 00:42:10,140 Ez nem is igazán pszeudokódja. 862 00:42:10,140 --> 00:42:15,060 Ez alapvetően a kódot C leírná ezt. 863 00:42:15,060 --> 00:42:19,393 >> OK, minden más kérdés a téma itt? 864 00:42:19,393 --> 00:42:19,864 Igen. 865 00:42:19,864 --> 00:42:23,130 >> DIÁK: Nekem van egy gyors lista lebegőpontos és a pontosság. 866 00:42:23,130 --> 00:42:24,260 >> JASON HIRSCHHORN: Floating pont és a pontosság. 867 00:42:24,260 --> 00:42:26,920 Lehet valaki nagyon gyorsan adj egy lepusztult 868 00:42:26,920 --> 00:42:28,210 lebegőpontos és pontosság? 869 00:42:28,210 --> 00:42:30,420 Mindannyian meg kellett tennie ezt a probléma meg, szóval minden 870 00:42:30,420 --> 00:42:31,700 ismeri. 871 00:42:31,700 --> 00:42:35,090 Vagy talán nem mindannyian. 872 00:42:35,090 --> 00:42:36,602 Valaki? 873 00:42:36,602 --> 00:42:39,530 Adj egy kezdtek helyszínen. 874 00:42:39,530 --> 00:42:40,750 Lebegőpontos és pontosság. 875 00:42:40,750 --> 00:42:42,380 Mi a gond? 876 00:42:42,380 --> 00:42:42,960 Igen. 877 00:42:42,960 --> 00:42:43,680 Victoria? 878 00:42:43,680 --> 00:42:44,480 >> Vanessa: Vanessa. 879 00:42:44,480 --> 00:42:45,285 >> JASON HIRSCHHORN: Vanessa. 880 00:42:45,285 --> 00:42:45,680 Bocsánat. 881 00:42:45,680 --> 00:42:51,550 >> Vanessa: Csak véges számú A számok is képviselteti 882 00:42:51,550 --> 00:42:57,930 mert te egy, a mi az esetben egy 32 bites rendszer. 883 00:42:57,930 --> 00:43:03,080 Szóval ilyen van, hogy teszik ki néhány számot. 884 00:43:03,080 --> 00:43:03,910 >> JASON HIRSCHHORN: Ennyi pontosan így van. 885 00:43:03,910 --> 00:43:08,110 Vannak csak egy bizonyos mennyiségű számok is képviselteti magát. 886 00:43:08,110 --> 00:43:11,770 Ha szaporodnak két nagyon nagy számban, talán túlcsordulás az összeg 887 00:43:11,770 --> 00:43:13,950 terek meg kell képviselni egy egész szám. 888 00:43:13,950 --> 00:43:17,930 Ezért néha egy hosszú, hosszú helyett int. 889 00:43:17,930 --> 00:43:19,210 Ez több helyen. 890 00:43:19,210 --> 00:43:21,210 Hogy fér egy nagyobb számot. 891 00:43:21,210 --> 00:43:24,310 >> A lebegőpontos pontosság köze van , de azt is köze van a 892 00:43:24,310 --> 00:43:29,300 tény, hogy a decimális számok nem mindig képviselt. 893 00:43:29,300 --> 00:43:29,540 Bocsánat. 894 00:43:29,540 --> 00:43:31,280 Hadd tegye ezt vissza. 895 00:43:31,280 --> 00:43:36,610 A decimális szám 1.0 nem mindig képviselte, mint amit elvár, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 Néha képviseletében a 1,000000001 0,999999999 vagy. 898 00:43:50,360 --> 00:43:52,780 Lehet, hogy még 89 dobni valahol. 899 00:43:52,780 --> 00:43:56,560 Tehát azok decimális számok nem képviselte pontosan olyan, mint akkor, 900 00:43:56,560 --> 00:43:58,430 várják tőlük, hogy képviselteti magát. 901 00:43:58,430 --> 00:44:00,010 >> Így a probléma meg - 902 00:44:00,010 --> 00:44:00,860 volt kettő? - 903 00:44:00,860 --> 00:44:05,290 probléma meg két, ahol foglalkozott lebegőpontos számok, ha azt akartuk, 904 00:44:05,290 --> 00:44:08,690 őket, hogy képviselje pontosan mit akartunk őket, hogy képviselje, a szám 905 00:44:08,690 --> 00:44:12,860 fillérekért, vagy a számos cent, megszorozzuk őket 100-zal. 906 00:44:12,860 --> 00:44:14,750 Mi lekerekített őket. 907 00:44:14,750 --> 00:44:18,660 És akkor vágjuk le mindent mögött a tizedes pont. 908 00:44:18,660 --> 00:44:22,020 Ez volt annak érdekében, hogy azok valóban egyenlő pontosan mit akartunk 909 00:44:22,020 --> 00:44:22,410 őket, hogy egyenlő. 910 00:44:22,410 --> 00:44:26,870 >> Mert ha veszel valamit, ami úszó, és kapcsolja be egy int, akkor 911 00:44:26,870 --> 00:44:29,860 vágja le mindent a jobb a tizedes pont. 912 00:44:29,860 --> 00:44:33,900 Mert van valami lebegőpontos pontatlanság, 100.000 lehet 913 00:44:33,900 --> 00:44:37,440 képviseletében a 99,999999999. 914 00:44:37,440 --> 00:44:40,350 És ha csak vágva mindent A jobb azonnal, fogsz 915 00:44:40,350 --> 00:44:41,600 hogy rossz számot hívott. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Igen. 918 00:44:44,180 --> 00:44:45,290 >> DIÁK: Volt egy kérdés a casting. 919 00:44:45,290 --> 00:44:47,500 Milyen sorrendben jelent ez fordul elő? 920 00:44:47,500 --> 00:44:54,480 Ha megtenném úszó, konzolok, 1 osztott 10, csinál 1 osztva 10, 921 00:44:54,480 --> 00:44:58,910 akkor kap 0,1, majd kapcsolja be a float? 922 00:44:58,910 --> 00:45:01,470 >> JASON HIRSCHHORN: Ha úszó 1 osztva 10 - 923 00:45:01,470 --> 00:45:02,550 >> DIÁK: Igen, majd egyenlő - 924 00:45:02,550 --> 00:45:04,240 Nos, ez lenne normális hogy azt egyenlő - 925 00:45:04,240 --> 00:45:04,690 Igen. 926 00:45:04,690 --> 00:45:06,760 Azt szeretnénk, hogy ez egy úszó, igaz? 927 00:45:06,760 --> 00:45:12,790 >> JASON HIRSCHHORN: OK, megyünk használni, hogy segue be kitalálni 928 00:45:12,790 --> 00:45:15,390 a választ ezekre a kérdésekre a kódolás. 929 00:45:15,390 --> 00:45:18,180 Mert akkor valószínűleg egy csomó Ezen perc kérdéseket, és egy jó módja 930 00:45:18,180 --> 00:45:19,100 azok megoldására keresztül kódolás. 931 00:45:19,100 --> 00:45:21,320 Így fogjuk kódolni ezt most, majd fogunk visszamenni, és 932 00:45:21,320 --> 00:45:24,020 kódot a kérdés, hogy van. 933 00:45:24,020 --> 00:45:24,950 >> Tehát az első sorban - 934 00:45:24,950 --> 00:45:29,390 Nem kellett volna írni, hogy - ami Az első dolog, amit akarok, ha azt 935 00:45:29,390 --> 00:45:32,250 nyit egy új fájlt a gedit? 936 00:45:32,250 --> 00:45:34,190 >> DIÁK: bele. 937 00:45:34,190 --> 00:45:35,920 >> JASON HIRSCHHORN: bele mi? 938 00:45:35,920 --> 00:45:37,952 >> DIÁK: CS50 könyvtár. 939 00:45:37,952 --> 00:45:39,920 >> JASON HIRSCHHORN: OK. 940 00:45:39,920 --> 00:45:42,590 Mi mást is tartalmaz? 941 00:45:42,590 --> 00:45:46,820 Mi csak lesz, hogy ellenőrizze, mi történik ha öntött valamit úszó. 942 00:45:46,820 --> 00:45:48,605 De mit kell felvenni, ha vagyunk fog írni egy C program? 943 00:45:48,605 --> 00:45:49,300 >> DIÁK: Standard I / O 944 00:45:49,300 --> 00:45:50,625 >> JASON HIRSCHHORN: stdio.h. 945 00:45:50,625 --> 00:45:54,880 Igazából nem kell, mert ez program cs50.h, bár ez 946 00:45:54,880 --> 00:45:55,920 mindig segítőkész, hogy tartalmazza azt. 947 00:45:55,920 --> 00:45:58,260 De nem mindig kell stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> DIÁK: A kódolás C? 949 00:45:59,660 --> 00:46:15,770 >> JASON HIRSCHHORN: A kódolás C. 950 00:46:15,770 --> 00:46:17,090 >> Szóval mentse el ezt. C file. 951 00:46:17,090 --> 00:46:18,590 Kapok néhány szép szintaxis kiemelést. 952 00:46:18,590 --> 00:46:22,890 Írtam üres belül fő. 953 00:46:22,890 --> 00:46:24,792 Mit jelent érvénytelen jelent? 954 00:46:24,792 --> 00:46:26,740 >> DIÁK: Nem vállal semmilyen parancssori argumentumok. 955 00:46:26,740 --> 00:46:28,900 >> JASON HIRSCHHORN: Void jelenti, ebben a esetben fő nem vállal semmilyen 956 00:46:28,900 --> 00:46:29,700 parancssori argumentumok. 957 00:46:29,700 --> 00:46:32,720 Más esetekben, az azt jelenti, a függvény nem veszi parancssori argumentumok. 958 00:46:32,720 --> 00:46:36,560 Vagy a funkciót, ha én írni érvénytelen main (void), hogy azt mondaná Main 959 00:46:36,560 --> 00:46:38,460 nem tér vissza semmit. 960 00:46:38,460 --> 00:46:39,960 Tehát üresség csak nem jelent semmit. 961 00:46:39,960 --> 00:46:42,510 Mit írok, ha én is hogy parancssori argumentumok? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> DIÁK: int ív c karakterlánc arc v 964 00:46:47,150 --> 00:46:49,055 >> JASON HIRSCHHORN: int argc karakterlánc argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 Igaz ez? 967 00:46:55,572 --> 00:46:58,720 >> DIÁK: Ez char csillag argv zárójelben. 968 00:46:58,720 --> 00:47:01,730 >> JASON HIRSCHHORN: Szóval lehet írni karakterlánc argv zárójelben vagy char csillag argv 969 00:47:01,730 --> 00:47:03,710 zárójelben, de szükség van a zárójelben. 970 00:47:03,710 --> 00:47:06,290 Mivel argv tömb A vonósok, emlékszem. 971 00:47:06,290 --> 00:47:07,360 Ez nem csak egy húr. 972 00:47:07,360 --> 00:47:10,350 Tehát karakterlánc argv van, itt Egy karakterlánc ARGV. 973 00:47:10,350 --> 00:47:13,630 Karakterlánc argv zárójelben, itt egy sor húrok. 974 00:47:13,630 --> 00:47:17,865 Így int argc karakterlánc argv konzolok lenne valami, amit 975 00:47:17,865 --> 00:47:18,810 valószínűleg írni. 976 00:47:18,810 --> 00:47:23,050 >> Így akarta menteni az egész? 977 00:47:23,050 --> 00:47:24,285 >> DIÁK: Igen, egész. 978 00:47:24,285 --> 00:47:25,840 Vagy egy úszó. 979 00:47:25,840 --> 00:47:26,710 >> JASON HIRSCHHORN: Egy úszó? 980 00:47:26,710 --> 00:47:30,790 Mint úszó x értéke 1 osztva 10-zel. 981 00:47:30,790 --> 00:47:32,040 >> JASON HIRSCHHORN: OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 Hogyan nyomtatható ki egy úszó printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Mi az? 986 00:47:46,714 --> 00:47:47,560 >> DIÁK:% f. 987 00:47:47,560 --> 00:47:48,300 >> JASON HIRSCHHORN:% f. 988 00:47:48,300 --> 00:47:50,810 Mi az egész? 989 00:47:50,810 --> 00:47:52,110 d vagy i. 990 00:47:52,110 --> 00:47:53,000 Mi az a szöveg? 991 00:47:53,000 --> 00:47:54,240 >> DIÁK: s. 992 00:47:54,240 --> 00:47:56,140 >> JASON HIRSCHHORN: s. 993 00:47:56,140 --> 00:47:57,550 Hogyan kap egy új sort? 994 00:47:57,550 --> 00:47:58,800 >> DIÁK: Backslash n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON HIRSCHHORN: Mit vissza ha a fő fut helyesen? 997 00:48:07,100 --> 00:48:08,360 >> DIÁK: 0-ra. 998 00:48:08,360 --> 00:48:09,430 Nem kell írnom ezt a vonalat, igaz? 999 00:48:09,430 --> 00:48:10,170 >> Diák: Nem 1000 00:48:10,170 --> 00:48:11,513 OK, nem fogunk írni, akkor. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 Mindenki tud olvasni? 1003 00:48:17,190 --> 00:48:18,485 Úgy néz ki, egy kicsit kicsi. 1004 00:48:18,485 --> 00:48:20,160 Lehet mindenki látja, vagy kell Azt, hogy ez nagyobb? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Azt hiszem, a kamera, mi megpróbáljuk ez egy kicsit nagyobb, mégis. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON HIRSCHHORN: Ha azt akarom, hogy ezt . C fájl egy futtatható, milyen 1009 00:48:38,410 --> 00:48:39,260 írhatok? 1010 00:48:39,260 --> 00:48:41,610 >> DIÁK: Legyen teszt. 1011 00:48:41,610 --> 00:48:42,080 >> JASON HIRSCHHORN: Tessék? 1012 00:48:42,080 --> 00:48:42,790 >> DIÁK: Legyen teszt. 1013 00:48:42,790 --> 00:48:44,040 >> JASON HIRSCHHORN: Legyen teszt. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Arról beszélgettünk, ezen a vonalon korábban. 1016 00:48:48,410 --> 00:48:49,140 Csenget. 1017 00:48:49,140 --> 00:48:51,270 Mi csenget? 1018 00:48:51,270 --> 00:48:52,200 A név a fordító. 1019 00:48:52,200 --> 00:48:53,920 Mi ez a sor? 1020 00:48:53,920 --> 00:48:55,580 >> DIÁK: határozza meg, hogy fel a használatára GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON HIRSCHHORN: Készletek fel használati GDB. 1022 00:48:59,230 --> 00:49:02,338 Ez a sor, mi az? 1023 00:49:02,338 --> 00:49:03,290 >> DIÁK: A forráskód. 1024 00:49:03,290 --> 00:49:06,010 >> JASON HIRSCHHORN: Ez a forrás fájlt, a. c file. 1025 00:49:06,010 --> 00:49:08,150 Mi a következő két sort csinálni? 1026 00:49:08,150 --> 00:49:10,245 Vagy a két nem sorokat. 1027 00:49:10,245 --> 00:49:12,300 >> DIÁK: A név azt tesztelni. 1028 00:49:12,300 --> 00:49:15,410 >> JASON HIRSCHHORN: Tehát a kötőjel o azt mondja, nevezd meg valamit másképp. 1029 00:49:15,410 --> 00:49:16,790 És itt nevezni teszt. 1030 00:49:16,790 --> 00:49:18,900 Ha nem volt, hogy az, mi lenne nevezni ezt? 1031 00:49:18,900 --> 00:49:20,260 >> DIÁK: a.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON HIRSCHHORN: a.out. 1033 00:49:22,340 --> 00:49:25,366 Mit tesz ez? 1034 00:49:25,366 --> 00:49:27,670 >> DIÁK: Linkek a matematikai könyvtár. 1035 00:49:27,670 --> 00:49:29,550 >> JASON HIRSCHHORN: Összeköti a matematikai könyvtárban. 1036 00:49:29,550 --> 00:49:32,880 Nem tartalmazza a matematikai könyvtárat, de a mivel ez annyira gyakori, hogy már 1037 00:49:32,880 --> 00:49:35,780 írásos make, hogy mindig is a matematikai könyvtár. 1038 00:49:35,780 --> 00:49:39,050 És hasonlóképpen, ez magában foglalja a A CS50 könyvtár. 1039 00:49:39,050 --> 00:49:43,010 >> OK, így ha bővítjük, most már van végrehajtható nevű teszt. 1040 00:49:43,010 --> 00:49:45,150 Hogy végrehajtani, írok tesztet. 1041 00:49:45,150 --> 00:49:48,330 Látom, hogy a lebegőpontos, mint várható volt, egyenlő 0-ra. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 Van, hogy az - 1044 00:49:51,590 --> 00:49:52,060 így - 1045 00:49:52,060 --> 00:49:55,210 >> DIÁK: Akkor, ha teszel float most, mint te öntött azt float - 1046 00:49:55,210 --> 00:49:56,870 >> JASON HIRSCHHORN: öntött Az 1-től a float? 1047 00:49:56,870 --> 00:49:59,180 >> DIÁK: Nem, a leadott teljes dolog - 1048 00:49:59,180 --> 00:49:59,500 igen. 1049 00:49:59,500 --> 00:50:02,460 Ha csak nem, hogy lenne teszik 0,1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON HIRSCHHORN: OK, nagyon gyorsan, 1 osztva 10, ezek 1051 00:50:07,170 --> 00:50:08,690 egészek van osztva. 1052 00:50:08,690 --> 00:50:13,580 Tehát, ha osztani egészek, ők 0, és te megtakarítás, hogy 0 a 1053 00:50:13,580 --> 00:50:17,170 lebegnek, mert a slash csak egész osztás. 1054 00:50:17,170 --> 00:50:19,180 Akkor most mi fordult valamit egy úszó. 1055 00:50:19,180 --> 00:50:21,650 >> Nézzük meg, mi történik. 1056 00:50:21,650 --> 00:50:22,900 Majd, hogy teszt. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Most azt látjuk, hogy, hogy a perjel nem volt egész osztás, ez lebegett 1059 00:50:31,090 --> 00:50:32,640 pont részlege. 1060 00:50:32,640 --> 00:50:35,700 Mert az egyik érveit már leadott egy úszó. 1061 00:50:35,700 --> 00:50:38,380 Tehát most azt mondta, kezelni ezt a divízió, mint mi dolgunk 1062 00:50:38,380 --> 00:50:40,140 lebegő pontokat, nem pedig egész számok. 1063 00:50:40,140 --> 00:50:42,760 És így megkapjuk a választ várunk. 1064 00:50:42,760 --> 00:50:44,620 >> Nézzük meg, mi történik - 1065 00:50:44,620 --> 00:50:47,103 hoppá. 1066 00:50:47,103 --> 00:50:51,646 Ha akartam nyomtatni több decimális foltok, hogyan tudom ezt megtenni? 1067 00:50:51,646 --> 00:50:55,550 >> DIÁK: Point pont f, vagy annyi tizedes, amit akar. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON HIRSCHHORN: Szóval nyomtatni 10. decimális foltok. 1070 00:51:04,440 --> 00:51:06,610 És most hogy mi vagyunk egyre furcsa dolgok. 1071 00:51:06,610 --> 00:51:09,650 És hogy megy vissza a kérdésre a lebegőpontos pontatlansággal. 1072 00:51:09,650 --> 00:51:10,950 Van furcsa dolgok tárolt itt. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, ez azt a kérdésére? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Mi mást akarsz kódolni gyorsan? 1077 00:51:20,200 --> 00:51:25,470 >> DIÁK: Én csak azt akartam, hogy függetlenül attól, Nem, ha felszabadul egy kis mutató, 1078 00:51:25,470 --> 00:51:30,410 hogy ez a mutató még mindig tárolja ez a címe, mi lett volna 1079 00:51:30,410 --> 00:51:32,170 rámutatva, hogy korábban. 1080 00:51:32,170 --> 00:51:34,100 >> JASON HIRSCHHORN: OK, így csináljuk. 1081 00:51:34,100 --> 00:51:38,030 Char csillag ptr, ez létrehoz egy változót úgynevezett ptr típusú char csillag. 1082 00:51:38,030 --> 00:51:39,280 Hogyan írhatok malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: Csak malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 De aztán azt, hogy mérete, és a Ebben az esetben, azt hiszem, azt 1087 00:51:51,040 --> 00:51:52,465 lehet mutatva char. 1088 00:51:52,465 --> 00:51:54,450 Így lenne char. 1089 00:51:54,450 --> 00:51:57,520 >> JASON HIRSCHHORN: OK, így több általánosságban, Inside - 1090 00:51:57,520 --> 00:51:58,770 nézzük szerkeszteni. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Belül malloc, szeretné, hogy a számot byte-ok a kupac. 1093 00:52:09,260 --> 00:52:12,320 Általában, amit láttunk, hogy mi vagyunk csinál megyünk malloc 1094 00:52:12,320 --> 00:52:14,940 húrok, például, vagy tömbök egész. 1095 00:52:14,940 --> 00:52:21,600 Tehát, ha azt akarjuk, 10 egész, vagy 10 karakter, 10-ad nekünk 10. 1096 00:52:21,600 --> 00:52:24,370 Aztán mérete karakter adna nekünk, hogy mérete karakter, ami 1097 00:52:24,370 --> 00:52:25,120 ebben az esetben 1 bájt. 1098 00:52:25,120 --> 00:52:26,250 Kapunk 10 byte. 1099 00:52:26,250 --> 00:52:28,540 Ha volt, hogy írni mérete int, ami nekünk 40 bájt. 1100 00:52:28,540 --> 00:52:31,520 >> Tehát még általánosságban, belsejében malloc a bájtok száma kívánt. 1101 00:52:31,520 --> 00:52:34,620 Ebben az esetben, mi megy 1 byte. 1102 00:52:34,620 --> 00:52:36,900 Ami úgy tűnik, mint egy furcsa használata A malloc, de a mi 1103 00:52:36,900 --> 00:52:38,470 célokra van értelme. 1104 00:52:38,470 --> 00:52:40,420 Tehát ott van az. 1105 00:52:40,420 --> 00:52:43,420 >> Fogunk hívni ingyenes. 1106 00:52:43,420 --> 00:52:47,040 Mi megszabadulni tőle, és használjuk ptr újra. 1107 00:52:47,040 --> 00:52:48,750 És mit akar ellenőrizni? 1108 00:52:48,750 --> 00:52:50,550 >> DIÁK: Csak azt akartam, hogy ellenőrizze, hogy vagy sem, van-e valami 1109 00:52:50,550 --> 00:52:51,900 belsejébe. 1110 00:52:51,900 --> 00:52:53,050 >> JASON HIRSCHHORN: Szóval, hogy rámutatott, hogy semmit? 1111 00:52:53,050 --> 00:52:57,740 >> DIÁK: Igen, pontosan, akár ez még mindig egy memória cím. 1112 00:52:57,740 --> 00:53:02,220 >> JASON HIRSCHHORN: Szóval azt akarod, lehet ellenőrizni az érték PTR? 1113 00:53:02,220 --> 00:53:03,470 >> DIÁK: Igen, pontosan. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON HIRSCHHORN: Mit írja ide Ha azt szeretné, hogy ellenőrizze az érték a 1116 00:53:10,160 --> 00:53:11,880 pont -, ami van, Jordan azt mondta, az érték? 1117 00:53:11,880 --> 00:53:13,720 Vagy mi van benne tárolni PTR? 1118 00:53:13,720 --> 00:53:14,620 >> DIÁK: A memória címét. 1119 00:53:14,620 --> 00:53:16,330 >> JASON HIRSCHHORN: A memória címét. 1120 00:53:16,330 --> 00:53:20,520 Tehát, ha írok csak ez, akkor az adja meg az értékét ptr. 1121 00:53:20,520 --> 00:53:22,800 És hogyan tudom kinyomtatni a memória cím? 1122 00:53:22,800 --> 00:53:26,470 Mi az a formátum string a memória-cím? 1123 00:53:26,470 --> 00:53:27,430 >> DIÁK:% p. 1124 00:53:27,430 --> 00:53:28,050 >> JASON HIRSCHHORN:% p. 1125 00:53:28,050 --> 00:53:29,500 % S egy string. 1126 00:53:29,500 --> 00:53:30,750 % P a mutató. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 Igaz ez? 1129 00:53:43,540 --> 00:53:44,790 Így van. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Tehát ptr értéke - 1132 00:53:51,040 --> 00:53:53,350 még mindig van benne valami. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 Ez valószínűleg egy sokkal érdekes kérdés. 1135 00:53:57,645 --> 00:53:59,198 Mit jelent, hogy a vonal nem? 1136 00:53:59,198 --> 00:54:00,830 >> DIÁK: Seg hibák. 1137 00:54:00,830 --> 00:54:01,310 >> JASON HIRSCHHORN: Mi az? 1138 00:54:01,310 --> 00:54:02,678 >> DIÁK: Azt hiszem, szegmens hiba. 1139 00:54:02,678 --> 00:54:03,574 >> JASON HIRSCHHORN: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> DIÁK: azt hiszem, ez Seg hibája. 1141 00:54:04,920 --> 00:54:08,265 >> JASON HIRSCHHORN: Tehát ez a sor A kód, csillag PTR, milyen 1142 00:54:08,265 --> 00:54:10,152 ez a csillag jelent? 1143 00:54:10,152 --> 00:54:11,240 >> DIÁK: tartalma. 1144 00:54:11,240 --> 00:54:11,560 >> JASON HIRSCHHORN: Igen. 1145 00:54:11,560 --> 00:54:13,910 Menj, hogy a tartalmát. 1146 00:54:13,910 --> 00:54:16,830 Tehát ez fog menni a memória cím és ott adnak nekem. 1147 00:54:16,830 --> 00:54:21,030 Régebben% c itt, mert a karakter tárolnak. 1148 00:54:21,030 --> 00:54:23,390 Így fogunk menni, hogy a címen Most láttam - vagy ez lesz valószínűleg a 1149 00:54:23,390 --> 00:54:25,190 kicsit más ez a ideje, hogy a program futtatásához. 1150 00:54:25,190 --> 00:54:28,010 De megyünk arra a címre amiről tudjuk, még mindig létezik 1151 00:54:28,010 --> 00:54:29,260 és nézd meg, mi van ott. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Így nem Seg hibája. 1154 00:54:37,110 --> 00:54:38,970 Csak nem ad nekünk semmit. 1155 00:54:38,970 --> 00:54:43,350 Lehet, hogy valóban adott nekünk valamit, csak nem látom. 1156 00:54:43,350 --> 00:54:45,110 És hogy megy vissza, ezt az elképzelést - 1157 00:54:45,110 --> 00:54:47,270 és mi nem lesz, hogy túl sokat ezt, mert ez túl 1158 00:54:47,270 --> 00:54:48,460 hatálya a tanfolyam. 1159 00:54:48,460 --> 00:54:51,260 De beszéltünk itt, ha túllépett a tömb 1160 00:54:51,260 --> 00:54:54,890 1, akkor lehet, hogy nem bajba. 1161 00:54:54,890 --> 00:54:58,550 >> Néha, amikor csak menj ki 1, csinálsz valamit rosszul, és 1162 00:54:58,550 --> 00:54:59,220 Bajba kerülhetek. 1163 00:54:59,220 --> 00:55:00,820 De nem mindig bajba. 1164 00:55:00,820 --> 00:55:05,170 Attól függ, hogy mennyi az egy rossz dolog, nem, fogsz bajba. 1165 00:55:05,170 --> 00:55:07,790 Ami nem azt jelenti, hogy hanyag a kódot. 1166 00:55:07,790 --> 00:55:12,080 De ez azt jelenti, a program nem Mindig kilép, akkor is, ha valahol 1167 00:55:12,080 --> 00:55:14,130 akkor nem kellett volna menni. 1168 00:55:14,130 --> 00:55:18,170 >> Egy jó példa erre, a sok emberek a probléma meg 3, amely 1169 00:55:18,170 --> 00:55:22,350 15 volt, nem ellenőrizte a határait a fórumon. 1170 00:55:22,350 --> 00:55:25,860 Szóval balra nézett, látszott, hogy a jobb, látszott, hogy a felső, nézett 1171 00:55:25,860 --> 00:55:27,000 az aljára. 1172 00:55:27,000 --> 00:55:31,540 De nem nézze meg, ha a felső valójában lesz a táblán. 1173 00:55:31,540 --> 00:55:35,220 És egy csomó ember, aki csinálta, és kiderült, hogy, a programot dolgoztak 1174 00:55:35,220 --> 00:55:38,960 tökéletesen, mert amikor az igazgatóság a volt a memóriában, ha elment egy 1175 00:55:38,960 --> 00:55:42,300 fölötte vagy ellenőrzik, hogy a memória cím, nem volt semmi 1176 00:55:42,300 --> 00:55:44,870 különösen borzalmas benne, így a program nem volt 1177 00:55:44,870 --> 00:55:45,970 fog kiabálni veled. 1178 00:55:45,970 --> 00:55:48,870 >> De akkor is kell pontot levonni, ha ha nem ellenőrzi, hogy, mivel 1179 00:55:48,870 --> 00:55:50,850 csinálnak, amit nem kéne csinálni, és akkor lehetett volna 1180 00:55:50,850 --> 00:55:51,860 bajba. 1181 00:55:51,860 --> 00:55:54,040 Esélyek, mégis, akkor valószínűleg nem. 1182 00:55:54,040 --> 00:55:57,790 Tehát ez az, hogy megmutassa, hogy igen, akkor mindig megy ez. 1183 00:55:57,790 --> 00:55:59,010 És mi nem kapok baj ebben az esetben. 1184 00:55:59,010 --> 00:56:04,000 Ha próbáltam csinálni, olvassa el a következő 100 karakter, mi lenne 1185 00:56:04,000 --> 00:56:06,000 talán bajba. 1186 00:56:06,000 --> 00:56:09,400 És tudod kódolni olvasó a következő 100 karakter, ha azt szeretné, csinál valami 1187 00:56:09,400 --> 00:56:10,110 egyfajta a hurok. 1188 00:56:10,110 --> 00:56:10,850 Igen. 1189 00:56:10,850 --> 00:56:16,250 >> DIÁK: Mivel mi voltunk hozzá, hogy helyet a tényleges érték, akkor nem 1190 00:56:16,250 --> 00:56:17,050 valóban látni semmit. 1191 00:56:17,050 --> 00:56:21,740 Ha megpróbáljuk azt a beállítást, hogy egyenlő, mint a C, vagy valami? 1192 00:56:21,740 --> 00:56:22,640 >> JASON HIRSCHHORN: jó kérdés. 1193 00:56:22,640 --> 00:56:25,340 Hogyan tudom beállítani, hogy az értéket - 1194 00:56:25,340 --> 00:56:28,980 milyen kódsor írhatok on-line Hét csinálni, amit mondott? 1195 00:56:28,980 --> 00:56:34,040 >> DIÁK: Star ptr értéke egyetlen Idézet c véget idézőjel. 1196 00:56:34,040 --> 00:56:36,970 >> JASON HIRSCHHORN: Tehát ez az elhelyezés egy karakter, c, ezen a helyen, 1197 00:56:36,970 --> 00:56:40,200 mert megint, hogy a csillag azt jelenti, menj oda. 1198 00:56:40,200 --> 00:56:43,320 És amikor használjuk a bal oldali értékadó operátorral, hogy egyenlő 1199 00:56:43,320 --> 00:56:47,270 jel, mi nem fog kapni, hogy értékét annyira, ahogy ezt az értéket. 1200 00:56:47,270 --> 00:56:48,520 Most lássuk, mi történik. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Azt hogy ott valami és ott volt. 1203 00:56:56,770 --> 00:56:58,000 Mi úgynevezett szabad. 1204 00:56:58,000 --> 00:57:00,100 Néhány dolog talán történt A kupac. 1205 00:57:00,100 --> 00:57:01,890 Tehát nem létezik többé. 1206 00:57:01,890 --> 00:57:07,440 De ismétlem, mi nem kap bajba oda. 1207 00:57:07,440 --> 00:57:10,260 >> Én ezt ki kódot, hogy bemutassa hogy sok ilyen 1208 00:57:10,260 --> 00:57:12,410 kérdés, hogy van, ők nagyon érdekes 1209 00:57:12,410 --> 00:57:13,650 választ sok időt. 1210 00:57:13,650 --> 00:57:15,260 És ők nagyon jó kérdés. 1211 00:57:15,260 --> 00:57:19,010 És tudod kitalálni ki őket a saját, ha, például a 1212 00:57:19,010 --> 00:57:19,990 nem vagyunk pontban. 1213 00:57:19,990 --> 00:57:20,940 Igen. 1214 00:57:20,940 --> 00:57:24,430 >> DIÁK: Mert nem küld a pointer bárhol, nem kell 1215 00:57:24,430 --> 00:57:26,530 használni malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON HIRSCHHORN: Tehát ez megy vissza hogy az eredeti kérdésre. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 Ez csak egy helyi változó? 1219 00:57:29,980 --> 00:57:32,280 Malloc itt nem olyan meggyőző. 1220 00:57:32,280 --> 00:57:35,260 Használata itt nem malloc hogy kényszerítő mert 1221 00:57:35,260 --> 00:57:36,500 csak egy helyi változót. 1222 00:57:36,500 --> 00:57:40,970 >> DIÁK: Akkor tehettél char csillag ptr egyenlő te az első? 1223 00:57:40,970 --> 00:57:41,400 >> JASON HIRSCHHORN: Oh. 1224 00:57:41,400 --> 00:57:43,300 Így fogunk most kap vissza hogy az eredeti kérdésre. 1225 00:57:43,300 --> 00:57:46,885 Azt hiszem, nem volt elégedett A válaszom. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 Mint ez? 1228 00:57:49,226 --> 00:57:49,682 >> DIÁK: Igen. 1229 00:57:49,682 --> 00:57:50,932 Várjon. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON HIRSCHHORN: És hol szeretne kinyomtatni? 1232 00:57:57,850 --> 00:58:00,026 Tehát mi nyomtassa ki egy karakterláncot, mint ez? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> DIÁK: Érdekes. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON HIRSCHHORN: Tehát ez azt mondja, ez érv, hogy milyen típusú egy karaktert. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Tehát ez egy karakter. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> DIÁK: csak úgy az első. 1241 00:58:26,280 --> 00:58:28,610 >> JASON HIRSCHHORN: Tehát ez az, amit korábban mondtam. 1242 00:58:28,610 --> 00:58:34,240 Mint mondtam, ez nem tárolja a karakterlánc belsejében változó mutató. 1243 00:58:34,240 --> 00:58:35,120 Ez tárolása - 1244 00:58:35,120 --> 00:58:36,350 >> DIÁK: Az első érték a húr. 1245 00:58:36,350 --> 00:58:40,810 >> JASON HIRSCHHORN: címe Az első érték a húr. 1246 00:58:40,810 --> 00:58:46,940 Ha volt, hogy nyomtassa ki ezt, vagyunk hogy az érték benne mutatót. 1247 00:58:46,940 --> 00:58:51,005 És majd meglátjuk, hogy valóban, a memória cím. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> Van ennek értelme? 1250 00:58:56,440 --> 00:58:56,940 Bocsánat. 1251 00:58:56,940 --> 00:58:58,996 Várj, jelent választ a kérdés, igaz? 1252 00:58:58,996 --> 00:58:59,790 >> DIÁK: Igen. 1253 00:58:59,790 --> 00:59:05,830 >> JASON HIRSCHHORN: Ez a vonal a kód létrehozása egy sor, majd egy másik 1254 00:59:05,830 --> 00:59:09,115 változó mutató ami mutat az, hogy a szöveg, hogy a tömb. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Igen. 1257 00:59:14,980 --> 00:59:19,200 >> DIÁK: Tehát, ha ment az egyik memória foglalkozzon tovább, akkor megkapjuk a h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 Eltelt már tárolni, mint egy húr? 1260 00:59:23,150 --> 00:59:24,400 >> JASON HIRSCHHORN: Mint, mi - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 így ez értékes csinálni. 1263 00:59:30,790 --> 00:59:33,780 Ez pont aritmetika, amit a srácok nem látott, és meg kell 1264 00:59:33,780 --> 00:59:35,550 viszonylag kényelmes. 1265 00:59:35,550 --> 00:59:36,905 Ez hasonló írás - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 ha mi voltunk, hogy írni ezt a kódsort, láttunk tömb jelölés előtt. 1268 00:59:46,350 --> 00:59:55,900 Ez nekünk a második értéke ebben a tömbben, h. 1269 00:59:55,900 --> 01:00:05,010 >> Ha ezt tette, ez is ad mi a második érték az adott tömbben. 1270 01:00:05,010 --> 01:00:08,320 Mivel ez lesz, hogy nem a memória címét, az első dolog, hanem a 1271 01:00:08,320 --> 01:00:10,530 memória cím a dolognak az egyik vagy. 1272 01:00:10,530 --> 01:00:14,360 És akkor a csillag üzemeltető dereferences hogy a mutató. 1273 01:00:14,360 --> 01:00:16,940 És ismét, lássuk. 1274 01:00:16,940 --> 01:00:18,664 Kapunk h újra. 1275 01:00:18,664 --> 01:00:20,980 >> DIÁK: Pontosan mit hivatkozás feloldási jelent? 1276 01:00:20,980 --> 01:00:23,650 >> JASON HIRSCHHORN: feloldási egy divatos szó menni. 1277 01:00:23,650 --> 01:00:26,390 Megy, hogy, és kap, mi van ott hogy dereference a mutatót. 1278 01:00:26,390 --> 01:00:28,240 Ez csak egy divatos szó, hogy. 1279 01:00:28,240 --> 01:00:29,986 >> DIÁK: Ha volna print az egész szöveg, tudnánk 1280 01:00:29,986 --> 01:00:31,930 do jel mutató? 1281 01:00:31,930 --> 01:00:33,490 >> JASON HIRSCHHORN: OK, mi fog itt megállni. 1282 01:00:33,490 --> 01:00:35,480 Mi lesz a vége itt. 1283 01:00:35,480 --> 01:00:41,760 Jel megadja a címét helyet, így ha nem jel az 1284 01:00:41,760 --> 01:00:44,080 változó, hogy megadja neked a címet ahol ez a változó tárolja. 1285 01:00:44,080 --> 01:00:48,580 Jel pointer megadja a címe ptr ahol PTR van a memóriában. 1286 01:00:48,580 --> 01:00:50,140 >> Nem fogunk menni ezt a példát. 1287 01:00:50,140 --> 01:00:52,640 Lehet kitalálni ezeket a a dolgokat a saját. 1288 01:00:52,640 --> 01:00:55,740 De ismétlem, ez még az is undorító a kicsit túl mit kell tudni 1289 01:00:55,740 --> 01:00:58,000 a jelen középtávú - 1290 01:00:58,000 --> 01:00:59,070 vagy ezt a kvízt, nem. 1291 01:00:59,070 --> 01:01:00,270 Bocsánat. 1292 01:01:00,270 --> 01:01:03,770 >> Fogunk lépni, mert én szeretnék csinálni egy kódolási probléma 1293 01:01:03,770 --> 01:01:05,100 idő előtt múlik. 1294 01:01:05,100 --> 01:01:09,340 És fogunk kódolni, mit gondolok a leginkább kényszerítő ezeknek 1295 01:01:09,340 --> 01:01:11,020 példák atoi. 1296 01:01:11,020 --> 01:01:14,520 Tehát ez volt a kérdés a teszt két évvel ezelőtt. 1297 01:01:14,520 --> 01:01:17,810 És én azt a fórumon itt. 1298 01:01:17,810 --> 01:01:20,680 >> Az emberek arra kérték, a kvíz - 1299 01:01:20,680 --> 01:01:23,640 kaptak egy kicsit tesxt a az a kérdés, de én megszűnt a 1300 01:01:23,640 --> 01:01:26,640 szöveget, mert nem volt szükség céljainknak most. 1301 01:01:26,640 --> 01:01:29,180 Ez csak néhány háttér hogy mit atoi tett. 1302 01:01:29,180 --> 01:01:31,425 De mindannyian tudjuk, és nagyon ismerik atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Azt javaslom, hogy ezt a kódot egy papírlapra. 1304 01:01:35,620 --> 01:01:39,310 Azt is javasoljuk, hogy használja a stratégia hogy már átállt 1305 01:01:39,310 --> 01:01:41,040 Sok a mi részben. 1306 01:01:41,040 --> 01:01:44,130 Először is, győződjön meg róla, hogy megértette mit atoi csinál. 1307 01:01:44,130 --> 01:01:47,580 Rajzolj egy képet vagy dolgozzon ki egy mentális képet, hogy a fejedben. 1308 01:01:47,580 --> 01:01:51,120 Ezután írja ki pszeudokódban ezt. 1309 01:01:51,120 --> 01:01:53,120 A teszt, ha minden, amit kap pszeudokódját, legalább 1310 01:01:53,120 --> 01:01:54,550 tenni valamit le. 1311 01:01:54,550 --> 01:02:00,070 És majd a térkép, hogy pszeudokódja rá C. Ha van egy csekket a 1312 01:02:00,070 --> 01:02:03,760 pszeudokódját hasonlóan ellenőrizze, hogy valami értéke 1, hogy feltérképezi a az, ha 1313 01:02:03,760 --> 01:02:05,750 állapotban, és így tovább. 1314 01:02:05,750 --> 01:02:07,850 És végül, kódolni a programot a C. 1315 01:02:07,850 --> 01:02:15,000 >> Akkor menj vissza, atoi, és hogy öt perc alatt hogy ezt a kódot egy lapon a 1316 01:02:15,000 --> 01:02:19,480 papír, ami valószínűleg a mennyi időt venne igénybe a 1317 01:02:19,480 --> 01:02:21,260 kvíz kód atoi. 1318 01:02:21,260 --> 01:02:27,060 Öt és 15 perc, és 12 öt, öt- 10 percig, körülbelül az összeg 1319 01:02:27,060 --> 01:02:30,150 alkalommal azt költeni ezt a kérdést a kvíz. 1320 01:02:30,150 --> 01:02:31,670 Tehát hogy öt perc alatt, kérem. 1321 01:02:31,670 --> 01:02:35,957 Ha bármilyen kérdése van, fel a kezét, és én majd magához tér. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [SIDE BESZÉLGETÉSEK] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON HIRSCHHORN: OK, így volt öt percig. 1326 01:08:37,580 --> 01:08:39,880 Ez volt talán arról, hogy mennyi alkalommal azt költeni, hogy a kvíz, 1327 01:08:39,880 --> 01:08:42,120 Lehet, hogy az alsó abban az időben. 1328 01:08:42,120 --> 01:08:44,010 Majd helyezze vissza egy kicsit. 1329 01:08:44,010 --> 01:08:45,740 Kezdjük kódolás ezt. 1330 01:08:45,740 --> 01:08:49,479 És ha nem kap végig, ezt a választ, és ez a 1331 01:08:49,479 --> 01:08:54,189 kvíz kérdés állnak, megint 2011 őszén, amikor ez a kérdés 1332 01:08:54,189 --> 01:08:54,913 jelent meg a kvíz. 1333 01:08:54,913 --> 01:08:57,830 >> És érdemes volt nyolc pontot A kvíz akkor. 1334 01:08:57,830 --> 01:09:01,140 Nyolc pont van a high-end, a összeg a pontokat valamit érdemes. 1335 01:09:01,140 --> 01:09:04,790 A legtöbb kérdés a tartományban A 05:59 pontokat. 1336 01:09:04,790 --> 01:09:08,500 Tehát ez egy nagyobb kihívást kérdés, az biztos. 1337 01:09:08,500 --> 01:09:09,750 Tud akárki kap én kezdődött? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Általában, mi lesz hogy akarom ezt a 1340 01:09:15,380 --> 01:09:17,550 funkció atoi logikusan? 1341 01:09:17,550 --> 01:09:19,569 Mit akarsz? 1342 01:09:19,569 --> 01:09:22,279 Így fogunk írni Néhány pszeudokódja. 1343 01:09:22,279 --> 01:09:24,090 >> DIÁK: Convert karakter a egészek. 1344 01:09:24,090 --> 01:09:26,700 >> JASON HIRSCHHORN: Convert karakter a egészek. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 Szóval, hogy hány karakter vagyunk lesz szüksége, hogy menjen át? 1347 01:09:30,870 --> 01:09:32,295 >> DIÁK: Az összes. 1348 01:09:32,295 --> 01:09:34,100 >> DIÁK: Minden karakter a sztring. 1349 01:09:34,100 --> 01:09:35,540 >> JASON HIRSCHHORN: Az összes karakterek a húr. 1350 01:09:35,540 --> 01:09:42,180 Tehát, ha azt akartuk, hogy menjen át minden karaktert egy szövegben, mi az a dolog, 1351 01:09:42,180 --> 01:09:44,560 C-ben láttuk, hogy lehetővé tette hogy menjünk át minden 1352 01:09:44,560 --> 01:09:45,939 karaktert egy szövegben? 1353 01:09:45,939 --> 01:09:46,819 >> Diákok: A for ciklus. 1354 01:09:46,819 --> 01:09:48,069 >> JASON HIRSCHHORN: A for ciklus. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Így fogunk hurkolt minden karakter s. 1357 01:09:55,330 --> 01:10:00,940 >> Akkor mit szeretne majd csinálni ha kap egy sajátos jellegét? 1358 01:10:00,940 --> 01:10:02,480 Mondd, mi megy át a 90. 1359 01:10:02,480 --> 01:10:03,460 Kapunk 9. 1360 01:10:03,460 --> 01:10:04,240 Ez egy karaktert. 1361 01:10:04,240 --> 01:10:07,440 Mit akarunk csinálni karakter 9? 1362 01:10:07,440 --> 01:10:10,082 >> DIÁK: Vonjuk ki azt a karaktert 0-ra? 1363 01:10:10,082 --> 01:10:11,860 >> DIÁK: Add 0-ra? 1364 01:10:11,860 --> 01:10:13,350 >> JASON HIRSCHHORN: Vonjuk azt a karaktert 0-ra? 1365 01:10:13,350 --> 01:10:13,800 >> DIÁK: Igen. 1366 01:10:13,800 --> 01:10:15,573 >> JASON HIRSCHHORN: Miért akarsz csinálni? 1367 01:10:15,573 --> 01:10:16,560 >> DIÁK: [Nem hallható] 1368 01:10:16,560 --> 01:10:17,010 értéket. 1369 01:10:17,010 --> 01:10:18,380 Az int értéket. 1370 01:10:18,380 --> 01:10:21,580 >> JASON HIRSCHHORN: OK, így vesszük a karakter 9., kivonni azt a 1371 01:10:21,580 --> 01:10:25,820 karaktert 0 és kap egy tényleges egész 9. 1372 01:10:25,820 --> 01:10:27,070 Édes. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 És honnan tudod, hogy a karakter 9. mínusz 0 karakter 9? 1375 01:10:37,000 --> 01:10:39,222 Mit táblázat nem nézel? 1376 01:10:39,222 --> 01:10:43,130 >> DIÁK: Vannak logikailag kilenc helyek között 9 és 0. 1377 01:10:43,130 --> 01:10:44,620 Vagy meg tudná nézni az ASCII tábla. 1378 01:10:44,620 --> 01:10:45,120 >> JASON HIRSCHHORN: ASCII tábla. 1379 01:10:45,120 --> 01:10:46,490 De igen, igazad van is. 1380 01:10:46,490 --> 01:10:47,780 Így kivonni 0-ra. 1381 01:10:47,780 --> 01:10:49,010 Tehát most már az egész 9. 1382 01:10:49,010 --> 01:10:49,970 És mit akarsz ezzel? 1383 01:10:49,970 --> 01:10:54,970 Ha megvan a 90, ez az első egész már, hogy mit akarunk csinálni? 1384 01:10:54,970 --> 01:10:58,180 >> DIÁK: Én fel egy ideiglenes egész tömb, akkor nem matek hozzá 1385 01:10:58,180 --> 01:11:02,088 később, hogy azt a véget. 1386 01:11:02,088 --> 01:11:03,020 >> JASON HIRSCHHORN: OK. 1387 01:11:03,020 --> 01:11:06,990 >> DIÁK: Kezdheted végén a tömböt, majd előrelépni, így 1388 01:11:06,990 --> 01:11:10,350 , hogy minden alkalommal, amikor mozog előre, akkor szorozza meg 10-zel. 1389 01:11:10,350 --> 01:11:10,830 >> JASON HIRSCHHORN: OK. 1390 01:11:10,830 --> 01:11:12,250 Ez úgy hangzik, mint egy szép vonzó ötlet. 1391 01:11:12,250 --> 01:11:16,040 Mi lehet kezdeni a végén a tömb, és tudjuk használni strleng. 1392 01:11:16,040 --> 01:11:17,030 Tudjuk használni strleng itt. 1393 01:11:17,030 --> 01:11:18,870 Majd kap a hosszát a húr. 1394 01:11:18,870 --> 01:11:20,100 Kezdjük a végén. 1395 01:11:20,100 --> 01:11:29,170 És + az első, csak hogy ezt a egész, és talán hozunk létre, mint a 1396 01:11:29,170 --> 01:11:32,270 új integer változó fel tetején, ahol mi tárolására mindent. 1397 01:11:32,270 --> 01:11:37,340 Tehát loop át minden char s-tól hátulról előre, mi kivonni 0, és 1398 01:11:37,340 --> 01:11:42,790 akkor vedd, és attól függően, hol van, akkor szorozd meg 1399 01:11:42,790 --> 01:11:45,860 egy hatalom 10. 1400 01:11:45,860 --> 01:11:50,644 Mivel az első, amit teszünk szaporodnak a jobb szélső karakter? 1401 01:11:50,644 --> 01:11:51,440 >> DIÁK: 10 a 0-ra. 1402 01:11:51,440 --> 01:11:53,170 >> JASON HIRSCHHORN: 10 a 0-ra. 1403 01:11:53,170 --> 01:11:56,010 Mit megszorozzuk a második jobbszélső karakterről? 1404 01:11:56,010 --> 01:11:57,450 >> DIÁK: [hallható]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON HIRSCHHORN: Mi az? 1406 01:11:57,960 --> 01:11:59,150 >> DIÁK: 10 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON HIRSCHHORN: 10 1. 1408 01:12:00,420 --> 01:12:03,754 A harmadik-jobb szélső karakter? 1409 01:12:03,754 --> 01:12:04,580 >> DIÁK: 10 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON HIRSCHHORN: 10 2. 1411 01:12:05,350 --> 01:12:07,200 >> DIÁK: Elnézést, nem értem mit csinálunk itt. 1412 01:12:07,200 --> 01:12:08,640 >> JASON HIRSCHHORN: OK, menjünk vissza, akkor. 1413 01:12:08,640 --> 01:12:12,500 Így fogunk kapni Kihagyott egy string. 1414 01:12:12,500 --> 01:12:14,470 Mert írsz atoi. 1415 01:12:14,470 --> 01:12:15,260 Így kap telt el a húr. 1416 01:12:15,260 --> 01:12:17,640 Mondjuk a sorstól át A szöveg a 90. 1417 01:12:17,640 --> 01:12:19,930 >> Az első dolog, amit meg fogunk tenni beállítása egy új, egész típusú változó, vagyunk 1418 01:12:19,930 --> 01:12:22,150 csak létre fog hozni mint az új egész. 1419 01:12:22,150 --> 01:12:24,630 Ez az, amit mi fogunk hogy visszatérjen a végén. 1420 01:12:24,630 --> 01:12:30,110 Meg kell, hogy menjen át minden karakter a húr, mert megállapítottuk, 1421 01:12:30,110 --> 01:12:34,430 hogy meg kell megérinteni mindegyiket, és majd add hozzá az új egész. 1422 01:12:34,430 --> 01:12:36,330 >> De nem csak hozzá, mint egy számot. 1423 01:12:36,330 --> 01:12:38,270 Nem lehet csak úgy a 9. és hozzá 9. a mi egész. 1424 01:12:38,270 --> 01:12:40,560 Attól függ, hogy milyen helyen ez a szöveg. 1425 01:12:40,560 --> 01:12:42,960 Fogunk kell szorozni azt a hatalom 10. 1426 01:12:42,960 --> 01:12:45,580 Mert ez az, hogy 10-es alapú működik. 1427 01:12:45,580 --> 01:12:49,050 >> Szóval lesz, hogy a tényleges karakter, egész szám, vagy az aktuális 1428 01:12:49,050 --> 01:12:53,860 szám, kivonva karakter 0 A karakter 9. mint tettük 1429 01:12:53,860 --> 01:12:57,560 levonva karaktert tőke A-tól bármilyen jellegű volt az egyik 1430 01:12:57,560 --> 01:12:58,120 ezeket a problémákat. 1431 01:12:58,120 --> 01:13:04,190 Szóval akkor tényleg kap egy számot 0-tól 9. megtakarítani, mint a valós szám, és mi 1432 01:13:04,190 --> 01:13:07,590 szorozza meg a hatalom 10 függő hol vagyunk a húr. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 És akkor mi lesz hozzá vissza a mi új integer változót. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Szóval mi ez nézne lenne kell - mi lesz felhívni itt. 1437 01:13:37,890 --> 01:13:40,086 Ha kap telt el a húr 90 - 1438 01:13:40,086 --> 01:13:41,336 >> DIÁK: [hallható]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON HIRSCHHORN De atoi vesz egy string. 1441 01:13:45,540 --> 01:13:46,350 Így fogunk átmenni a gazdaságban. 1442 01:13:46,350 --> 01:13:49,900 Mi lesz telt el 90. 1443 01:13:49,900 --> 01:13:51,540 Mi megy a vissza a frontra. 1444 01:13:51,540 --> 01:13:53,920 Vesszük a 0-ra. 1445 01:13:53,920 --> 01:13:55,080 >> DIÁK: Sajnálom. 1446 01:13:55,080 --> 01:13:55,880 Lehet, hogy ez hülyeség. 1447 01:13:55,880 --> 01:13:59,440 Ha megvagyunk Kihagyott egy string, miért van 90, amit mi 1448 01:13:59,440 --> 01:14:00,260 egyre telt el? 1449 01:14:00,260 --> 01:14:03,160 90 Mivel egy egész szám. 1450 01:14:03,160 --> 01:14:06,820 >> JASON HIRSCHHORN: Mivel atoi vesz szöveg és kiderül, hogy az egész 1451 01:14:06,820 --> 01:14:08,320 képviselete, hogy a húr. 1452 01:14:08,320 --> 01:14:13,650 De a szöveg a 90 nem az egész 90 vagy a szám 90. 1453 01:14:13,650 --> 01:14:17,920 A szöveg 90 tömb két, vagy három karakter, inkább a 9 1454 01:14:17,920 --> 01:14:22,740 karakter, a 0-karaktert, és A backslash 0. karaktert. 1455 01:14:22,740 --> 01:14:26,260 >> És írunk atoi, mert a Például, ha megteszi a parancs 1456 01:14:26,260 --> 01:14:30,230 argumentum, és ez mentett argv, ez menti a húr. 1457 01:14:30,230 --> 01:14:32,940 De ha azt akarjuk, hogy kezelje azt a számot, meg kell átalakítani, hogy az 1458 01:14:32,940 --> 01:14:34,700 tényleges egész. 1459 01:14:34,700 --> 01:14:37,210 Melyik mi az egyik probléma készletek. 1460 01:14:37,210 --> 01:14:38,800 Amit tett számos A mi problémánk készletek. 1461 01:14:38,800 --> 01:14:41,690 Mindenki, volt egy egész parancssori argumentum. 1462 01:14:41,690 --> 01:14:46,490 Szóval ez az, amiért a atoi funkció vesz egy string. 1463 01:14:46,490 --> 01:14:51,910 >> Tehát még egyszer, a példánkban itt vagyunk megy, hogy az utolsó. 1464 01:14:51,910 --> 01:14:55,050 Fogunk kivonni a karakter 0-tól, mert a karakterek 0 1465 01:14:55,050 --> 01:14:58,810 vonni a karakter 0 ad a tényleges száma 0 szerint 1466 01:14:58,810 --> 01:15:00,950 Az ASCII matek, hogy mi. 1467 01:15:00,950 --> 01:15:04,870 >> Mivel a karakterek képviseletében a más, mint a tényleges - a 1468 01:15:04,870 --> 01:15:08,830 karakter egy, például a kisbetű a 97. 1469 01:15:08,830 --> 01:15:10,260 Ez nem - hoppá! 1470 01:15:10,260 --> 01:15:13,290 Ez nem az, amit elvár hogy legyen, 0, pl. 1471 01:15:13,290 --> 01:15:16,200 Tehát meg kell kivonni a karakter egy, hogy 0-ra. 1472 01:15:16,200 --> 01:15:18,950 >> Így fogjuk csinálni, hogy itt hogy a tényleges szám. 1473 01:15:18,950 --> 01:15:22,560 És akkor mi lesz, hogy szorozza meg teljesítmény 10 attól függően, hogy hol 1474 01:15:22,560 --> 01:15:27,030 van a szöveg, és hogy ezt a és adja hozzá a hely- 1475 01:15:27,030 --> 01:15:32,520 változót, mi jön ki az utolsó új egész. 1476 01:15:32,520 --> 01:15:35,080 Van, hogy van értelme, hogy mindenki számára? 1477 01:15:35,080 --> 01:15:37,730 >> Így nem fogunk kódolni ezt most, mert vagyunk 1478 01:15:37,730 --> 01:15:38,830 hogy rövid idő alatt. 1479 01:15:38,830 --> 01:15:40,860 Elnézést kérek az időzítés, hogy a. 1480 01:15:40,860 --> 01:15:44,620 De ez az, ami remélhetőleg tenné képes megtenni a kvíz - a 1481 01:15:44,620 --> 01:15:47,710 legkevesebb, hogy ezt a pszeudokódja írva. 1482 01:15:47,710 --> 01:15:50,840 >> És akkor, ha mi voltunk, hogy írjon a pszeudokódját, valóban, mi is ezt 1483 01:15:50,840 --> 01:15:51,490 elég gyorsan. 1484 01:15:51,490 --> 01:15:55,230 Minden sora észrevételek azt írtuk Itt fordítja a 1485 01:15:55,230 --> 01:15:56,970 egy sor C kód. 1486 01:15:56,970 --> 01:16:01,780 Deklarálása egy új változó, írás hurok, néhány kivonás, néhány 1487 01:16:01,780 --> 01:16:07,070 szorzás, és néhány feladat. 1488 01:16:07,070 --> 01:16:09,020 Akkor valószínűleg azt is szeretné, hogy levelet visszatérő ág. 1489 01:16:09,020 --> 01:16:12,040 Azt is szeretné, hogy pár ellenőrzés itt. 1490 01:16:12,040 --> 01:16:12,655 Igen. 1491 01:16:12,655 --> 01:16:15,720 >> DIÁK: Így tudunk kezelni s mint a tényleges szöveg? 1492 01:16:15,720 --> 01:16:18,730 Mert tudom, hogy ez csak egy cím. 1493 01:16:18,730 --> 01:16:22,090 Mint, hogyan kap hosszát a szöveg, hogy át? 1494 01:16:22,090 --> 01:16:25,310 >> JASON HIRSCHHORN: Hogy volt a string hossza? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> DIÁK: strlen, igen. 1497 01:16:26,660 --> 01:16:30,550 De teszel s mint a érv, hogy az? 1498 01:16:30,550 --> 01:16:34,620 >> JASON HIRSCHHORN: Tehát strlen vesz char csillag. 1499 01:16:34,620 --> 01:16:38,090 És ebből következik, hogy char csillag, és tartja számítva, amíg eljut a 1500 01:16:38,090 --> 01:16:41,865 backslash 0-ra. strlen valójában egy másik program is 1501 01:16:41,865 --> 01:16:42,850 mentek a kódot. 1502 01:16:42,850 --> 01:16:44,560 Ez a másik jó, hogy kódot. 1503 01:16:44,560 --> 01:16:47,270 Ez az ember egy kicsit könnyebb, mert ha fogsz gondolkodni, hogy 1504 01:16:47,270 --> 01:16:47,830 fogalmilag - 1505 01:16:47,830 --> 01:16:51,620 Csak azt mondtam, hogy hangosan - strlen alábbiak a mutató és folyamatosan megy, és 1506 01:16:51,620 --> 01:16:54,210 számolás és nyomon követése, amíg el nem éri a backslash 0-ra. 1507 01:16:54,210 --> 01:16:56,530 >> DIÁK: OK, megvan. 1508 01:16:56,530 --> 01:17:00,200 >> JASON HIRSCHHORN: Tehát legjobb szerencsét kvíz 0. holnap. 1509 01:17:00,200 --> 01:17:03,170 Ha bármilyen kérdése van, én kívül után. 1510 01:17:03,170 --> 01:17:05,610 Nyugodtan e-mailt nekem. 1511 01:17:05,610 --> 01:17:08,480 Érje el a saját TF ha nem az én részben, vagy kap a 1512 01:17:08,480 --> 01:17:10,005 e-mailben, ha akarod. 1513 01:17:10,005 --> 01:17:13,140 >> Ha szeretné, hogy kiborulni, és küldje nekem egy e-mailt, a freakout e-mailt, én 1514 01:17:13,140 --> 01:17:16,710 küld vissza, mint egy mosolygó arc, vagy, mint egy vicc, vagy valami. 1515 01:17:16,710 --> 01:17:18,190 Szóval nyugodtan erre is. 1516 01:17:18,190 --> 01:17:20,750 Sok szerencsét megint, és én találkozunk jövő héten. 1517 01:17:20,750 --> 01:17:23,435