1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON Hirschhorna: Dobrodošli A5, vsi. 3 00:00:07,820 --> 00:00:11,270 Imamo razburljiv teden pred nami, predvsem zato, ker obstaja toliko novih 4 00:00:11,270 --> 00:00:12,350 sooča v tej sobi. 5 00:00:12,350 --> 00:00:12,920 To je čudovito. 6 00:00:12,920 --> 00:00:15,740 Veliko vas je tukaj po naključju, , ki je še boljši. 7 00:00:15,740 --> 00:00:18,220 Torej, upam, da si bomo še naprej se nam pridružili. 8 00:00:18,220 --> 00:00:20,220 >> Ta teden bomo preživeli Večji del odseka 9 00:00:20,220 --> 00:00:21,870 priprave na kviz. 10 00:00:21,870 --> 00:00:26,580 Torej na našem dnevnem redu, se bova pogovorila malo o sredstvih za ta razred, 11 00:00:26,580 --> 00:00:30,350 ampak tudi za kviz, in nato spet preživijo večino razreda govorjenja 12 00:00:30,350 --> 00:00:31,390 O vprašanjih. 13 00:00:31,390 --> 00:00:33,900 Ko bomo končali odgovore na vaša Vprašanja, ali če na vaša vprašanja 14 00:00:33,900 --> 00:00:39,010 seveda nas pripelje do neke kodiranje, I imajo težave vzorec iz izpiti 15 00:00:39,010 --> 00:00:43,180 preteklost, da bomo v živo oznake v oddelku skupaj, da tudi bruhati nekatere druge 16 00:00:43,180 --> 00:00:45,420 dobre teme za kritje. 17 00:00:45,420 --> 00:00:48,280 >> Torej, najprej, kot smo šli skozi za mimo nekaj tednov, da vas spomnim 18 00:00:48,280 --> 00:00:51,700 fantje, obstajajo ton virov na voljo za ta predmet. 19 00:00:51,700 --> 00:00:55,020 Mnogi od njih bodo neverjetno koristno za vas, kot ste še naprej 20 00:00:55,020 --> 00:00:57,280 študija za kviz 0, saj to je torek popoldne. 21 00:00:57,280 --> 00:00:59,630 Torej, vsi ste bili študira za bit. 22 00:00:59,630 --> 00:01:02,640 >> Obstajajo zapiski in vir koda, da morate 23 00:01:02,640 --> 00:01:04,050 vsekakor preverite. 24 00:01:04,050 --> 00:01:05,019 Gledam hlače. 25 00:01:05,019 --> 00:01:07,470 Odjaviti study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 In potem, navedene v nadaljevanju, številka iz drugih virov. 27 00:01:11,770 --> 00:01:14,020 >> Again, kviz 0 jutri ob 01:00. 28 00:01:14,020 --> 00:01:18,230 Če tega še niste storili, preverite ven O Kviz 0 dokument o 29 00:01:18,230 --> 00:01:21,370 Course na domačo stran, da ugotovimo, kje ste vzeli kviz. 30 00:01:21,370 --> 00:01:25,770 Kviz se začne ob 01:10 in se konča 70 minut pozneje. 31 00:01:25,770 --> 00:01:29,610 Torej, če pridete po 01:10, ste bo dobil, da je veliko manj minut 32 00:01:29,610 --> 00:01:30,940 kot 70, da bi kviz. 33 00:01:30,940 --> 00:01:33,570 Zato poskrbite, da ste tam na čas. 34 00:01:33,570 --> 00:01:38,690 Če ste študent podaljšanje ali imajo nekateri drugi razlogi za testiranje, da 35 00:01:38,690 --> 00:01:40,400 morda ne bo na 1:00 jutri. 36 00:01:40,400 --> 00:01:43,540 Ampak še enkrat preverite O kviz 0 dokumentirati, da poskrbite, da boste vedeli, kdaj 37 00:01:43,540 --> 00:01:44,760 ste vzeli kviz. 38 00:01:44,760 --> 00:01:46,440 Napisal sem 75 minut gor. 39 00:01:46,440 --> 00:01:48,580 Mislim, da je prav, ne pa 70. 40 00:01:48,580 --> 00:01:53,420 >> Zajema vse gradivo iz tedna 0. na predavanju v sredo prejšnji teden. 41 00:01:53,420 --> 00:01:59,350 In še enkrat, za ta kviz, da na Dokument, dobiš eno dvostransko in 8 42 00:01:59,350 --> 00:02:03,770 1/2 za 11 list papirja, ki ga dobite uporabiti kot pojasnili v kvizu. 43 00:02:03,770 --> 00:02:08,570 Mnogi ljudje, če ne večina ljudi, še ugotovljeno, da je ena najbolj koristen način 44 00:02:08,570 --> 00:02:11,970 za študij za kviz je da študija lista, 45 00:02:11,970 --> 00:02:13,730 ena sider, njihov. 46 00:02:13,730 --> 00:02:17,710 Torej, poglej zadnjih tiste če ki ste jih videli v preteklosti narave. 47 00:02:17,710 --> 00:02:19,960 Doseči, da prijatelji, da vidite, kaj oni dajanje na njiju. 48 00:02:19,960 --> 00:02:23,610 >> Ampak roke navzdol, najboljši način, da lahko Študija je iti skozi vse in 49 00:02:23,610 --> 00:02:26,530 Zmanjšati je na tisto, kar mora ali Ne spadam na ta list 50 00:02:26,530 --> 00:02:30,570 papir, ker je to ravno res koristen način za vas, da poskrbite, da 51 00:02:30,570 --> 00:02:33,620 greste skozi vse in nekaj domačnosti z njo. 52 00:02:33,620 --> 00:02:36,690 Večina ljudi, smo našli, čeprav so list papirja sedi 53 00:02:36,690 --> 00:02:39,840 poleg njih na kvizu, ne spremenijo za njo, saj je spet, da je zelo 54 00:02:39,840 --> 00:02:43,290 Postopek skozi informacij je pomagal jim ga učijo. 55 00:02:43,290 --> 00:02:45,370 >> Ima kdo kakšna vprašanja O kvizu 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 Ima vse - 58 00:02:51,450 --> 00:02:53,230 Ne bom narediti dvigovanjem rok. 59 00:02:53,230 --> 00:02:53,550 Never mind. 60 00:02:53,550 --> 00:02:54,790 Hotela sem vprašati, kdo začel študirati. 61 00:02:54,790 --> 00:02:58,360 Ampak jaz ne želim, da bi vas niso vsi dvignite roke. 62 00:02:58,360 --> 00:03:01,290 Torej, kot sem rekel - ja, Avi, pojdi naprej. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Kaj bi bilo koristno stvar da dajo na eno pozivnik? 64 00:03:04,205 --> 00:03:05,875 >> Študent: To je odvisno od vas. 65 00:03:05,875 --> 00:03:08,210 >> JASON Hirschhorna: Dobiš da uporabite svoje sodbe. 66 00:03:08,210 --> 00:03:13,220 Uporabne stvari postaviti na eno pozivnik, Če ste zmedeni o veliki O 67 00:03:13,220 --> 00:03:17,510 teka različnih vrst iskanj in vrste, dal, da tam v 68 00:03:17,510 --> 00:03:18,760 priročen dandy grafikon. 69 00:03:18,760 --> 00:03:22,250 Na ta način, če ste prosil, da na kviz, vam ni treba poskusiti in ugotoviti 70 00:03:22,250 --> 00:03:23,560 ven ali razlog prek izvajanja. 71 00:03:23,560 --> 00:03:24,730 Lahko samo kopirate navzdol. 72 00:03:24,730 --> 00:03:28,320 Če pogledaš na kvizi preteklosti veliko krat, tam teče čas vprašanj. 73 00:03:28,320 --> 00:03:34,150 Zato, da bi primer dobro stvar, da dajo na svoj ene pozivnik. 74 00:03:34,150 --> 00:03:37,450 >> Druge dobre stvari, ki so bili dani, če ste zmedeni o tem, kako naj ugotovi 75 00:03:37,450 --> 00:03:40,570 funkcija ali kaj različni deli Izjava funkcije so napisali 76 00:03:40,570 --> 00:03:43,400 da tam, generično različico in nato morda primer. 77 00:03:43,400 --> 00:03:47,290 Če ste zmedeni glede kazalcev, diagram kako kazalci delo 78 00:03:47,290 --> 00:03:48,660 Verjetno res v pomoč. 79 00:03:48,660 --> 00:03:52,440 Če ste zmedeni o rekurzije, a vzorec rekurzivna funkcija tam 80 00:03:52,440 --> 00:03:54,980 lahko tudi izkaže, da je res v pomoč. 81 00:03:54,980 --> 00:03:57,290 Ali to, da vam nekaj idej? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Morate razumeti, Celoten proces sestavljanje, kot so 83 00:04:01,820 --> 00:04:03,220 kako, da vse deluje? 84 00:04:03,220 --> 00:04:06,620 >> JASON Hirschhorna: Vse , ki je bila pokrita bi 85 00:04:06,620 --> 00:04:08,060 pokažejo na kvizu. 86 00:04:08,060 --> 00:04:08,930 Vprašanja - 87 00:04:08,930 --> 00:04:11,300 ampak spet, bodo nekatere stvari lahko močno vrednotena od drugih. 88 00:04:11,300 --> 00:04:14,330 Nekatere stvari so prišli spet in spet v razredu, v 89 00:04:14,330 --> 00:04:15,590 Predavanje in oddelek. 90 00:04:15,590 --> 00:04:17,220 Druge stvari niso prišel gor, da pogosto. 91 00:04:17,220 --> 00:04:22,900 >> Smo se veliko pogovarjali o # include in -L kaj in kaj s tistimi, pomeni v 92 00:04:22,900 --> 00:04:24,390 Proces urejanje. 93 00:04:24,390 --> 00:04:29,120 Smo se veliko pogovarjali o GDB, oprijemljivo, te različne oznake, ki jih uporabljamo pri 94 00:04:29,120 --> 00:04:33,100 bomo prevedite nekaj, in kaj make15, na primer, v resnici 95 00:04:33,100 --> 00:04:34,510 pomeni, in res. 96 00:04:34,510 --> 00:04:38,110 Nismo govorimo toliko o vsak korak v 97 00:04:38,110 --> 00:04:39,240 Proces urejanje. 98 00:04:39,240 --> 00:04:40,410 Mi smo vedno govorili o tem. 99 00:04:40,410 --> 00:04:42,550 Tako da je še vedno nekaj, kar si morajo biti seznanjeni z. 100 00:04:42,550 --> 00:04:44,610 Ampak še enkrat, mi ne bo - 101 00:04:44,610 --> 00:04:49,140 stvari, ki pridejo gor bolj pogosto v razredu je bolj verjetno, da bi prišli do bolj 102 00:04:49,140 --> 00:04:52,495 pogosto in bolj močno ponderirajo na kvizu. 103 00:04:52,495 --> 00:04:53,280 >> Cool. 104 00:04:53,280 --> 00:04:54,580 Katera koli druga vprašanja o kvizu 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, tako da sem dal seznam teme na krovu. 107 00:05:00,050 --> 00:05:01,550 Šla sem skozi učni načrt. 108 00:05:01,550 --> 00:05:07,340 Šla sem skozi odseku pregleda iz Sinoči in ta stekelca, da pridejo gor 109 00:05:07,340 --> 00:05:13,710 z nepopolnim seznamom temah , ki smo jih doslej zajete v CS50 110 00:05:13,710 --> 00:05:16,800 in stvari, ki bi lahko pojavijo na kvizu. 111 00:05:16,800 --> 00:05:19,900 Torej, jaz ne bom šel skozi vsak od teh. 112 00:05:19,900 --> 00:05:22,370 Da bi bilo potrebno veliko več čas, kot jih imamo zdaj. 113 00:05:22,370 --> 00:05:26,880 Ampak jaz sem dal gor na upajmo tek vaš spomin, da se stvari, ki se lahko 114 00:05:26,880 --> 00:05:28,420 ali pa morda ne bo tako seznanjeni z vami. 115 00:05:28,420 --> 00:05:32,850 >> In jaz bi rad, da preživijo večino oddelek odgovore na vaša vprašanja o 116 00:05:32,850 --> 00:05:35,130 Te teme, teme, ki tukaj niso zajeti. 117 00:05:35,130 --> 00:05:36,130 Mi lahko napišete psevdo kodo. 118 00:05:36,130 --> 00:05:40,010 Mi lahko napišete resnično kodo zagotoviti, da ste - 119 00:05:40,010 --> 00:05:44,280 Ne morem odgovoriti na vaše vprašanje in pomoč vsi bistveno razumeti 120 00:05:44,280 --> 00:05:48,330 Veliko teh temah, tako da boste počutili pripravljeni in udobno gredo v 121 00:05:48,330 --> 00:05:50,150 kviz jutri. 122 00:05:50,150 --> 00:05:52,300 Torej preberite več seznama. 123 00:05:52,300 --> 00:05:54,780 Upajmo, da ste prišli na oddelku z nekaterimi vprašanji, kot dobro. 124 00:05:54,780 --> 00:05:58,480 Ko ste pripravljeni, naj dvigne roko in bomo začeli. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Imejte v mislih, so vprašanja, ki jih imajo, ni neumnih vprašanj. 127 00:06:05,200 --> 00:06:06,250 Slišali smo, da je veliko. 128 00:06:06,250 --> 00:06:09,490 In vprašanja, ki jih imajo, sem pripravljen staviti, mnogi drugi ljudje tako 129 00:06:09,490 --> 00:06:11,740 sedel tukaj in gledal na spletu imajo tudi. 130 00:06:11,740 --> 00:06:13,770 Torej si lahko le pomaga ljudem s postavljanjem vprašanj. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: Med sklada in heap, obstaja predhodno dodeljena 133 00:06:18,040 --> 00:06:22,880 Odstotek pomnilnika, ki je opredeljena kot to je za dimnik ali kup? 134 00:06:22,880 --> 00:06:25,010 Ali pa, kako to deluje točno? 135 00:06:25,010 --> 00:06:26,230 >> JASON Hirschhorna: Great vprašanje. 136 00:06:26,230 --> 00:06:28,640 Grem nazaj v sledovih malo. 137 00:06:28,640 --> 00:06:30,910 Ali vsi - 138 00:06:30,910 --> 00:06:31,660 bodite iskreni tukaj. 139 00:06:31,660 --> 00:06:34,130 Vem, da sem vas prosim, da zvišate roko pred svojimi vrstniki. 140 00:06:34,130 --> 00:06:38,510 Vendar obstajajo ljudje, ki menijo, ne more sprijazniti s kupa in kup 141 00:06:38,510 --> 00:06:42,980 in bi rad šel čez, da in kaj s tistimi pomeni? 142 00:06:42,980 --> 00:06:43,880 Dvignite roko, če - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 Hvala vam. 145 00:06:45,120 --> 00:06:48,420 Tako smo šli čez dimnik in kup zelo hitro in potem 146 00:06:48,420 --> 00:06:50,370 premakniti v odgovoru na vaše vprašanje. 147 00:06:50,370 --> 00:06:58,250 >> Torej, če potegnemo ven škatlo za zastopanje spomin na vašem računalniku, kaj so nekateri 148 00:06:58,250 --> 00:07:02,160 stvari, ki gredo v to polje? 149 00:07:02,160 --> 00:07:03,630 Main. 150 00:07:03,630 --> 00:07:04,020 Glavna naloga. 151 00:07:04,020 --> 00:07:05,890 Kje glavni iti? 152 00:07:05,890 --> 00:07:08,090 >> Študent: [neslišno]. 153 00:07:08,090 --> 00:07:09,390 >> JASON Hirschhorna: Torej bomo dal glavni tukaj. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Kaj se dogaja v tej škatli? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> Študent: Funkcije, ki jih zahtevajo. 158 00:07:18,140 --> 00:07:19,020 >> JASON Hirschhorna: Naloge , ki ga imenujemo. 159 00:07:19,020 --> 00:07:20,440 In kam gredo? 160 00:07:20,440 --> 00:07:21,300 >> ŠTUDENT: V dimnika. 161 00:07:21,300 --> 00:07:22,380 >> JASON Hirschhorna: So šel v sklad. 162 00:07:22,380 --> 00:07:27,350 Torej bomo to imenujemo stvar tukaj dimnika. 163 00:07:27,350 --> 00:07:31,880 In do vrha imamo kup. 164 00:07:31,880 --> 00:07:35,450 Torej spomin ni predal, tako kot to. 165 00:07:35,450 --> 00:07:37,330 Vendar je dejansko precej podobni. 166 00:07:37,330 --> 00:07:40,840 To se dogaja, da je veliko polj več in več, odvisno od tega, kako velik je vaš 167 00:07:40,840 --> 00:07:43,730 računalnik ali kako velik je vaš spomin. 168 00:07:43,730 --> 00:07:46,950 >> Na quote-konec citata "od spodaj" je žetonov. 169 00:07:46,950 --> 00:07:50,880 In obstaja več stvari da gredo na stack. 170 00:07:50,880 --> 00:07:53,840 In tiste, odvisno od funkcije imaš v kodi. 171 00:07:53,840 --> 00:07:57,780 Vedno imaš eno funkcijo v vašem Koda se imenuje glavni, tako da je vedno 172 00:07:57,780 --> 00:08:00,480 odsek dol v kup posvečen glavni. 173 00:08:00,480 --> 00:08:03,980 >> Ti oddelki na kupu Imenujejo se konzoli okvirji. 174 00:08:03,980 --> 00:08:09,580 Ko pokličete drugo funkcijo, pravijo glavni poziva binarno funkcijo iskanja, 175 00:08:09,580 --> 00:08:11,075 damo še en okvir na sklad. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Natančneje, bomo darovati kos spomin na našega 178 00:08:17,320 --> 00:08:22,960 računalnik za shranjevanje binarno iskanje je lokalna spremenljivke in teči binarno 179 00:08:22,960 --> 00:08:24,150 iskanje kode. 180 00:08:24,150 --> 00:08:26,810 >> Zato pravimo binarno iskanje. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 V ta kos pomnilnika, greva za shranjevanje svojih lokalnih spremenljivk. 183 00:08:33,340 --> 00:08:35,270 Mi bomo za shranjevanje svojih printf klice. 184 00:08:35,270 --> 00:08:38,159 Karkoli se zgodi, da je funkcija bodo shranjene tam. 185 00:08:38,159 --> 00:08:40,350 Binarno iskanje se bo izvesti. 186 00:08:40,350 --> 00:08:42,210 To bo za dokončanje izvedbe. 187 00:08:42,210 --> 00:08:47,450 Kaj je beseda v C, ki pomeni da Funkcija mora 188 00:08:47,450 --> 00:08:49,306 dokončati svojo usmrtitev? 189 00:08:49,306 --> 00:08:50,040 >> Študent: Return. 190 00:08:50,040 --> 00:08:50,870 >> JASON Hirschhorna: Vrnitev. 191 00:08:50,870 --> 00:08:53,230 Torej, ko vidite izjavo vračanja, konci funkcija 192 00:08:53,230 --> 00:08:54,350 ko udari da. 193 00:08:54,350 --> 00:08:56,740 Torej binarno iskanje bo udaril svojo vrnitev. 194 00:08:56,740 --> 00:09:01,360 Ta del pomnilnika bo bistveno se sprostil. 195 00:09:01,360 --> 00:09:03,510 In glavna bom šel nazaj do izvedbe. 196 00:09:03,510 --> 00:09:07,240 Torej, glavna bo premor, kjerkoli je bil, klic binarno iskanje, dobim povratno vrednost, 197 00:09:07,240 --> 00:09:08,700 in nadaljujejo izvajanje. 198 00:09:08,700 --> 00:09:10,840 Ta kup okvir bodo izginile. 199 00:09:10,840 --> 00:09:14,810 >> Če pravimo rekurzivno funkcijo, ki je funkcija, ki sebe imenuje več 200 00:09:14,810 --> 00:09:18,480 in več, bomo morda dobili - rekli, da smo naredil binarno iskanje rekurzivno. 201 00:09:18,480 --> 00:09:21,520 Morda bomo dobili binarno iskalno različico eno, dvojiško iskalno dva, binarno iskanje 202 00:09:21,520 --> 00:09:24,090 tri, štiri binarno iskanje, dvojiško iskalno pet. 203 00:09:24,090 --> 00:09:27,950 In potem je to končno binarno iskanje pet bo hit osnovnem scenariju in kup 204 00:09:27,950 --> 00:09:31,010 Okvirji bo šel nazaj in naprej zapiranje dokler se ne vrnemo na glavno. 205 00:09:31,010 --> 00:09:32,530 Lahko gremo čez rekurzije v bit. 206 00:09:32,530 --> 00:09:35,530 Ampak vse to se pravi, če ste kliče več funkcij hkrati, 207 00:09:35,530 --> 00:09:39,250 tam bo večkratni dimnika okvirji na kupu. 208 00:09:39,250 --> 00:09:42,900 >> Kopice, na drugi strani, se tu ni za funkcije, 209 00:09:42,900 --> 00:09:44,380 ni za lokalne spremenljivke. 210 00:09:44,380 --> 00:09:48,920 To je za dinamično dodeljen spremenljivke. 211 00:09:48,920 --> 00:09:57,210 Torej, to so spremenljivke, ki jih je mogoče inicializiran bodisi glavna ali 212 00:09:57,210 --> 00:09:58,640 funkcijo, glavne klice. 213 00:09:58,640 --> 00:10:00,790 Kjerkoli v kodi, ki jih lahko inicializirana. 214 00:10:00,790 --> 00:10:04,360 In za inicializacijo dinamično dodeljena spremenljiva. 215 00:10:04,360 --> 00:10:06,970 Kakšno funkcijo v C bomo uporabili? 216 00:10:06,970 --> 00:10:07,600 >> Študent: malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON Hirschhorna: malloc. 218 00:10:09,240 --> 00:10:10,800 Pokličete malloc. 219 00:10:10,800 --> 00:10:12,260 Boste dobili prostor v pomnilniku. 220 00:10:12,260 --> 00:10:15,020 In ta prostor spomina je na kup. 221 00:10:15,020 --> 00:10:18,840 In ta prostor spomina ostane tam, dokler ne pokličeš brezplačno. 222 00:10:18,840 --> 00:10:22,670 >> Tako dinamično dodeljenih spremenljivk v Kopica bo obstajala, dokler vas 223 00:10:22,670 --> 00:10:25,250 želimo, da obstajajo, in da ne bodo oditi, dokler ne boste izrecno 224 00:10:25,250 --> 00:10:26,760 povej jim, da gredo stran. 225 00:10:26,760 --> 00:10:29,670 Lahko jih ustvarili v eno funkcijo. 226 00:10:29,670 --> 00:10:31,930 Sveženj Ta funkcija je Okvir bodo izginile. 227 00:10:31,930 --> 00:10:35,490 Vendar bo, da spremenljivka še vedno obstajajo v kup, dokler se sprostil, 228 00:10:35,490 --> 00:10:39,650 lahko s funkcijo, ki se imenuje binarno iskanje ali karkoli. 229 00:10:39,650 --> 00:10:42,580 >> Torej, ti kup spremenljivke ostanejo tam tako dolgo, kot želite, 230 00:10:42,580 --> 00:10:43,490 ostanejo tam. 231 00:10:43,490 --> 00:10:46,090 In se dajo tukaj. 232 00:10:46,090 --> 00:10:47,450 In potem naslednjič dobi tam čaka. 233 00:10:47,450 --> 00:10:50,210 Vodijo pridobivanje izpolniti, in jih ostani tam, dokler ne pokličeš brezplačno. 234 00:10:50,210 --> 00:10:52,870 >> In v bistvu kup in kup, dobili na vprašanje Marcus je, 235 00:10:52,870 --> 00:10:54,500 raste proti drugemu. 236 00:10:54,500 --> 00:10:57,730 In če naletite na drug na drugega, ki ste jih uporablja ves spomin v vašem 237 00:10:57,730 --> 00:11:01,330 računalnik, in vaš program bo nehal ker nimate nobenih več pomnilnika 238 00:11:01,330 --> 00:11:02,420 levo uporabo. 239 00:11:02,420 --> 00:11:07,290 Med njimi obstajajo morebitne druge stvari. 240 00:11:07,290 --> 00:11:10,980 Ampak za obseg tega predmeta, vas vam ni treba skrbeti za to. 241 00:11:10,980 --> 00:11:12,020 >> Tako, da je bil odgovor na vaše vprašanje. 242 00:11:12,020 --> 00:11:13,520 Ne skrbi. 243 00:11:13,520 --> 00:11:15,550 Toda to je bil dolg odgovor. 244 00:11:15,550 --> 00:11:17,800 Vse, kar morate vedeti je kup in kup bo - 245 00:11:17,800 --> 00:11:18,900 začnemo na dnu. 246 00:11:18,900 --> 00:11:19,570 Stack ne. 247 00:11:19,570 --> 00:11:20,790 Kopica tam gor. 248 00:11:20,790 --> 00:11:21,990 Rastejo bližje drug drugemu. 249 00:11:21,990 --> 00:11:23,110 >> In če se dotakneš, da je to problem. 250 00:11:23,110 --> 00:11:24,500 Ti je zmanjkalo pomnilnika. 251 00:11:24,500 --> 00:11:28,760 Toda tudi poleg vedo, kjer so, kateri je shranjena v obeh 252 00:11:28,760 --> 00:11:30,512 kup in kup. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: Ko trčijo, je, da prekoračitev? 255 00:11:33,570 --> 00:11:35,670 >> JASON Hirschhorna: Ko trčijo, to ni prekoračitev. 256 00:11:35,670 --> 00:11:38,340 Prekoračitev je drugačna območje da lahko gremo naprej, če želite. 257 00:11:38,340 --> 00:11:40,020 OK, se bomo vrnili k da bit. 258 00:11:40,020 --> 00:11:42,730 >> ŠTUDENT: Kaj je beseda imenuje ko so zadeti medsebojno 259 00:11:42,730 --> 00:11:44,450 kup in kup? 260 00:11:44,450 --> 00:11:46,640 >> JASON Hirschhorna: Za zdaj ne skrbi. 261 00:11:46,640 --> 00:11:47,750 Samo vem - 262 00:11:47,750 --> 00:11:50,530 Bom odgovoriti na to vprašanje po pouku. 263 00:11:50,530 --> 00:11:52,680 Če naletite na drug drugega, je zmanjkalo pomnilnika, saj ni več 264 00:11:52,680 --> 00:11:53,330 Prostor tam. 265 00:11:53,330 --> 00:11:55,450 >> ŠTUDENT: Žal mi je, kaj je napaka seg? 266 00:11:55,450 --> 00:11:58,710 >> JASON Hirschhorna: Segment Napaka se lahko zahteva - 267 00:11:58,710 --> 00:12:02,240 to je odvisno, zakaj se imenuje SEG krivda je. 268 00:12:02,240 --> 00:12:06,260 Včasih, vaš prekoračitev, bo pravijo seg napake kot napake. 269 00:12:06,260 --> 00:12:08,180 >> ŠTUDENT: Kaj pa Dereferenciranje null spremenljivka? 270 00:12:08,180 --> 00:12:10,040 Je to napaka seg? 271 00:12:10,040 --> 00:12:11,480 >> JASON Hirschhorna: Dereferenciranje null kazalec - 272 00:12:11,480 --> 00:12:17,850 OK, tako da, če imate kazalec, ki ste nastavi na nič, kazalci, odpoklic, 273 00:12:17,850 --> 00:12:20,270 Trgovina naslovi pomnilnika njihove vrednosti. 274 00:12:20,270 --> 00:12:23,660 In null kazalec je v bistvu shranjevanje 0, 0-th 275 00:12:23,660 --> 00:12:26,670 obravnavati v tej spremenljivki. 276 00:12:26,670 --> 00:12:30,010 Torej 0x, 0, 0, 0, 0, et cetera. 277 00:12:30,010 --> 00:12:35,030 Da 0-th naslov v pomnilniku, ki ni v naši sliki, ki je tam gor 278 00:12:35,030 --> 00:12:38,800 nekje, ki je rezerviran za računalnik. 279 00:12:38,800 --> 00:12:40,130 Ne smemo dotakniti. 280 00:12:40,130 --> 00:12:44,680 >> Torej, če vaš program je izvršiteljica, če Nekaj ​​je poskušal iti v spomin 281 00:12:44,680 --> 00:12:48,990 naslov 0, ve, da da je prazna vrednost. 282 00:12:48,990 --> 00:12:50,820 To ve nič ne bi smelo biti. 283 00:12:50,820 --> 00:12:53,420 Torej, če ste poskusili uporabiti nekaj tam in zdravljenje nekaj podobnega tam ali 284 00:12:53,420 --> 00:12:58,355 Poskuša iti na to lokacijo, si bo dobil SEG napako ali napako. 285 00:12:58,355 --> 00:13:00,520 Ne da odgovoriti na vaše vprašanje? 286 00:13:00,520 --> 00:13:03,170 >> In zdaj bomo šli nazaj stack overflow. 287 00:13:03,170 --> 00:13:09,560 Stvari na kupu, kot ste vi videl, in - dajmo potegniti v bližini 288 00:13:09,560 --> 00:13:11,966 s kupom okvirja. 289 00:13:11,966 --> 00:13:15,050 Lahko vsi videli to? 290 00:13:15,050 --> 00:13:16,650 Torej imamo sveženj okvir. 291 00:13:16,650 --> 00:13:23,260 Mi smo varčevanje niz v kot lokalna spremenljivka v tej funkciji. 292 00:13:23,260 --> 00:13:29,510 Tako pravijo naši matrika ima pet mest. 293 00:13:29,510 --> 00:13:33,230 Vseh pet tistih, ki bodo shranjeni V tem okviru dimnika. 294 00:13:33,230 --> 00:13:37,540 >> Če začnemo pisati preko mejá tem polju - 295 00:13:37,540 --> 00:13:43,990 tako da, če začnemo pisati v, recimo, da je 0. 296 00:13:43,990 --> 00:13:46,800 Tisti, ki so pet indeksi naše matrike. 297 00:13:46,800 --> 00:13:50,980 Če začnemo pisati v indeks 5, ki ne bomo imeli, ko bomo imeli 298 00:13:50,980 --> 00:13:55,900 matrika velikosti 5, smo začeli pisati v indeks 6, 7, 8, 9, bomo lahko dobili Stack 299 00:13:55,900 --> 00:13:57,960 Overflow napake. 300 00:13:57,960 --> 00:14:00,510 >> Na splošno to ni - 301 00:14:00,510 --> 00:14:04,910 boste verjetno dobili v težave če greš čez po enega. 302 00:14:04,910 --> 00:14:08,640 Ampak na splošno, boste dobili v Najbolj težave, če greš čez z veliko 303 00:14:08,640 --> 00:14:12,770 in si šel tako daleč kot, da napišete v povratni naslov, ki 304 00:14:12,770 --> 00:14:16,080 funkcijo, ki se nahaja na Spodnji del dimnika okvirja. 305 00:14:16,080 --> 00:14:16,520 >> Ker je, kajne? 306 00:14:16,520 --> 00:14:17,670 Si - v - žal. 307 00:14:17,670 --> 00:14:18,550 Ne ", ker je prav." 308 00:14:18,550 --> 00:14:20,470 >> V dimnika okvirja, imate vaše lokalne spremenljivke. 309 00:14:20,470 --> 00:14:27,090 Na dnu dimnika Okvir je naslov povratka. 310 00:14:27,090 --> 00:14:28,790 To je, če je funkcija gre, ko bo konec. 311 00:14:28,790 --> 00:14:33,750 In če si prepiše tega vrnitev naslov, potem ko je ta kup okvir, 312 00:14:33,750 --> 00:14:36,680 Ko greste skozi dimnik kompozicije in izvršitve vsako vrstico, ste 313 00:14:36,680 --> 00:14:40,350 šli na vašo novo povratni naslov da je tam napisano, namesto 314 00:14:40,350 --> 00:14:40,910 dejansko ena. 315 00:14:40,910 --> 00:14:45,050 In tako smo videli nekatere kršitve varnostnih 316 00:14:45,050 --> 00:14:46,780 se lahko zgodi z računalniki. 317 00:14:46,780 --> 00:14:52,760 >> Torej prekoračitev, skratka, je, ko si prepisati del v plasteh 318 00:14:52,760 --> 00:14:55,440 boš smel uporabljati, lokalna spremenljivka ste smel uporabljati, in 319 00:14:55,440 --> 00:14:58,070 še posebej, ko začnete prepisovanje pomembne stvari, kot so 320 00:14:58,070 --> 00:14:59,100 vrne naslov. 321 00:14:59,100 --> 00:15:00,090 In to je, če boste dobili napako. 322 00:15:00,090 --> 00:15:03,980 Ali morda celo lahko začnete celo pisanje v - 323 00:15:03,980 --> 00:15:05,370 pravijo, binarno iskanje je tik nad glavno. 324 00:15:05,370 --> 00:15:07,790 Če ste prepisali veliko, vam Lahko bi napisali v glavni. 325 00:15:07,790 --> 00:15:10,230 Ampak na splošno, boste dobili napako pred potem, ker računalnik ve 326 00:15:10,230 --> 00:15:12,270 delaš nekaj, kar se ne sme početje. 327 00:15:12,270 --> 00:15:12,560 Ja. 328 00:15:12,560 --> 00:15:13,910 >> ŠTUDENT: Kaj je razlika med prekoračitev 329 00:15:13,910 --> 00:15:16,940 in buffer overflow? 330 00:15:16,940 --> 00:15:19,420 >> JASON Hirschhorna: Buffer overflow je bolj generično vrsta 331 00:15:19,420 --> 00:15:20,395 kaj sem pravkar opisal. 332 00:15:20,395 --> 00:15:22,610 >> Študent: Torej prekoračitev je Primer buffer overflow. 333 00:15:22,610 --> 00:15:23,420 >> JASON Hirschhorna: Točno tako. 334 00:15:23,420 --> 00:15:28,700 To je matrika lahko mislimo kot buffer, prostor za stvari, ki gredo noter 335 00:15:28,700 --> 00:15:30,600 To je kup buffer overflow. 336 00:15:30,600 --> 00:15:33,210 Lahko bi imeli kup buffer overflow. 337 00:15:33,210 --> 00:15:36,870 Če je bil pufer, ki je pogosto je matrika kup, in smo 338 00:15:36,870 --> 00:15:40,600 prepisali tiste meje, potem bi imajo kup buffer overflow. 339 00:15:40,600 --> 00:15:44,870 >> In presega obseg tega predmeta, oni odkrijejo malo drugače. 340 00:15:44,870 --> 00:15:48,040 Prevajalnik ima poseben načini odkrivanja vsakega. 341 00:15:48,040 --> 00:15:50,660 Ampak buffer overflow je bolj generično tip, kar sem opisal, 342 00:15:50,660 --> 00:15:54,090 ki je bil kup buffer overflow. 343 00:15:54,090 --> 00:15:56,240 Ali, da je odgovor na vaše vprašanje? 344 00:15:56,240 --> 00:15:57,910 Sladko. 345 00:15:57,910 --> 00:16:01,850 >> Je bilo kaj druga vprašanja, povezana zlog ali kup? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Ja. 348 00:16:05,510 --> 00:16:08,220 >> Študent: Vem, da imaš do brezplačnih godala ker oni v kup 349 00:16:08,220 --> 00:16:09,305 in ne želite, da pušča spomin. 350 00:16:09,305 --> 00:16:12,240 Toda, ali imate do brezplačne globalne spremenljivke in takšne stvari? 351 00:16:12,240 --> 00:16:14,335 Ali pa se samodejno sprostil? 352 00:16:14,335 --> 00:16:15,700 >> JASON Hirschhorna: Dobro vprašanje. 353 00:16:15,700 --> 00:16:22,340 Torej, v CS50.H, smo ustvarili to stvar za vas, ki se imenuje niz. 354 00:16:22,340 --> 00:16:23,800 Niz je res kaj? 355 00:16:23,800 --> 00:16:24,810 >> Študent: Char zvezda. 356 00:16:24,810 --> 00:16:29,180 >> JASON Hirschhorna: char zvezda, kazalec na znak, kazalec 357 00:16:29,180 --> 00:16:30,650 nabor znakov. 358 00:16:30,650 --> 00:16:32,210 To je tisto, niz. 359 00:16:32,210 --> 00:16:36,050 Zato ga moramo osvoboditi, saj getstring, ki smo jo uporabili veliko - 360 00:16:36,050 --> 00:16:38,370 Ime niza enaka getstring - 361 00:16:38,370 --> 00:16:43,560 da mallocs za nas nekaj pomnilnika na Kopica in nato vrne kazalec 362 00:16:43,560 --> 00:16:47,230 Prvi znak, da niz, char zvezda. 363 00:16:47,230 --> 00:16:52,760 >> Torej navidezno, če niso bili brezplačno pisanje na katerokoli izmed vaših strun 364 00:16:52,760 --> 00:16:55,600 ki ste jih do sedaj imenovani, imate se pušča nekaj pomnilnika. 365 00:16:55,600 --> 00:16:57,430 Seveda nismo govorili to, da nihče ni prišel v 366 00:16:57,430 --> 00:16:58,520 težave, za to početje. 367 00:16:58,520 --> 00:16:59,980 Ampak gredo naprej, ja. 368 00:16:59,980 --> 00:17:03,990 Ko pokličete getstring, si mallocing nekaj prostora na kup. 369 00:17:03,990 --> 00:17:07,640 In če ne boste pozneje pokličete brezplačno, da Niz, ki ste jih pomnilnika. 370 00:17:07,640 --> 00:17:09,440 Da odgovorim na vaše vprašanje? 371 00:17:09,440 --> 00:17:10,606 >> Ja 372 00:17:10,606 --> 00:17:15,020 >> Študent: Torej za to, bomo uporabili brezplačno tik pred zameno? 373 00:17:15,020 --> 00:17:18,510 Tako kot v obsegu, mislim, če rečemo, kot so, int main, v 374 00:17:18,510 --> 00:17:24,410 Obseg kode, ki je v tistih, zaviti oklepaji, tik pred - 375 00:17:24,410 --> 00:17:26,140 veš, kje boš ponavadi dajo donos. 376 00:17:26,140 --> 00:17:27,950 Ali si dal proste pred tem? 377 00:17:27,950 --> 00:17:31,000 >> JASON Hirschhorna: Torej si lahko brezplačno kamorkoli želite dati brezplačno. 378 00:17:31,000 --> 00:17:33,810 Ker so ti dinamično dodeli spremenljivke, saj jih lahko 379 00:17:33,810 --> 00:17:39,170 živijo izven obsega zlasti funkcija, če pokličete v malloc 380 00:17:39,170 --> 00:17:44,140 ločena funkcija, na primer, getstring, lahko pokličete brezplačno v glavnem. 381 00:17:44,140 --> 00:17:46,050 Vam ni treba, da ga pokličete v posebne funkcije 382 00:17:46,050 --> 00:17:47,570 kjer se malloc klical. 383 00:17:47,570 --> 00:17:50,340 Vendar si morate, da ga pokličete pred glavnimi donosov. 384 00:17:50,340 --> 00:17:51,120 >> In res je odvisno. 385 00:17:51,120 --> 00:17:54,960 To je odvisno od tega, zakaj ste malloced da Prostor na prvem mestu. 386 00:17:54,960 --> 00:17:57,320 Nekateri ljudje bodo pokličite sprostiti precej hitro. 387 00:17:57,320 --> 00:17:59,220 Nekateri ljudje ne bodo brezplačno poklicati, dokler konec njihovega programa. 388 00:17:59,220 --> 00:18:00,660 In jih bomo šli skozi in brez vsega. 389 00:18:00,660 --> 00:18:03,597 To je odvisno od tega, zakaj ste poklicali malloc. 390 00:18:03,597 --> 00:18:11,270 >> Študent: In kaj bi rekli, če si klical uporabe getstring? 391 00:18:11,270 --> 00:18:13,320 Ti bi rekel, prost kaj? 392 00:18:13,320 --> 00:18:20,040 >> JASON Hirschhorna: Torej sintaksa brezplačno je preprosto prost, odprta paren, blizu 393 00:18:20,040 --> 00:18:22,130 paren in ime kazalca. 394 00:18:22,130 --> 00:18:26,410 Torej, če ste napisali String ime je enako getstring, si dal ime tukaj. 395 00:18:26,410 --> 00:18:27,760 To je ime kazalca. 396 00:18:27,760 --> 00:18:30,570 In da ve, da se sprostite, da spomin. 397 00:18:30,570 --> 00:18:33,920 >> Študent: Torej, ko se sprosti ta pomnilnik, kazalec še vedno kaže na to mesto 398 00:18:33,920 --> 00:18:34,970 v spominu? 399 00:18:34,970 --> 00:18:39,020 Ali je kazalec tudi izprazni naslov, ki pa opozarja, da. 400 00:18:39,020 --> 00:18:40,290 >> JASON Hirschhorna: Moramo poskusiti to. 401 00:18:40,290 --> 00:18:41,430 Morali bi kodo, da. 402 00:18:41,430 --> 00:18:43,880 Vrnimo se, ko pridemo do kodiranje, in kaj je oznaka, ki. 403 00:18:43,880 --> 00:18:46,000 In če hočeš, da ugotovimo, odgovor na to, da lahko tudi kodo, ki 404 00:18:46,000 --> 00:18:46,690 v tem času. 405 00:18:46,690 --> 00:18:49,100 Ampak to je veliko vprašanje. 406 00:18:49,100 --> 00:18:53,480 >> ŠTUDENT: Ali je mogoče, da brez nekaj prekmalu? 407 00:18:53,480 --> 00:18:58,530 Tako da boste vedno potrebovali za vaš program, in si osvobodil, da pomnilniški prostor? 408 00:18:58,530 --> 00:18:59,200 >> JASON Hirschhorna: Da. 409 00:18:59,200 --> 00:19:03,020 Možno je, če si brez nekaj in potem si ga ponovno uporabiti, ne boste mogli 410 00:19:03,020 --> 00:19:06,890 naletite na napako. 411 00:19:06,890 --> 00:19:10,810 Ampak to je na vas, ker ste osvobojeni nekaj, nato pa jo kasneje poklical. 412 00:19:10,810 --> 00:19:13,940 Tako da je bila napaka programer je. 413 00:19:13,940 --> 00:19:14,780 Ampak ja. 414 00:19:14,780 --> 00:19:17,760 Lahko bi napisali, da je. 415 00:19:17,760 --> 00:19:19,240 >> Še kakšno vprašanje o - 416 00:19:19,240 --> 00:19:19,760 ja. 417 00:19:19,760 --> 00:19:22,820 >> Študent: Torej, če se moraš samo ga osvobodi na splošno, preden 418 00:19:22,820 --> 00:19:25,490 Program se konča, to pomeni, če Program se konča in ga ne osvobodi, 419 00:19:25,490 --> 00:19:27,580 da spomin je še vedno dodelijo? 420 00:19:27,580 --> 00:19:31,330 >> JASON Hirschhorna: Če je vaš program konča in ste pozabili, da sprostite nekaj, potem 421 00:19:31,330 --> 00:19:34,390 da spomin je bil dodeljen po vsej Življenjska doba vašega programa. 422 00:19:34,390 --> 00:19:37,670 Ko je vaš program v celoti zapre, da spomin ne bo 423 00:19:37,670 --> 00:19:39,490 tam ostanejo za vedno. 424 00:19:39,490 --> 00:19:42,080 Računalnik je dovolj pameten, da veš, da, ko je program zapre, 425 00:19:42,080 --> 00:19:46,440 morali znebiti vseh pomnilnika, ki je bila povezana s tem programom. 426 00:19:46,440 --> 00:19:51,240 >> Vendar pa obstajajo orodja, ki jih lahko vodijo o programu za odkrivanje, če pri 427 00:19:51,240 --> 00:19:54,720 Program končana, si pozabil sprostiti nekaj pomnilnika. 428 00:19:54,720 --> 00:19:57,960 In za vaš naslednji problem določiti, kjer boste uporabljali malloc in uporabo 429 00:19:57,960 --> 00:20:02,610 kazalci, ki jih bo tekmovanje v teku to programirate na vaš program, da vidim, če je 430 00:20:02,610 --> 00:20:06,530 ko glavni vrne, ste imeli nekaj stvari, ki so ostale unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Tako da ne boš ostal malloced vedno v vašem računalniku. 432 00:20:09,130 --> 00:20:11,720 To bi bilo potratno, ker zelo hitro, računalniki 433 00:20:11,720 --> 00:20:12,960 bi zmanjkalo pomnilnika. 434 00:20:12,960 --> 00:20:16,450 Če pa traja do konca vašega programiranje in oni niso osvobodili in vaš 435 00:20:16,450 --> 00:20:20,260 Program izstopi, da je še vedno problem da bo to orodje, ki vam pomaga obravnavati. 436 00:20:20,260 --> 00:20:21,520 >> Študent: Je to Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON Hirschhorna: To je imenovano Valgrind. 438 00:20:22,910 --> 00:20:23,520 In boste - 439 00:20:23,520 --> 00:20:25,780 >> UČENEC: Ampak nimamo vedeti da je za kviz, čeprav? 440 00:20:25,780 --> 00:20:27,600 Mislim, da je govoril o malo v predavanju. 441 00:20:27,600 --> 00:20:33,600 >> JASON Hirschhorna: Torej Valgrind je ime tega orodja. 442 00:20:33,600 --> 00:20:37,180 Vemo, kaj počne, je Dovolj za kviz. 443 00:20:37,180 --> 00:20:40,200 Ampak ste se tega še ne uporabljajo na vašem problem določiti, ker nismo imeli 444 00:20:40,200 --> 00:20:43,520 problem niz, ki je izrecno obravnavana z malloc ali uporabljate malloc. 445 00:20:43,520 --> 00:20:45,330 Torej ste še ne uporabljajo Valgrind. 446 00:20:45,330 --> 00:20:47,760 Vendar ga boste uporabili prej prej. 447 00:20:47,760 --> 00:20:48,710 >> ŠTUDENT: Ali lahko ponovite kaj Valgrind je? 448 00:20:48,710 --> 00:20:49,190 >> JASON Hirschhorna: Oprostite? 449 00:20:49,190 --> 00:20:51,240 >> ŠTUDENT: Ali lahko ponovite, kaj Namen Valgring je? 450 00:20:51,240 --> 00:20:53,100 >> JASON Hirschhorna: Valgrind je ime - 451 00:20:53,100 --> 00:20:59,890 kot GDB vam pomaga debug vaš program, Valgrind vam pomaga ugotoviti, če 452 00:20:59,890 --> 00:21:03,210 Stvari niso bili osvobojeni če vaš program zapre. 453 00:21:03,210 --> 00:21:05,110 Tako boste jih predvajajo na programu. 454 00:21:05,110 --> 00:21:09,230 In tvoj program tiskalnika, in to bom rekel vaš program, imenovan malloc to veliko 455 00:21:09,230 --> 00:21:13,670 čas za to veliko bajtov, in si Samo imenujemo svobodni to večkrat. 456 00:21:13,670 --> 00:21:16,520 In tako ste pustili te veliko bajte ne da bi se sprostila. 457 00:21:16,520 --> 00:21:18,050 Ali bomo rekli, da ste osvobodili vse. 458 00:21:18,050 --> 00:21:19,070 Dobro delo. 459 00:21:19,070 --> 00:21:19,480 >> ŠTUDENT: OK. 460 00:21:19,480 --> 00:21:21,060 In se imenuje Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON Hirschhorna: V-A-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> Študent: vprašanje o kazalca. 463 00:21:25,970 --> 00:21:30,080 Tako pravijo, da ste n zvezda x je enako nekaj. 464 00:21:30,080 --> 00:21:33,330 To je enako, ne glede na ste dajanje tam, je to tisto, kar se da v notranjosti 465 00:21:33,330 --> 00:21:36,120 kaj x kaľe, ali kazalec x? 466 00:21:36,120 --> 00:21:37,690 >> JASON Hirschhorna: Ali lahko Ponavljam vprašanje? 467 00:21:37,690 --> 00:21:39,340 Lahko ga pripravi, medtem ko je rekel? 468 00:21:39,340 --> 00:21:42,710 >> ŠTUDENT: V kvizu, pravzaprav, tisti, ki ste nam jih poslali, je bilo všeč, znak 469 00:21:42,710 --> 00:21:46,520 zvezda resnica enaka CS50 kamenje, kajne? 470 00:21:46,520 --> 00:21:52,190 Torej, ali to pomeni, da ta CS50 kamnine je kaj resnice kaže, da? 471 00:21:52,190 --> 00:21:55,810 >> JASON Hirschhorna: Torej govoriš o znakovnem zvezdo v nizu, kako 472 00:21:55,810 --> 00:21:56,460 to deluje? 473 00:21:56,460 --> 00:21:56,890 Ja. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 Narišimo to tukaj. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE POGOVOR] 477 00:22:07,100 --> 00:22:11,130 >> JASON Hirschhorna: Torej, ta spremenljivka se bo tipa char zvezdico. 478 00:22:11,130 --> 00:22:14,580 Kako velika je spremenljivka tipa CHAR zvezdo? 479 00:22:14,580 --> 00:22:15,510 Koliko zlogov? 480 00:22:15,510 --> 00:22:16,450 >> Študenti: Štiri. 481 00:22:16,450 --> 00:22:18,210 >> JASON Hirschhorna: To je štiri bajte. 482 00:22:18,210 --> 00:22:21,420 Koliko pravic je spremenljivka od tipa int zvezdo? 483 00:22:21,420 --> 00:22:22,210 >> Študenti: Štiri. 484 00:22:22,210 --> 00:22:24,910 >> JASON Hirschhorna: štiri bajte. 485 00:22:24,910 --> 00:22:28,280 Če je kazalec, potem je vedno štiri bajte, ker kazalci, njihove 486 00:22:28,280 --> 00:22:30,070 vrednost je pomnilniški naslov. 487 00:22:30,070 --> 00:22:35,160 In pomnilniške naslove na CS50 Naprava štiri bajte. 488 00:22:35,160 --> 00:22:42,900 Torej, ko pravimo getstring, ali ko smo recimo, stringname enaka, nato pa v 489 00:22:42,900 --> 00:22:46,140 narekovajih dal niz, vlagamo - 490 00:22:46,140 --> 00:22:46,920 dobro, da je malo drugačen. 491 00:22:46,920 --> 00:22:48,630 Naredili bomo getstring kot npr. 492 00:22:48,630 --> 00:22:52,150 Ali char zvezda nekaj enak niz. 493 00:22:52,150 --> 00:22:54,360 Žal mi je, daj mi primer da ste prebrali? 494 00:22:54,360 --> 00:22:57,590 >> Študent: char zvezda resnica enaka "CS50 skale" v narekovajih. 495 00:22:57,590 --> 00:23:02,260 >> JASON Hirschhorna: Torej, ta zvezda, to bomo to imenujemo spremenljivko x za naše 496 00:23:02,260 --> 00:23:04,060 splošne namene. 497 00:23:04,060 --> 00:23:05,970 Ustvarili smo spremenljivko x. 498 00:23:05,970 --> 00:23:07,610 To je tip char zvezda. 499 00:23:07,610 --> 00:23:10,950 To je kazalec na nizu znakov. 500 00:23:10,950 --> 00:23:12,200 Torej, tukaj - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Torej je to, kako bi to delujejo v spominu. 503 00:23:25,890 --> 00:23:27,410 To bi shranili pomnilniški naslov. 504 00:23:27,410 --> 00:23:31,770 To bi shranjevanje pomnilniške naslov Prvi znak v matriki. 505 00:23:31,770 --> 00:23:33,830 In potem, ko ste sledili kazalec, bi si 506 00:23:33,830 --> 00:23:35,200 dobili prvi znak. 507 00:23:35,200 --> 00:23:38,780 >> In če berete to stvar kot niz, računalnik je pametna 508 00:23:38,780 --> 00:23:42,930 dovolj, da bi vedeli, preberite celotno stvar dokler ne pride do protiudarec 0. 509 00:23:42,930 --> 00:23:45,530 Ampak, če ste jo prebrali znak na čas, tako da ste ponavljanjem preko 510 00:23:45,530 --> 00:23:49,910 ta niz, potem boste pravkar prebral znak v času, dokler ne pridete do 511 00:23:49,910 --> 00:23:50,850 backslash 0. 512 00:23:50,850 --> 00:23:52,335 To morda ne bo odgovoriti na vaše vprašanje, čeprav. 513 00:23:52,335 --> 00:23:55,610 >> Študent: Ja, ampak še niste malloced, da je prostor 514 00:23:55,610 --> 00:23:58,400 Še ta kazalec. 515 00:23:58,400 --> 00:24:02,510 >> JASON Hirschhorna: Torej, nisem čisto prepričan, kaj gledaš, 516 00:24:02,510 --> 00:24:03,640 zato, ker mi ni uspelo, da je kviz. 517 00:24:03,640 --> 00:24:06,370 , Ki naj bi bila v pomoč Sredstva iz drugega TF. 518 00:24:06,370 --> 00:24:11,380 Če ustvarjate niz na kup ali kot lokalno spremenljivko, bo 519 00:24:11,380 --> 00:24:16,920 samo se niz dajatev namesto splošno char zvezda kaže na 520 00:24:16,920 --> 00:24:18,600 še en niz. 521 00:24:18,600 --> 00:24:20,550 Ampak jaz ne vem. 522 00:24:20,550 --> 00:24:25,065 To bi lahko kazalec na drugo niz na sklad, kot tudi. 523 00:24:25,065 --> 00:24:27,240 Ja. 524 00:24:27,240 --> 00:24:31,116 >> Študent: Vem, da morate dodeliti pomnilnika, če kazalec 525 00:24:31,116 --> 00:24:33,360 pridobivanje razglasila notranjosti druge funkcije. 526 00:24:33,360 --> 00:24:36,740 Ali morate narediti isto stvar, če je razglasi za notranjost glavni, 527 00:24:36,740 --> 00:24:39,570 ste ga uporabljate znotraj main? 528 00:24:39,570 --> 00:24:43,590 >> JASON Hirschhorna: Torej, ja. 529 00:24:43,590 --> 00:24:46,670 Lahko razglasi kazalec na katerokoli pomnilniški naslov v pomnilniku. 530 00:24:46,670 --> 00:24:51,440 To je lahko pomnilniški naslov v lokalni spremenljivka, čeprav velikokrat, 531 00:24:51,440 --> 00:24:55,760 ljudje ne prijavijo pomnilniških naslovov lokalnih spremenljivk, ker gredo 532 00:24:55,760 --> 00:24:59,890 stran enkrat, da funkcija vrne, kar Zato smo na splošno malloc stvari. 533 00:24:59,890 --> 00:25:04,630 Ampak ja, lahko razglasi kazalec drugi lokalni spremenljivko. 534 00:25:04,630 --> 00:25:06,360 To je samo na splošno ni bilo storjeno. 535 00:25:06,360 --> 00:25:09,480 Ampak jaz lahko pogledam specifično stvar, po pouku. 536 00:25:09,480 --> 00:25:10,650 Ja. 537 00:25:10,650 --> 00:25:12,350 >> UČENEC: Mislim, da je to nekako kaj se je vprašal. 538 00:25:12,350 --> 00:25:16,930 To se zdi čudno, da se inicializacija kazalec ne kot 539 00:25:16,930 --> 00:25:20,760 naslov, ampak kot tisto, Zdi se, kot vrednoto. 540 00:25:20,760 --> 00:25:25,970 Zdi se, kot CS50 je tisto, kar je notri stvar, ki je poudaril, da in 541 00:25:25,970 --> 00:25:28,820 ne dejanski naslov, kajne? 542 00:25:28,820 --> 00:25:30,520 >> JASON Hirschhorna: Tako da je V nasprotnem primeru, čeprav. 543 00:25:30,520 --> 00:25:32,470 To ni tisto, kar se dogaja. 544 00:25:32,470 --> 00:25:35,910 Ko ste razglasi char zvezdo, to je pomnilniški naslov. 545 00:25:35,910 --> 00:25:38,860 Kazalci so vsi naslovi pomnilnika kaže na nekaj drugega. 546 00:25:38,860 --> 00:25:41,480 Da je nekaj drugega bi lahko na stack, skoraj vedno pa je na 547 00:25:41,480 --> 00:25:43,440 Kopica na način, bomo videli to uporablja. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 Ampak stringname enaka dvojni narekovaj "Getstring", lahko vidimo, da mi 550 00:25:53,500 --> 00:25:55,010 Lahko pogledam skozi to in kodo, da. 551 00:25:55,010 --> 00:26:01,190 getstring niz se ne shrani v da je spremenljivka, ali karkoli niz 552 00:26:01,190 --> 00:26:04,580 Ime se ne shranjuje, da spremenljivka, ker to ni, kako 553 00:26:04,580 --> 00:26:06,070 kazalci delo. 554 00:26:06,070 --> 00:26:06,770 Ali to smiselno? 555 00:26:06,770 --> 00:26:07,170 >> Študent: Ja. 556 00:26:07,170 --> 00:26:08,570 >> JASON Hirschhorna: OK. 557 00:26:08,570 --> 00:26:11,690 Upajmo, da ni bilo zavajajoče za vsakogar. 558 00:26:11,690 --> 00:26:15,732 Ampak, če je bilo, smo lahko ogledate še enkrat v nekaj, ker smo dejansko dogaja 559 00:26:15,732 --> 00:26:19,240 kodo nekaj, kar bo, upajmo delo z nizi in vam pomaga počutijo 560 00:26:19,240 --> 00:26:22,170 bolj zadovoljni z njimi. 561 00:26:22,170 --> 00:26:24,869 >> Katera koli druga vprašanja, povezana s temi teme ali druge teme, ki 562 00:26:24,869 --> 00:26:26,119 Jaz bom dal nazaj gor? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 In - 565 00:26:34,840 --> 00:26:36,310 prav zdaj. 566 00:26:36,310 --> 00:26:37,630 Da, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: Torej je to povsem nepovezani, lahko pa gremo kar 568 00:26:39,860 --> 00:26:42,760 Res hitro, kar moramo vedeti o razliki med 32 in 569 00:26:42,760 --> 00:26:46,345 64-bitni stroj? 570 00:26:46,345 --> 00:26:47,740 >> JASON Hirschhorna: Da. 571 00:26:47,740 --> 00:26:52,111 Torej, 32 bitov, je, koliko bajtov? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: To je štiri bajte. 573 00:26:53,060 --> 00:26:54,360 >> JASON Hirschhorna: To je štiri bajte. 574 00:26:54,360 --> 00:26:58,420 In 64 bitov, je, koliko bajtov? 575 00:26:58,420 --> 00:26:59,112 >> Študent: Eight. 576 00:26:59,112 --> 00:27:00,610 >> JASON Hirschhorna: Osem bajtov. 577 00:27:00,610 --> 00:27:03,980 Torej še enkrat, osem bitov je en bajt. 578 00:27:03,980 --> 00:27:08,340 Vaš CS50 Aparat je 32-bitni stroj. 579 00:27:08,340 --> 00:27:13,650 Torej pomnilniške naslove dolga štiri bajte. 580 00:27:13,650 --> 00:27:17,460 Obstajajo 2 do 32 pomnilniške naslove. 581 00:27:17,460 --> 00:27:21,310 0 do 2 do 32 minus 1. 582 00:27:21,310 --> 00:27:27,630 In nisem pozitiven, ampak to je Verjetno obseg kaj morate 583 00:27:27,630 --> 00:27:35,230 vedo za 32-bitno stroj, da spomin naslovi so, spet, štiri bajte, 584 00:27:35,230 --> 00:27:39,620 in to je najvišji znesek pomnilniških naslovov. 585 00:27:39,620 --> 00:27:41,680 >> Tudi tipi podatkov - 586 00:27:41,680 --> 00:27:45,020 to je lahko nekaj tako dobro, da je vredno omeniti. 587 00:27:45,020 --> 00:27:49,610 Velikost podatkovni tip odvisen Stroj, s katerim delate. 588 00:27:49,610 --> 00:27:56,760 Torej char, sam znak, je, kako veliko bajtov na naši CS50 aparata? 589 00:27:56,760 --> 00:27:57,980 En bajt. 590 00:27:57,980 --> 00:28:02,310 In to je pravzaprav en bajt kot tudi na 64-bitnih računalnikih. 591 00:28:02,310 --> 00:28:05,920 >> In večina podatkovnih tipov so enako število bajtov na obeh strojih. 592 00:28:05,920 --> 00:28:11,620 Vendar bodo nekatere vrste podatkov je drugačen na obeh strojih. 593 00:28:11,620 --> 00:28:14,590 Tako da bi bilo potencialno Edina stvar, kar morate vedeti. 594 00:28:14,590 --> 00:28:16,710 >> Toda tudi to, mislim, presegajo meje - 595 00:28:16,710 --> 00:28:20,990 Jaz sem skoraj pozitivno, če pogledaš nazaj V starih kvizi, pa pravi, da za 596 00:28:20,990 --> 00:28:24,090 kodiranje težave, ki jo uporabljate 32-bitni stroj. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 Vendar pa obstajajo, da gredo skupaj s tistim iz Če vas zanima, obstaja 599 00:28:30,620 --> 00:28:35,920 vrste podatkov, ki so enaki velikost na vseh strojih. 600 00:28:35,920 --> 00:28:42,670 >> Če ste videli nekaj podobnega uint32_t, lahko ali ga lahko 601 00:28:42,670 --> 00:28:43,260 ne bi videl. 602 00:28:43,260 --> 00:28:44,290 To je vrsta podatkov. 603 00:28:44,290 --> 00:28:47,570 To je rekel, je 32 bitov ne glede na kaj je to stroj naprej. 604 00:28:47,570 --> 00:28:50,350 Torej, ko ljudje pišejo prenosni Koda, ki jih verjetno ne bo uporabil Ints. 605 00:28:50,350 --> 00:28:53,260 Ti bom raje uporabljajo te druge podatke tipi, ki vedo bo enako 606 00:28:53,260 --> 00:28:54,780 velikost za vsak posamezen stroj. 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: Imel sem vprašanje o Proces urejanje. 610 00:29:00,150 --> 00:29:04,110 Torej, če pišete program, ki uporablja Knjižnica kot CS50 ali kaj podobnega 611 00:29:04,110 --> 00:29:06,840 tako, vem, da se knjižnica mora na neki točki, je 612 00:29:06,840 --> 00:29:08,590 zbrani in povezani prijavite 613 00:29:08,590 --> 00:29:13,380 Ampak koliko se to zgodi med kompilacija vašega programa? 614 00:29:13,380 --> 00:29:15,880 Kateri del tega procesa knjižnice se pojavi, ko ste 615 00:29:15,880 --> 00:29:18,560 sestavljanje svoj program? 616 00:29:18,560 --> 00:29:24,020 >> JASON Hirschhorna: Torej gremo preko splošno koraki tega procesa. 617 00:29:24,020 --> 00:29:26,280 Napišete. C datoteko. 618 00:29:26,280 --> 00:29:33,530 V vašem c. Datoteko, # include vaš Glava knjižnice, na primer, cs50.h. 619 00:29:33,530 --> 00:29:39,480 Kaj počne oster vključuje linija storiti, da vaš program? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Dodaja tudi prototipe funkcije iz glave 622 00:29:43,350 --> 00:29:45,120 datoteke v knjižnicah. 623 00:29:45,120 --> 00:29:45,600 >> JASON Hirschhorna: Točno tako. 624 00:29:45,600 --> 00:29:49,870 Dodaja, tiste funkcijske prototipe s svojo kodo. 625 00:29:49,870 --> 00:29:55,230 Torej, ko je koda, ki se zbirajo v zgodnjih fazah, prevajalnik ve 626 00:29:55,230 --> 00:29:59,250 da te funkcije res obstaja, in da nekje so bili opredeljeni. 627 00:29:59,250 --> 00:30:02,460 . H datoteke ne vsebujejo opredelitve teh funkcij ali kako 628 00:30:02,460 --> 00:30:03,950 dejansko delajo. 629 00:30:03,950 --> 00:30:07,960 Cs50.h samo vključuje nekaj takega, ki pravi, getstring je prava stvar, ki 630 00:30:07,960 --> 00:30:09,270 se lahko zgodi. 631 00:30:09,270 --> 00:30:14,240 In standardio.h pravi printf je prava stvar, ki se lahko zgodi. 632 00:30:14,240 --> 00:30:23,190 >> Torej vaša c jezik s tem. Header Datoteka gets spremenil v nekaj 633 00:30:23,190 --> 00:30:27,750 strojno berljive kode, ki sčasoma gets spremenil v binarno 634 00:30:27,750 --> 00:30:30,030 koda, 0 in 1 je. 635 00:30:30,030 --> 00:30:33,590 In to je številka, ki na koncu gets usmrtili. 636 00:30:33,590 --> 00:30:38,550 -L CS50 linije - npr Ko pišete Jek - 637 00:30:38,550 --> 00:30:41,830 in potem boste vključili-l CS50, vnesete da noter 638 00:30:41,830 --> 00:30:42,180 In boste videli, da. 639 00:30:42,180 --> 00:30:43,890 Ko pišete, da boste glej, da line up here. 640 00:30:43,890 --> 00:30:47,740 In bomo videli, da je v sekundi, ko smo kodo ali kasneje, ko smo kodo. 641 00:30:47,740 --> 00:30:50,390 >> Ampak to-l CS50 linija naredi nekaj nekoliko drugačna kot 642 00:30:50,390 --> 00:30:52,440 na # include cs50.h. 643 00:30:52,440 --> 00:30:56,300 Kaj to-l CS50 linija storiti? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Hočem reči, da gre za povezavo Knjižnica za funkcijo 646 00:31:00,310 --> 00:31:02,710 poklical, tako kot Õ. datotek. 647 00:31:02,710 --> 00:31:08,200 >> JASON Hirschhorna: Tako zelo blizu, če ne opazite-on. 648 00:31:08,200 --> 00:31:16,220 -L CS50 meni binarno datoteko in jo združi z binarno datoteko. 649 00:31:16,220 --> 00:31:21,410 Torej cs50.h, nima smisla obračanja cs50.h iz jezika C za binarno vsak 650 00:31:21,410 --> 00:31:23,130 single čas, ki je uporabljena. 651 00:31:23,130 --> 00:31:26,650 To bi bilo neumno, saj to bi zapravljajo veliko časa. 652 00:31:26,650 --> 00:31:30,420 Tako je bilo že zbirajo in se spremenila v izvršljiv. 653 00:31:30,420 --> 00:31:35,430 Zdaj pa se bo združila z vašo datoteko na koncu. 654 00:31:35,430 --> 00:31:38,370 Torej ti 1 in 0 je tekoč da se združijo z vašimi tisti 655 00:31:38,370 --> 00:31:39,150 in 0 je konec. 656 00:31:39,150 --> 00:31:43,670 Torej, zdaj boste dejansko imajo dejansko 1 in 0 je, da določite, kako getstring, 657 00:31:43,670 --> 00:31:47,890 na primer, deluje, ali kako printf, na primer, deluje. 658 00:31:47,890 --> 00:31:52,750 >> In za več informacij, tam je kratke prevajalniki, da Nate daje, da 659 00:31:52,750 --> 00:31:55,410 morate preveriti, da gre skozi te korake. 660 00:31:55,410 --> 00:31:56,050 Ampak - 661 00:31:56,050 --> 00:31:56,560 ja. 662 00:31:56,560 --> 00:32:01,700 >> ŠTUDENT: Ali so vedno vo slik. ko si v obliki knjižnice, 663 00:32:01,700 --> 00:32:06,764 pripravljeni, da bi združili, povezana - kot oni so v binarno kodo? 664 00:32:06,764 --> 00:32:07,600 >> JASON Hirschhorna: OK. 665 00:32:07,600 --> 00:32:08,420 Kaj - 666 00:32:08,420 --> 00:32:11,780 >> ŠTUDENT: Ali je to vedno velja za knjižnice, ko jih povezati? 667 00:32:11,780 --> 00:32:12,500 >> JASON Hirschhorna: Da. 668 00:32:12,500 --> 00:32:17,300 Torej je. Govorite datoteke, ki bodo Stroj kodo, ki bo tudi 669 00:32:17,300 --> 00:32:17,975 Grobni za vas. 670 00:32:17,975 --> 00:32:19,410 Vam ni treba skrbeti glede tega. 671 00:32:19,410 --> 00:32:24,930 Ampak na splošno, ja, jih bomo biti. o files pripravljena iti. 672 00:32:24,930 --> 00:32:27,170 >> Študent: Torej, ko ladja knjižnica, ti samo ladja 673 00:32:27,170 --> 00:32:28,880 . h in. o? 674 00:32:28,880 --> 00:32:32,210 Vi ne ladja. C ali. S. 675 00:32:32,210 --> 00:32:33,070 >> JASON Hirschhorna: Torej - 676 00:32:33,070 --> 00:32:36,260 in to je v tem kratkem, kot tudi, če Zdi se te informacije, ki prihajajo 677 00:32:36,260 --> 00:32:36,700 malo hitro. 678 00:32:36,700 --> 00:32:39,870 Ampak kratko o prevajalniki govori o tem, kot tudi. 679 00:32:39,870 --> 00:32:43,290 Kdaj si knjižnico, če ladja . h, datoteka glave, tisti, 680 00:32:43,290 --> 00:32:46,290 Funkcija prototipov in 1'S in 0-jev, to je vse, kar morate dati. 681 00:32:46,290 --> 00:32:50,640 Vam ni treba dati, kako Funkcija deluje,. c datoteka. 682 00:32:50,640 --> 00:32:56,360 Ker mesto odvzema ali točka API, točka na tej SPL, 683 00:32:56,360 --> 00:32:59,650 prenosni knjižnica Stanford, je za vas ne skrbi, kako novo 684 00:32:59,650 --> 00:33:04,220 GRect deluje, ali kako premakniti del, ali kako dodati del. 685 00:33:04,220 --> 00:33:06,520 Vse, kar morate vedeti, je, da dodatek je funkcija, ki jo lahko 686 00:33:06,520 --> 00:33:08,880 uporabiti, in to počne. 687 00:33:08,880 --> 00:33:12,760 Tako da vam res ni treba vedeti, kako to je napisana v C. morate samo 688 00:33:12,760 --> 00:33:15,460 Veste, tukaj so funkcije, kar so narediti, in tukaj so je 1 in 0 689 00:33:15,460 --> 00:33:18,870 če res želite, da jih uporabljajo. 690 00:33:18,870 --> 00:33:19,530 >> Cool. 691 00:33:19,530 --> 00:33:26,980 Še kakšno vprašanje o prevajalniki ali druge teme na forumu? 692 00:33:26,980 --> 00:33:30,300 >> Študent: Imam vprašanje izvajanje rekurzivne funkcije. 693 00:33:30,300 --> 00:33:31,170 Vprašanje o rekurzije. 694 00:33:31,170 --> 00:33:33,030 Imel sem občutek, da bi prišel gor. 695 00:33:33,030 --> 00:33:38,310 Torej, kaj je hitro šel skozi rekurzija s specifično 696 00:33:38,310 --> 00:33:40,690 Na primer, faktorski funkcija. 697 00:33:40,690 --> 00:33:44,920 Ker je to primer, ki pogosto pride ali se uporablja 698 00:33:44,920 --> 00:33:46,170 za ponazoritev rekurzijo. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Torej "4!" se glasi 4. fakulteto. 701 00:33:56,410 --> 00:33:59,120 In kaj 4. fakulteto pomeni? 702 00:33:59,120 --> 00:34:00,696 Kaj naj bi to naredil? 703 00:34:00,696 --> 00:34:02,235 Kako ste izračunali 4 fakulteto? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 krat 3 krat 2-krat 1. 706 00:34:07,960 --> 00:34:11,889 >> Torej še en način, da napišete 4 fakulteto je to pisanje. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4-krat 3 fakulteto. 709 00:34:19,022 --> 00:34:22,080 Ker 3 faktorski je 3 krat 2-krat 1. 710 00:34:22,080 --> 00:34:27,580 Torej 4-krat 3 faktorski 4 krat 3 krat 2-krat 1. 711 00:34:27,580 --> 00:34:32,679 To je razlog, zakaj je faktorjev velika Kandidat za rekurzije, saj je 712 00:34:32,679 --> 00:34:36,630 jasno, da je nekaj, kar zgodi, znova in znova in znova na 713 00:34:36,630 --> 00:34:39,820 Manjše število stvari, dokler pridete do konca. 714 00:34:39,820 --> 00:34:42,570 Ko pridete 1, 1 faktorski 1. 715 00:34:42,570 --> 00:34:43,719 Ne moreš iti še dlje. 716 00:34:43,719 --> 00:34:47,219 0 faktorski je prav tako opredeljena kot 1. 717 00:34:47,219 --> 00:34:50,679 Torej, ko prideš na 1 ali 0, da si na koncu, in lahko 718 00:34:50,679 --> 00:34:53,219 začetek grem nazaj gor. 719 00:34:53,219 --> 00:34:59,540 Torej, če smo želeli napisati rekurzivno Funkcija za izračun fakultete, 720 00:34:59,540 --> 00:35:02,170 bomo napisali nekaj psevdokoda za to zdaj. 721 00:35:02,170 --> 00:35:03,300 Preden smo napisali, da psevdokoda - 722 00:35:03,300 --> 00:35:05,660 Bom dal vidva nekaj minut pisati kodo psevdo ali pa samo mislim, 723 00:35:05,660 --> 00:35:09,600 o tem - obstajata dve stvari na vsakih rekurzivna funkcija potrebuje. 724 00:35:09,600 --> 00:35:12,530 Kaj sta ti dve stvari? 725 00:35:12,530 --> 00:35:13,220 >> JACK: To je sama poklicala. 726 00:35:13,220 --> 00:35:13,680 >> JASON Hirschhorna: Noah? 727 00:35:13,680 --> 00:35:14,460 Oh, Jack. 728 00:35:14,460 --> 00:35:15,100 Pojdi naprej. 729 00:35:15,100 --> 00:35:16,640 >> JACK: To je sama poklicala. 730 00:35:16,640 --> 00:35:19,220 >> JASON Hirschhorna: Torej rekurzivna Funkcija potrebuje rekurzivni klic, 731 00:35:19,220 --> 00:35:20,220 poziv k sebi. 732 00:35:20,220 --> 00:35:20,770 To je ena. 733 00:35:20,770 --> 00:35:21,510 In kaj je druga stvar? 734 00:35:21,510 --> 00:35:22,250 >> JACK: osnovna. 735 00:35:22,250 --> 00:35:23,780 >> JASON Hirschhorna: osnovna. 736 00:35:23,780 --> 00:35:26,940 Osnova je primer, tukaj je, ko smo se ustavili. 737 00:35:26,940 --> 00:35:29,510 Tako postane vaš funkcijo imenovan. 738 00:35:29,510 --> 00:35:31,410 Osnovna na prvem mestu. 739 00:35:31,410 --> 00:35:33,710 Hočeš vedeti, če ste na koncu. 740 00:35:33,710 --> 00:35:37,110 In če niste na koncu, vaše rekurzivni klic. 741 00:35:37,110 --> 00:35:39,880 In greš skozi to funkcijo ponovno še enkrat preverite svoj osnovnem scenariju. 742 00:35:39,880 --> 00:35:42,575 Če niste končni, naredite en rekurzivni klic, 743 00:35:42,575 --> 00:35:44,130 et cetera, et cetera. 744 00:35:44,130 --> 00:35:47,110 >> Zato rekurzivne funkcije vedno Potrebujemo te osnovne primere in tiste, 745 00:35:47,110 --> 00:35:48,210 rekurzivni klici. 746 00:35:48,210 --> 00:35:51,280 Če nimate rekurzivni klic, da ne bi rekurzivno funkcijo. 747 00:35:51,280 --> 00:35:53,210 Če niste imeli osnovno zadevo, ti bi šel na veke 748 00:35:53,210 --> 00:35:54,780 ne bi bilo konec. 749 00:35:54,780 --> 00:35:57,870 In osnovna vedno na prvem mestu, saj boste vedno želeli preveriti 750 00:35:57,870 --> 00:36:00,420 če ste na koncu prvi. 751 00:36:00,420 --> 00:36:04,770 Torej, preden bomo narediti nekaj psevdokoda, zakaj ne boste vzeli trenutek za razmislek o 752 00:36:04,770 --> 00:36:09,360 kako rekurzivna funkcija faktorjev bi napisal? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Prav tako, kar počnete, pisanje ven na list papirja je 755 00:36:26,010 --> 00:36:27,960 kaj boste morali storite na kviz jutri. 756 00:36:27,960 --> 00:36:32,160 Torej je verjetno dobra praksa, da bi Prepričajte koda pišete 757 00:36:32,160 --> 00:36:34,420 navzdol na list papirja - 758 00:36:34,420 --> 00:36:35,160 ali lahko to storite. 759 00:36:35,160 --> 00:36:36,710 Saj veš, kje so podpičja. 760 00:36:36,710 --> 00:36:37,660 Se spomnite sintakso. 761 00:36:37,660 --> 00:36:40,400 Ker si ne bi mogli imeti prevajalnik povedal, da si naredil napako. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Tudi v tej smeri, jutri, ko ti so kodiranje težave, če 764 00:37:07,240 --> 00:37:11,490 se rushed za čas, ali če ste zelo zmedeni glede tega, kako si naj 765 00:37:11,490 --> 00:37:16,030 napisati posebno stvar v C, je bi vas behoove, da napišete psevdo-kodo 766 00:37:16,030 --> 00:37:18,160 ali pisati komentarje v kot dobro. 767 00:37:18,160 --> 00:37:21,940 Zato, ker je delno kredit za Veliko vprašanj o kvizu. 768 00:37:21,940 --> 00:37:24,840 Torej si lahko planila, ali ste lahko samo zmeden. 769 00:37:24,840 --> 00:37:28,030 Pisanje v komentarjih ali psevdo-kodo so pogosto načini, ki jih 770 00:37:28,030 --> 00:37:29,360 lahko dobite delni kredit. 771 00:37:29,360 --> 00:37:31,440 >> Torej, ne pustite nekaj blank na kvizu. 772 00:37:31,440 --> 00:37:33,490 Tam ni kazni za dajanje stvari noter 773 00:37:33,490 --> 00:37:37,650 V bistvu, dajanje v psevdo-kodo ali Pripombe bo pomagal grader 774 00:37:37,650 --> 00:37:40,410 ugotovimo, če ste dejansko vedeli, kaj govoriš, in morda nagrado 775 00:37:40,410 --> 00:37:42,030 ste nekateri delni kredit za to. 776 00:37:42,030 --> 00:37:44,510 >> Tudi v tej smeri, napišite jasno. 777 00:37:44,510 --> 00:37:47,650 Če ne moremo zares tisto, kar pišete, ne bomo, da vas pokliče 778 00:37:47,650 --> 00:37:49,900 opolnoči jutri na sliki izvedeti, kaj si napisal. 779 00:37:49,900 --> 00:37:51,520 Mi smo le, da bo vzlet točk. 780 00:37:51,520 --> 00:37:56,570 Napišite jasno, da bomo lahko slišali, ali bolje, smo lahko prebrali, kaj si napisal. 781 00:37:56,570 --> 00:38:00,230 >> In če je pravi dva stavka, Ne napisati odstavek. 782 00:38:00,230 --> 00:38:02,280 Sledite navodilom. 783 00:38:02,280 --> 00:38:03,500 Jasno zapisali. 784 00:38:03,500 --> 00:38:07,720 In pisati v teh pripombah ali psevdokoda za vprašanja, ki bi lahko 785 00:38:07,720 --> 00:38:10,270 Nagrada delni kredit. 786 00:38:10,270 --> 00:38:12,520 >> OK, gremo na fakulteto. 787 00:38:12,520 --> 00:38:15,000 Torej imamo funkcijo fakulteto. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Če bi dejansko napisati to v C, kaj moram postaviti pred imenom 790 00:38:21,550 --> 00:38:22,800 funkcije? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 Tip donos, ki je v ta primera, ga bomo dal int. 793 00:38:30,060 --> 00:38:35,450 In nato znotraj zavitih oklepajih, je kaj se dogaja znotraj zavitih oklepajih za 794 00:38:35,450 --> 00:38:36,850 funkcija? 795 00:38:36,850 --> 00:38:37,950 >> ŠTUDENTI: tip Argument. 796 00:38:37,950 --> 00:38:39,150 >> JASON Hirschhorna: Njegove trditve. 797 00:38:39,150 --> 00:38:42,680 Torej faktorski bo verjetno sprejeti argument. 798 00:38:42,680 --> 00:38:44,500 To bo verjetno trajalo le en argument. 799 00:38:44,500 --> 00:38:49,450 In bomo rekli, da bo trajalo število imenovano x. 800 00:38:49,450 --> 00:38:52,770 In spet, pri pisanju prototip funkcija ali pisanje funkcijo 801 00:38:52,770 --> 00:38:57,110 v kodi, preden jo opredeljuje, vas napišite podatkovni tip in ime 802 00:38:57,110 --> 00:39:01,370 da spremenljivka samo za to funkcijo. 803 00:39:01,370 --> 00:39:06,350 Torej, lahko prenese nekaj več v to funkcijo, se bo treba v nadaljnjem besedilu x 804 00:39:06,350 --> 00:39:07,340 interno. 805 00:39:07,340 --> 00:39:08,755 >> Imamo faktorsko funkcijo. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Potrebujemo dve stvari, osnovno zadevo in rekurzivni klic. 808 00:39:15,850 --> 00:39:20,900 Kakšna je osnovna za fakulteto? 809 00:39:20,900 --> 00:39:24,850 Nekdo, ki ga je napisal, in ki je ni še govorijo, kar je osnova 810 00:39:24,850 --> 00:39:26,100 velja za fakulteto? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> Študent: Če je n manj kot 2, vrnite 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON Hirschhorna: Če je n Manj kot 2, vrnite 1. 814 00:39:33,520 --> 00:39:37,216 To mi je všeč, ker je skrbi za 0 in 1. 815 00:39:37,216 --> 00:39:45,290 Torej bomo naredili x <2, vrnite 1. 816 00:39:45,290 --> 00:39:47,870 Če se bomo opravili 0, če bomo dobili opravili 1, bo to funkcijo 817 00:39:47,870 --> 00:39:49,790 takoj vrniti 1. 818 00:39:49,790 --> 00:39:54,020 Če se bomo opravili nekaj veliko večji ali enako 2, da bomo 819 00:39:54,020 --> 00:39:55,370 imamo rekurzivni klic. 820 00:39:55,370 --> 00:39:57,855 >> In tako, kako je, da bo delovalo? 821 00:39:57,855 --> 00:40:01,070 Lahko nekdo drug, ki je delal na tem ki še ni govoril mi 822 00:40:01,070 --> 00:40:07,380 rekurzivni klic, za to funkcijo v psevdokoda? 823 00:40:07,380 --> 00:40:10,770 Če se bomo opravili v številnih x in to je večje od 2, kar 824 00:40:10,770 --> 00:40:13,370 Ne želimo storiti? 825 00:40:13,370 --> 00:40:17,930 Prav tako so na primer napisano na strani, da bi vam namignem. 826 00:40:17,930 --> 00:40:20,770 >> ŠTUDENT: Call x-krat Fakulteta x minus 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON Hirschhorna: Točno tako prav. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Bomo vrnili x-krat Fakulteta x minus 1. 830 00:40:37,750 --> 00:40:41,810 In da, čeprav sem zapisal, v bistvu, kar si rekel v angleščini, 831 00:40:41,810 --> 00:40:44,580 to fakulteto funkcija se bo spet poklical. 832 00:40:44,580 --> 00:40:46,320 To bo izvesti na x minus 1. 833 00:40:46,320 --> 00:40:49,320 To bo vrnil z nekaj celo število, in potem bo to pomnoži ta dva 834 00:40:49,320 --> 00:40:52,050 skupaj, in da vrednost bo vrnejo ne glede na to imenoval 835 00:40:52,050 --> 00:40:55,010 faktorski funkcijo, ki bi lahko še en primerek 836 00:40:55,010 --> 00:40:58,420 To faktorski funkcija. 837 00:40:58,420 --> 00:41:01,360 >> Tako, da je primer rekurzivnih funkcijo, zelo 838 00:41:01,360 --> 00:41:02,530 preprost rekurzivna funkcija. 839 00:41:02,530 --> 00:41:04,530 Vendar pa bo večina od njih je, kot je ta. 840 00:41:04,530 --> 00:41:11,170 Če bi radi dober rekurzivno izziv za kviz, poskusite kodiranje 841 00:41:11,170 --> 00:41:13,230 binarno iskanje rekurzivno. 842 00:41:13,230 --> 00:41:18,950 Ker če si binarno iskanje Problem nastavite tri, verjetno je to storila 843 00:41:18,950 --> 00:41:21,730 ponavljajočim v while zanko. 844 00:41:21,730 --> 00:41:23,700 >> Vendar se lahko tudi pisna rekurzivno. 845 00:41:23,700 --> 00:41:26,310 Boste morali napisati sami ločena funkcija, ki traja nekaj 846 00:41:26,310 --> 00:41:29,020 različni argumenti v ukazni vrstici - ali ne argumenti v ukazni vrstici nekaj 847 00:41:29,020 --> 00:41:30,910 Različne samo redni argumenti. 848 00:41:30,910 --> 00:41:33,870 Ampak bi lahko napisali binarno iskanje rekurzivno kot dobro. 849 00:41:33,870 --> 00:41:36,190 >> Študent: Tako bi si tudi napisal, namesto x minus 1, ki jih 850 00:41:36,190 --> 00:41:39,502 Lahko bi tudi napisal x minus minus, ali pa bi morali 851 00:41:39,502 --> 00:41:40,830 napisal minus minus x. 852 00:41:40,830 --> 00:41:44,740 Lahko samo pojasni, res hitro, zakaj tistih, ki bi bili različni stvari, 853 00:41:44,740 --> 00:41:49,510 všeč, kaj je razlika med x minus minus in minus minus x? 854 00:41:49,510 --> 00:41:51,320 >> JASON Hirschhorna: Ne, nisem bo šel v to. 855 00:41:51,320 --> 00:41:55,500 Vendar bom govoril s tabo o tem po razred. x minus minus minus minus x 856 00:41:55,500 --> 00:41:57,780 pojemanje x za 1. 857 00:41:57,780 --> 00:41:59,090 Vendar pa to malo drugače. 858 00:41:59,090 --> 00:42:00,340 Ampak jaz ne želim iti v to. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 Druga vprašanja o rekurzije ali je ta funkcija? 861 00:42:09,090 --> 00:42:10,140 To ni res, tudi psevdokoda. 862 00:42:10,140 --> 00:42:15,060 To je v bistvu koda v C napišete za to. 863 00:42:15,060 --> 00:42:19,393 >> Ok, katera koli druga vprašanja o temah tu gor? 864 00:42:19,393 --> 00:42:19,864 Ja. 865 00:42:19,864 --> 00:42:23,130 >> Študent: Imam hiter potek plavajočo vejico in natančnost. 866 00:42:23,130 --> 00:42:24,260 >> JASON Hirschhorna: Plavajoča točko in natančnost. 867 00:42:24,260 --> 00:42:26,920 Lahko nekdo res hitro dajte mi potek 868 00:42:26,920 --> 00:42:28,210 plavajočo vejico in natančnost? 869 00:42:28,210 --> 00:42:30,420 Ste vsi imeli to storiti za svoje problem določiti, tako da ste vsi 870 00:42:30,420 --> 00:42:31,700 seznanjeni z njo. 871 00:42:31,700 --> 00:42:35,090 Ali pa tudi ne vse vas. 872 00:42:35,090 --> 00:42:36,602 Kdorkoli? 873 00:42:36,602 --> 00:42:39,530 Daj mi začeli spot. 874 00:42:39,530 --> 00:42:40,750 Plavajočo vejico in natančnost. 875 00:42:40,750 --> 00:42:42,380 V čem je težava? 876 00:42:42,380 --> 00:42:42,960 Da. 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 Hirschhorna: Vanessa. 880 00:42:45,285 --> 00:42:45,680 Žal mi je. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: Obstaja samo končno število številk, ki jo lahko predstavimo 882 00:42:51,550 --> 00:42:57,930 ker si na, v našem primer, 32-bitni sistem. 883 00:42:57,930 --> 00:43:03,080 Tako da boste nekako morali nadoknaditi nekaj številk. 884 00:43:03,080 --> 00:43:03,910 >> JASON Hirschhorna: Tako da je Točno tako. 885 00:43:03,910 --> 00:43:08,110 Obstaja le določena količina Številke, ki jih lahko zastopani. 886 00:43:08,110 --> 00:43:11,770 Če pomnožimo dva zelo veliko število, da bi se razlivala znesek 887 00:43:11,770 --> 00:43:13,950 prostorov imate za zastopanje celo število. 888 00:43:13,950 --> 00:43:17,930 Zato včasih uporabljamo dolgo dolgo namesto notr. 889 00:43:17,930 --> 00:43:19,210 Ki ima več prostorov. 890 00:43:19,210 --> 00:43:21,210 Da lahko imajo večje število. 891 00:43:21,210 --> 00:43:24,310 >> Plavajoči vejici ima opraviti z da, vendar pa ima opraviti z 892 00:43:24,310 --> 00:43:29,300 Dejstvo, da so decimalna števila Ne vedno predstavljal. 893 00:43:29,300 --> 00:43:29,540 Žal mi je. 894 00:43:29,540 --> 00:43:31,280 Dovolite mi dal to nazaj gor. 895 00:43:31,280 --> 00:43:36,610 Desetiško število 1,0, ni vedno predstavljal kot si ti, bi pričakovali, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 Včasih zastopali 1,000000001 ali ,999999999. 898 00:43:50,360 --> 00:43:52,780 To bo morda celo 89 vržena tam nekje. 899 00:43:52,780 --> 00:43:56,560 Torej ti decimalna številke niso predstavljal točno tako kot bi jo 900 00:43:56,560 --> 00:43:58,430 pričakujejo, da se jih zastopa. 901 00:43:58,430 --> 00:44:00,010 >> Torej, problem set - 902 00:44:00,010 --> 00:44:00,860 je bilo dva? - 903 00:44:00,860 --> 00:44:05,290 Problem nastavite dva, kjer smo obravnavali številk s plavajočo vejico, ko smo želeli 904 00:44:05,290 --> 00:44:08,690 jim predstavljajo točno to, kar smo želeli jim predstavljata število 905 00:44:08,690 --> 00:44:12,860 za penijev, ali število centov, smo jih pomnožite s 100.. 906 00:44:12,860 --> 00:44:14,750 Mi jih zaokroži. 907 00:44:14,750 --> 00:44:18,660 In potem smo se odrezali vse zadaj decimalno vejico. 908 00:44:18,660 --> 00:44:22,020 To je bilo, da se zagotovi, da bi jih dejansko enak točno tisto, kar smo želeli 909 00:44:22,020 --> 00:44:22,410 jim enako. 910 00:44:22,410 --> 00:44:26,870 >> Ker, ko ste vzeli nekaj, kar je float in ga pretvori v int, si 911 00:44:26,870 --> 00:44:29,860 odrezati vse, kar je v desno decimalne vejice. 912 00:44:29,860 --> 00:44:33,900 Ker obstaja nekaj plavajočo vejico nenatančnost, 100.000 morda 913 00:44:33,900 --> 00:44:37,440 zastopali 99,999999999. 914 00:44:37,440 --> 00:44:40,350 In če si odreže vse, da bi uspe takoj, boste 915 00:44:40,350 --> 00:44:41,600 dobili napačno številko. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Ja. 918 00:44:44,180 --> 00:44:45,290 >> Študent: Imel sem vprašanje o ulivanju. 919 00:44:45,290 --> 00:44:47,500 Kaj, da se to zgodi v? 920 00:44:47,500 --> 00:44:54,480 Če želite narediti plovec, nosilci, 1 razdeljen za 10, počne 1 deljeno z 10, 921 00:44:54,480 --> 00:44:58,910 nato pa dobil 0,1, nato pa je v likvidna sredstva? 922 00:44:58,910 --> 00:45:01,470 >> JASON Hirschhorna: Če vam float 1 deljeno z 10 - 923 00:45:01,470 --> 00:45:02,550 >> Študent: Ja, in potem je enako - 924 00:45:02,550 --> 00:45:04,240 No, to bi bilo normalno imajo pa enako - 925 00:45:04,240 --> 00:45:04,690 Ja. 926 00:45:04,690 --> 00:45:06,760 Želite, da bi bilo float, kajne? 927 00:45:06,760 --> 00:45:12,790 >> JASON Hirschhorna: OK, tako da bomo uporabiti, da segue v kipec jasno 928 00:45:12,790 --> 00:45:15,390 odgovori na ta vprašanja s pomočjo kodiranja. 929 00:45:15,390 --> 00:45:18,180 Ker boste verjetno imeli veliko Te minute vprašanja in dober način 930 00:45:18,180 --> 00:45:19,100 za njihovo reševanje je s pomočjo kodiranja. 931 00:45:19,100 --> 00:45:21,320 Torej bomo kodo to prav zdaj, in potem smo šli nazaj in 932 00:45:21,320 --> 00:45:24,020 kodo na vprašanje, ki ste jih imeli. 933 00:45:24,020 --> 00:45:24,950 >> Torej prva linija - 934 00:45:24,950 --> 00:45:29,390 Ne bi ga napisali - tisto, kar je Prva stvar, ki smo želeli storiti, če smo 935 00:45:29,390 --> 00:45:32,250 odpreti novo datoteko v gedit? 936 00:45:32,250 --> 00:45:34,190 >> Študent: Vključi. 937 00:45:34,190 --> 00:45:35,920 >> JASON Hirschhorna: Vključi kaj? 938 00:45:35,920 --> 00:45:37,952 >> Študent: CS50 knjižnica. 939 00:45:37,952 --> 00:45:39,920 >> JASON Hirschhorna: OK. 940 00:45:39,920 --> 00:45:42,590 Kaj drugega bi morali vključiti? 941 00:45:42,590 --> 00:45:46,820 Mi smo šele tekoč, da preverite, kaj se zgodi ko odda nekaj likvidna sredstva. 942 00:45:46,820 --> 00:45:48,605 Ampak kaj moramo vključiti, če smo tekoč napisati program C? 943 00:45:48,605 --> 00:45:49,300 >> Študent: Standard I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON Hirschhorna: stdio.h. 945 00:45:50,625 --> 00:45:54,880 Mi dejansko ne potrebujemo, za to Program, cs50.h, čeprav je 946 00:45:54,880 --> 00:45:55,920 vedno koristno, da ga vključite. 947 00:45:55,920 --> 00:45:58,260 Ampak mi vedno potrebujejo stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> UČENEC: Ko kodiranje v C? 949 00:45:59,660 --> 00:46:15,770 >> JASON Hirschhorna: Ko kodiranje v C. 950 00:46:15,770 --> 00:46:17,090 >> Zato sem ga shranite kot to. C datoteko. 951 00:46:17,090 --> 00:46:18,590 Sem dobil nekaj lepih barvanje sintakse. 952 00:46:18,590 --> 00:46:22,890 Napisal sem praznino znotraj glavnega. 953 00:46:22,890 --> 00:46:24,792 Kaj void pomeni? 954 00:46:24,792 --> 00:46:26,740 >> Študent: ne sprejme nobenega argumenti v ukazni vrstici. 955 00:46:26,740 --> 00:46:28,900 >> JASON Hirschhorna: odpade pomeni v tem Primer, ki je glavni ne odgovarja za kakršnokoli 956 00:46:28,900 --> 00:46:29,700 argumenti v ukazni vrstici. 957 00:46:29,700 --> 00:46:32,720 V drugih primerih, to pomeni funkcijo ne sprejme argumente v ukazni vrstici. 958 00:46:32,720 --> 00:46:36,560 Ali funkcija, če bi bil jaz pisati praznino main (void), da bi rekel, glavne jev 959 00:46:36,560 --> 00:46:38,460 ne vrača ničesar. 960 00:46:38,460 --> 00:46:39,960 Zato nična samo pomeni nič. 961 00:46:39,960 --> 00:46:42,510 Kaj bi napisali, če bi bil jaz sprejme argumente v ukazni vrstici? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> Študent: int lok c niz lok proti 964 00:46:47,150 --> 00:46:49,055 >> JASON Hirschhorna: int argc niz argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 Je to res? 967 00:46:55,572 --> 00:46:58,720 >> Študent: To je značil zvezda argv konzole. 968 00:46:58,720 --> 00:47:01,730 >> JASON Hirschhorna: Torej bi lahko napisali Niz argv nosilci ali char zvezda argv 969 00:47:01,730 --> 00:47:03,710 nosilci, vendar morate oklepaje. 970 00:47:03,710 --> 00:47:06,290 Ker argv je matrika nizov, spomnim se. 971 00:47:06,290 --> 00:47:07,360 To ni samo en niz. 972 00:47:07,360 --> 00:47:10,350 Torej niz argv je, tu je en niz se imenuje argv. 973 00:47:10,350 --> 00:47:13,630 String argv konzole je, tu je matrika nizov. 974 00:47:13,630 --> 00:47:17,865 Torej int argc niz argv konzole bi bilo nekaj, kar sem 975 00:47:17,865 --> 00:47:18,810 Verjetno bi napisali. 976 00:47:18,810 --> 00:47:23,050 >> Tako da boste želeli shraniti v celo število? 977 00:47:23,050 --> 00:47:24,285 >> Študent: Ja, celo število. 978 00:47:24,285 --> 00:47:25,840 Ali v likvidna sredstva. 979 00:47:25,840 --> 00:47:26,710 >> JASON Hirschhorna: V likvidna sredstva? 980 00:47:26,710 --> 00:47:30,790 Kot, float x enak 1 deljeno z 10. 981 00:47:30,790 --> 00:47:32,040 >> JASON Hirschhorna: OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 Kako natisniti plovec v printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Kaj? 986 00:47:46,714 --> 00:47:47,560 >> Študent:% f. 987 00:47:47,560 --> 00:47:48,300 >> JASON Hirschhorna:% f. 988 00:47:48,300 --> 00:47:50,810 Kaj je število? 989 00:47:50,810 --> 00:47:52,110 d ali i. 990 00:47:52,110 --> 00:47:53,000 Kaj je niz? 991 00:47:53,000 --> 00:47:54,240 >> ŠTUDENT: s. 992 00:47:54,240 --> 00:47:56,140 >> JASON Hirschhorna: s. 993 00:47:56,140 --> 00:47:57,550 Kako dobim novo linijo? 994 00:47:57,550 --> 00:47:58,800 >> Študent: Leva poševnica n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON Hirschhorna: Kaj naj vrnem če je glavna teče pravilno? 997 00:48:07,100 --> 00:48:08,360 >> Študent: 0. 998 00:48:08,360 --> 00:48:09,430 Ali moram napisati to vrstico, čeprav? 999 00:48:09,430 --> 00:48:10,170 >> ŠTUDENT: Ne 1000 00:48:10,170 --> 00:48:11,513 OK, ne bomo napisali, potem. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 Lahko vsi prebrali? 1003 00:48:17,190 --> 00:48:18,485 Videti je malo majhen. 1004 00:48:18,485 --> 00:48:20,160 Lahko vsi videli, ali bi morala Jaz bi bilo večji? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Mislim, da za kamero, bomo je malo večji, čeprav. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON Hirschhorna: Če želim to spremeniti C. Datoteke v izvršljiv, kaj 1009 00:48:38,410 --> 00:48:39,260 napišem? 1010 00:48:39,260 --> 00:48:41,610 >> ŠTUDENT: Naredite test. 1011 00:48:41,610 --> 00:48:42,080 >> JASON Hirschhorna: Oprostite? 1012 00:48:42,080 --> 00:48:42,790 >> ŠTUDENT: Naredite test. 1013 00:48:42,790 --> 00:48:44,040 >> JASON Hirschhorna: Naredite test. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Sva se pogovarjala ta vrstica prej. 1016 00:48:48,410 --> 00:48:49,140 Jek. 1017 00:48:49,140 --> 00:48:51,270 Kaj je Jek? 1018 00:48:51,270 --> 00:48:52,200 Ime prevajalnik. 1019 00:48:52,200 --> 00:48:53,920 Kaj je to meja? 1020 00:48:53,920 --> 00:48:55,580 >> ŠTUDENT: vzpostavi za uporabo GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON Hirschhorna: Kompleti je pripravljen za uporabo GDB. 1022 00:48:59,230 --> 00:49:02,338 Ta linija, kaj je to? 1023 00:49:02,338 --> 00:49:03,290 >> Študent: Izvorna koda. 1024 00:49:03,290 --> 00:49:06,010 >> JASON Hirschhorna: To je vir datoteke. c datoteka. 1025 00:49:06,010 --> 00:49:08,150 Kaj ti dve vrstici storiti? 1026 00:49:08,150 --> 00:49:10,245 Ali se ta dva ne vodi. 1027 00:49:10,245 --> 00:49:12,300 >> Študent: It Imena ga preizkusiti. 1028 00:49:12,300 --> 00:49:15,410 >> JASON Hirschhorna: Torej dash o pravi, Ime je nekaj drugače. 1029 00:49:15,410 --> 00:49:16,790 In tukaj ste ga kliče preizkus. 1030 00:49:16,790 --> 00:49:18,900 Če ne bi imel, da, kaj bi bilo ime tega? 1031 00:49:18,900 --> 00:49:20,260 >> Študent: a.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON Hirschhorna: a.out. 1033 00:49:22,340 --> 00:49:25,366 Kaj to naredil? 1034 00:49:25,366 --> 00:49:27,670 >> Študent: Povezave knjižnice matematike. 1035 00:49:27,670 --> 00:49:29,550 >> JASON Hirschhorna: Povezuje v knjižnici matematike. 1036 00:49:29,550 --> 00:49:32,880 Nismo vključili knjižnice matematike, vendar saj to je tako pogosti, oni ' 1037 00:49:32,880 --> 00:49:35,780 napisana znamka vedno vključuje math knjižnica. 1038 00:49:35,780 --> 00:49:39,050 In podobno, to vključuje Knjižnica CS50. 1039 00:49:39,050 --> 00:49:43,010 >> OK, tako da, če smo seznam, imamo zdaj izvršljiv imenovan preskus. 1040 00:49:43,010 --> 00:49:45,150 Za izvršbo, pišem test. 1041 00:49:45,150 --> 00:49:48,330 Vidim, da je moja plavajočo vejico, kot je bilo pričakovano, je enak 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 Ali to - 1044 00:49:51,590 --> 00:49:52,060 tako - 1045 00:49:52,060 --> 00:49:55,210 >> Študent: Potem, če si dal float zdaj, kot jo odda kot likvidna sredstva - 1046 00:49:55,210 --> 00:49:56,870 >> JASON Hirschhorna: Siva 1 plovca? 1047 00:49:56,870 --> 00:49:59,180 >> Študent: Ne, oddanih v celoti stvar - 1048 00:49:59,180 --> 00:49:59,500 ja. 1049 00:49:59,500 --> 00:50:02,460 Če si to naredil, bi da bi bilo 0,1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON Hirschhorna: OK, tako da res hitro, 1 deljeno z 10, to so 1051 00:50:07,170 --> 00:50:08,690 cela se deli. 1052 00:50:08,690 --> 00:50:13,580 Torej, ko si delimo cela, oni 0, in ste za varčevanje, da je 0 na 1053 00:50:13,580 --> 00:50:17,170 plovec, ker je poševnica Samo število delitev. 1054 00:50:17,170 --> 00:50:19,180 Torej, zdaj smo obrača nekaj v likvidna sredstva. 1055 00:50:19,180 --> 00:50:21,650 >> Poglejmo, kaj se zgodi. 1056 00:50:21,650 --> 00:50:22,900 Naredili bomo test. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Torej, zdaj smo videli, da to slash ni bilo število delitev, je bila plava 1059 00:50:31,090 --> 00:50:32,640 točka delitve. 1060 00:50:32,640 --> 00:50:35,700 Ker je eden od njegovih argumentov so bili oddani na likvidna sredstva. 1061 00:50:35,700 --> 00:50:38,380 Torej, zdaj pa je rekel, to zdravljenje delitev, kot imamo opravka z 1062 00:50:38,380 --> 00:50:40,140 plavajoče točke, ne pa cela. 1063 00:50:40,140 --> 00:50:42,760 In tako smo dobili odgovor, smo pričakovali. 1064 00:50:42,760 --> 00:50:44,620 >> Poglejmo, kaj se zgodi - 1065 00:50:44,620 --> 00:50:47,103 oops. 1066 00:50:47,103 --> 00:50:51,646 Če sem hotel natisniti več decimalke lise, kako sem lahko to naredil? 1067 00:50:51,646 --> 00:50:55,550 >> Študent: Točka pika f, ali toliko decimalni mesti, kot želite. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON Hirschhorna: Tako sem natisnete 10 decimalni mesti. 1070 00:51:04,440 --> 00:51:06,610 In smo zdaj videli smo dobili nek čuden stvari. 1071 00:51:06,610 --> 00:51:09,650 In da gre nazaj na vaše vprašanje O plavajočo vejico nenatančnost. 1072 00:51:09,650 --> 00:51:10,950 Tam je čudna stvar shranjena tukaj. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, ne da odgovoriti na vaše vprašanje? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Kaj si želiš hitro kodo? 1077 00:51:20,200 --> 00:51:25,470 >> Študent: Hotel sem videti, ali Ne, če si sprostil nekaj kazalec, 1078 00:51:25,470 --> 00:51:30,410 ali je ta kazalec še vedno shranjeno v je naslov, kaj je bilo 1079 00:51:30,410 --> 00:51:32,170 kaže, da prej. 1080 00:51:32,170 --> 00:51:34,100 >> JASON Hirschhorna: OK, tako da je to naredil. 1081 00:51:34,100 --> 00:51:38,030 Char zvezda PTR, to ustvari spremenljivko imenovano ptr tipa char zvezdico. 1082 00:51:38,030 --> 00:51:39,280 Kako napišem malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: Just malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 Vendar pa mora biti velikost ter v tem primeru, mislim, da bi 1087 00:51:51,040 --> 00:51:52,465 se kaže na znak. 1088 00:51:52,465 --> 00:51:54,450 Torej bi bilo znak. 1089 00:51:54,450 --> 00:51:57,520 >> JASON Hirschhorna: OK, tako da več generično, Inside - 1090 00:51:57,520 --> 00:51:58,770 dajmo urediti. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Inside malloc, hočeš številko bajtov na kup. 1093 00:52:09,260 --> 00:52:12,320 Na splošno, kar smo videli, da smo delal je, da bomo malloc 1094 00:52:12,320 --> 00:52:14,940 strune, na primer, ali nizi števil. 1095 00:52:14,940 --> 00:52:21,600 Torej, če želimo, da cela 10 ali 10 znakov, 10, nam bo dala 10. 1096 00:52:21,600 --> 00:52:24,370 In potem bi se velikost znakov dajejo nam, da je velikost znakov, ki 1097 00:52:24,370 --> 00:52:25,120 V tem primeru je 1 bajt. 1098 00:52:25,120 --> 00:52:26,250 Smo dobili 10 bajtov. 1099 00:52:26,250 --> 00:52:28,540 Če smo bili, da napišete velikost int, da bi nam dal 40 bajtov. 1100 00:52:28,540 --> 00:52:31,520 >> Torej, bolj na splošno, v notranjosti malloc je število bajtov, kar želite. 1101 00:52:31,520 --> 00:52:34,620 V tem primeru smo dobili 1 bajt. 1102 00:52:34,620 --> 00:52:36,900 , Ki se zdi kot čudno uporabe z malloc, ampak za naše 1103 00:52:36,900 --> 00:52:38,470 namene smiselna. 1104 00:52:38,470 --> 00:52:40,420 Torej, to je to. 1105 00:52:40,420 --> 00:52:43,420 >> Bomo pokličite brezplačno. 1106 00:52:43,420 --> 00:52:47,040 Znebimo njega in smo spet uporabili PTR. 1107 00:52:47,040 --> 00:52:48,750 In kaj si želite preveriti? 1108 00:52:48,750 --> 00:52:50,550 >> Študent: Želel sem preveriti, ali ali je bilo kaj 1109 00:52:50,550 --> 00:52:51,900 v njem. 1110 00:52:51,900 --> 00:52:53,050 >> JASON Hirschhorna: Torej, ali je poudaril, da ničesar? 1111 00:52:53,050 --> 00:52:57,740 >> Študent: Ja, točno, ali je še vedno je imel naslov pomnilnika. 1112 00:52:57,740 --> 00:53:02,220 >> JASON Hirschhorna: Torej hočeš preveriti vrednost PTR? 1113 00:53:02,220 --> 00:53:03,470 >> Študent: Ja, točno. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON Hirschhorna: Kaj pišem tukaj če želim preveriti vrednost 1116 00:53:10,160 --> 00:53:11,880 točka - kaj je, Jordan je dejal, vrednost? 1117 00:53:11,880 --> 00:53:13,720 Ali je kaj shranjeni v notranjosti PTR? 1118 00:53:13,720 --> 00:53:14,620 >> Študent: pomnilniški naslov. 1119 00:53:14,620 --> 00:53:16,330 >> JASON Hirschhorna: pomnilniški naslov. 1120 00:53:16,330 --> 00:53:20,520 Torej, če napišem samo to, da bomo dajte mi vrednost PTR. 1121 00:53:20,520 --> 00:53:22,800 In kako natisnete pomnilniški naslov? 1122 00:53:22,800 --> 00:53:26,470 Kaj je niz format za pomnilniški naslov? 1123 00:53:26,470 --> 00:53:27,430 >> Študent:% p. 1124 00:53:27,430 --> 00:53:28,050 >> JASON Hirschhorna:% p. 1125 00:53:28,050 --> 00:53:29,500 % S je niz. 1126 00:53:29,500 --> 00:53:30,750 % P kazalca. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 Je to res? 1129 00:53:43,540 --> 00:53:44,790 To je pravica. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Torej PTR enaka - 1132 00:53:51,040 --> 00:53:53,350 je še vedno nekaj v njej. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 To je verjetno bolj Zanimivo vprašanje. 1135 00:53:57,645 --> 00:53:59,198 Kaj to linijo storiti? 1136 00:53:59,198 --> 00:54:00,830 >> Študent: SEG napake. 1137 00:54:00,830 --> 00:54:01,310 >> JASON Hirschhorna: Kaj? 1138 00:54:01,310 --> 00:54:02,678 >> UČENEC: Mislim, da SEG napake. 1139 00:54:02,678 --> 00:54:03,574 >> JASON Hirschhorna: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> UČENEC: Mislim, da bom SEG napako. 1141 00:54:04,920 --> 00:54:08,265 >> JASON Hirschhorna: Torej, ta vrstica kode, zvezdic PTR, kaj 1142 00:54:08,265 --> 00:54:10,152 ne pomeni, zvezda? 1143 00:54:10,152 --> 00:54:11,240 >> Študent: Vsebina. 1144 00:54:11,240 --> 00:54:11,560 >> JASON Hirschhorna: Ja. 1145 00:54:11,560 --> 00:54:13,910 Iti, da bi dobili vsebino. 1146 00:54:13,910 --> 00:54:16,830 Torej, to se dogaja, da gredo v spomin tam obravnavajo, in dajte mi to. 1147 00:54:16,830 --> 00:54:21,030 Včasih sem% c tukaj, ker tam so tam shranjeni znakov. 1148 00:54:21,030 --> 00:54:23,390 Tako smo šli na ta naslov smo Pravkar sem videl - ali pa bo verjetno 1149 00:54:23,390 --> 00:54:25,190 Malce drugačna je to Tokrat smo teči program. 1150 00:54:25,190 --> 00:54:28,010 Bomo, ampak gremo na ta naslov za katero vemo, še vedno obstaja 1151 00:54:28,010 --> 00:54:29,260 in videti, kaj je tam. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Torej ni SEG napake. 1154 00:54:37,110 --> 00:54:38,970 To pa nam ni dal ničesar. 1155 00:54:38,970 --> 00:54:43,350 To bi lahko dejansko nam Nekaj ​​smo samo ne more videti. 1156 00:54:43,350 --> 00:54:45,110 In da gre nazaj na to idejo - 1157 00:54:45,110 --> 00:54:47,270 in ne bomo dobili preveč v to, ker to je tistega, 1158 00:54:47,270 --> 00:54:48,460 Obseg tega predmeta. 1159 00:54:48,460 --> 00:54:51,260 Ampak smo se pogovarjali o prav tukaj, če bomo prekoračilo meje matrike, ki jih 1160 00:54:51,260 --> 00:54:54,890 1, morda ne bomo dobili v težave. 1161 00:54:54,890 --> 00:54:58,550 >> Včasih, ko greš dol z 1, delaš nekaj narobe, in ti 1162 00:54:58,550 --> 00:54:59,220 lahko spravil v težave. 1163 00:54:59,220 --> 00:55:00,820 Vendar ne boste vedno dobili v težavah. 1164 00:55:00,820 --> 00:55:05,170 To je odvisno, koliko slabih stvari, ki jih Ne, boš spravil v težave. 1165 00:55:05,170 --> 00:55:07,790 Ki pa ne pomeni, površni s svojo kodo. 1166 00:55:07,790 --> 00:55:12,080 Vendar pa je povedati, program ne bo Vedno nehal, tudi če greš nekam 1167 00:55:12,080 --> 00:55:14,130 ne smeš iti. 1168 00:55:14,130 --> 00:55:18,170 >> Dober primer za to je veliko ljudje v njihov problem nastaviti 3, ki 1169 00:55:18,170 --> 00:55:22,350 je bilo 15, ni preverila mejá sveta. 1170 00:55:22,350 --> 00:55:25,860 Torej si pogledal na levo, pogledal V redu, pogledal na vrhu, pogledal 1171 00:55:25,860 --> 00:55:27,000 na dnu. 1172 00:55:27,000 --> 00:55:31,540 Vendar pa ni preveril, da vidim, če vrh se je sploh dogajalo, da je na krovu. 1173 00:55:31,540 --> 00:55:35,220 In veliko ljudi, ki je to storil, in izkazalo, da je v svoj program deloval 1174 00:55:35,220 --> 00:55:38,960 odlično, ker če je bil svet shranjene v pomnilniku, če si šel eno 1175 00:55:38,960 --> 00:55:42,300 nad njo ali pa je preverila, da spomin naslov, ni bilo nič 1176 00:55:42,300 --> 00:55:44,870 še posebej grozno o tem, tako da vaš program ni bil 1177 00:55:44,870 --> 00:55:45,970 dogaja, da kričati na vas. 1178 00:55:45,970 --> 00:55:48,870 >> Vendar bi še vedno vzlet točk, če vam ni preveril, da zato, ker vam 1179 00:55:48,870 --> 00:55:50,850 počeli nekaj, kar niso bili naj bi naredil, in bi lahko imeli 1180 00:55:50,850 --> 00:55:51,860 gotten v težavah. 1181 00:55:51,860 --> 00:55:54,040 Kvota je, čeprav, boste verjetno ni. 1182 00:55:54,040 --> 00:55:57,790 Torej, to je pokazati, da, ja, lahko še vedno iti k njej. 1183 00:55:57,790 --> 00:55:59,010 In ne bomo dobili v Težava je v tem primeru. 1184 00:55:59,010 --> 00:56:04,000 Če bomo poskušali narediti prebrati Naslednjih 100 znakov, bi 1185 00:56:04,000 --> 00:56:06,000 verjetno dobili v težavah. 1186 00:56:06,000 --> 00:56:09,400 In si lahko kodo branje naslednje 100 znakov, če hočeš s tem nekateri 1187 00:56:09,400 --> 00:56:10,110 nekako zanko. 1188 00:56:10,110 --> 00:56:10,850 Ja. 1189 00:56:10,850 --> 00:56:16,250 >> Študent: Ker smo bili dodeljeni, da Prostor dejanska vrednost, ne bi 1190 00:56:16,250 --> 00:56:17,050 dejansko lahko videli ničesar. 1191 00:56:17,050 --> 00:56:21,740 Ali bi morali poskusiti z določitvijo, da enako kot so C ali kaj podobnega? 1192 00:56:21,740 --> 00:56:22,640 >> JASON Hirschhorna: Great vprašanje. 1193 00:56:22,640 --> 00:56:25,340 Kako nastaviti te vrednosti - 1194 00:56:25,340 --> 00:56:28,980 kakšna vrstica kode napišem na spletu sedem na to, kar si rekel? 1195 00:56:28,980 --> 00:56:34,040 >> Študent: Star PTR enaka single quote c konec enojni narekovaj. 1196 00:56:34,040 --> 00:56:36,970 >> JASON Hirschhorna: Tako, da je dajanje značaj, c, na tej lokaciji, 1197 00:56:36,970 --> 00:56:40,200 ker še enkrat, da je zvezda pomeni iti tja. 1198 00:56:40,200 --> 00:56:43,320 In kadar se uporablja na levi strani Operater naloga, ki je enaka 1199 00:56:43,320 --> 00:56:47,270 podpisati, da ne bomo dobili, da Vrednost toliko, kot je to vrednost. 1200 00:56:47,270 --> 00:56:48,520 Zdaj pa poglejmo, kaj se zgodi. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Mi je dal nekaj, kar je in da je tam. 1203 00:56:56,770 --> 00:56:58,000 Poklicali smo brezplačno. 1204 00:56:58,000 --> 00:57:00,100 Nekatere stvari je verjetno zgodilo na kup. 1205 00:57:00,100 --> 00:57:01,890 Torej ni več tam. 1206 00:57:01,890 --> 00:57:07,440 Ampak še enkrat, ne bomo dobili v težavah, za tja. 1207 00:57:07,440 --> 00:57:10,260 >> To delam v kodi za ponazoritev da Veliko teh 1208 00:57:10,260 --> 00:57:12,410 Vprašanja, ki jih imate, oni res zanimivo 1209 00:57:12,410 --> 00:57:13,650 odgovarja veliko časa. 1210 00:57:13,650 --> 00:57:15,260 In oni so res dobra vprašanja. 1211 00:57:15,260 --> 00:57:19,010 In jih lahko ugotovimo na sami, če, na primer, 1212 00:57:19,010 --> 00:57:19,990 nismo v oddelku. 1213 00:57:19,990 --> 00:57:20,940 Ja. 1214 00:57:20,940 --> 00:57:24,430 >> Študent: Ker si ne pošilja kazalec kjerkoli, si morate 1215 00:57:24,430 --> 00:57:26,530 uporabljati malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON Hirschhorna: Torej, ta sega na začetno vprašanje. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 Je to samo lokalna spremenljivka? 1219 00:57:29,980 --> 00:57:32,280 Malloc tukaj ni tako prepričljiv. 1220 00:57:32,280 --> 00:57:35,260 Uporaba malloc tukaj ni da je prepričljiv, ker je 1221 00:57:35,260 --> 00:57:36,500 samo lokalna spremenljivka. 1222 00:57:36,500 --> 00:57:40,970 >> Študent: Torej bi lahko naredil char zvezda ptr enaka zdravo? 1223 00:57:40,970 --> 00:57:41,400 >> JASON Hirschhorna: Oh. 1224 00:57:41,400 --> 00:57:43,300 Torej se bomo zdaj dobili nazaj na začetno vprašanje. 1225 00:57:43,300 --> 00:57:46,885 Mislim, da niso bili izpolnjeni z mojim odgovorom. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 Všeč? 1228 00:57:49,226 --> 00:57:49,682 >> Študent: Ja. 1229 00:57:49,682 --> 00:57:50,932 Čakati. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON Hirschhorna: In kje želiš izpisati? 1232 00:57:57,850 --> 00:58:00,026 Torej bomo izpisal niz takega? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> Študent: Zanimivo. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON Hirschhorna: Torej, ta pravi, da je to Argument ima vrsto značaja. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Torej mora biti to znak. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> Študent: Samo meni prvo. 1241 00:58:26,280 --> 00:58:28,610 >> JASON Hirschhorna: Torej, ta je tisto, kar sem rekel prej. 1242 00:58:28,610 --> 00:58:34,240 Kot sem rekel, to ni shranjevanje Niz notranjosti spremenljivo kazalca. 1243 00:58:34,240 --> 00:58:35,120 To je shranjevanje - 1244 00:58:35,120 --> 00:58:36,350 >> Študent: prva vrednost niza. 1245 00:58:36,350 --> 00:58:40,810 >> JASON Hirschhorna: naslov prva vrednost niza. 1246 00:58:40,810 --> 00:58:46,940 Če smo bili, da natisnete to, da smo pridobivanje vrednosti znotraj kazalca. 1247 00:58:46,940 --> 00:58:51,005 In bomo videli, da je res, pomnilniški naslov. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> Ali to smiselno? 1250 00:58:56,440 --> 00:58:56,940 Žal mi je. 1251 00:58:56,940 --> 00:58:58,996 Čakaj, ne da odgovoriti na vaše Vprašanje, čeprav? 1252 00:58:58,996 --> 00:58:59,790 >> Študent: Ja. 1253 00:58:59,790 --> 00:59:05,830 >> JASON Hirschhorna: ta vrstica kode je kreiranje niza in nato še 1254 00:59:05,830 --> 00:59:09,115 spremenljivka kazalec, ki je obrnjena v tem nizu, ki matrika. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Ja. 1257 00:59:14,980 --> 00:59:19,200 >> Študent: Torej, če smo šli en spomin nadaljnjo obravnavo, bi dobili h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 Je bil shranjen kot niz? 1260 00:59:23,150 --> 00:59:24,400 >> JASON Hirschhorna: Kot smo naredili - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 tako je to koristno za narediti. 1263 00:59:30,790 --> 00:59:33,780 To je točka aritmetika, ki vam fantje ni videl in ga je treba 1264 00:59:33,780 --> 00:59:35,550 relativno všeč. 1265 00:59:35,550 --> 00:59:36,905 To je podobno pisanju - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 če bi napisati to vrstico kode, Videli smo matrično zapis prej. 1268 00:59:46,350 --> 00:59:55,900 To naj bi nam drugega vrednost v tem polju, h. 1269 00:59:55,900 --> 01:00:05,010 >> Če bomo to storili, bi to lahko tudi us druga vrednost v tej matriki. 1270 01:00:05,010 --> 01:00:08,320 Saj ne gre za spomin naslov prvega stvar, vendar 1271 01:00:08,320 --> 01:00:10,530 pomnilniški naslov stvar enega več. 1272 01:00:10,530 --> 01:00:14,360 In potem operater zvezda dereferences se da kazalec. 1273 01:00:14,360 --> 01:00:16,940 In spet, poglejmo. 1274 01:00:16,940 --> 01:00:18,664 Spet smo dobili h. 1275 01:00:18,664 --> 01:00:20,980 >> ŠTUDENT: Kaj točno počne dereference pomeni? 1276 01:00:20,980 --> 01:00:23,650 >> JASON Hirschhorna: dereference je fancy beseda za iti. 1277 01:00:23,650 --> 01:00:26,390 Pojdi na to in dobili tisto, kar je tam je dereference kazalca. 1278 01:00:26,390 --> 01:00:28,240 To je samo fancy beseda za to. 1279 01:00:28,240 --> 01:00:29,986 >> Študent: Če bi želeli natisniti cel niz, bi lahko 1280 01:00:29,986 --> 01:00:31,930 narediti ampersand kazalec? 1281 01:00:31,930 --> 01:00:33,490 >> JASON Hirschhorna: OK, smo bo tukaj premor. 1282 01:00:33,490 --> 01:00:35,480 Se bomo, da konča tukaj. 1283 01:00:35,480 --> 01:00:41,760 Ampersand vam daje naslov mesto, tako da, ko boste to storili 'znak za 1284 01:00:41,760 --> 01:00:44,080 spremenljivka, saj vam daje naslov kjer je shranjena, da spremenljivka. 1285 01:00:44,080 --> 01:00:48,580 Ampersand kazalec ste, da bo dala naslov PTR kjer je PTR v pomnilniku. 1286 01:00:48,580 --> 01:00:50,140 >> Nismo šli na s tem npr. 1287 01:00:50,140 --> 01:00:52,640 Lahko ugotovimo, ti stvari na svoje. 1288 01:00:52,640 --> 01:00:55,740 Ampak spet, to morda celo meji bit tistega, kar morate vedeti za 1289 01:00:55,740 --> 01:00:58,000 Obseg tega vmesnega - 1290 01:00:58,000 --> 01:00:59,070 ali je ta kviz, ne. 1291 01:00:59,070 --> 01:01:00,270 Žal mi je. 1292 01:01:00,270 --> 01:01:03,770 >> Se bomo naprej, ker jaz bi rad naredil eno kodiranje problem 1293 01:01:03,770 --> 01:01:05,100 pred časom je gor. 1294 01:01:05,100 --> 01:01:09,340 In bomo kodo, kar mislim, je najbolj prepričljiv od teh 1295 01:01:09,340 --> 01:01:11,020 Primeri, atoi. 1296 01:01:11,020 --> 01:01:14,520 Torej je bilo to vprašanje na kviz pred dvema letoma. 1297 01:01:14,520 --> 01:01:17,810 In sem ga imela na krovu tukaj. 1298 01:01:17,810 --> 01:01:20,680 >> Ljudje so bile pozvane, na kvizu - 1299 01:01:20,680 --> 01:01:23,640 Dali so jim malo več tesxt v vprašanje, vendar sem izpadla 1300 01:01:23,640 --> 01:01:26,640 Besedilo ker je bilo potrebno za naše potrebe zdaj. 1301 01:01:26,640 --> 01:01:29,180 Bilo je samo nekaj v ozadju o tem, kaj atoi storil. 1302 01:01:29,180 --> 01:01:31,425 Toda vsi veste, in so zelo seznanjeni z atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Predlagam, da to kodo na list papirja. 1304 01:01:35,620 --> 01:01:39,310 Prav tako predlagamo, da uporabite strategijo da smo šli čez 1305 01:01:39,310 --> 01:01:41,040 Veliko v našem oddelku. 1306 01:01:41,040 --> 01:01:44,130 Najprej poskrbite, da boste razumeli kaj atoi počne. 1307 01:01:44,130 --> 01:01:47,580 Narisati ali prišli do nekaj mentalna podoba tega pa je v tvoji glavi. 1308 01:01:47,580 --> 01:01:51,120 Dalje, napiši psevdokoda za to. 1309 01:01:51,120 --> 01:01:53,120 Na kvizu, če vse, kar se je psevdokoda, vsaj 1310 01:01:53,120 --> 01:01:54,550 dal nekaj dol. 1311 01:01:54,550 --> 01:02:00,070 In potem karto, da psevdokoda na C. Če imate ček v vašem 1312 01:02:00,070 --> 01:02:03,760 psevdokoda, kot preveriti, če kaj je 1, ki preslika na če 1313 01:02:03,760 --> 01:02:05,750 stanje in tako naprej. 1314 01:02:05,750 --> 01:02:07,850 In končno, kodo programa v C 1315 01:02:07,850 --> 01:02:15,000 >> Torej, pojdite nazaj na atoi in se pet minut kodo to na list 1316 01:02:15,000 --> 01:02:19,480 Papir, ki je verjetno okoli Količina časa, ki bi jih vzeli na 1317 01:02:19,480 --> 01:02:21,260 Kviz za kodo atoi. 1318 01:02:21,260 --> 01:02:27,060 Pet do 15 minut, od pet do 12, pet do 10 minut, je o znesku 1319 01:02:27,060 --> 01:02:30,150 čas, ki ste jo porabili za to vprašanje v kvizu. 1320 01:02:30,150 --> 01:02:31,670 Zato si vzemite pet minut, prosim. 1321 01:02:31,670 --> 01:02:35,957 In če imate kakršnakoli vprašanja, dvignite roko in bom prišel naokoli. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [STRANSKI POGOVORI] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON Hirschhorna: OK, tako da je pet minut. 1326 01:08:37,580 --> 01:08:39,880 To je verjetno zaradi obsega čas, ki ste jo porabili, da se na kvizu, 1327 01:08:39,880 --> 01:08:42,120 Morda nizka konec tistega časa. 1328 01:08:42,120 --> 01:08:44,010 Bomo Rekapitulacija v bit. 1329 01:08:44,010 --> 01:08:45,740 Začnimo kodiranja to. 1330 01:08:45,740 --> 01:08:49,479 In če ne bomo dobili vse skozi, odgovori na ta in ta 1331 01:08:49,479 --> 01:08:54,189 kviz vprašanje so na voljo, še enkrat, Jesen 2011, ko je to vprašanje 1332 01:08:54,189 --> 01:08:54,913 pojavil na kvizu. 1333 01:08:54,913 --> 01:08:57,830 >> In to je bilo vredno osem točk na kvizu potem. 1334 01:08:57,830 --> 01:09:01,140 Osem točk je na odprtem koncu število točk, nekaj je vredno. 1335 01:09:01,140 --> 01:09:04,790 Največ vprašanj so v območju od 5:59 točk. 1336 01:09:04,790 --> 01:09:08,500 Torej je to bolj zahtevno Vprašanje, zagotovo. 1337 01:09:08,500 --> 01:09:09,750 Lahko kdo me začel? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Na splošno, kaj bomo bi želeli storiti s tem 1340 01:09:15,380 --> 01:09:17,550 deluje atoi, logično? 1341 01:09:17,550 --> 01:09:19,569 Kaj bomo naredili? 1342 01:09:19,569 --> 01:09:22,279 Torej bomo napisali nekateri psevdokoda. 1343 01:09:22,279 --> 01:09:24,090 >> Študent: Pretvarjanje znakov v celih. 1344 01:09:24,090 --> 01:09:26,700 >> JASON Hirschhorna: Pretvarjanje znakov v celih. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 Torej, koliko znakov smo bo treba iti skozi? 1347 01:09:30,870 --> 01:09:32,295 >> Študent: Vsi izmed njih. 1348 01:09:32,295 --> 01:09:34,100 >> Študent: Vsi znaki v nizu. 1349 01:09:34,100 --> 01:09:35,540 >> JASON Hirschhorna: Vse znakov v nizu. 1350 01:09:35,540 --> 01:09:42,180 Torej, če bi želeli, da gredo skozi vsak znak v nizu, kar je stvar 1351 01:09:42,180 --> 01:09:44,560 v C smo videli, da je dovoljeno nas, da gredo skozi vsak 1352 01:09:44,560 --> 01:09:45,939 znak v nizu? 1353 01:09:45,939 --> 01:09:46,819 >> ŠTUDENTI: za zanko. 1354 01:09:46,819 --> 01:09:48,069 >> JASON Hirschhorna: zanko. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Torej gremo v zanko skozi Vsak lik v s. 1357 01:09:55,330 --> 01:10:00,940 >> In kaj bomo želeli narediti ko smo dobili poseben značaj? 1358 01:10:00,940 --> 01:10:02,480 Recimo, da se bova opravili 90. 1359 01:10:02,480 --> 01:10:03,460 Smo dobili 9. 1360 01:10:03,460 --> 01:10:04,240 To je znak. 1361 01:10:04,240 --> 01:10:07,440 Kaj želimo narediti z da znak 9? 1362 01:10:07,440 --> 01:10:10,082 >> Študent: ga odštejemo od 0 značaja? 1363 01:10:10,082 --> 01:10:11,860 >> Študent: 0 Dodaj? 1364 01:10:11,860 --> 01:10:13,350 >> JASON Hirschhorna: Odštevanje da iz značaja 0? 1365 01:10:13,350 --> 01:10:13,800 >> Študent: Ja. 1366 01:10:13,800 --> 01:10:15,573 >> JASON Hirschhorna: Zakaj hočeš to storiti? 1367 01:10:15,573 --> 01:10:16,560 >> Študent: [neslišno] 1368 01:10:16,560 --> 01:10:17,010 vrednost. 1369 01:10:17,010 --> 01:10:18,380 Njegova int vrednost. 1370 01:10:18,380 --> 01:10:21,580 >> JASON Hirschhorna: OK, tako da vzamemo lik 9, jo odštejemo od 1371 01:10:21,580 --> 01:10:25,820 znak 0, da bi dobili Dejansko število 9. 1372 01:10:25,820 --> 01:10:27,070 Sladko. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 In kako veš, da je znak 9 minus 0 lik je 9? 1375 01:10:37,000 --> 01:10:39,222 Kaj grafikon si pogledati? 1376 01:10:39,222 --> 01:10:43,130 >> Študent: Obstaja logično devet kraji, med 9. in 0. 1377 01:10:43,130 --> 01:10:44,620 Ali lahko pogledate v tabeli ASCII. 1378 01:10:44,620 --> 01:10:45,120 >> JASON Hirschhorna: ASCII tabela. 1379 01:10:45,120 --> 01:10:46,490 Ampak ja, ste pravilno, kot dobro. 1380 01:10:46,490 --> 01:10:47,780 Torej odštejemo 0. 1381 01:10:47,780 --> 01:10:49,010 Torej, zdaj imamo celo 9. 1382 01:10:49,010 --> 01:10:49,970 In kaj želimo narediti s tem? 1383 01:10:49,970 --> 01:10:54,970 Če imamo 90, je najprej celo smo, kar smo želeli storiti? 1384 01:10:54,970 --> 01:10:58,180 >> Študent: Jaz bi dal v začasno celo matrika, potem računati z njo 1385 01:10:58,180 --> 01:11:02,088 kasneje, da bi bilo v konec. 1386 01:11:02,088 --> 01:11:03,020 >> JASON Hirschhorna: OK. 1387 01:11:03,020 --> 01:11:06,990 >> Študent: Začnete lahko na koncu niz in nato premakniti naprej, tako 1388 01:11:06,990 --> 01:11:10,350 da vsakič, ko se premikate naprej, jo pomnožimo s 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON Hirschhorna: OK. 1390 01:11:10,830 --> 01:11:12,250 To se sliši kot precej prepričljivi ideja. 1391 01:11:12,250 --> 01:11:16,040 Začnemo lahko na koncu našega polja, in bomo lahko uporabili strleng. 1392 01:11:16,040 --> 01:11:17,030 Mi lahko uporabite strleng tukaj. 1393 01:11:17,030 --> 01:11:18,870 Dobili bomo dolžino našega niza. 1394 01:11:18,870 --> 01:11:20,100 Začnemo ob koncu. 1395 01:11:20,100 --> 01:11:29,170 In + prvo, vzameva, da celo število, in morda bomo ustvarili podobno 1396 01:11:29,170 --> 01:11:32,270 Nova celo spremenljivka up top, kjer bomo shranjevanje vsega. 1397 01:11:32,270 --> 01:11:37,340 Tako smo zanko skozi vsak char vs od nazaj na sprednji strani, odštejemo 0 in 1398 01:11:37,340 --> 01:11:42,790 potem smo jo vzeli, in glede na če je, ga pomnožite 1399 01:11:42,790 --> 01:11:45,860 z močjo 10. 1400 01:11:45,860 --> 01:11:50,644 Ker je prvi, kaj počnemo pomnožite desnih značaj, ki ga? 1401 01:11:50,644 --> 01:11:51,440 >> ŠTUDENT: 10 do 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON Hirschhorna: 10 do 0. 1403 01:11:53,170 --> 01:11:56,010 Kaj množimo drugega desna lik, ki ga? 1404 01:11:56,010 --> 01:11:57,450 >> Študent: [neslišno]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON Hirschhorna: Kaj? 1406 01:11:57,960 --> 01:11:59,150 >> ŠTUDENT: 10 do 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON Hirschhorna: 10 do 1. 1408 01:12:00,420 --> 01:12:03,754 Tretjih desna znak? 1409 01:12:03,754 --> 01:12:04,580 >> ŠTUDENT: 10 do 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON Hirschhorna: 10 do 2. 1411 01:12:05,350 --> 01:12:07,200 >> Študent: Oprostite, ne razumem kaj delamo tukaj. 1412 01:12:07,200 --> 01:12:08,640 >> JASON Hirschhorna: OK, pojdimo nazaj, potem. 1413 01:12:08,640 --> 01:12:12,500 Tako bomo dobili opravili v nizu. 1414 01:12:12,500 --> 01:12:14,470 Ker smo pisno atoi. 1415 01:12:14,470 --> 01:12:15,260 Tako smo dobili opravili v nizu. 1416 01:12:15,260 --> 01:12:17,640 Recimo, da se bova opravili v nizu 90. 1417 01:12:17,640 --> 01:12:19,930 >> Prva stvar, bomo storiti, je nastaviti Nova celo spremenljivka, ki smo 1418 01:12:19,930 --> 01:12:22,150 le, da bo ustvarjanje kot je naš novi celo število. 1419 01:12:22,150 --> 01:12:24,630 To je tisto, kar bomo vrniti na koncu. 1420 01:12:24,630 --> 01:12:30,110 Moramo iti skozi vsak lik v Niz ker smo določen 1421 01:12:30,110 --> 01:12:34,430 da se moramo dotakniti vsakega posebej in nato pa ga dodate na naš novi celo število. 1422 01:12:34,430 --> 01:12:36,330 >> Vendar ne moremo preprosto dodate kot številko. 1423 01:12:36,330 --> 01:12:38,270 Ne moremo sprejeti 9 in dodajte 9 na naše število. 1424 01:12:38,270 --> 01:12:40,560 To je odvisno od tega, kaj mesto je v nizu. 1425 01:12:40,560 --> 01:12:42,960 Bomo morali pomnožiti je z močjo 10. 1426 01:12:42,960 --> 01:12:45,580 Ker to je, kako bazo 10 del. 1427 01:12:45,580 --> 01:12:49,050 >> Tako bomo dobili dejanski značaj, ali dejansko število 1428 01:12:49,050 --> 01:12:53,860 Številka, z odštevanjem znak 0. od značaja 9, kot da je z 1429 01:12:53,860 --> 01:12:57,560 odšteje znakov kapitala iz ne glede na karakter smo imeli v enem od 1430 01:12:57,560 --> 01:12:58,120 te težave. 1431 01:12:58,120 --> 01:13:04,190 Tako da bomo dejansko dobili številko od 0 do 9 shrani kot realno število, mi pa bomo 1432 01:13:04,190 --> 01:13:07,590 pomnoži z močjo 10 odvisno o tem, kje smo v nizu. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 In potem se bomo, da ga dodate nazaj v naši novi integer spremenljivko. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Torej, kaj bi to izgledal bi treba - bomo pripraviti tukaj. 1437 01:13:37,890 --> 01:13:40,086 Če se bomo opravili v nizu 90 - 1438 01:13:40,086 --> 01:13:41,336 >> Študent: [neslišno]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON Hirschhorna: A atoi traja niz. 1441 01:13:45,540 --> 01:13:46,350 Tako da smo šli skozi gospodarstvo. 1442 01:13:46,350 --> 01:13:49,900 Mi se bomo opravili v 90. 1443 01:13:49,900 --> 01:13:51,540 Gremo od zadaj naprej. 1444 01:13:51,540 --> 01:13:53,920 Peljemo 0. 1445 01:13:53,920 --> 01:13:55,080 >> Študent: Žal mi je. 1446 01:13:55,080 --> 01:13:55,880 Mogoče je to neumno. 1447 01:13:55,880 --> 01:13:59,440 Če se bova opravili v nizu, zakaj je 90, kar smo 1448 01:13:59,440 --> 01:14:00,260 pridobivanje sprejet? 1449 01:14:00,260 --> 01:14:03,160 Ker 90 je celo število. 1450 01:14:03,160 --> 01:14:06,820 >> JASON Hirschhorna: Ker atoi traja vrvica in jo pretvori v celo število 1451 01:14:06,820 --> 01:14:08,320 predstavitev tega niza. 1452 01:14:08,320 --> 01:14:13,650 Toda niz 90 ni celo število 90 ali 90 številko. 1453 01:14:13,650 --> 01:14:17,920 Niz 90 je niz dveh ali trije znaki, pač pa 9. 1454 01:14:17,920 --> 01:14:22,740 značaj, 0 značaj, in backslash 0 značaj. 1455 01:14:22,740 --> 01:14:26,260 >> In mi pišete atoi, ker za Na primer, ko ste vzeli ukaz 1456 01:14:26,260 --> 01:14:30,230 Argument linijo, in je shranjena v argv, je shranjena kot niz. 1457 01:14:30,230 --> 01:14:32,940 Toda, če želite, da se ga obravnava kot številko, boste morali spremeniti to 1458 01:14:32,940 --> 01:14:34,700 dejansko število. 1459 01:14:34,700 --> 01:14:37,210 Ki smo enega od naših problematičnih sklopov. 1460 01:14:37,210 --> 01:14:38,800 , Ki smo ga v številnih naših problematičnih sklopov. 1461 01:14:38,800 --> 01:14:41,690 Vsakdo, ki se je celo kot argument v ukazni vrstici. 1462 01:14:41,690 --> 01:14:46,490 Tako da je, zakaj je naša funkcija atoi traja niz. 1463 01:14:46,490 --> 01:14:51,910 >> Torej še enkrat, v našem primeru tukaj, smo bo trajalo zadnjega. 1464 01:14:51,910 --> 01:14:55,050 Bomo odštejemo značaja 0 od nje, saj liki 0 1465 01:14:55,050 --> 01:14:58,810 odšteje z znakom 0 vam dejansko število 0, po katerem 1466 01:14:58,810 --> 01:15:00,950 math ASCII, kar počnemo. 1467 01:15:00,950 --> 01:15:04,870 >> Ker so znaki zastopali razlikuje od njihovega dejanskega - 1468 01:15:04,870 --> 01:15:08,830 značaja, npr male črke je 97. 1469 01:15:08,830 --> 01:15:10,260 To ni - ups! 1470 01:15:10,260 --> 01:15:13,290 To ni vse, kar bi pričakovali , da je, 0, npr. 1471 01:15:13,290 --> 01:15:16,200 Torej boste morali odšteti lik, da bi dobili 0. 1472 01:15:16,200 --> 01:15:18,950 >> Zato bomo storili, da tu da bi dobili dejansko število. 1473 01:15:18,950 --> 01:15:22,560 In potem se bomo, da ga pomnožite s Moč 10, odvisno, kjer je 1474 01:15:22,560 --> 01:15:27,030 je v nizu, nato pa, da in ga dodate na naš imetnika mesto 1475 01:15:27,030 --> 01:15:32,520 spremenljivka, da bomo lahko prišli do naš končni novo število. 1476 01:15:32,520 --> 01:15:35,080 Ali to smiselno za vsakogar? 1477 01:15:35,080 --> 01:15:37,730 >> Torej ne bomo kodo tem prav zdaj, ker smo 1478 01:15:37,730 --> 01:15:38,830 dobili v stiski s časom. 1479 01:15:38,830 --> 01:15:40,860 Opravičujem se za čas za to. 1480 01:15:40,860 --> 01:15:44,620 Ampak to je tisto, kar upam, da bi si biti sposoben narediti na kvizu - na 1481 01:15:44,620 --> 01:15:47,710 Navsezadnje se to psevdokoda izpisano. 1482 01:15:47,710 --> 01:15:50,840 >> In potem, če bi napisali psevdokoda, pravzaprav bi lahko to storite 1483 01:15:50,840 --> 01:15:51,490 precej hitro. 1484 01:15:51,490 --> 01:15:55,230 Vsaka linija komentarjev smo pisali smo tukaj pomeni, da približno 1485 01:15:55,230 --> 01:15:56,970 ena vrstica z oznako C. 1486 01:15:56,970 --> 01:16:01,780 Razglasitvi nove spremenljivke, pisanje zanke, nekateri odštevanje, nekateri 1487 01:16:01,780 --> 01:16:07,070 množenje in nekateri naloga. 1488 01:16:07,070 --> 01:16:09,020 Mi bi verjetno želeli tudi napišete povratni vod. 1489 01:16:09,020 --> 01:16:12,040 Lahko bi tudi želeli postaviti nekatere preglede tukaj. 1490 01:16:12,040 --> 01:16:12,655 Ja. 1491 01:16:12,655 --> 01:16:15,720 >> Študent: Torej lahko ravnamo i kot dejanski niz? 1492 01:16:15,720 --> 01:16:18,730 Ker vem, da je samo naslov. 1493 01:16:18,730 --> 01:16:22,090 Všeč mi je, kako bi dobili dolžino Niz se spusti skozi? 1494 01:16:22,090 --> 01:16:25,310 >> JASON Hirschhorna: Torej, kako si dolžino niza? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> Študent: strlen, ja. 1497 01:16:26,660 --> 01:16:30,550 Ampak si lahko s tako argument za to? 1498 01:16:30,550 --> 01:16:34,620 >> JASON Hirschhorna: Torej strlen traja char zvezda. 1499 01:16:34,620 --> 01:16:38,090 In iz tega sledi, da je zoglenel zvezda, in to ohranja štetje, dokler ne pride do 1500 01:16:38,090 --> 01:16:41,865 backslash 0. strlen je dejansko eden od drugih programov smo 1501 01:16:41,865 --> 01:16:42,850 grejo na kodo. 1502 01:16:42,850 --> 01:16:44,560 To je še ena dobra kodi. 1503 01:16:44,560 --> 01:16:47,270 Tista je malo lažje, ker če boš, da razmišljajo o tem, da 1504 01:16:47,270 --> 01:16:47,830 konceptualno - 1505 01:16:47,830 --> 01:16:51,620 Pravkar sem to rekel na glas - strlen sledi kazalec in gre naprej 1506 01:16:51,620 --> 01:16:54,210 štetje in sledenja, dokler pridete backslash 0. 1507 01:16:54,210 --> 01:16:56,530 >> ŠTUDENT: OK, razumem. 1508 01:16:56,530 --> 01:17:00,200 >> JASON Hirschhorna: Torej najboljše sreča na kvizu 0 jutri. 1509 01:17:00,200 --> 01:17:03,170 Če imate kakršnakoli vprašanja, bom biti zunaj po tem. 1510 01:17:03,170 --> 01:17:05,610 Vas prosimo, da email mi. 1511 01:17:05,610 --> 01:17:08,480 Dosegla svoj TF, če ste Ne na mojem oddelku, ali pa si moj 1512 01:17:08,480 --> 01:17:10,005 email, če želite. 1513 01:17:10,005 --> 01:17:13,140 >> Če želite znorel in pošljite me email, freakout email, bom 1514 01:17:13,140 --> 01:17:16,710 vam poslali nazaj, kot, smeška, ali, recimo, šala ali kaj podobnega. 1515 01:17:16,710 --> 01:17:18,190 Torej, vas prosimo, da to storite tudi. 1516 01:17:18,190 --> 01:17:20,750 Vso srečo še enkrat, in bom vidimo vse naslednji teden. 1517 01:17:20,750 --> 01:17:23,435