1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON Hirschhorn: Tere kuni A5, kõigile. 3 00:00:07,820 --> 00:00:11,270 Meil on põnev nädal ees, peamiselt seetõttu, et seal on nii palju uusi 4 00:00:11,270 --> 00:00:12,350 seisab selles toas. 5 00:00:12,350 --> 00:00:12,920 See on imeline. 6 00:00:12,920 --> 00:00:15,740 Palju sa siin juhuslikult mis on veelgi parem. 7 00:00:15,740 --> 00:00:18,220 Loodetavasti sa hoian meiega. 8 00:00:18,220 --> 00:00:20,220 >> Sel nädalal me veeta Suurem osa jagu 9 00:00:20,220 --> 00:00:21,870 valmistub viktoriini. 10 00:00:21,870 --> 00:00:26,580 Nii iga meie päevakorras, me räägime natuke ressursse klassi 11 00:00:26,580 --> 00:00:30,350 vaid ka tegema ja siis taas veedavad põhiosa klassi talking 12 00:00:30,350 --> 00:00:31,390 kohta küsimusi. 13 00:00:31,390 --> 00:00:33,900 Kui me oleme valmis vastates teie küsimusi või kui teie küsimustele 14 00:00:33,900 --> 00:00:39,010 loomulikult viib meid mõned kodeerimine, I on valimi probleeme midterms 15 00:00:39,010 --> 00:00:43,180 varem, et me koodi live rubriigis kokku, et toob kaasa ka mõned muud 16 00:00:43,180 --> 00:00:45,420 hea teemasid katta. 17 00:00:45,420 --> 00:00:48,280 >> Nii et esimene, kui oleme läbi käinud, et Viimase paari nädala jooksul, et teile meelde tuletada, 18 00:00:48,280 --> 00:00:51,700 poisid, seal on ton ressursside saadaval seda muidugi. 19 00:00:51,700 --> 00:00:55,020 Paljud neist on uskumatult kasulik et sa nagu te jätkuvalt 20 00:00:55,020 --> 00:00:57,280 õppida viktoriin 0, sest see teisipäeva pärastlõunal. 21 00:00:57,280 --> 00:00:59,630 Nii et kõik teist on olnud õpib veidi. 22 00:00:59,630 --> 00:01:02,640 >> On loengumaterjalid ja allikas koodi, mida peaks 23 00:01:02,640 --> 00:01:04,050 kindlasti kontrollida. 24 00:01:04,050 --> 00:01:05,019 Vaata püksid. 25 00:01:05,019 --> 00:01:07,470 Tutvu study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 Ja siis, mis on loetletud allpool, number muid ressursse. 27 00:01:11,770 --> 00:01:14,020 >> Jällegi viktoriin 0 on homme kell 01:00. 28 00:01:14,020 --> 00:01:18,230 Kui te pole seda veel teinud, siis kontrollige välja About Quiz 0 dokumenti 29 00:01:18,230 --> 00:01:21,370 Muidugi kodulehte nuputada kus te võtate viktoriini. 30 00:01:21,370 --> 00:01:25,770 Viktoriin algab kell 01:10 ja lõpeb 70 minutit hiljem. 31 00:01:25,770 --> 00:01:29,610 Nii et kui sa näidata üles pärast 01:10, sa oled hakka, et palju vähem minutit 32 00:01:29,610 --> 00:01:30,940 kui 70 võtta viktoriini. 33 00:01:30,940 --> 00:01:33,570 Seega veenduge, et sa oled seal õigel ajal. 34 00:01:33,570 --> 00:01:38,690 Kui oled pikendamine õpilane või on mõned teised katsetamine kaalutlusi, 35 00:01:38,690 --> 00:01:40,400 ei pruugi olla 01:00 homme. 36 00:01:40,400 --> 00:01:43,540 Aga jälle, vaadake Info Quiz 0 dokument, et sa tead, kui 37 00:01:43,540 --> 00:01:44,760 te võtate viktoriini. 38 00:01:44,760 --> 00:01:46,440 Ma kirjutasin 75 minutit siin. 39 00:01:46,440 --> 00:01:48,580 Ma arvan, et see on õige, mitte 70. 40 00:01:48,580 --> 00:01:53,420 >> See hõlmab kõiki materjale nädal 0 eelmise nädala loengu kolmapäeval. 41 00:01:53,420 --> 00:01:59,350 Ja jälle see viktoriin kohta, et dokument, saad ühe kahepoolne ja 8 42 00:01:59,350 --> 00:02:03,770 1/2 11 paberilehte, et saate kasutada kui ajal märkmeid tegema. 43 00:02:03,770 --> 00:02:08,570 Paljud inimesed, kui mitte enamik inimesi on Leiti, et kõige kasulik viis 44 00:02:08,570 --> 00:02:11,970 õppida viktoriin on teha uuring lehel 45 00:02:11,970 --> 00:02:13,730 üks-sider, oma. 46 00:02:13,730 --> 00:02:17,710 Nii vaatame viimase ones kui olete näinud viimase ones. 47 00:02:17,710 --> 00:02:19,960 Jõuda sõpru näha, mida nad hakanud ise. 48 00:02:19,960 --> 00:02:23,610 >> Aga käed ette, kuidas oskad Uuring on läbida kõik ja 49 00:02:23,610 --> 00:02:26,530 nikerdama seda ette, mida peaks või ei kuulu selle lehe 50 00:02:26,530 --> 00:02:30,570 paber, sest see on lihtsalt tõesti kasulik viis, kuidas saate veenduda, 51 00:02:30,570 --> 00:02:33,620 sa lähed läbi kõik ja mõned tuttavad on. 52 00:02:33,620 --> 00:02:36,690 Enamik inimesi, leiame, kuigi nad on paberileht istub 53 00:02:36,690 --> 00:02:39,840 nende kõrval on viktoriin, ärge lülitage seda, sest jällegi, et väga 54 00:02:39,840 --> 00:02:43,290 protsessi läbimas info on aidanud neid õppima. 55 00:02:43,290 --> 00:02:45,370 >> Kas kellelgi on küsimusi umbes viktoriin 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 On kõik - 58 00:02:51,450 --> 00:02:53,230 Ma ei kavatse seda teha käetõstmisega. 59 00:02:53,230 --> 00:02:53,550 Pole viga. 60 00:02:53,550 --> 00:02:54,790 Ma tahtsin küsida, kes aastal asus. 61 00:02:54,790 --> 00:02:58,360 Aga ma ei taha sind kõik ei tõsta käed. 62 00:02:58,360 --> 00:03:01,290 Nii nagu ma ütlesin - jah, Avi, edasi minna. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Mida oleks kasulik asi panna üks piipar? 64 00:03:04,205 --> 00:03:05,875 >> Õpilane: See on sinust. 65 00:03:05,875 --> 00:03:08,210 >> JASON Hirschhorn: Sa saad kasutada oma otsuse. 66 00:03:08,210 --> 00:03:13,220 Kasulikud asjad panna üks piipar, Kui teil on segaduses, suur O 67 00:03:13,220 --> 00:03:17,510 runtime erinevate otsingud ja kehvasti, pane see sinna sisse 68 00:03:17,510 --> 00:03:18,760 mugav dändi diagrammi. 69 00:03:18,760 --> 00:03:22,250 Nii, kui sa palusid, et viktoriin, siis ei ole vaja proovida ja joonis 70 00:03:22,250 --> 00:03:23,560 it out või põhjus läbi tööaega. 71 00:03:23,560 --> 00:03:24,730 Sa võid kopeerida selle alla. 72 00:03:24,730 --> 00:03:28,320 Kui te vaatate viktoriinid minevikus palju korda, siis jookseb aeg küsimusi. 73 00:03:28,320 --> 00:03:34,150 Nii oleks näiteks hea asi panna oma üks-piipar. 74 00:03:34,150 --> 00:03:37,450 >> Muud head asjad panna, kui sa oled segaduses, kuidas kuulutada 75 00:03:37,450 --> 00:03:40,570 funktsiooni või mida eri osade Funktsiooni deklaratsioon on kirjutada 76 00:03:40,570 --> 00:03:43,400 et seal, geneeriline versioon ja siis võib-olla näiteks. 77 00:03:43,400 --> 00:03:47,290 Kui oled segaduses suunanäitajaks, skeem, kuidas viiteid töö 78 00:03:47,290 --> 00:03:48,660 ilmselt tõesti kasulik. 79 00:03:48,660 --> 00:03:52,440 Kui oled segaduses, rekursioon, proovi rekursiivne funktsioon on olemas 80 00:03:52,440 --> 00:03:54,980 võib osutuda ka väga kasulik. 81 00:03:54,980 --> 00:03:57,290 Kas see annab teile mõned ideed? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Sa pead aru saama, kogu koostamise protsessi, nagu 83 00:04:01,820 --> 00:04:03,220 kuidas see kõik toimib? 84 00:04:03,220 --> 00:04:06,620 >> JASON Hirschhorn: Everything mis on kaetud saaks 85 00:04:06,620 --> 00:04:08,060 näidata üles viktoriini. 86 00:04:08,060 --> 00:04:08,930 Küsimused - 87 00:04:08,930 --> 00:04:11,300 kuid jällegi, mõned asjad on kaalutud kõrgemalt kui teised. 88 00:04:11,300 --> 00:04:14,330 Mõned asjad on tulnud jälle ja uuesti klassi, in 89 00:04:14,330 --> 00:04:15,590 loeng ja sektsioon. 90 00:04:15,590 --> 00:04:17,220 Muud asjad ei ole tulla, et tihti. 91 00:04:17,220 --> 00:04:22,900 >> Me oleme palju rääkinud # include ja -L midagi ja mida need tähendavad 92 00:04:22,900 --> 00:04:24,390 koostamise protsessi. 93 00:04:24,390 --> 00:04:29,120 Me oleme palju rääkinud GDB, klammerduma, neid erinevaid lippe, mida me kasutame, kui 94 00:04:29,120 --> 00:04:33,100 oleme kompileerida midagi, ja mis make15 näiteks tõesti 95 00:04:33,100 --> 00:04:34,510 tähendab ja tõepoolest. 96 00:04:34,510 --> 00:04:38,110 Me ei räägi, kui palju iga samm 97 00:04:38,110 --> 00:04:39,240 koostamise protsessi. 98 00:04:39,240 --> 00:04:40,410 Me oleme ikka veel rääkinud. 99 00:04:40,410 --> 00:04:42,550 Nii et see on ikka midagi, mida peaksid olema tuttavad. 100 00:04:42,550 --> 00:04:44,610 Aga jälle, me ei kavatse olla - 101 00:04:44,610 --> 00:04:49,140 asjad, mis tulevad sagedamini klass on tõenäolisem, et tulla enam 102 00:04:49,140 --> 00:04:52,495 sageli ja rängemalt kaalutud viktoriini. 103 00:04:52,495 --> 00:04:53,280 >> Lahe. 104 00:04:53,280 --> 00:04:54,580 Muid küsimusi viktoriin 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, nii et ma panin nimekirja teemasid laual. 107 00:05:00,050 --> 00:05:01,550 Läksin läbi õppekava. 108 00:05:01,550 --> 00:05:07,340 Läksin läbi läbivaatamise sektsiooni eile ja slaidid üles 109 00:05:07,340 --> 00:05:13,710 koos mittetäielik nimekiri teemadel et meil on kaetud nii kaugele CS50 110 00:05:13,710 --> 00:05:16,800 ja asju, mis võivad ilmuvad viktoriini. 111 00:05:16,800 --> 00:05:19,900 Nii, et ma ei lähe läbi iga üks neist. 112 00:05:19,900 --> 00:05:22,370 See võtab palju rohkem aega kui praegu. 113 00:05:22,370 --> 00:05:26,880 Aga ma panen selle siia, et loodetavasti jog oma mälu, et asju, mis võivad 114 00:05:26,880 --> 00:05:28,420 või ei pruugi olla nii tuttav teid. 115 00:05:28,420 --> 00:05:32,850 >> Ja ma armastan kulutada suurema osa lõik vastates küsimustele 116 00:05:32,850 --> 00:05:35,130 need teemad, teemad, siin ei käsitleta. 117 00:05:35,130 --> 00:05:36,130 Me võime kirjutada pseudo kood. 118 00:05:36,130 --> 00:05:40,010 Me võime kirjutada tõeline kood tagada, et teil - 119 00:05:40,010 --> 00:05:44,280 Ma võin vastata teie küsimusele ning aitab kõik täiesti aru 120 00:05:44,280 --> 00:05:48,330 palju neid teemasid, et sa tunned ennast valmis ja mugav laskumist 121 00:05:48,330 --> 00:05:50,150 viktoriin homme. 122 00:05:50,150 --> 00:05:52,300 Nii et loe üle nimekirja. 123 00:05:52,300 --> 00:05:54,780 Sa loodetavasti jõudnud jagu mõned küsimused ka. 124 00:05:54,780 --> 00:05:58,480 Kui olete valmis, tõsta oma käsi ja me alustada. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Pidage meeles, teil on küsimusi, ei ole rumalaid küsimusi. 127 00:06:05,200 --> 00:06:06,250 Oleme kuulnud, et palju. 128 00:06:06,250 --> 00:06:09,490 Ja teil on küsimusi, olen valmis kihla, et paljud inimesed nii 129 00:06:09,490 --> 00:06:11,740 istun siin ja vaatan Internetis on samuti. 130 00:06:11,740 --> 00:06:13,770 Nii saab ainult aidata inimestel küsides küsimusi. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: hinnavahemikus korstnat ja hunnik, kas on eelnevalt eraldatud 133 00:06:18,040 --> 00:06:22,880 protsent mälu, mis on määratletud kui see on virnas või hunnik? 134 00:06:22,880 --> 00:06:25,010 Või kuidas see toimib täpselt? 135 00:06:25,010 --> 00:06:26,230 >> JASON Hirschhorn: Hea küsimus. 136 00:06:26,230 --> 00:06:28,640 Ma lähen tagasi jälgida natuke. 137 00:06:28,640 --> 00:06:30,910 Kas igaüks - 138 00:06:30,910 --> 00:06:31,660 palun olla aus siin. 139 00:06:31,660 --> 00:06:34,130 Ma tean, et ma palun teil tõsta oma käsi ees oma eakaaslastega. 140 00:06:34,130 --> 00:06:38,510 Aga on olemas inimesi, kes tunnevad ebamugavalt stack ja hunnik 141 00:06:38,510 --> 00:06:42,980 ja tahaks minna üle, et ja mida need tähendab? 142 00:06:42,980 --> 00:06:43,880 Tõsta käsi, kui - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 Aitäh. 145 00:06:45,120 --> 00:06:48,420 Nii et me läheme üle korstna ja hunnik tõesti kiiresti ning seejärel 146 00:06:48,420 --> 00:06:50,370 liikuda vastates teie küsimusele. 147 00:06:50,370 --> 00:06:58,250 >> Nii et kui me venitama box esindama mälu arvutisse, mis on vaid mõned 148 00:06:58,250 --> 00:07:02,160 asju, mis lähevad selles kastis? 149 00:07:02,160 --> 00:07:03,630 Main. 150 00:07:03,630 --> 00:07:04,020 Põhiülesanne. 151 00:07:04,020 --> 00:07:05,890 Kust peamised minna? 152 00:07:05,890 --> 00:07:08,090 >> Õpilane: [kuuldamatu]. 153 00:07:08,090 --> 00:07:09,390 >> JASON Hirschhorn: nii me pane peamine siin. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Mida veel läheb see kast? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> Üliõpilane: funktsioonid, mis te helistate. 158 00:07:18,140 --> 00:07:19,020 >> JASON Hirschhorn: funktsioonid mida me nimetame. 159 00:07:19,020 --> 00:07:20,440 Ja kui nad lähevad? 160 00:07:20,440 --> 00:07:21,300 >> Üliõpilane: virnas. 161 00:07:21,300 --> 00:07:22,380 >> JASON Hirschhorn: nad minna virna. 162 00:07:22,380 --> 00:07:27,350 Nii et me nimetame seda asi siin pinu. 163 00:07:27,350 --> 00:07:31,880 Ja üleval on meil hunnik. 164 00:07:31,880 --> 00:07:35,450 Nii mälu ei ole kast lihtsalt niimoodi. 165 00:07:35,450 --> 00:07:37,330 Aga see on tegelikult üsna sarnased. 166 00:07:37,330 --> 00:07:40,840 See saab olema palju kastid üle ja üle, sõltuvalt sellest, kui suur on teie 167 00:07:40,840 --> 00:07:43,730 arvuti on või kui suur on teie mälu on. 168 00:07:43,730 --> 00:07:46,950 >> At viisi kraami "alt" on virnas. 169 00:07:46,950 --> 00:07:50,880 Ja seal on mitu asja et minna virna. 170 00:07:50,880 --> 00:07:53,840 Ja need sõltuvad funktsioonid olete oma koodi. 171 00:07:53,840 --> 00:07:57,780 Teil on alati üks funktsiooni kood kutsus peamine, et seal on alati 172 00:07:57,780 --> 00:08:00,480 jagu maha siin Kestab pühendatud peamine. 173 00:08:00,480 --> 00:08:03,980 >> Need osad on seadmes kutsutakse stack raame. 174 00:08:03,980 --> 00:08:09,580 Kui helistate teise funktsiooni, st peamise kutsub binaarne otsing funktsioon, 175 00:08:09,580 --> 00:08:11,075 paneme teise raami pinu. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Täpsemalt me annetada tüki mälu meie 178 00:08:17,320 --> 00:08:22,960 arvuti salvestada binaarne otsing kohalik muutujad ja joosta binaarne 179 00:08:22,960 --> 00:08:24,150 Otsi koodi. 180 00:08:24,150 --> 00:08:26,810 >> Nii me nimetame binaarne otsing. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 Selle tüki mälu, me salvestada oma kohalikud muutujad. 183 00:08:33,340 --> 00:08:35,270 Me säilitada oma printf kõned. 184 00:08:35,270 --> 00:08:38,159 Mis ka ei juhtuks, et funktsioon on läheb hoitakse seal. 185 00:08:38,159 --> 00:08:40,350 Binary otsing läheb täide. 186 00:08:40,350 --> 00:08:42,210 See saab lõpetada täitmist. 187 00:08:42,210 --> 00:08:47,450 Mis on sõna C, mis tähendab et peaks säilima 188 00:08:47,450 --> 00:08:49,306 täitma selle täitmiseks? 189 00:08:49,306 --> 00:08:50,040 >> Üliõpilane: Return. 190 00:08:50,040 --> 00:08:50,870 >> JASON Hirschhorn: Tagasi. 191 00:08:50,870 --> 00:08:53,230 Nii et kui näed tagastamise avalduse funktsiooni otsas 192 00:08:53,230 --> 00:08:54,350 kui see tabab seda. 193 00:08:54,350 --> 00:08:56,740 Nii binaarne otsing tabab selle tagasi. 194 00:08:56,740 --> 00:09:01,360 See osa mälu sisuliselt vabanenud. 195 00:09:01,360 --> 00:09:03,510 Ja peamine läheb tagasi täitmine. 196 00:09:03,510 --> 00:09:07,240 Seega peamine peatub kus oli kõne binaarne otsing, saaksin tagastatav väärtus, 197 00:09:07,240 --> 00:09:08,700 ja jätkata täitmist. 198 00:09:08,700 --> 00:09:10,840 See freimi lähevad ära. 199 00:09:10,840 --> 00:09:14,810 >> Kui me nimetame rekursiivne funktsioon, mis on funktsioon, mis nimetab ennast üle 200 00:09:14,810 --> 00:09:18,480 ja üle selle, me võiks saada - ütleme, et me tegin binaarne otsing rekursiivselt. 201 00:09:18,480 --> 00:09:21,520 Me võime saada binaarne otsing versioon üks, Kahendotsingupuu kaks, binaarne otsing 202 00:09:21,520 --> 00:09:24,090 kolm, binaarne otsing neli, binaarne otsing viis. 203 00:09:24,090 --> 00:09:27,950 Ja siis see viimane Kahendotsingupuu viis tabab tugipunkti ja korstna 204 00:09:27,950 --> 00:09:31,010 raamid läheb tagasi ja hoida sulgemine kuni me naasta peamine. 205 00:09:31,010 --> 00:09:32,530 Me võime minna üle rekursioon natuke. 206 00:09:32,530 --> 00:09:35,530 Aga see kõik tähendab, kui sa oled kutsudes mitmeid funktsioone korraga, 207 00:09:35,530 --> 00:09:39,250 seal saad mitu korstnat raamid pinu. 208 00:09:39,250 --> 00:09:42,900 >> Kuhja, teiselt poolt, kuni siin ei ole ülesandeid, 209 00:09:42,900 --> 00:09:44,380 mitte kohalike muutujate. 210 00:09:44,380 --> 00:09:48,920 See on dünaamiliselt eraldatud muutujad. 211 00:09:48,920 --> 00:09:57,210 Niisiis on need muutujad, mis võivad olla vormindatud kas põhi-või 212 00:09:57,210 --> 00:09:58,640 funktsioon, mis peamine helistada. 213 00:09:58,640 --> 00:10:00,790 Kõikjal oma kood, nad saab initsialiseerida. 214 00:10:00,790 --> 00:10:04,360 Ja initsialiseerida dünaamiliselt eraldatud muutuja. 215 00:10:04,360 --> 00:10:06,970 Mis funktsiooni C me kasutame? 216 00:10:06,970 --> 00:10:07,600 >> Üliõpilane: malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON Hirschhorn: malloc. 218 00:10:09,240 --> 00:10:10,800 Sa kutsud malloc. 219 00:10:10,800 --> 00:10:12,260 Sa saad ruumi mälu. 220 00:10:12,260 --> 00:10:15,020 Ja et ruumi mälu on hunnik. 221 00:10:15,020 --> 00:10:18,840 Ja et ruumi mälu jääb seal seni, kuni te helistada tasuta. 222 00:10:18,840 --> 00:10:22,670 >> Nii dünaamiliselt eraldatud muutujad hunnik on olemas nii kaua, kui te 223 00:10:22,670 --> 00:10:25,250 tahan, et nad on olemas ja nad ei ära minema, kuni te selgesõnaliselt 224 00:10:25,250 --> 00:10:26,760 öelda, et nad minema. 225 00:10:26,760 --> 00:10:29,670 Saate luua neid ühes funktsioon. 226 00:10:29,670 --> 00:10:31,930 See funktsioon on virnas raam läheb ära. 227 00:10:31,930 --> 00:10:35,490 Aga see muutuja on veel olemas hunnik kuni ta on vabastatud, 228 00:10:35,490 --> 00:10:39,650 potentsiaalselt selle funktsiooni järgi, mida nimetatakse binaarne otsing või mis iganes. 229 00:10:39,650 --> 00:10:42,580 >> Nii et need, hunnik muutujaid seal nii kaua, kui soovite 230 00:10:42,580 --> 00:10:43,490 neil seal. 231 00:10:43,490 --> 00:10:46,090 Ja nad saavad panna siin. 232 00:10:46,090 --> 00:10:47,450 Ja siis järgmine saab panna siin. 233 00:10:47,450 --> 00:10:50,210 Nad saan täidetud, ning nad seal seni, kuni te helistada tasuta. 234 00:10:50,210 --> 00:10:52,870 >> Ja sisuliselt hunnik ja korstna saada Marcuse küsimusele 235 00:10:52,870 --> 00:10:54,500 kasvavad üksteise suunas. 236 00:10:54,500 --> 00:10:57,730 Ja kui nad joosta üksteist, olete kasutanud ära kogu mälu oma 237 00:10:57,730 --> 00:11:01,330 arvuti ja teie programm loobuda sest sa ei pea enam mälu 238 00:11:01,330 --> 00:11:02,420 vasak kasutada. 239 00:11:02,420 --> 00:11:07,290 Nende vahel on potentsiaalselt muid asju. 240 00:11:07,290 --> 00:11:10,980 Aga ulatus selle kursuse, siis ei pea selle pärast muretse. 241 00:11:10,980 --> 00:11:12,020 >> Nii et see oli vastus Teie küsimusele. 242 00:11:12,020 --> 00:11:13,520 Ärge selle pärast muretsege. 243 00:11:13,520 --> 00:11:15,550 Aga see oli pikk vastus. 244 00:11:15,550 --> 00:11:17,800 Kõik, mida vaja teada on, hunnik ja korstnat - 245 00:11:17,800 --> 00:11:18,900 üks algab alt. 246 00:11:18,900 --> 00:11:19,570 Stack teeb. 247 00:11:19,570 --> 00:11:20,790 Hunnik on seal üleval. 248 00:11:20,790 --> 00:11:21,990 Nad kasvavad üksteisele lähemale. 249 00:11:21,990 --> 00:11:23,110 >> Ja kui nad puudutada, see on probleem. 250 00:11:23,110 --> 00:11:24,500 Sa jooksid välja mälu. 251 00:11:24,500 --> 00:11:28,760 Aga ka, lisaks teada, kus need, mis on salvestatud nii 252 00:11:28,760 --> 00:11:30,512 korstnat ja hunnik. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: kui nad põrkuvad, on see, et stack overflow? 255 00:11:33,570 --> 00:11:35,670 >> JASON Hirschhorn: kui nad põrkuvad, see pole stack overflow. 256 00:11:35,670 --> 00:11:38,340 Stack overflow on erinev ala et me ei lähe üle, kui soovite. 257 00:11:38,340 --> 00:11:40,020 OK, me tuleme tagasi, et natuke. 258 00:11:40,020 --> 00:11:42,730 >> Üliõpilane: Mis on sõna, mida nimetatakse kui nad tabanud üksteise 259 00:11:42,730 --> 00:11:44,450 korstnat ja hunnik? 260 00:11:44,450 --> 00:11:46,640 >> JASON Hirschhorn: Praegu ärge muretsege. 261 00:11:46,640 --> 00:11:47,750 Lihtsalt tean - 262 00:11:47,750 --> 00:11:50,530 Ma vastan sellele küsimusele peale tunde. 263 00:11:50,530 --> 00:11:52,680 Kui nad satuvad üksteise otsa mälu, sest seal ei ole enam 264 00:11:52,680 --> 00:11:53,330 ruumi seal. 265 00:11:53,330 --> 00:11:55,450 >> Üliõpilane: Vabandust, mis see seg süü? 266 00:11:55,450 --> 00:11:58,710 >> JASON Hirschhorn: segment viga võib nõudnud - 267 00:11:58,710 --> 00:12:02,240 see sõltub miks seg süü on kutsutud. 268 00:12:02,240 --> 00:12:06,260 Mõnikord oma stack overflow, siis see öelda seg viga, kui viga. 269 00:12:06,260 --> 00:12:08,180 >> Üliõpilane: Mis viite mahavõtmine null muutuja? 270 00:12:08,180 --> 00:12:10,040 Kas see seg süü? 271 00:12:10,040 --> 00:12:11,480 >> JASON Hirschhorn: viite mahavõtmine null pointer - 272 00:12:11,480 --> 00:12:17,850 OK, nii et kui teil on pointer, et sa mis võrdne null, suunanäitajaks, tagasikutsumine, 273 00:12:17,850 --> 00:12:20,270 store mälu aadressid nende väärtused. 274 00:12:20,270 --> 00:12:23,660 Ja null pointer on sisuliselt ladustamiseks 0, 0-nda 275 00:12:23,660 --> 00:12:26,670 käsitleda muutuja. 276 00:12:26,670 --> 00:12:30,010 Nii 0x, 0, 0, 0, 0, jne. 277 00:12:30,010 --> 00:12:35,030 Et 0-nda aadress mällu, et see pole meie pilt, mis on seal üleval 278 00:12:35,030 --> 00:12:38,800 kuskil, mis on reserveeritud jaoks arvuti. 279 00:12:38,800 --> 00:12:40,130 Me ei tohi seda puudutada. 280 00:12:40,130 --> 00:12:44,680 >> Nii et kui teie programm on täidesaatva, kui midagi üritab minna mälu 281 00:12:44,680 --> 00:12:48,990 aadress 0, see teab, et see on tühi väärtus. 282 00:12:48,990 --> 00:12:50,820 Ta ei tea midagi peaks seal olema. 283 00:12:50,820 --> 00:12:53,420 Nii et kui te proovida ja kasutada midagi seal ja ravida midagi seal või 284 00:12:53,420 --> 00:12:58,355 üritavad minna sellesse asukohta, oled hakka seg rike või viga. 285 00:12:58,355 --> 00:13:00,520 Kas see vastab su küsimusele? 286 00:13:00,520 --> 00:13:03,170 >> Ja nüüd me läheme tagasi korstnat ülevoolu. 287 00:13:03,170 --> 00:13:09,560 Asjad korstnat, kui teiega on näinud, et - Joonistame lähedal 288 00:13:09,560 --> 00:13:11,966 up freimi. 289 00:13:11,966 --> 00:13:15,050 Kas kõik nägid seda? 290 00:13:15,050 --> 00:13:16,650 Nii et meil on meie freimi. 291 00:13:16,650 --> 00:13:23,260 Me säästa massiivi kui kohaliku muutujal seda funktsiooni. 292 00:13:23,260 --> 00:13:29,510 Nii öelda meie array on viis laigud. 293 00:13:29,510 --> 00:13:33,230 Kõik viis nende salvestatakse selle freimi. 294 00:13:33,230 --> 00:13:37,540 >> Kui hakkame kirjalikult kaugemale piire selle massiivi - 295 00:13:37,540 --> 00:13:43,990 Nii et kui me hakake arvesse, Ütleme, et see on 0. 296 00:13:43,990 --> 00:13:46,800 Need on viis indeksid meie massiivi. 297 00:13:46,800 --> 00:13:50,980 Kui hakkame kirjutades sinna index 5, mis meil ei ole, kui meil on 298 00:13:50,980 --> 00:13:55,900 massiivi suurus 5, hakkame kirjutades sinna punktid 6, 7, 8, 9, saame Stack 299 00:13:55,900 --> 00:13:57,960 Overflow viga. 300 00:13:57,960 --> 00:14:00,510 >> Üldiselt see ei ole - 301 00:14:00,510 --> 00:14:04,910 siis ilmselt hätta kui te lähete üle ühe. 302 00:14:04,910 --> 00:14:08,640 Aga üldiselt, siis satuvad enamik probleeme, kui te lähete üle palju 303 00:14:08,640 --> 00:14:12,770 ja sa lähed seni üle, mis sa kirjutad üle saatja aadressi selle 304 00:14:12,770 --> 00:14:16,080 funktsioon, mis paikneb põhja freimi. 305 00:14:16,080 --> 00:14:16,520 >> Sest, eks? 306 00:14:16,520 --> 00:14:17,670 You - in - sorry. 307 00:14:17,670 --> 00:14:18,550 Ei ", sest õige." 308 00:14:18,550 --> 00:14:20,470 >> In freimi, siis on kohaliku muutujad. 309 00:14:20,470 --> 00:14:27,090 Praegu väga põhja pinu raam on saatja aadress. 310 00:14:27,090 --> 00:14:28,790 See, kui funktsioon läheb, kui see on läbi. 311 00:14:28,790 --> 00:14:33,750 Ja kui te kirjutate, et tagasipöördumine aadress, siis millal see freimi, 312 00:14:33,750 --> 00:14:36,680 kui sa lähed läbi korstna raam ja täidesaatva iga rida, sa oled 313 00:14:36,680 --> 00:14:40,350 lähen oma uue saatja aadress , mis on kirjutatud seal asemel 314 00:14:40,350 --> 00:14:40,910 tegelikule. 315 00:14:40,910 --> 00:14:45,050 Ja see, kuidas me oleme näinud mõned turbemurrete 316 00:14:45,050 --> 00:14:46,780 võib juhtuda arvutitega. 317 00:14:46,780 --> 00:14:52,760 >> Nii stack overflow, lühidalt, on see, kui sa kirjutada osa korstnat 318 00:14:52,760 --> 00:14:55,440 sa peaksid kasutama, kohaliku muutuja sa peaksid kasutama ja 319 00:14:55,440 --> 00:14:58,070 eriti siis, kui hakkate üle kirjutada tähtsad asjad 320 00:14:58,070 --> 00:14:59,100 saatja aadress. 321 00:14:59,100 --> 00:15:00,090 Ja see, kui sa saad viga. 322 00:15:00,090 --> 00:15:03,980 Või äkki isegi siis võiks alustada isegi kirjutades sinna - 323 00:15:03,980 --> 00:15:05,370 öelda binaarne otsing oli õigus eespool peamised. 324 00:15:05,370 --> 00:15:07,790 Kui te overwrote palju, siis võiks kirjutada meie peamine. 325 00:15:07,790 --> 00:15:10,230 Aga üldiselt, sa saad viga enne Seejärel, sest arvuti teab 326 00:15:10,230 --> 00:15:12,270 sa teed midagi, mida sa ei peaks seda tegema. 327 00:15:12,270 --> 00:15:12,560 Jah. 328 00:15:12,560 --> 00:15:13,910 >> Üliõpilane: Mis vahet vahel stack overflow 329 00:15:13,910 --> 00:15:16,940 ja buffer overflow? 330 00:15:16,940 --> 00:15:19,420 >> JASON Hirschhorn: Buffer overflow on üldisemat tüüpi 331 00:15:19,420 --> 00:15:20,395 mida ma just kirjeldasin. 332 00:15:20,395 --> 00:15:22,610 >> Üliõpilane: Nii stack overflow on näiteks buffer overflow. 333 00:15:22,610 --> 00:15:23,420 >> JASON Hirschhorn: Täpselt. 334 00:15:23,420 --> 00:15:28,700 See on massiiv me ei mõtle nagu puhvris ruumi asjad sisse minna 335 00:15:28,700 --> 00:15:30,600 See on stack buffer overflow. 336 00:15:30,600 --> 00:15:33,210 Meil võiks olla hunnik buffer overflow. 337 00:15:33,210 --> 00:15:36,870 Kui oli puhvrit, mis on sageli on massiiv hunnik, ja me 338 00:15:36,870 --> 00:15:40,600 overwrote neid piire, siis me on hunnik buffer overflow. 339 00:15:40,600 --> 00:15:44,870 >> Ja väljapoole seda muidugi nad avastatud veidi erinevalt. 340 00:15:44,870 --> 00:15:48,040 Koostaja on eriline kuidas avastada iga. 341 00:15:48,040 --> 00:15:50,660 Aga buffer overflow on üldisem tüüpi, mida ma kirjeldasin, 342 00:15:50,660 --> 00:15:54,090 mis oli stack buffer overflow. 343 00:15:54,090 --> 00:15:56,240 Kas see vastab su küsimusele? 344 00:15:56,240 --> 00:15:57,910 Sweet. 345 00:15:57,910 --> 00:16:01,850 >> Kas on muid küsimusi, sellega seotud korstnat või hunnik? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Jah. 348 00:16:05,510 --> 00:16:08,220 >> Õpilane: Ma tean, et sa pead tasuta stringid sest nad on hunnik 349 00:16:08,220 --> 00:16:09,305 ja sa ei taha lekkima mälu. 350 00:16:09,305 --> 00:16:12,240 Aga sa pead vabastama globaalsed muutujad ja värki? 351 00:16:12,240 --> 00:16:14,335 Või on nad automaatselt vabanenud? 352 00:16:14,335 --> 00:16:15,700 >> JASON Hirschhorn: Hea küsimus. 353 00:16:15,700 --> 00:16:22,340 Nii CS50.H loome seda asja eest, et sa helistasid string. 354 00:16:22,340 --> 00:16:23,800 String on tõesti, mida? 355 00:16:23,800 --> 00:16:24,810 >> Üliõpilane: Char star. 356 00:16:24,810 --> 00:16:29,180 >> JASON Hirschhorn: char star, pointer tärk viit 357 00:16:29,180 --> 00:16:30,650 array tähemärki. 358 00:16:30,650 --> 00:16:32,210 Seda string. 359 00:16:32,210 --> 00:16:36,050 Nii et me peame vabastama, sest getString, mis meil kasutada palju - 360 00:16:36,050 --> 00:16:38,370 string nimi võrdub getString - 361 00:16:38,370 --> 00:16:43,560 et mallocs meile mõned mälu hunnik ja siis naaseb kursor 362 00:16:43,560 --> 00:16:47,230 esimene märk, et string, char star. 363 00:16:47,230 --> 00:16:52,760 >> Seega näiliselt, kui sa ei ole olnud kirjalikult tasuta kõigis oma stringid 364 00:16:52,760 --> 00:16:55,600 et olete kutsutud seni, pead välja lekib mõned mälu. 365 00:16:55,600 --> 00:16:57,430 Muidugi me ei rääkinud see, et keegi ei saanud sisse 366 00:16:57,430 --> 00:16:58,520 vaeva teeb. 367 00:16:58,520 --> 00:16:59,980 Aga läheb edasi, jah. 368 00:16:59,980 --> 00:17:03,990 Kui helistate getString, oled mallocing ruumi hunnik. 369 00:17:03,990 --> 00:17:07,640 Ja kui sa ei helista tasuta hiljem, et string, sul on mälu leke. 370 00:17:07,640 --> 00:17:09,440 Seda vastust oma küsimusele? 371 00:17:09,440 --> 00:17:10,606 >> Jah 372 00:17:10,606 --> 00:17:15,020 >> Õpilane: Niisiis, mida teha, et me kasutame tasuta õigus enne naasmist? 373 00:17:15,020 --> 00:17:18,510 Nagu piires, ma arvan, et kui ütleme, nagu int main jooksul 374 00:17:18,510 --> 00:17:24,410 ulatus kood, mis on nendes looksulg, eks enne - 375 00:17:24,410 --> 00:17:26,140 sa tead, kus sa tavaliselt pannakse tagasi. 376 00:17:26,140 --> 00:17:27,950 Kas paned tasuta enne seda? 377 00:17:27,950 --> 00:17:31,000 >> JASON Hirschhorn: Nii saab asetada tasuta kus iganes sa tahad panna tasuta. 378 00:17:31,000 --> 00:17:33,810 Kuna need on dünaamiliselt eraldatud muutujad, sest nad ei 379 00:17:33,810 --> 00:17:39,170 elama väljapoole eriti funktsioon, kui te helistate malloc sisse 380 00:17:39,170 --> 00:17:44,140 eraldi funktsiooni, näiteks getString, võite helistada tasuta peamine. 381 00:17:44,140 --> 00:17:46,050 Teil ei ole vaja seda kutsuda aastal konkreetse funktsiooni 382 00:17:46,050 --> 00:17:47,570 kus malloc nimetatakse. 383 00:17:47,570 --> 00:17:50,340 Aga sa ei pea seda kutsuda enne peamist tulu. 384 00:17:50,340 --> 00:17:51,120 >> Ja see tõesti sõltub. 385 00:17:51,120 --> 00:17:54,960 See sõltub sellest, miks sa malloced et ruumi esiteks. 386 00:17:54,960 --> 00:17:57,320 Mõned inimesed kutsuvad tasuta päris kiiresti. 387 00:17:57,320 --> 00:17:59,220 Mõned inimesed ei helista tasuta kuni lõpuks oma programmi. 388 00:17:59,220 --> 00:18:00,660 Ja nad lähevad läbi ja tasuta kõike. 389 00:18:00,660 --> 00:18:03,597 See sõltub sellest, miks sa helistasid malloc. 390 00:18:03,597 --> 00:18:11,270 >> Õpilane: Ja mida sa ütleksid kui sa helistasid kasutamine getString? 391 00:18:11,270 --> 00:18:13,320 Sa ütleks vaba mis? 392 00:18:13,320 --> 00:18:20,040 >> JASON Hirschhorn: Nii süntaks tasuta on lihtsalt vaba, avatud paren lähedal 393 00:18:20,040 --> 00:18:22,130 paren, ja nime pointer. 394 00:18:22,130 --> 00:18:26,410 Nii et kui sa kirjutad string nimi võrdsete getString, paned nime siin. 395 00:18:26,410 --> 00:18:27,760 See nimi pointer. 396 00:18:27,760 --> 00:18:30,570 Ja ta teab, et vabastada see mälu. 397 00:18:30,570 --> 00:18:33,920 >> Üliõpilane: Nii et kui see vabastab see mälu, osuti osutab endiselt, et koht 398 00:18:33,920 --> 00:18:34,970 mällu? 399 00:18:34,970 --> 00:18:39,020 Või on osuti ka tühjendatud aadress, mis osutab ta. 400 00:18:39,020 --> 00:18:40,290 >> JASON Hirschhorn: Peaksime proovida. 401 00:18:40,290 --> 00:18:41,430 Peaksime koodi. 402 00:18:41,430 --> 00:18:43,880 Lähme tagasi tulla, kui saame kodeerimine ja olgem koodi. 403 00:18:43,880 --> 00:18:46,000 Ja kui sa tahad, et aru saada, et vastus selle saab ka koodi 404 00:18:46,000 --> 00:18:46,690 vahepeal. 405 00:18:46,690 --> 00:18:49,100 Aga see on suur küsimus. 406 00:18:49,100 --> 00:18:53,480 >> Üliõpilane: Kas on võimalik tasuta midagi liiga kiiresti? 407 00:18:53,480 --> 00:18:58,530 Nii et sa ikka pead seda oma programmi, ja sa vabanevad mälu? 408 00:18:58,530 --> 00:18:59,200 >> JASON Hirschhorn: Jah. 409 00:18:59,200 --> 00:19:03,020 See on võimalik, kui sa tasuta midagi ja siis seda uuesti kasutada, sa ei 410 00:19:03,020 --> 00:19:06,890 sattunud viga. 411 00:19:06,890 --> 00:19:10,810 Aga see on teile, sest te vabanenud midagi ja siis kutsus ta hiljem. 412 00:19:10,810 --> 00:19:13,940 Nii et oli programmeerija viga. 413 00:19:13,940 --> 00:19:14,780 Aga jah. 414 00:19:14,780 --> 00:19:17,760 Sa võid kirjutada seda. 415 00:19:17,760 --> 00:19:19,240 >> Enam küsimustele - 416 00:19:19,240 --> 00:19:19,760 Jah. 417 00:19:19,760 --> 00:19:22,820 >> Üliõpilane: Nii et kui sa peaksid lihtsalt vaba ta üldiselt enne 418 00:19:22,820 --> 00:19:25,490 Programm lõpeb, kas see tähendab siis, kui Programm lõpeb ja sa ei tasuta seda, 419 00:19:25,490 --> 00:19:27,580 et mälu on ikka eraldatud? 420 00:19:27,580 --> 00:19:31,330 >> JASON Hirschhorn: Kui teie programmi lõppemist ja te unustate tasuta midagi, siis 421 00:19:31,330 --> 00:19:34,390 et mälu eraldati kogu eluiga oma programmi. 422 00:19:34,390 --> 00:19:37,670 Kui teie programm sulgub täielikult, et mälu ei kavatse 423 00:19:37,670 --> 00:19:39,490 jääda sinna igavesti. 424 00:19:39,490 --> 00:19:42,080 Arvuti on piisavalt targad, et teavad et kui programm sulgub see 425 00:19:42,080 --> 00:19:46,440 peaks vabanema kõik mälu aastal selle programmiga seotud. 426 00:19:46,440 --> 00:19:51,240 >> Siiski on vahendeid, mida saab käivitada programmi kohta, et tuvastada, kas, millal 427 00:19:51,240 --> 00:19:54,720 programmi lõpetanud, sa unustasid vabastamiseks mälu. 428 00:19:54,720 --> 00:19:57,960 Ja oma järgmise lahendamist kus sa kasutad malloc ja kasutades 429 00:19:57,960 --> 00:20:02,610 suunanäitajaks, siis töötab see programmi oma programmi, et näha, kui 430 00:20:02,610 --> 00:20:06,530 kui peamine tulu, siis tuli mõned asju, mis jäid unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Nii nad ei kavatse jääda malloced igavesti arvuti. 432 00:20:09,130 --> 00:20:11,720 See oleks raiskamine, sest väga kiiresti, arvutid 433 00:20:11,720 --> 00:20:12,960 oleks otsa mälu. 434 00:20:12,960 --> 00:20:16,450 Aga kui nad juhivad lõpuni oma programmi ja nad ei vabanenud ja oma 435 00:20:16,450 --> 00:20:20,260 Programm väljub, see on ikka veel probleemiks et see tööriist aitab teil tegeleda. 436 00:20:20,260 --> 00:20:21,520 >> Õpilane: et Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON Hirschhorn: On nimetatakse Valgrind. 438 00:20:22,910 --> 00:20:23,520 Ja saate - 439 00:20:23,520 --> 00:20:25,780 >> Õpilane: Aga meil ei ole teada et viktoriin, kuigi? 440 00:20:25,780 --> 00:20:27,600 Ma mõtlen, et see oli rääkinud natuke loeng. 441 00:20:27,600 --> 00:20:33,600 >> JASON Hirschhorn: Nii Valgrind on nimi, et vahend. 442 00:20:33,600 --> 00:20:37,180 Teades, mida ta teeb, on piisavalt viktoriini. 443 00:20:37,180 --> 00:20:40,200 Aga sa ei ole seda veel oma lahendamist, sest meil ei ole olnud 444 00:20:40,200 --> 00:20:43,520 Ülesanded, mis on otseselt reguleeritud koos malloc või te kasutate malloc. 445 00:20:43,520 --> 00:20:45,330 Nii et sa ei ole kasutanud Valgrind veel. 446 00:20:45,330 --> 00:20:47,760 Aga siis kasuta seda varem mitte hiljem. 447 00:20:47,760 --> 00:20:48,710 >> Üliõpilane: Kas te kordate mida Valgrind on? 448 00:20:48,710 --> 00:20:49,190 >> JASON Hirschhorn: Vabandust? 449 00:20:49,190 --> 00:20:51,240 >> Üliõpilane: Kas sa korrata eesmärgil Valgring on? 450 00:20:51,240 --> 00:20:53,100 >> JASON Hirschhorn: Valgrind on nime - 451 00:20:53,100 --> 00:20:59,890 nagu GDB aitab siluda oma programmi Valgrind aitab teil aru saada, kui 452 00:20:59,890 --> 00:21:03,210 asjad ei ole vabastatud kui teie programm sulgub. 453 00:21:03,210 --> 00:21:05,110 Nii saad kasutada seda oma programmi. 454 00:21:05,110 --> 00:21:09,230 Ja sinu programm väljub ja see ütlen oma programmi nimega malloc see palju 455 00:21:09,230 --> 00:21:13,670 korda nii palju baite ja te ainult nn vaba seda mitu korda. 456 00:21:13,670 --> 00:21:16,520 Ja nii sa jätsid need palju baite ilma vabanevad. 457 00:21:16,520 --> 00:21:18,050 Või siis see, et te olete vabastatud kõik. 458 00:21:18,050 --> 00:21:19,070 Hea töö. 459 00:21:19,070 --> 00:21:19,480 >> Üliõpilane: OK. 460 00:21:19,480 --> 00:21:21,060 Ja seda nimetatakse Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON Hirschhorn: V-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> Üliõpilane: küsimus sellest. 463 00:21:25,970 --> 00:21:30,080 Nii et teil on n täht x võrdub midagi. 464 00:21:30,080 --> 00:21:33,330 See võrdub, mis iganes sa oled pannes seal on see, et mis pannakse sees 465 00:21:33,330 --> 00:21:36,120 Mida x osutades, või kursor x-st? 466 00:21:36,120 --> 00:21:37,690 >> JASON Hirschhorn: Kas te küsimust korrata? 467 00:21:37,690 --> 00:21:39,340 Kas me saame teha seda kui sa seda ütled? 468 00:21:39,340 --> 00:21:42,710 >> Üliõpilane: viktoriin, tegelikult, saatsid meile, et see oli nagu, char 469 00:21:42,710 --> 00:21:46,520 star tõde võrdub CS50 kivid, eks? 470 00:21:46,520 --> 00:21:52,190 Nii kas see tähendab, et CS50 kivid on see, mis tõde on suunaga? 471 00:21:52,190 --> 00:21:55,810 >> JASON Hirschhorn: Nii sa räägid umbes char täht string, kuidas 472 00:21:55,810 --> 00:21:56,460 mis töötab? 473 00:21:56,460 --> 00:21:56,890 Jah. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 Joonistame seda siin. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE vestlust] 477 00:22:07,100 --> 00:22:11,130 >> JASON Hirschhorn: Nii et see muutuja saab olema tüüpi char star. 478 00:22:11,130 --> 00:22:14,580 Kui suur on muutuv tüüpi char star? 479 00:22:14,580 --> 00:22:15,510 Mitu baiti? 480 00:22:15,510 --> 00:22:16,450 >> Õpilased: Four. 481 00:22:16,450 --> 00:22:18,210 >> JASON Hirschhorn: See on neli baiti. 482 00:22:18,210 --> 00:22:21,420 Mitu õigused on muutuja tüüpi int star? 483 00:22:21,420 --> 00:22:22,210 >> Õpilased: Four. 484 00:22:22,210 --> 00:22:24,910 >> JASON Hirschhorn: neli baiti. 485 00:22:24,910 --> 00:22:28,280 Kui see on pointer, siis on alati neli baiti, kuna viiteid, nende 486 00:22:28,280 --> 00:22:30,070 väärtus on mälu aadress. 487 00:22:30,070 --> 00:22:35,160 Ja mälu aadresse CS50 seade on neli baiti. 488 00:22:35,160 --> 00:22:42,900 Nii et kui me kutsume getString või kui me ütleme, stringname võrdne ja seejärel 489 00:22:42,900 --> 00:22:46,140 jutumärgid pane string, me esitame - 490 00:22:46,140 --> 00:22:46,920 Noh, see on natuke erinev. 491 00:22:46,920 --> 00:22:48,630 Me ei getString nagu näiteks. 492 00:22:48,630 --> 00:22:52,150 Või char star midagi võrdub string. 493 00:22:52,150 --> 00:22:54,360 Vabandust, mulle näiteks et sa loed? 494 00:22:54,360 --> 00:22:57,590 >> Üliõpilane: char star tõde võrdub "CS50 kivid" jutumärkidega. 495 00:22:57,590 --> 00:23:02,260 >> JASON Hirschhorn: Nii et see täht, see me kutsume seda muutujat x meie 496 00:23:02,260 --> 00:23:04,060 generic eesmärkidel. 497 00:23:04,060 --> 00:23:05,970 Lõime muutuja nimega x. 498 00:23:05,970 --> 00:23:07,610 See tüüp char star. 499 00:23:07,610 --> 00:23:10,950 See on kursor rea märke. 500 00:23:10,950 --> 00:23:12,200 Nii siin - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Nii et see on, kuidas see töötavad mälu. 503 00:23:25,890 --> 00:23:27,410 See salvestab mällu aadress. 504 00:23:27,410 --> 00:23:31,770 See salvestab mällu aadress esimene märk massiiv. 505 00:23:31,770 --> 00:23:33,830 Ja siis, kui sa järgisid pointer, siis oleks 506 00:23:33,830 --> 00:23:35,200 saada esimene märk. 507 00:23:35,200 --> 00:23:38,780 >> Ja kui sa loed seda asja nagu string, arvuti on tark 508 00:23:38,780 --> 00:23:42,930 piisavalt teada, lugege kogu see asi kuni ta saab tagasilöögi 0. 509 00:23:42,930 --> 00:23:45,530 Aga kui sa loed seda märgi aega, nii et sa iterating kaudu 510 00:23:45,530 --> 00:23:49,910 see string, siis lihtsalt lugeda märgi korraga kuni jõuad 511 00:23:49,910 --> 00:23:50,850 kurakriips 0. 512 00:23:50,850 --> 00:23:52,335 See ei pruugi vastata küsimus, kuigi. 513 00:23:52,335 --> 00:23:55,610 >> Üliõpilane: Jah, aga sa ei ole malloced et ruumi 514 00:23:55,610 --> 00:23:58,400 veel ette, et osuti. 515 00:23:58,400 --> 00:24:02,510 >> JASON Hirschhorn: Nii et ma olen päris kindel, täpselt, mida te vaatate, 516 00:24:02,510 --> 00:24:03,640 sest ma ei teinud seda tegema. 517 00:24:03,640 --> 00:24:06,370 See pidi olema kasulik ressursi teise TF. 518 00:24:06,370 --> 00:24:11,380 Kui loote string Kestab või kohaliku muutuja, siis see 519 00:24:11,380 --> 00:24:16,920 lihtsalt massiivi eest mitte üldiselt char star osutades 520 00:24:16,920 --> 00:24:18,600 teine ​​string. 521 00:24:18,600 --> 00:24:20,550 Aga ma ei tea. 522 00:24:20,550 --> 00:24:25,065 See võiks olla pointer teise string stack samuti. 523 00:24:25,065 --> 00:24:27,240 Jah. 524 00:24:27,240 --> 00:24:31,116 >> Õpilane: Ma tean, et sa pead mälu eraldada, kui kursor on 525 00:24:31,116 --> 00:24:33,360 saada deklareeritud sees teise funktsiooni. 526 00:24:33,360 --> 00:24:36,740 Kas teil on vaja teha sama asja, kui see on deklareeritakse sees peamine, 527 00:24:36,740 --> 00:24:39,570 te kasutate seda seestpoolt main? 528 00:24:39,570 --> 00:24:43,590 >> JASON Hirschhorn: Nii et jah. 529 00:24:43,590 --> 00:24:46,670 Võite kuulutada kursor mistahes mälu aadress mällu. 530 00:24:46,670 --> 00:24:51,440 See võib olla mälu aadress kohalike muutuja, kuigi mitmeid kordi, 531 00:24:51,440 --> 00:24:55,760 inimesed ei deklareeri mälu aadressid et kohalikud muutujad, sest nad lähevad 532 00:24:55,760 --> 00:24:59,890 ära kohe, et funktsioon tagastab, mis Sellepärast me üldiselt malloc asju. 533 00:24:59,890 --> 00:25:04,630 Aga jah, siis võiks kuulutada pointer teise kohaliku muutuja. 534 00:25:04,630 --> 00:25:06,360 See on lihtsalt üldiselt ei tehta. 535 00:25:06,360 --> 00:25:09,480 Aga ma ei saa, kui heita pilk et konkreetse asja peale tunde. 536 00:25:09,480 --> 00:25:10,650 Jah. 537 00:25:10,650 --> 00:25:12,350 >> Õpilane: Ma arvan, et see on omamoodi sellest, mis on palutud. 538 00:25:12,350 --> 00:25:16,930 See ei tundu imelik olla algväärtustamisel pointer mitte 539 00:25:16,930 --> 00:25:20,760 aadressi, kuid mida tundub väärtus. 540 00:25:20,760 --> 00:25:25,970 Tundub CS50 on, mis seal sees asi on märganud ja 541 00:25:25,970 --> 00:25:28,820 mitte tegelik aadress, eks? 542 00:25:28,820 --> 00:25:30,520 >> JASON Hirschhorn: Nii et ei ole, kuigi. 543 00:25:30,520 --> 00:25:32,470 See ei ole see, mis juhtub. 544 00:25:32,470 --> 00:25:35,910 Kui te deklareerite char star, see on mälu aadress. 545 00:25:35,910 --> 00:25:38,860 Näiturid on kõik mälu aadressid osutades veel midagi. 546 00:25:38,860 --> 00:25:41,480 Et midagi võiks olla stack, kuid peaaegu alati on 547 00:25:41,480 --> 00:25:43,440 hunnik, kuidas me näeme seda kasutada. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 Aga stringname võrdub kahekordse quote "GetString," me näeme, et me 550 00:25:53,500 --> 00:25:55,010 võite vaadata läbi selle ja koodi. 551 00:25:55,010 --> 00:26:01,190 getString stringi ei salvestata muutuja, või mis iganes string 552 00:26:01,190 --> 00:26:04,580 nime ei salvestata, et muutuv, sest see ei ole, kuidas 553 00:26:04,580 --> 00:26:06,070 suunanäitajaks tööta. 554 00:26:06,070 --> 00:26:06,770 Kas see on mõtet? 555 00:26:06,770 --> 00:26:07,170 >> Üliõpilane: Jah. 556 00:26:07,170 --> 00:26:08,570 >> JASON Hirschhorn: OK. 557 00:26:08,570 --> 00:26:11,690 Loodetavasti see ei olnud segane kellelegi. 558 00:26:11,690 --> 00:26:15,732 Aga kui see oli, me võime seda uuesti vaadata natuke, sest me tegelikult toimub 559 00:26:15,732 --> 00:26:19,240 koodi midagi, mis loodetavasti töötada stringid ja aitab teil ennast 560 00:26:19,240 --> 00:26:22,170 rohkem rahul nendega. 561 00:26:22,170 --> 00:26:24,869 >> Kõik muud küsimused, mis on seotud nende teemasid või muude teemade 562 00:26:24,869 --> 00:26:26,119 Panen varundada? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 Ja - 565 00:26:34,840 --> 00:26:36,310 kohe. 566 00:26:36,310 --> 00:26:37,630 Jah, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: Nii et see on täiesti sõltumatu, kuid kas me ei lähe üle 568 00:26:39,860 --> 00:26:42,760 tõesti kiiresti, mida meil on vaja teada umbes vahe 32 ja 569 00:26:42,760 --> 00:26:46,345 64-bit masin? 570 00:26:46,345 --> 00:26:47,740 >> JASON Hirschhorn: Jah. 571 00:26:47,740 --> 00:26:52,111 Nii 32 bitti on mitu baiti? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: See on neli baiti. 573 00:26:53,060 --> 00:26:54,360 >> JASON Hirschhorn: See on neli baiti. 574 00:26:54,360 --> 00:26:58,420 Ja 64 bitti on mitu baiti? 575 00:26:58,420 --> 00:26:59,112 >> Üliõpilane: Kaheksa. 576 00:26:59,112 --> 00:27:00,610 >> JASON Hirschhorn: Kaheksa baiti. 577 00:27:00,610 --> 00:27:03,980 Nii et taas, kaheksa bitti on üks bait. 578 00:27:03,980 --> 00:27:08,340 Teie CS50 seadme 32-bit masin. 579 00:27:08,340 --> 00:27:13,650 Nii mälu aadressid neli baiti. 580 00:27:13,650 --> 00:27:17,460 Seal on 2 kuni 32 mälu aadresse. 581 00:27:17,460 --> 00:27:21,310 0-2 kuni 32 miinus 1. 582 00:27:21,310 --> 00:27:27,630 Ja ma ei ole positiivne, kuid see on ilmselt ulatust, mida sa vajad, et 583 00:27:27,630 --> 00:27:35,230 tean 32-bit masin, et mälu aadressid on jälle neli baiti, 584 00:27:35,230 --> 00:27:39,620 ja see on suurim summa mälu aadresse. 585 00:27:39,620 --> 00:27:41,680 >> Samuti andmetüübid - 586 00:27:41,680 --> 00:27:45,020 See võib olla midagi nii hästi, et väärib märkimist. 587 00:27:45,020 --> 00:27:49,610 Suurus andmetüüp sõltub masin te töötate. 588 00:27:49,610 --> 00:27:56,760 Nii char, üks sümbol, on see, kuidas palju baite meie CS50 seade? 589 00:27:56,760 --> 00:27:57,980 Üks bait. 590 00:27:57,980 --> 00:28:02,310 Ja see on tegelikult üks bait nagu hästi 64-bit masin. 591 00:28:02,310 --> 00:28:05,920 >> Ja kõige andmetüübid on sama number baitide nii masinaid. 592 00:28:05,920 --> 00:28:11,620 Aga mõned andmed tüübid on erinevad nii masinaid. 593 00:28:11,620 --> 00:28:14,590 Nii et oleks potentsiaalselt Ainuke asi, mida vaja teada. 594 00:28:14,590 --> 00:28:16,710 >> Aga isegi, et ma arvan, et on piiridest - 595 00:28:16,710 --> 00:28:20,990 Ma olen peaaegu positiivne, kui sa vaatad tagasi vanu viktoriinid, ta ütleb, eeldame 596 00:28:20,990 --> 00:28:24,090 kodeerimine probleeme te kasutate 32-bit masin. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 Aga on, minna koos, et Kui sa oled huvitatud, on 599 00:28:30,620 --> 00:28:35,920 Andmete tüübid, mis on sama suurus kõigil seadmetel. 600 00:28:35,920 --> 00:28:42,670 >> Kui olete näinud midagi uint32_t, siis võib või 601 00:28:42,670 --> 00:28:43,260 ei näinud seda. 602 00:28:43,260 --> 00:28:44,290 See andmetüüp. 603 00:28:44,290 --> 00:28:47,570 Seda öeldes on 32 bitti ükskõik mis masin see on. 604 00:28:47,570 --> 00:28:50,350 Nii et kui inimesed kirjutavad kaasaskantav kood, nad ilmselt ei kasuta ints. 605 00:28:50,350 --> 00:28:53,260 Nad kasutavad selle asemel need muud andmed tüüpi, et nad teavad, on sama 606 00:28:53,260 --> 00:28:54,780 suurus on iga masin. 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: Mul oli küsimus koostamise protsessi. 610 00:29:00,150 --> 00:29:04,110 Nii et kui sa oled kirjutamise programm, mis kasutab raamatukogu nagu CS50 või midagi 611 00:29:04,110 --> 00:29:06,840 nagu, et ma tean, et see raamatukogu on, et mingil hetkel olla 612 00:29:06,840 --> 00:29:08,590 koostanud ja mis on seotud sisse 613 00:29:08,590 --> 00:29:13,380 Aga kui palju see juhtub ajal koostamist oma programmi? 614 00:29:13,380 --> 00:29:15,880 Millist osa raamatukogu protsess tekib siis, kui sa oled 615 00:29:15,880 --> 00:29:18,560 koostamisel oma programmi? 616 00:29:18,560 --> 00:29:24,020 >> JASON Hirschhorn: Nii lähme üle üldiselt sammud selle protsessi. 617 00:29:24,020 --> 00:29:26,280 Sa kirjutad oma. C failist. 618 00:29:26,280 --> 00:29:33,530 Teie. C fail, # lisada oma kaudu raamatukogud, näiteks cs50.h. 619 00:29:33,530 --> 00:29:39,480 Mida see terav hulka line teha oma programmi? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Ta lisab prototüübid funktsioonide kaudu 622 00:29:43,350 --> 00:29:45,120 failide raamatukogudes. 623 00:29:45,120 --> 00:29:45,600 >> JASON Hirschhorn: Täpselt. 624 00:29:45,600 --> 00:29:49,870 Ta lisab need funktsiooni prototüüpe oma koodi. 625 00:29:49,870 --> 00:29:55,230 Nii et kui teie kood on kompileeritud algstaadiumis, tõlkija teab 626 00:29:55,230 --> 00:29:59,250 et need funktsioonid on tõesti olemas, ja et kuskil nad on määratud. 627 00:29:59,250 --> 00:30:02,460 . H failid ei sisalda Mõisted neid funktsioone või kuidas 628 00:30:02,460 --> 00:30:03,950 nad tegelikult töötavad. 629 00:30:03,950 --> 00:30:07,960 Cs50.h lihtsalt on midagi, mis ütleb, getString on reaalne asi, 630 00:30:07,960 --> 00:30:09,270 võib juhtuda. 631 00:30:09,270 --> 00:30:14,240 Ja standardio.h ütleb printf on reaalne asi, mis võib juhtuda. 632 00:30:14,240 --> 00:30:23,190 >> Nii et teie c keeles seda. Header faili saab muuta mõningaid 633 00:30:23,190 --> 00:30:27,750 masinloetaval kood, mis lõpuks saab muuta binaarne 634 00:30:27,750 --> 00:30:30,030 kood, 0-ja 1 on. 635 00:30:30,030 --> 00:30:33,590 Ja see on kood, mis lõppkokkuvõttes läheb täide. 636 00:30:33,590 --> 00:30:38,550 -L CS50 line - näiteks kui olete kirjalikult rõkkama - 637 00:30:38,550 --> 00:30:41,830 ja siis hõlmama-l CS50, sa kirjutad, et sisse 638 00:30:41,830 --> 00:30:42,180 Ja te näete, et. 639 00:30:42,180 --> 00:30:43,890 Kui Sa kirjutad teha, siis saad näha, et joon siin. 640 00:30:43,890 --> 00:30:47,740 Ja me näeme, et teine ​​kui me koodi või hiljem, kui me koodi. 641 00:30:47,740 --> 00:30:50,390 >> Aga see-l CS50 liin ei midagi natuke teistsugune kui 642 00:30:50,390 --> 00:30:52,440 # include cs50.h. 643 00:30:52,440 --> 00:30:56,300 Mida see-l CS50 line teha? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Ma tahan öelda, et see ühendab raamatukogu funktsioon 646 00:31:00,310 --> 00:31:02,710 helistada, nagu. o faili. 647 00:31:02,710 --> 00:31:08,200 >> JASON Hirschhorn: Nii väga lähedal, kui mitte kümnesse. 648 00:31:08,200 --> 00:31:16,220 -L CS50 võtab binaarfailiga ja ühendab see oma binaarne fail. 649 00:31:16,220 --> 00:31:21,410 Nii cs50.h, pole mõtet keerates cs50.h pärit C keele kahekomponentsete iga 650 00:31:21,410 --> 00:31:23,130 kord, kui see on kasutusel. 651 00:31:23,130 --> 00:31:26,650 See oleks rumal, sest see oleks jäätmete palju aega. 652 00:31:26,650 --> 00:31:30,420 Nii et see on juba koostatud ja muutunud käivitatav. 653 00:31:30,420 --> 00:31:35,430 Ja nüüd ta läheb liita oma faili lõpus. 654 00:31:35,430 --> 00:31:38,370 Nii et need, 1-ja 0-lähed ühineda oma ones 655 00:31:38,370 --> 00:31:39,150 ja 0 on lõpus. 656 00:31:39,150 --> 00:31:43,670 Nüüd saate tegelikult on tegelik 1-ja 0-et määratleda, kuidas getString, 657 00:31:43,670 --> 00:31:47,890 Näiteks töötab, või kuidas printf, Näiteks toimib. 658 00:31:47,890 --> 00:31:52,750 >> Ja rohkem teavet, seal lühike koostajad, et Nate annab selle 659 00:31:52,750 --> 00:31:55,410 siis tuleb vaadata läbi, mis läheb läbi need sammud. 660 00:31:55,410 --> 00:31:56,050 Aga - 661 00:31:56,050 --> 00:31:56,560 Jah. 662 00:31:56,560 --> 00:32:01,700 >> Üliõpilane: Kas nad on alati. O faili kui nad on raamatukogu kujul 663 00:32:01,700 --> 00:32:06,764 valmis liita, mis on seotud - nagu Nad on kahendkoodi? 664 00:32:06,764 --> 00:32:07,600 >> JASON Hirschhorn: OK. 665 00:32:07,600 --> 00:32:08,420 Mis - 666 00:32:08,420 --> 00:32:11,780 >> Õpilane: et alati kehtib raamatukogud, kui sa ühendada need? 667 00:32:11,780 --> 00:32:12,500 >> JASON Hirschhorn: Jah. 668 00:32:12,500 --> 00:32:17,300 Nii et seal on. S faili, mis on masin kood, mis on samuti 669 00:32:17,300 --> 00:32:17,975 segasena sulle. 670 00:32:17,975 --> 00:32:19,410 Sa ei pea muretsema need. 671 00:32:19,410 --> 00:32:24,930 Aga üldiselt, jah, nad olema. o failid valmis minema. 672 00:32:24,930 --> 00:32:27,170 >> Üliõpilane: Nii et kui sa saata raamatukogu, sa ainult laev 673 00:32:27,170 --> 00:32:28,880 . h ja. o? 674 00:32:28,880 --> 00:32:32,210 Sa ei toimeta. C või. S. 675 00:32:32,210 --> 00:32:33,070 >> JASON Hirschhorn: So - 676 00:32:33,070 --> 00:32:36,260 ja see on selle lühikese samuti, kui Sellekohane teave on tulemas 677 00:32:36,260 --> 00:32:36,700 veidi kiiremini. 678 00:32:36,700 --> 00:32:39,870 Aga lühike koostajad räägib see samuti. 679 00:32:39,870 --> 00:32:43,290 Kui laev, raamatukogu kui sa laeva . h, Failipäises need 680 00:32:43,290 --> 00:32:46,290 funktsiooni prototüüpe ning 1-ja 0 on, see on kõik, mida vaja, et saada. 681 00:32:46,290 --> 00:32:50,640 Sa ei pea andma, kui funktsioon töötab,. c failist. 682 00:32:50,640 --> 00:32:56,360 Kuna koht võtmiseks või punkt APIs, punkt selles SPL, 683 00:32:56,360 --> 00:32:59,650 Stanford kaasaskantav raamatukogu, see on teile ei muretse, kuidas uued 684 00:32:59,650 --> 00:33:04,220 GRect töötab, või kuidas liikuda tööde või kuidas lisada töid. 685 00:33:04,220 --> 00:33:06,520 Kõik, mida vaja teada on, et add on funktsioon, mis saab 686 00:33:06,520 --> 00:33:08,880 kasutada ja see teeb. 687 00:33:08,880 --> 00:33:12,760 Nii et sa tõesti ei pea teadma, kuidas See on kirjutatud C. Teil on vaja ainult 688 00:33:12,760 --> 00:33:15,460 tean, et siin on funktsioone, mida nad teha, ja siin on 1-ja 0- 689 00:33:15,460 --> 00:33:18,870 kui sa tõesti tahad neid kasutada. 690 00:33:18,870 --> 00:33:19,530 >> Lahe. 691 00:33:19,530 --> 00:33:26,980 Enam küsimustele koostajad või muude teemade laual? 692 00:33:26,980 --> 00:33:30,300 >> Õpilane: Mul on küsimus rakendamise rekursiivne funktsioone. 693 00:33:30,300 --> 00:33:31,170 Küsimus rekursiooni. 694 00:33:31,170 --> 00:33:33,030 Mul oli tunne, et oleks tulla. 695 00:33:33,030 --> 00:33:38,310 Teeme kiiresti läbi minema rekursioon koos konkreetsete 696 00:33:38,310 --> 00:33:40,690 Näiteks faktoriaalses funktsiooni. 697 00:33:40,690 --> 00:33:44,920 Sest see on näide sellest, et Sageli kerkib või kasutatakse 698 00:33:44,920 --> 00:33:46,170 illustreerimiseks rekursiooni. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Nii "4!" tõlgendatakse 4 faktoriaal. 701 00:33:56,410 --> 00:33:59,120 Ja mida see 4 faktoriaal tähendab? 702 00:33:59,120 --> 00:34:00,696 Mida see teeb? 703 00:34:00,696 --> 00:34:02,235 Kuidas arvutada 4 faktoriaali? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 korda 3 korda 2 korda 1. 706 00:34:07,960 --> 00:34:11,889 >> Seega teine ​​viis kirjutada 4 faktoriaal on kirjutada seda. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 korda 3 faktoriaal. 709 00:34:19,022 --> 00:34:22,080 Kuna 3 faktoriaal on 3 korda 2 korda 1. 710 00:34:22,080 --> 00:34:27,580 Seega 4 korda 3 faktoriaal on 4 korda 3 korda 2 korda 1. 711 00:34:27,580 --> 00:34:32,679 See on põhjus, miks faktoriaal on suur kandidaat rekursioon, sest see on 712 00:34:32,679 --> 00:34:36,630 selge, et seal on midagi, mida juhtub ikka ja ikka ja jälle 713 00:34:36,630 --> 00:34:39,820 väiksema arvu asjad kuni jõuad lõppu. 714 00:34:39,820 --> 00:34:42,570 Kui jõuad 1, 1 faktoriaal on 1. 715 00:34:42,570 --> 00:34:43,719 Sa ei saa minna palju kaugemale. 716 00:34:43,719 --> 00:34:47,219 0 faktoriaal on ka defineeritud kui 1. 717 00:34:47,219 --> 00:34:50,679 Nii et kui sa saad 1 või 0, oled aasta lõpus, ja te saate 718 00:34:50,679 --> 00:34:53,219 algus läheb varundada. 719 00:34:53,219 --> 00:34:59,540 Nii et kui me tahame kirjutada rekursiivne funktsiooni arvutada faktoriaali 720 00:34:59,540 --> 00:35:02,170 me kirjutada mõned pseudokoodi selle nüüd. 721 00:35:02,170 --> 00:35:03,300 Enne kui me kirjutame selle pseudokoodi - 722 00:35:03,300 --> 00:35:05,660 Ma annan teile kutid paar minutit kirjutada pseudo kood või lihtsalt arvan 723 00:35:05,660 --> 00:35:09,600 sellest - on kaks asja, iga rekursiivne funktsioon vajab. 724 00:35:09,600 --> 00:35:12,530 Mis on need kaks asja? 725 00:35:12,530 --> 00:35:13,220 >> JACK: See on helistada ise. 726 00:35:13,220 --> 00:35:13,680 >> JASON Hirschhorn: Noah? 727 00:35:13,680 --> 00:35:14,460 Oh, Jack. 728 00:35:14,460 --> 00:35:15,100 Lase käia. 729 00:35:15,100 --> 00:35:16,640 >> JACK: See on helistada ise. 730 00:35:16,640 --> 00:35:19,220 >> JASON Hirschhorn: Nii rekursiivne funktsioon vajab rekursiivne kõne, 731 00:35:19,220 --> 00:35:20,220 helista ise. 732 00:35:20,220 --> 00:35:20,770 See on üks. 733 00:35:20,770 --> 00:35:21,510 Ja milline on see teine ​​asi? 734 00:35:21,510 --> 00:35:22,250 >> JACK: tugipunkti. 735 00:35:22,250 --> 00:35:23,780 >> JASON Hirschhorn: tugipunkti. 736 00:35:23,780 --> 00:35:26,940 Aluspõhimõtted, on siin, kui me lõpetama. 737 00:35:26,940 --> 00:35:29,510 Nii et teie ülesanne muutub nn. 738 00:35:29,510 --> 00:35:31,410 Baasjuhtumi jõuab. 739 00:35:31,410 --> 00:35:33,710 Sa tahad teada, kas sa oled lõpus. 740 00:35:33,710 --> 00:35:37,110 Ja kui sa ei ole lõppu, siis teha oma rekursiivne kõne. 741 00:35:37,110 --> 00:35:39,880 Ja sa lähed läbi selle funktsiooni uuesti, kontrollida oma tugipunkti uuesti. 742 00:35:39,880 --> 00:35:42,575 Kui sa ei ole lõppu, teete teine ​​rekursiivne kõne, 743 00:35:42,575 --> 00:35:44,130 jne, jne. 744 00:35:44,130 --> 00:35:47,110 >> Sellepärast rekursiivne funktsioone alati vaja neid baasi juhtudel ja need 745 00:35:47,110 --> 00:35:48,210 rekursiivne kõne. 746 00:35:48,210 --> 00:35:51,280 Kui sul ei ole rekursiivne kõne, see ei oleks rekursiivne funktsioon. 747 00:35:51,280 --> 00:35:53,210 Kui sa ei ole alust juhul sa ei tahaks minna igaveseks ja 748 00:35:53,210 --> 00:35:54,780 ei oleks lõpp. 749 00:35:54,780 --> 00:35:57,870 Ja tugipunkti alati esikohal, sest sa alati tahad kontrollida 750 00:35:57,870 --> 00:36:00,420 kui sa oled end esimesena. 751 00:36:00,420 --> 00:36:04,770 Nii et enne teeme mõned pseudokoodi, miks sa ei võta minut aega, et mõelda 752 00:36:04,770 --> 00:36:09,360 kuidas kirjutan faktoriaal funktsioon oleks kirjutatud? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Ka nii palju kui te teete, kirjalikult see läbi paberileht 755 00:36:26,010 --> 00:36:27,960 mida sa lähed pea teha viktoriini homme. 756 00:36:27,960 --> 00:36:32,160 Nii ilmselt hea tava teha kindel kood olete kirjalikult 757 00:36:32,160 --> 00:36:34,420 alla paberileht - 758 00:36:34,420 --> 00:36:35,160 või te ei saa seda teha. 759 00:36:35,160 --> 00:36:36,710 Sa tead, kus semikoolonit on. 760 00:36:36,710 --> 00:36:37,660 Mäletad süntaks. 761 00:36:37,660 --> 00:36:40,400 Sest sa ei saa olla koostaja ütleb teile teinud vea. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Samuti sinnakanti, homme, kui olete kodeerimine probleeme, kui te 764 00:37:07,240 --> 00:37:11,490 on tormas aeg, või kui sa oled väga segaduses, kuidas sa peaksid 765 00:37:11,490 --> 00:37:16,030 kirjuta eriti asi c, siis oleks behoove kirjutada pseudo-kood 766 00:37:16,030 --> 00:37:18,160 või kommentaarid, samuti. 767 00:37:18,160 --> 00:37:21,940 Sest seal osaline laenu Palju küsimusi viktoriin. 768 00:37:21,940 --> 00:37:24,840 Nii võite olla kiirustades, või siis võib lihtsalt segi. 769 00:37:24,840 --> 00:37:28,030 Kirjutamine kommentaarides või pseudo-kood Sageli võimalusi, mida 770 00:37:28,030 --> 00:37:29,360 saab osaliselt õigeks. 771 00:37:29,360 --> 00:37:31,440 >> Nii et ärge jätke midagi tühjaks tegema. 772 00:37:31,440 --> 00:37:33,490 Ei ole karistused paneb asjad sisse 773 00:37:33,490 --> 00:37:37,650 Tegelikult kasutusele pseudo-kood või Kommentaarid aita teehöövel 774 00:37:37,650 --> 00:37:40,410 aru saada, kui sa tegelikult tead, mida sa räägid, ja võibolla sõlmimine 775 00:37:40,410 --> 00:37:42,030 mõned osaliselt õigeks selle eest. 776 00:37:42,030 --> 00:37:44,510 >> Ka sinnakanti, kirjutada selgelt. 777 00:37:44,510 --> 00:37:47,650 Kui me ei saa tõesti, mida sa oled kirjalikult, me ei kavatse teile helistada 778 00:37:47,650 --> 00:37:49,900 keskööl homme näitaja välja, mida sa kirjutasid. 779 00:37:49,900 --> 00:37:51,520 Me lihtsalt võtame maha punkte. 780 00:37:51,520 --> 00:37:56,570 Kirjutage selgelt, et me ei kuule, või pigem saame lugeda, mida sa kirjutasid. 781 00:37:56,570 --> 00:38:00,230 >> Ja kui ta ütleb kaks lauset, ärge kirjutage punkt. 782 00:38:00,230 --> 00:38:02,280 Järgige juhiseid. 783 00:38:02,280 --> 00:38:03,500 Kirjutage selgelt. 784 00:38:03,500 --> 00:38:07,720 Ja kirjutada neid märkusi või pseudokoodi küsimusteks, mis võiks 785 00:38:07,720 --> 00:38:10,270 andmise osaline krediiti. 786 00:38:10,270 --> 00:38:12,520 >> OK, lähme faktoriaal. 787 00:38:12,520 --> 00:38:15,000 Nii et meil on funktsioon faktoriaali. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Kui ma tegelikult kirjutada seda C, mida ma pean panna nime ees 790 00:38:21,550 --> 00:38:22,800 funktsiooni? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 Naasmise tüüp, mis käesoleval juhul anname seda int. 793 00:38:30,060 --> 00:38:35,450 Ja siis sees lokkis traksid, on mis toimub sees lokkis traksid 794 00:38:35,450 --> 00:38:36,850 funktsioon? 795 00:38:36,850 --> 00:38:37,950 >> Õpilased: Argument tüüp. 796 00:38:37,950 --> 00:38:39,150 >> JASON Hirschhorn: oma argumendid. 797 00:38:39,150 --> 00:38:42,680 Nii faktoriaal tõenäoliselt jääb võtta argument. 798 00:38:42,680 --> 00:38:44,500 See ilmselt ainult võtta üks argument. 799 00:38:44,500 --> 00:38:49,450 Ja me ütleme siis võtan täisarv nimetatakse x. 800 00:38:49,450 --> 00:38:52,770 Ja veel, kui kirjalikult prototüüp funktsioon või kirjutamise funktsioon 801 00:38:52,770 --> 00:38:57,110 Teie kood defineerimist, siis kirjutada andmeid liik ja nimi 802 00:38:57,110 --> 00:39:01,370 et muutuja, mis toimivad üksnes. 803 00:39:01,370 --> 00:39:06,350 Nii saab läbida mõned number sellesse funktsioon, siis saad edaspidi x 804 00:39:06,350 --> 00:39:07,340 sisemiselt. 805 00:39:07,340 --> 00:39:08,755 >> Meil on faktoriaal funktsioon. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Meil on vaja kahte asja, tugipunkti ja rekursiivne kõne. 808 00:39:15,850 --> 00:39:20,900 Mis on tugipunktiks faktoriaali? 809 00:39:20,900 --> 00:39:24,850 Keegi, kes kirjutas selle välja ja kes ei ole räägitakse veel, mis on aluseks 810 00:39:24,850 --> 00:39:26,100 puhul faktoriaali? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> Üliõpilane: Kui n on väiksem kui 2, tagastab 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON Hirschhorn: Kui n on vähem kui 2, tagastab 1. 814 00:39:33,520 --> 00:39:37,216 Mulle meeldib see, sest see hoolitseb 0 ja 1 vahel. 815 00:39:37,216 --> 00:39:45,290 Nii me teeme x <2, tagastab 1. 816 00:39:45,290 --> 00:39:47,870 Kui me möödunud 0, kui saame vastu 1, siis see funktsioon 817 00:39:47,870 --> 00:39:49,790 kohe tagasi 1. 818 00:39:49,790 --> 00:39:54,020 Kui me möödunud mõned number suurem kui või võrdne 2, me läheme 819 00:39:54,020 --> 00:39:55,370 on meie rekursiivne kõne. 820 00:39:55,370 --> 00:39:57,855 >> Ja nii, kuidas on, et läheb tööle? 821 00:39:57,855 --> 00:40:01,070 Kas keegi teine, kes töötas sellel kes ei rääkinud veel mulle 822 00:40:01,070 --> 00:40:07,380 rekursiivne kõne Selle funktsiooni aastal pseudokoodi? 823 00:40:07,380 --> 00:40:10,770 Kui me möödunud aastal mitu x ja see on suurem kui 2, mis 824 00:40:10,770 --> 00:40:13,370 me tahame teha? 825 00:40:13,370 --> 00:40:17,930 Meil on ka näiteks kirjutatud külg, mis võib anda teile vihje. 826 00:40:17,930 --> 00:40:20,770 >> Üliõpilane: Call x korda faktoriaali x miinus 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON Hirschhorn: Täpselt nii. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Me läheme tagasi x korda faktoriaali x miinus 1. 830 00:40:37,750 --> 00:40:41,810 Ja kuigi ma kirjutasin üles, Põhimõtteliselt, mida sa ütlesid, inglise, 831 00:40:41,810 --> 00:40:44,580 see faktoriaal funktsioon saavad nimetatakse uuesti. 832 00:40:44,580 --> 00:40:46,320 Ta hukkab x miinus 1. 833 00:40:46,320 --> 00:40:49,320 Seda saad tagasi mõned täisarv, ja siis ma korrutan need kaks 834 00:40:49,320 --> 00:40:52,050 kokku, ja et raha on tagasi ükskõik kuidas seda nimetatakse seda 835 00:40:52,050 --> 00:40:55,010 faktoriaal funktsioon, mis võib olla teise astme 836 00:40:55,010 --> 00:40:58,420 Selle faktoriaali funktsiooni. 837 00:40:58,420 --> 00:41:01,360 >> Seega on see näide rekursiivne Funktsiooni väga 838 00:41:01,360 --> 00:41:02,530 lihtne rekursiivne funktsioon. 839 00:41:02,530 --> 00:41:04,530 Aga enamik neist on selline. 840 00:41:04,530 --> 00:41:11,170 Kui soovite hea rekursiivne väljakutse viktoriini proovida kodeerimine 841 00:41:11,170 --> 00:41:13,230 binaarne otsing rekursiivselt. 842 00:41:13,230 --> 00:41:18,950 Sest kui sa binaarne otsing lahendamist kolme, siis ilmselt tegi seda 843 00:41:18,950 --> 00:41:21,730 korduvalt on samas silmus. 844 00:41:21,730 --> 00:41:23,700 >> Kuid see võib olla ka kirjaliku rekursiivselt. 845 00:41:23,700 --> 00:41:26,310 Sa lähed vaja kirjutada oma eraldi funktsioon, mis võtab mõned 846 00:41:26,310 --> 00:41:29,020 erinevate käsurea argumente - või ei käsurea argumente, mõned 847 00:41:29,020 --> 00:41:30,910 erinevad lihtsalt regulaarselt argumendid. 848 00:41:30,910 --> 00:41:33,870 Aga sa võiksid kirjutada binaarne otsing rekursiivselt samuti. 849 00:41:33,870 --> 00:41:36,190 >> Üliõpilane: Nii et sa oleks võinud ka kirjutatud, asemel x miinus 1, siis 850 00:41:36,190 --> 00:41:39,502 oleks ka kirjaliku x miinus miinus, või siis võiks olla 851 00:41:39,502 --> 00:41:40,830 kirjutatud miinus miinus x. 852 00:41:40,830 --> 00:41:44,740 Kas sa lihtsalt seletada tõesti kiiresti miks need oleksid erinevad asjad, 853 00:41:44,740 --> 00:41:49,510 nagu mida vahe on x miinus miinus ja miinus miinus x? 854 00:41:49,510 --> 00:41:51,320 >> JASON Hirschhorn: Ei, ma ei ole lähen sinna. 855 00:41:51,320 --> 00:41:55,500 Aga ma teile rääkida, see pärast klass. x miinus miinus miinus miinus x 856 00:41:55,500 --> 00:41:57,780 aland x 1. 857 00:41:57,780 --> 00:41:59,090 Aga nad teevad seda natuke teistmoodi. 858 00:41:59,090 --> 00:42:00,340 Aga ma ei taha minna sinna. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 Muud küsimused rekursioon või seda funktsiooni? 861 00:42:09,090 --> 00:42:10,140 See pole isegi pseudokoodi. 862 00:42:10,140 --> 00:42:15,060 See on põhiliselt koodi C Te ei kirjuta seda. 863 00:42:15,060 --> 00:42:19,393 >> OK, kõik muud küsimused teemadel siin? 864 00:42:19,393 --> 00:42:19,864 Jah. 865 00:42:19,864 --> 00:42:23,130 >> Õpilane: Mul on kiire hooletussejäetud ujukoma ja täpsust. 866 00:42:23,130 --> 00:42:24,260 >> JASON Hirschhorn: ujuvad punkti ja täpsust. 867 00:42:24,260 --> 00:42:26,920 Kas keegi tõesti kiiresti mulle hooletussejäetud 868 00:42:26,920 --> 00:42:28,210 ujukoma ja täpsus? 869 00:42:28,210 --> 00:42:30,420 Te kõik oli seda teha oma lahendamist, nii et teil on kõik 870 00:42:30,420 --> 00:42:31,700 tuttav. 871 00:42:31,700 --> 00:42:35,090 Või äkki ei te kõik. 872 00:42:35,090 --> 00:42:36,602 Keegi? 873 00:42:36,602 --> 00:42:39,530 Anna hakkas kohapeal. 874 00:42:39,530 --> 00:42:40,750 Ujukomajagamist ja täpsust. 875 00:42:40,750 --> 00:42:42,380 Milles on probleem? 876 00:42:42,380 --> 00:42:42,960 Jah. 877 00:42:42,960 --> 00:42:43,680 Victoria? 878 00:42:43,680 --> 00:42:44,480 >> VANESSA: Vanessa. 879 00:42:44,480 --> 00:42:45,285 >> JASON Hirschhorn: Vanessa. 880 00:42:45,285 --> 00:42:45,680 Vabandust. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: On vaid piiratud arvu numbrid, mida esindab 882 00:42:51,550 --> 00:42:57,930 sest sa oled, meie juhul 32-bit süsteemi. 883 00:42:57,930 --> 00:43:03,080 Nii et teil selline on moodustavad mõned numbrid. 884 00:43:03,080 --> 00:43:03,910 >> JASON Hirschhorn: Nii et täpselt õige. 885 00:43:03,910 --> 00:43:08,110 On ainult teatud kogus numbrid, mis võib olla esindatud. 886 00:43:08,110 --> 00:43:11,770 Kui sa korrutad kaks väga suurtes kogustes, see võiks ülevoolu summa 887 00:43:11,770 --> 00:43:13,950 ruumide pead esindama täisarv. 888 00:43:13,950 --> 00:43:17,930 Sellepärast mõnikord me kasutame pikka asemel int. 889 00:43:17,930 --> 00:43:19,210 See on rohkem ruume. 890 00:43:19,210 --> 00:43:21,210 See võib olla suurem number. 891 00:43:21,210 --> 00:43:24,310 >> Ujukoma täpsus on pistmist , kuid on ka pistmist 892 00:43:24,310 --> 00:43:29,300 Asjaolu, et pärast numbrid mitte alati esindatud. 893 00:43:29,300 --> 00:43:29,540 Vabandust. 894 00:43:29,540 --> 00:43:31,280 Las ma panen selle varundada. 895 00:43:31,280 --> 00:43:36,610 Kümnendmurruna 1,0 ei ole alati esindatud, nagu ikka, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 Mõnikord on esindatud 1,000000001 või 0,999999999. 898 00:43:50,360 --> 00:43:52,780 See võib olla isegi 89 visatud seal kusagil. 899 00:43:52,780 --> 00:43:56,560 Nii et need kohaga numbrid ei ole esindatud täpselt nagu sa oleks 900 00:43:56,560 --> 00:43:58,430 loodame, et nad esindavad. 901 00:43:58,430 --> 00:44:00,010 >> Nii et probleem komplekt - 902 00:44:00,010 --> 00:44:00,860 see oli kaks? - 903 00:44:00,860 --> 00:44:05,290 lahendamist kaks, kus tegelesime ujukoma numbrid, kui tahtsime 904 00:44:05,290 --> 00:44:08,690 esindavad just seda, mida me tahtsime neid esindama arvu 905 00:44:08,690 --> 00:44:12,860 penne või mitu senti me korrutame need 100. 906 00:44:12,860 --> 00:44:14,750 Me ümardatakse neid. 907 00:44:14,750 --> 00:44:18,660 Ja siis katkestas kõik taga koma. 908 00:44:18,660 --> 00:44:22,020 See oli tagada, et nad oleksid tegelikult võrdne täpselt see, mida tahtsime 909 00:44:22,020 --> 00:44:22,410 neil võrdsed. 910 00:44:22,410 --> 00:44:26,870 >> Sest kui te võtate midagi, mis on float ja muuta see int, siis 911 00:44:26,870 --> 00:44:29,860 katkestas kõik paremale koma. 912 00:44:29,860 --> 00:44:33,900 Sest seal on mõned ujukoma ebatäpsuse, 100,000 võib olla 913 00:44:33,900 --> 00:44:37,440 esindatud 99,999999999. 914 00:44:37,440 --> 00:44:40,350 Ja kui sa lihtsalt lõigata kõike õige kohe, sa lähed 915 00:44:40,350 --> 00:44:41,600 saada vale number. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Jah. 918 00:44:44,180 --> 00:44:45,290 >> Üliõpilane: mul oli küsimus umbes casting. 919 00:44:45,290 --> 00:44:47,500 Mis järjekorras see tekkida? 920 00:44:47,500 --> 00:44:54,480 Kui soovite teha float, sulgudes, 1 jagatud 10, see ei 1 jagatud 10, 921 00:44:54,480 --> 00:44:58,910 siis saad 0,1, siis keera see float? 922 00:44:58,910 --> 00:45:01,470 >> JASON Hirschhorn: Kui sa Ujuk 1 jagatud 10 - 923 00:45:01,470 --> 00:45:02,550 >> Üliõpilane: Jah, ja siis võrdub - 924 00:45:02,550 --> 00:45:04,240 Noh, see tavapäraselt on see võrdne - 925 00:45:04,240 --> 00:45:04,690 Jah. 926 00:45:04,690 --> 00:45:06,760 Sa tahad teha seda float, eks? 927 00:45:06,760 --> 00:45:12,790 >> JASON Hirschhorn: OK, nii et me ei kavatse kasutada, et rännata figuring 928 00:45:12,790 --> 00:45:15,390 Vastused nendele küsimustele kaudu kodeerimine. 929 00:45:15,390 --> 00:45:18,180 Sest sa oled ilmselt palju Nende minut küsimustele ning hea võimalus 930 00:45:18,180 --> 00:45:19,100 neid lahendada on läbi kodeerimine. 931 00:45:19,100 --> 00:45:21,320 Nii et me kodeerida seda praegu, ja siis me läheme tagasi ja 932 00:45:21,320 --> 00:45:24,020 koodi küsimus teil oli. 933 00:45:24,020 --> 00:45:24,950 >> Nii et esimene rida - 934 00:45:24,950 --> 00:45:29,390 Ma ei oleks kirjutanud -, mis on Esimene asi, mida me tahame teha, kui me 935 00:45:29,390 --> 00:45:32,250 avada uue faili gedit? 936 00:45:32,250 --> 00:45:34,190 >> Üliõpilane: Kaasa. 937 00:45:34,190 --> 00:45:35,920 >> JASON Hirschhorn Kaasa mis? 938 00:45:35,920 --> 00:45:37,952 >> Üliõpilane: CS50 raamatukogu. 939 00:45:37,952 --> 00:45:39,920 >> JASON Hirschhorn: OK. 940 00:45:39,920 --> 00:45:42,590 Mida peaks me hulka? 941 00:45:42,590 --> 00:45:46,820 Me lihtsalt kontrollida, mis juhtub kui te enamus midagi float. 942 00:45:46,820 --> 00:45:48,605 Aga mida me vajame, et lisada kui me oleme kavatsete kirjutada C programmi? 943 00:45:48,605 --> 00:45:49,300 >> Üliõpilane: Standard I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON Hirschhorn: stdio.h. 945 00:45:50,625 --> 00:45:54,880 Me tegelikult ei vaja, sest see programmi cs50.h, kuigi see on 946 00:45:54,880 --> 00:45:55,920 alati kasulik arvestada. 947 00:45:55,920 --> 00:45:58,260 Aga me alati vaja stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> Õpilane: kodeerimist C? 949 00:45:59,660 --> 00:46:15,770 >> JASON Hirschhorn: Kui kodeerimine C. 950 00:46:15,770 --> 00:46:17,090 >> Nii et ma selle salvestada see. C failist. 951 00:46:17,090 --> 00:46:18,590 Ma saaksin kena süntaksi esiletõstmine. 952 00:46:18,590 --> 00:46:22,890 Kirjutasin void sees peamine. 953 00:46:22,890 --> 00:46:24,792 Mis void tähendab? 954 00:46:24,792 --> 00:46:26,740 >> Üliõpilane: ei võta käsurea argumente. 955 00:46:26,740 --> 00:46:28,900 >> JASON Hirschhorn: Void, tähendab see juhul peamine ei võta 956 00:46:28,900 --> 00:46:29,700 käsurea argumente. 957 00:46:29,700 --> 00:46:32,720 Teistel juhtudel, see tähendab funktsiooni ei võta käsurea argumente. 958 00:46:32,720 --> 00:46:36,560 Või funktsioon, kui ma kirjutada void main (void), mis ütleks, peamine on 959 00:46:36,560 --> 00:46:38,460 ei tule midagi. 960 00:46:38,460 --> 00:46:39,960 Nii void lihtsalt ei tähenda midagi. 961 00:46:39,960 --> 00:46:42,510 Mida ma kirjutan, kui ma võtab käsurea argumendid? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> Üliõpilane: int arc c string kaar v 964 00:46:47,150 --> 00:46:49,055 >> JASON Hirschhorn: int argc string argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 Kas see on õige? 967 00:46:55,572 --> 00:46:58,720 >> Õpilane: See char star argv sulgudes. 968 00:46:58,720 --> 00:47:01,730 >> JASON Hirschhorn: Nii et sa võiksid kirjutada string argv sulgudes või char star argv 969 00:47:01,730 --> 00:47:03,710 sulgudes, kuid teil on vaja kinnitada. 970 00:47:03,710 --> 00:47:06,290 Kuna argv on massiiv stringid, mäletan. 971 00:47:06,290 --> 00:47:07,360 See ei ole lihtsalt üks string. 972 00:47:07,360 --> 00:47:10,350 Nii string argv on, siin on üks string nimega argv. 973 00:47:10,350 --> 00:47:13,630 String argv sulgudes, siin on massiivi stringe. 974 00:47:13,630 --> 00:47:17,865 Nii int argc string argv sulgudes oleks midagi, mida ma 975 00:47:17,865 --> 00:47:18,810 ilmselt kirjutada. 976 00:47:18,810 --> 00:47:23,050 >> Nii et sa tahad salvestada täisarv? 977 00:47:23,050 --> 00:47:24,285 >> Üliõpilane: Jah, täisarv. 978 00:47:24,285 --> 00:47:25,840 Või sularahaga. 979 00:47:25,840 --> 00:47:26,710 >> JASON Hirschhorn: In float? 980 00:47:26,710 --> 00:47:30,790 Like, float x võrdub 1 jagatud 10. 981 00:47:30,790 --> 00:47:32,040 >> JASON Hirschhorn: OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 Kuidas printida välja Ujuk printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Mida? 986 00:47:46,714 --> 00:47:47,560 >> Üliõpilane:% f. 987 00:47:47,560 --> 00:47:48,300 >> JASON Hirschhorn:% f. 988 00:47:48,300 --> 00:47:50,810 Mis on täisarv? 989 00:47:50,810 --> 00:47:52,110 d või i. 990 00:47:52,110 --> 00:47:53,000 Mis string? 991 00:47:53,000 --> 00:47:54,240 >> Üliõpilane: s. 992 00:47:54,240 --> 00:47:56,140 >> JASON Hirschhorn: s. 993 00:47:56,140 --> 00:47:57,550 Kuidas saada uus rida? 994 00:47:57,550 --> 00:47:58,800 >> Üliõpilane: Längkriipsu n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON Hirschhorn: Mida ma tagasi kui peamine töötab korralikult? 997 00:48:07,100 --> 00:48:08,360 >> Üliõpilane: 0. 998 00:48:08,360 --> 00:48:09,430 Kas mul on vaja kirjutada, et joon, kuigi? 999 00:48:09,430 --> 00:48:10,170 >> Õpilane: Ei 1000 00:48:10,170 --> 00:48:11,513 OK, me ei kirjuta, siis. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 Kas igaüks lugeda, et? 1003 00:48:17,190 --> 00:48:18,485 See tundub natuke väike. 1004 00:48:18,485 --> 00:48:20,160 Kas kõik võivad näha, või peaks Ma teen selle suuremaks? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Ma arvan, et kaamera, teeme see on natuke suurem, kuigi. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON Hirschhorn: Kui ma tahan, et muuta see . C failina käivitatava, mis 1009 00:48:38,410 --> 00:48:39,260 ma kirjutan? 1010 00:48:39,260 --> 00:48:41,610 >> Üliõpilane: Tee test. 1011 00:48:41,610 --> 00:48:42,080 >> JASON Hirschhorn: Vabandust? 1012 00:48:42,080 --> 00:48:42,790 >> Üliõpilane: Tee test. 1013 00:48:42,790 --> 00:48:44,040 >> JASON Hirschhorn: Tee test. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Me rääkisime see rida varem. 1016 00:48:48,410 --> 00:48:49,140 Rõkkama. 1017 00:48:49,140 --> 00:48:51,270 Mida rõkkama? 1018 00:48:51,270 --> 00:48:52,200 Koostaja nimi. 1019 00:48:52,200 --> 00:48:53,920 Mis see on piir? 1020 00:48:53,920 --> 00:48:55,580 >> Üliõpilane: Määrab see üles kasutamine GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON Hirschhorn: Komplektid see üles kasutamine GDB. 1022 00:48:59,230 --> 00:49:02,338 See joon, mis see on? 1023 00:49:02,338 --> 00:49:03,290 >> Üliõpilane: lähtekood. 1024 00:49:03,290 --> 00:49:06,010 >> JASON Hirschhorn: See on lähtefaili. c failist. 1025 00:49:06,010 --> 00:49:08,150 Mida need kaks joont teha? 1026 00:49:08,150 --> 00:49:10,245 Või need kaks ei jooned. 1027 00:49:10,245 --> 00:49:12,300 >> Õpilane: See nimesid ta proovile. 1028 00:49:12,300 --> 00:49:15,410 >> JASON Hirschhorn: Nii kriips o ütleb: nime ei määra teisiti. 1029 00:49:15,410 --> 00:49:16,790 Ja siin te helistate see test. 1030 00:49:16,790 --> 00:49:18,900 Kui ma ei ole, et, mis see nimi on? 1031 00:49:18,900 --> 00:49:20,260 >> Üliõpilane: a.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON Hirschhorn: a.out. 1033 00:49:22,340 --> 00:49:25,366 Mida see teeb? 1034 00:49:25,366 --> 00:49:27,670 >> Üliõpilane: Viited matemaatika raamatukogu. 1035 00:49:27,670 --> 00:49:29,550 >> JASON Hirschhorn: See ühendab aasta matemaatika raamatukogu. 1036 00:49:29,550 --> 00:49:32,880 Me ei sisaldanud matemaatika raamatukogu, kuid sest see on nii tavaline, nad on 1037 00:49:32,880 --> 00:49:35,780 kirjutatud make alati sisaldama matemaatika raamatukogu. 1038 00:49:35,780 --> 00:49:39,050 Ja samuti sisaldab see CS50 raamatukogu. 1039 00:49:39,050 --> 00:49:43,010 >> OK, nii et kui me loetleda, on meil käivitatava nimega test. 1040 00:49:43,010 --> 00:49:45,150 Et täita seda, ma kirjutan test. 1041 00:49:45,150 --> 00:49:48,330 Ma näen, et minu ujukoma, ootuspäraselt, on 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 Kas see - 1044 00:49:51,590 --> 00:49:52,060 nii - 1045 00:49:52,060 --> 00:49:55,210 >> Üliõpilane: Siis kui paned float nüüd, nagu te enamus seda float - 1046 00:49:55,210 --> 00:49:56,870 >> JASON Hirschhorn Loo 1 float? 1047 00:49:56,870 --> 00:49:59,180 >> Üliõpilane: Ei, enamus täis asi - 1048 00:49:59,180 --> 00:49:59,500 jah. 1049 00:49:59,500 --> 00:50:02,460 Kui sa seda tegid, oleks et muuta see 0,1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON Hirschhorn: OK, nii et tõesti kiiresti, 1 jagatud 10, need on 1051 00:50:07,170 --> 00:50:08,690 täisarvud jaguneva. 1052 00:50:08,690 --> 00:50:13,580 Nii et kui sa jagad täisarvud, nad 0, ja sa oled säästes et 0. 1053 00:50:13,580 --> 00:50:17,170 float, sest kaldkriips on lihtsalt täisarv rajoon. 1054 00:50:17,170 --> 00:50:19,180 Nüüd oleme pöördunud midagi arvesse sularahaga. 1055 00:50:19,180 --> 00:50:21,650 >> Vaatame, mis juhtub. 1056 00:50:21,650 --> 00:50:22,900 Me teeme testi. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Nüüd me näeme, et see kaldkriips ei olnud täisarv rajoonis ulpis 1059 00:50:31,090 --> 00:50:32,640 punkt rajoon. 1060 00:50:32,640 --> 00:50:35,700 Sest üks tema argumendid oli enamus sularahaga. 1061 00:50:35,700 --> 00:50:38,380 Nüüd ta ütles, käsitleda seda jaotus nagu me tegeleme 1062 00:50:38,380 --> 00:50:40,140 ujuva punkti, mitte täisarvud. 1063 00:50:40,140 --> 00:50:42,760 Ja nii me vastust ootame. 1064 00:50:42,760 --> 00:50:44,620 >> Vaatame, mis juhtub - 1065 00:50:44,620 --> 00:50:47,103 oops. 1066 00:50:47,103 --> 00:50:51,646 Kui ma tahtsin printida rohkem kohaga laigud, siis kuidas ma seda teen? 1067 00:50:51,646 --> 00:50:55,550 >> Üliõpilane: Point dot f või nii palju pärast koma, kui soovite. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON Hirschhorn: Ma printida 10 kohaga laigud. 1070 00:51:04,440 --> 00:51:06,610 Ja nüüd näeme me saada mingi imelik värk. 1071 00:51:06,610 --> 00:51:09,650 Ja see läheb tagasi oma küsimus umbes ujukoma ebatäpsus. 1072 00:51:09,650 --> 00:51:10,950 On imelik värk salvestatud siin. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, see et teie küsimusele vastata? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Mida sa veel tahad koodi kiiresti? 1077 00:51:20,200 --> 00:51:25,470 >> Õpilane: Ma tahtsin näha, kas ei, kui sa vabanevad mõned pointer, 1078 00:51:25,470 --> 00:51:30,410 kas see osuti ikka oli salvestatud see aadress, mis see oleks olnud 1079 00:51:30,410 --> 00:51:32,170 osutades varem. 1080 00:51:32,170 --> 00:51:34,100 >> JASON Hirschhorn: OK, nii teeme seda. 1081 00:51:34,100 --> 00:51:38,030 Char star ptr, tekitab see muutuja nimetatakse ptr tüüpi char star. 1082 00:51:38,030 --> 00:51:39,280 Kuidas kirjutada 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 Aga see peab olema suuruse ja Sel juhul ma arvan, et sa 1087 00:51:51,040 --> 00:51:52,465 osutades märk. 1088 00:51:52,465 --> 00:51:54,450 Nii et see oleks märk. 1089 00:51:54,450 --> 00:51:57,520 >> JASON Hirschhorn: OK, nii et rohkem üldiselt, Inside - 1090 00:51:57,520 --> 00:51:58,770 olgem muuta. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Toas malloc soovite number baitide hunnik. 1093 00:52:09,260 --> 00:52:12,320 Üldiselt, mida oleme näinud, mida me oleme teeme, on me malloc 1094 00:52:12,320 --> 00:52:14,940 stringid, näiteks või massiive täisarvud. 1095 00:52:14,940 --> 00:52:21,600 Nii et kui me tahame 10 täisarvud või 10 tähemärki, 10 annab meile 10. 1096 00:52:21,600 --> 00:52:24,370 Ja siis suurus tähemärki annaks meile, et suurus sümbolid, mis 1097 00:52:24,370 --> 00:52:25,120 Sellisel juhul on 1 bait. 1098 00:52:25,120 --> 00:52:26,250 Me saame 10 baiti. 1099 00:52:26,250 --> 00:52:28,540 Kui me kirjutada suurus int, mis annaks meile 40 baiti. 1100 00:52:28,540 --> 00:52:31,520 >> Seega rohkem üldmõistena, sees malloc on baitide arv, mida soovite. 1101 00:52:31,520 --> 00:52:34,620 Sellisel juhul me saame 1 bait. 1102 00:52:34,620 --> 00:52:36,900 Mis tundub imelik kasutamine of malloc, kuid meie 1103 00:52:36,900 --> 00:52:38,470 eesmärkidel on mõtet. 1104 00:52:38,470 --> 00:52:40,420 Nii et seal on see. 1105 00:52:40,420 --> 00:52:43,420 >> Me helistada tasuta. 1106 00:52:43,420 --> 00:52:47,040 Me vabaneda seda ja me kasutame ptr uuesti. 1107 00:52:47,040 --> 00:52:48,750 Ja mida sa tahad vaadata? 1108 00:52:48,750 --> 00:52:50,550 >> Õpilane: Ma tahtsin kontrollida, kas või ei oleks midagi, 1109 00:52:50,550 --> 00:52:51,900 sees on. 1110 00:52:51,900 --> 00:52:53,050 >> JASON Hirschhorn: Niisiis, kas ta osutas midagi? 1111 00:52:53,050 --> 00:52:57,740 >> Üliõpilane: Jah, täpselt, kas siis oli tal mälu aadressi. 1112 00:52:57,740 --> 00:53:02,220 >> JASON Hirschhorn: Nii et sa tahad et kontrollida väärtust ptr? 1113 00:53:02,220 --> 00:53:03,470 >> Üliõpilane: Jah, täpselt. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON Hirschhorn: Mida ma kirjutan siia kui ma tahan, et kontrollida väärtust 1116 00:53:10,160 --> 00:53:11,880 punkt - mis see on, Jordan ütles väärtus? 1117 00:53:11,880 --> 00:53:13,720 Või mis on salvestatud sees ptr? 1118 00:53:13,720 --> 00:53:14,620 >> Üliõpilane: mälu aadressi. 1119 00:53:14,620 --> 00:53:16,330 >> JASON Hirschhorn: mälu aadressi. 1120 00:53:16,330 --> 00:53:20,520 Nii et kui ma kirjutan lihtsalt seda, siis see mulle väärtus ptr. 1121 00:53:20,520 --> 00:53:22,800 Ja kuidas ma välja printida mälu aadressi? 1122 00:53:22,800 --> 00:53:26,470 Mida vormingustringile jaoks mälu aadressi? 1123 00:53:26,470 --> 00:53:27,430 >> Üliõpilane:% p. 1124 00:53:27,430 --> 00:53:28,050 >> JASON Hirschhorn:% p. 1125 00:53:28,050 --> 00:53:29,500 % S on string. 1126 00:53:29,500 --> 00:53:30,750 % P pointer. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 Kas see on õige? 1129 00:53:43,540 --> 00:53:44,790 See on õige. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Nii ptr võrdub - 1132 00:53:51,040 --> 00:53:53,350 see on veel midagi seal. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 See on ilmselt rohkem huvitav küsimus. 1135 00:53:57,645 --> 00:53:59,198 Mida see rida teeb? 1136 00:53:59,198 --> 00:54:00,830 >> Üliõpilane: SEG vigu. 1137 00:54:00,830 --> 00:54:01,310 >> JASON Hirschhorn: Mis on? 1138 00:54:01,310 --> 00:54:02,678 >> Õpilane: Ma arvan, et see seg vigu. 1139 00:54:02,678 --> 00:54:03,574 >> JASON Hirschhorn: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> Õpilane: Ma arvan, et see seg süü. 1141 00:54:04,920 --> 00:54:08,265 >> JASON Hirschhorn: Nii et see rida koodi, star ptr, mida 1142 00:54:08,265 --> 00:54:10,152 Mis täht tähendab? 1143 00:54:10,152 --> 00:54:11,240 >> Üliõpilane: sisu. 1144 00:54:11,240 --> 00:54:11,560 >> JASON Hirschhorn: Jah. 1145 00:54:11,560 --> 00:54:13,910 Mine saada sisu. 1146 00:54:13,910 --> 00:54:16,830 Nii see läheb minema mälu tegeleda seal ja mulle seda. 1147 00:54:16,830 --> 00:54:21,030 Ma kasutasin% c siin, sest seal on märke seal ladustatud. 1148 00:54:21,030 --> 00:54:23,390 Nii et me läheme sellele aadressile meil just nägin - või siis see ilmselt 1149 00:54:23,390 --> 00:54:25,190 natuke erinev see aeg käivitada programmi. 1150 00:54:25,190 --> 00:54:28,010 Aga me läheme sellele aadressile mida me teame, on endiselt olemas 1151 00:54:28,010 --> 00:54:29,260 ja vaata, mis seal on. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Nii et see ei seg süü. 1154 00:54:37,110 --> 00:54:38,970 See lihtsalt ei ole meile midagi. 1155 00:54:38,970 --> 00:54:43,350 See oleks tegelikult andnud meile midagi, me lihtsalt ei näe seda. 1156 00:54:43,350 --> 00:54:45,110 Ja see läheb tagasi see mõte - 1157 00:54:45,110 --> 00:54:47,270 ja me ei hakka liiga palju seda, sest see on üle 1158 00:54:47,270 --> 00:54:48,460 ulatus see muidugi. 1159 00:54:48,460 --> 00:54:51,260 Aga me rääkisime siin, kui me läks piiridest massiivi 1160 00:54:51,260 --> 00:54:54,890 1, me ei pruugi saada hädas. 1161 00:54:54,890 --> 00:54:58,550 >> Mõnikord, kui sa lihtsalt minema välja, 1, sa teed midagi valesti, ja sa 1162 00:54:58,550 --> 00:54:59,220 võiks saada hädas. 1163 00:54:59,220 --> 00:55:00,820 Aga te ei pea alati pahandusi. 1164 00:55:00,820 --> 00:55:05,170 See sõltub sellest, kui palju halba te ei, sa lähed, et saada hädas. 1165 00:55:05,170 --> 00:55:07,790 Mis ei tähenda, lohakas oma koodi. 1166 00:55:07,790 --> 00:55:12,080 Aga see tähendab, siis programm ei alati loobuda, isegi kui te lähete kuhugi 1167 00:55:12,080 --> 00:55:14,130 sa ei tohiks minna. 1168 00:55:14,130 --> 00:55:18,170 >> Hea näide sellest on palju inimesi nende lahendamist 3, mis 1169 00:55:18,170 --> 00:55:22,350 oli 15, ei kontrollinud piire pardal. 1170 00:55:22,350 --> 00:55:25,860 Nii et sa vaatasid vasakule vaadanud õige, vaatasin üles, vaatas 1171 00:55:25,860 --> 00:55:27,000 põhja. 1172 00:55:27,000 --> 00:55:31,540 Aga sa ei vaadata, kui top tegelikult saab olema pardal. 1173 00:55:31,540 --> 00:55:35,220 Ja palju inimesi, kes seda tegi ja välja, et nende programm töötas 1174 00:55:35,220 --> 00:55:38,960 täiesti, sest kui kõnealune organ oli salvestatakse mällu, kui sa läksid üks 1175 00:55:38,960 --> 00:55:42,300 kohal või kontrollida, et mälu aadressi, ei olnud midagi 1176 00:55:42,300 --> 00:55:44,870 eriti jube sellest, nii et teie programm ei olnud 1177 00:55:44,870 --> 00:55:45,970 läheb peale karjuma. 1178 00:55:45,970 --> 00:55:48,870 >> Aga me ikkagi startida punkte kui sa ei kontrollinud, et kuna te 1179 00:55:48,870 --> 00:55:50,850 tegid midagi, mida ei olnud peaks tegema, ja siis võiks olla 1180 00:55:50,850 --> 00:55:51,860 saanud hädas. 1181 00:55:51,860 --> 00:55:54,040 Koefitsiendid on, kuigi te ilmselt ei ole. 1182 00:55:54,040 --> 00:55:57,790 Nii see on, et jaa, saame ikka minna seda. 1183 00:55:57,790 --> 00:55:59,010 Ja me ei lähe Probleem selles asjas. 1184 00:55:59,010 --> 00:56:04,000 Kui üritasime ei loe Järgmise 100 tähemärki, olime 1185 00:56:04,000 --> 00:56:06,000 ilmselt pahandusi. 1186 00:56:06,000 --> 00:56:09,400 Ja saate koodi lugemist järgmise 100 märki, kui soovite, tehes mõned 1187 00:56:09,400 --> 00:56:10,110 omamoodi silmus. 1188 00:56:10,110 --> 00:56:10,850 Jah. 1189 00:56:10,850 --> 00:56:16,250 >> Üliõpilane: Kuna meil oli määratud, et ruumi tegelik väärtus, et me ei 1190 00:56:16,250 --> 00:56:17,050 tegelikult oleks võimalik näha midagi. 1191 00:56:17,050 --> 00:56:21,740 Kui me püüame seda, millega see võrdne meeldib c või midagi? 1192 00:56:21,740 --> 00:56:22,640 >> JASON Hirschhorn: Hea küsimus. 1193 00:56:22,640 --> 00:56:25,340 Kuidas ma seda väärtust - 1194 00:56:25,340 --> 00:56:28,980 mida koodirida ma kirjutan on line seitse teha seda, mida sa ütlesid? 1195 00:56:28,980 --> 00:56:34,040 >> Üliõpilane: Star ptr võrdub ühe quote c lõppu ülakoma. 1196 00:56:34,040 --> 00:56:36,970 >> JASON Hirschhorn: Nii et paneb iseloomu, c, selles kohas, 1197 00:56:36,970 --> 00:56:40,200 sest jällegi, et täht tähendab minna sinna. 1198 00:56:40,200 --> 00:56:43,320 Ja kui kasutada vasakul küljel omistamisoperaatorile, mis võrdub 1199 00:56:43,320 --> 00:56:47,270 kirjutada, et me ei hakka, et väärtus nii palju, nagu on sätestatud, et väärtus. 1200 00:56:47,270 --> 00:56:48,520 Nüüd vaatame, mis juhtub. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Panime sinna midagi ja see oli seal. 1203 00:56:56,770 --> 00:56:58,000 Me kutsusime tasuta. 1204 00:56:58,000 --> 00:57:00,100 Mõned asjad ilmselt juhtus hunnik. 1205 00:57:00,100 --> 00:57:01,890 Nii et see ei ole enam seal. 1206 00:57:01,890 --> 00:57:07,440 Aga jälle, me ei saa hädas sinna minna. 1207 00:57:07,440 --> 00:57:10,260 >> Ma teen seda läbi koodi illustreerimiseks et on palju neid 1208 00:57:10,260 --> 00:57:12,410 küsimustele, mis sul on, et nad on väga huvitav 1209 00:57:12,410 --> 00:57:13,650 vastab palju aega. 1210 00:57:13,650 --> 00:57:15,260 Ja nad on tõesti head küsimused. 1211 00:57:15,260 --> 00:57:19,010 Ja saate aru neid läbi oma kui näiteks 1212 00:57:19,010 --> 00:57:19,990 me ei ole osa. 1213 00:57:19,990 --> 00:57:20,940 Jah. 1214 00:57:20,940 --> 00:57:24,430 >> Üliõpilane: Sest sa ei saada pointer kuhugi, sa pead 1215 00:57:24,430 --> 00:57:26,530 kasutada malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON Hirschhorn: Nii see läheb tagasi oma esialgse küsimuse. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 Kas see on lihtsalt kohaliku muutuja? 1219 00:57:29,980 --> 00:57:32,280 Malloc siin ei ole, et veenvad. 1220 00:57:32,280 --> 00:57:35,260 Kasutamise malloc siin ei ole mis mõjuvad, sest see on 1221 00:57:35,260 --> 00:57:36,500 lihtsalt kohaliku muutuja. 1222 00:57:36,500 --> 00:57:40,970 >> Üliõpilane: Nii sa said char star ptr võrdub tere? 1223 00:57:40,970 --> 00:57:41,400 >> JASON Hirschhorn: Oh. 1224 00:57:41,400 --> 00:57:43,300 Nii et me läheme nüüd tagasi saada oma esialgse küsimuse. 1225 00:57:43,300 --> 00:57:46,885 Ma arvan, et sa ei ole rahul minu vastus. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 Niimoodi? 1228 00:57:49,226 --> 00:57:49,682 >> Üliõpilane: Jah. 1229 00:57:49,682 --> 00:57:50,932 Oota. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON Hirschhorn: Ja kus sa tahad välja printida? 1232 00:57:57,850 --> 00:58:00,026 Nii me välja printida string niimoodi? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> Üliõpilane: Huvitav. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON Hirschhorn: Nii et see ütleb, et see argument on tüüpi tegelane. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Nii et see peaks olema iseloomu. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> Üliõpilane: Lihtsalt võtab esimene. 1241 00:58:26,280 --> 00:58:28,610 >> JASON Hirschhorn: Nii et see on see, mida ma enne ütlesin. 1242 00:58:28,610 --> 00:58:34,240 Nagu ma ütlesin, see ei ole hoidmine string sees muutuja pointer. 1243 00:58:34,240 --> 00:58:35,120 See ladustamiseks - 1244 00:58:35,120 --> 00:58:36,350 >> Üliõpilane: esimene väärtus stringi. 1245 00:58:36,350 --> 00:58:40,810 >> JASON Hirschhorn: aadress esimene väärtus string. 1246 00:58:40,810 --> 00:58:46,940 Kui me välja printida seda, et me oleme saada raha sees osuti. 1247 00:58:46,940 --> 00:58:51,005 Ja me näeme, et on tõepoolest mälu aadressi. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> Kas see on mõtet? 1250 00:58:56,440 --> 00:58:56,940 Vabandust. 1251 00:58:56,940 --> 00:58:58,996 Oota, kas see vastab teie küsimus, kuigi? 1252 00:58:58,996 --> 00:58:59,790 >> Üliõpilane: Jah. 1253 00:58:59,790 --> 00:59:05,830 >> JASON Hirschhorn: See rida koodi luua string ja seejärel teine 1254 00:59:05,830 --> 00:59:09,115 muutuja pointer, mis on suunaga selle string, et massiivi. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Jah. 1257 00:59:14,980 --> 00:59:19,200 >> Üliõpilane: Nii et kui me läksime ühte mälu edasiste oleks me h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 Kas see on salvestatud stringi? 1260 00:59:23,150 --> 00:59:24,400 >> JASON Hirschhorn: Nagu me tegime - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 nii et see on väärtuslik teha. 1263 00:59:30,790 --> 00:59:33,780 See on punkt aritmeetika, mis te varem näinud ja see peaks olema 1264 00:59:33,780 --> 00:59:35,550 suhteliselt rahul. 1265 00:59:35,550 --> 00:59:36,905 See on sarnane kirjalikult - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 kui me kirjutada rida koodi, oleme näinud hulgaliselt märke enne. 1268 00:59:46,350 --> 00:59:55,900 See peaks andma meile teise väärtus selle massiivi, h. 1269 00:59:55,900 --> 01:00:05,010 >> Kui me seda tegime, see peaks andma ka meile teine ​​väärtus, et massiivi. 1270 01:00:05,010 --> 01:00:08,320 Sest see läheb mitte mälu aadressi esimene asi, kuid 1271 01:00:08,320 --> 01:00:10,530 mälu aadress asi üks üle. 1272 01:00:10,530 --> 01:00:14,360 Ja siis täht operaator dereferences et kursor. 1273 01:00:14,360 --> 01:00:16,940 Ja veel, vaatame. 1274 01:00:16,940 --> 01:00:18,664 Me saame h uuesti. 1275 01:00:18,664 --> 01:00:20,980 >> Õpilane: Mida see käivitatav tähendab? 1276 01:00:20,980 --> 01:00:23,650 >> JASON Hirschhorn: käivitatav on väljamõeldud sõna minna. 1277 01:00:23,650 --> 01:00:26,390 Mine seda ja saada seda, mida seal on käivitatav pointer. 1278 01:00:26,390 --> 01:00:28,240 See on lihtsalt väljamõeldud sõna eest. 1279 01:00:28,240 --> 01:00:29,986 >> Üliõpilane: Kui me tahtsime print terve rida, kas me 1280 01:00:29,986 --> 01:00:31,930 teha ampersand pointer? 1281 01:00:31,930 --> 01:00:33,490 >> JASON Hirschhorn: OK, me oleme läheb pausi siin. 1282 01:00:33,490 --> 01:00:35,480 Me lõpetame siin. 1283 01:00:35,480 --> 01:00:41,760 Ampersand annab sulle aadressi asukohta, nii et kui sa ampersand kohta 1284 01:00:41,760 --> 01:00:44,080 muutuja, see annab sulle aadressi kus muutuja on salvestatud. 1285 01:00:44,080 --> 01:00:48,580 Ampersand pointer annab teile aadress ptr kus ptr on mälu. 1286 01:00:48,580 --> 01:00:50,140 >> Me ei kavatse minna Selle näite. 1287 01:00:50,140 --> 01:00:52,640 Saate aru, need asjad ise. 1288 01:00:52,640 --> 01:00:55,740 Aga jälle, see võib isegi verging natuke kaugemale, sa pead teadma, 1289 01:00:55,740 --> 01:00:58,000 ulatus see vahekokkuvõte - 1290 01:00:58,000 --> 01:00:59,070 või selle viktoriini, pigem. 1291 01:00:59,070 --> 01:01:00,270 Vabandust. 1292 01:01:00,270 --> 01:01:03,770 >> Me edasi liikuda, sest ma meeldib teha üks kodeerimine probleem 1293 01:01:03,770 --> 01:01:05,100 enne kui aeg on läbi. 1294 01:01:05,100 --> 01:01:09,340 Ja me koodi, mis ma arvan on kõige kaalukaid nendest 1295 01:01:09,340 --> 01:01:11,020 näited, atoi. 1296 01:01:11,020 --> 01:01:14,520 Nii et see oli küsimus viktoriin kaks aastat tagasi. 1297 01:01:14,520 --> 01:01:17,810 Ja mul on laual siin. 1298 01:01:17,810 --> 01:01:20,680 >> Inimesed paluti edasi viktoriin - 1299 01:01:20,680 --> 01:01:23,640 anti neile veidi rohkem tesxt sisse küsimus, kuid ma kõrvaldanud 1300 01:01:23,640 --> 01:01:26,640 teksti, sest see oli tarbetu meie eesmärkidel nüüd. 1301 01:01:26,640 --> 01:01:29,180 See oli lihtsalt mingi taust millistel atoi tegi. 1302 01:01:29,180 --> 01:01:31,425 Aga te kõik teate ja on väga tuttav atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Ma soovitan teil kodeerida seda kohta paberilehele. 1304 01:01:35,620 --> 01:01:39,310 Ma ka soovitan teil kasutada strateegia et oleme läinud üle 1305 01:01:39,310 --> 01:01:41,040 Palju meie osakonda. 1306 01:01:41,040 --> 01:01:44,130 Esiteks, veenduge, et mõistate mida atoi teeb. 1307 01:01:44,130 --> 01:01:47,580 Joonista pilt või tulla mõned vaimse pilt see oma peaga. 1308 01:01:47,580 --> 01:01:51,120 Seejärel kirjutada välja pseudokoodi eest. 1309 01:01:51,120 --> 01:01:53,120 On viktoriin, kui kõik teil on pseudokoodi, vähemalt sa 1310 01:01:53,120 --> 01:01:54,550 pane midagi maha. 1311 01:01:54,550 --> 01:02:00,070 Ja siis map et pseudokoodi peale C. Kui teil on kontrolli oma 1312 01:02:00,070 --> 01:02:03,760 pseudokoodi, nagu vaadata, kas midagi on 1, mis kataks kui 1313 01:02:03,760 --> 01:02:05,750 seisund ja nii edasi. 1314 01:02:05,750 --> 01:02:07,850 Ja lõpuks, Code programmi C. 1315 01:02:07,850 --> 01:02:15,000 >> Nii et mine tagasi atoi ja võtab viis minutit kodeerida seda lehte 1316 01:02:15,000 --> 01:02:19,480 paber, mis on tõenäoliselt umbes palju aega teil oleks võtta 1317 01:02:19,480 --> 01:02:21,260 viktoriin kood atoi. 1318 01:02:21,260 --> 01:02:27,060 Viis kuni 15 minutit, viis kuni 12, viis kuni 10 minutit, umbes summa 1319 01:02:27,060 --> 01:02:30,150 aega sa kulutada seda küsimust viktoriini. 1320 01:02:30,150 --> 01:02:31,670 Nii, et võta viis minutit nüüd, palun. 1321 01:02:31,670 --> 01:02:35,957 Ja kui teil on küsimusi, tõsta oma käsi ja ma tulen umbes. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [SIDE CONVERSATIONS] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON Hirschhorn: OK, nii mis oli viis minutit. 1326 01:08:37,580 --> 01:08:39,880 See oli ilmselt umbes summa aega sa kulutada, et viktoriin, 1327 01:08:39,880 --> 01:08:42,120 võibolla pessimistlikuma sel ajal. 1328 01:08:42,120 --> 01:08:44,010 Me veel kord natuke. 1329 01:08:44,010 --> 01:08:45,740 Alustagem kodeerimine see. 1330 01:08:45,740 --> 01:08:49,479 Ja kui me ei saa kogu aeg, vastused selle ja selle 1331 01:08:49,479 --> 01:08:54,189 viktoriini küsimus on olemas, jälle, Fall 2011 on siis see küsimus 1332 01:08:54,189 --> 01:08:54,913 ilmus viktoriin. 1333 01:08:54,913 --> 01:08:57,830 >> Ja see oli väärt kaheksa punkti Euroopa viktoriin siis. 1334 01:08:57,830 --> 01:09:01,140 Kaheksa punkti on kallite palju punkte on midagi väärt. 1335 01:09:01,140 --> 01:09:04,790 Enamik küsimusi on vahemikus ning 1-6 punkti. 1336 01:09:04,790 --> 01:09:08,500 Nii et see on keerulisem küsimus, kindlasti. 1337 01:09:08,500 --> 01:09:09,750 Kas keegi oskab mind hakkas? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Üldiselt, mida me et tahad teha seda 1340 01:09:15,380 --> 01:09:17,550 toimida atoi loogiliselt? 1341 01:09:17,550 --> 01:09:19,569 Mida me tahame teha? 1342 01:09:19,569 --> 01:09:22,279 Nii et me ei kavatse kirjutada mõned pseudokoodi. 1343 01:09:22,279 --> 01:09:24,090 >> Üliõpilane: Convert tähemärki arvesse täisarvud. 1344 01:09:24,090 --> 01:09:26,700 >> JASON Hirschhorn: Convert tähemärki arvesse täisarvud. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 Niisiis, kui palju märke on meil läheb vaja läbida? 1347 01:09:30,870 --> 01:09:32,295 >> Üliõpilane: kõik. 1348 01:09:32,295 --> 01:09:34,100 >> Üliõpilane: Kõik tegelased stringi. 1349 01:09:34,100 --> 01:09:35,540 >> JASON Hirschhorn: Kõik märkide string. 1350 01:09:35,540 --> 01:09:42,180 Nii et kui me tahtsime minna läbi iga märgi string, mis on jäänud 1351 01:09:42,180 --> 01:09:44,560 C oleme näinud, mis on võimaldanud meil läbida iga 1352 01:09:44,560 --> 01:09:45,939 märgi string? 1353 01:09:45,939 --> 01:09:46,819 >> Õpilased: silmus. 1354 01:09:46,819 --> 01:09:48,069 >> JASON Hirschhorn: silmus. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Nii et me läheme ahela kaudu iga tegelane s. 1357 01:09:55,330 --> 01:10:00,940 >> Siis mida me tahame teha, kui me eripära? 1358 01:10:00,940 --> 01:10:02,480 Ütle, et me teeme möödunud 90. 1359 01:10:02,480 --> 01:10:03,460 Me saame 9. 1360 01:10:03,460 --> 01:10:04,240 See on iseloomu. 1361 01:10:04,240 --> 01:10:07,440 Mida me tahame teha et märk 9? 1362 01:10:07,440 --> 01:10:10,082 >> Üliõpilane: lahutama selle iseloomu 0? 1363 01:10:10,082 --> 01:10:11,860 >> Üliõpilane: Lisa 0? 1364 01:10:11,860 --> 01:10:13,350 >> JASON Hirschhorn: Lahuta seda laadi 0? 1365 01:10:13,350 --> 01:10:13,800 >> Üliõpilane: Jah. 1366 01:10:13,800 --> 01:10:15,573 >> JASON Hirschhorn: Miks sa tahad seda teha? 1367 01:10:15,573 --> 01:10:16,560 >> Õpilane: [kuuldamatu] 1368 01:10:16,560 --> 01:10:17,010 väärtus. 1369 01:10:17,010 --> 01:10:18,380 Selle int väärtust. 1370 01:10:18,380 --> 01:10:21,580 >> JASON Hirschhorn: OK, nii et me võtame märgi 9, lahutama selle 1371 01:10:21,580 --> 01:10:25,820 iseloomu 0 saada tegelik täisarv 9. 1372 01:10:25,820 --> 01:10:27,070 Sweet. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 Ja kuidas sa tead, et märk 9 miinus 0 iseloom on 9? 1375 01:10:37,000 --> 01:10:39,222 Mis skeem ei te vaatate? 1376 01:10:39,222 --> 01:10:43,130 >> Üliõpilane: On loogiliselt üheksa kohad 9 kuni 0. 1377 01:10:43,130 --> 01:10:44,620 Või siis võiks vaadata ASCII tabelis. 1378 01:10:44,620 --> 01:10:45,120 >> JASON Hirschhorn: ASCII tabelis. 1379 01:10:45,120 --> 01:10:46,490 Aga jah, sa oled õige ka. 1380 01:10:46,490 --> 01:10:47,780 Nii me lahutame 0. 1381 01:10:47,780 --> 01:10:49,010 Nüüd on meil täisarv 9. 1382 01:10:49,010 --> 01:10:49,970 Ja mida me tahame teha on? 1383 01:10:49,970 --> 01:10:54,970 Kui meil on 90, see on esimene täisarv oleme, mida me tahame teha? 1384 01:10:54,970 --> 01:10:58,180 >> Üliõpilane: ma panna ajutine täisarv massiiv, siis teha matemaatika see 1385 01:10:58,180 --> 01:11:02,088 hiljem, et sellest saaks lõpuks. 1386 01:11:02,088 --> 01:11:03,020 >> JASON Hirschhorn: OK. 1387 01:11:03,020 --> 01:11:06,990 >> Üliõpilane: Te võite alustada aasta lõpus massiivi ja siis edasi liikuda nii 1388 01:11:06,990 --> 01:11:10,350 et iga kord, kui te edasi liikuda, sa korrutada see 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON Hirschhorn: OK. 1390 01:11:10,830 --> 01:11:12,250 See kõlab üsna kaalukaid idee. 1391 01:11:12,250 --> 01:11:16,040 Saame alustada lõpus meie massiivi ja me saame kasutada strleng. 1392 01:11:16,040 --> 01:11:17,030 Saame kasutada strleng siin. 1393 01:11:17,030 --> 01:11:18,870 Me saame pikkuse meie string. 1394 01:11:18,870 --> 01:11:20,100 Alustame lõpus. 1395 01:11:20,100 --> 01:11:29,170 Ja + esimene, me lihtsalt võtta, et täisarv, ja võib-olla loome nagu 1396 01:11:29,170 --> 01:11:32,270 uus täisarv muutuja üleval kus me ladustamiseks kõike. 1397 01:11:32,270 --> 01:11:37,340 Nii me silmus läbi iga char s tagurpidi, me lahutame 0, ja 1398 01:11:37,340 --> 01:11:42,790 siis me võtame selle ja sõltuvalt kus see on, me korrutame 1399 01:11:42,790 --> 01:11:45,860 by võimsus 10. 1400 01:11:45,860 --> 01:11:50,644 Kuna esimene, mida me korrutada parempoolsem iseloomu? 1401 01:11:50,644 --> 01:11:51,440 >> Üliõpilane: 10 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON Hirschhorn: 10 0. 1403 01:11:53,170 --> 01:11:56,010 Mida me korrutame teine parempoolsem iseloomu? 1404 01:11:56,010 --> 01:11:57,450 >> Õpilane: [kuuldamatu]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON Hirschhorn: Mis on? 1406 01:11:57,960 --> 01:11:59,150 >> Üliõpilane: 10 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON Hirschhorn: 10 1. 1408 01:12:00,420 --> 01:12:03,754 Kolmanda parempoolsem iseloomu? 1409 01:12:03,754 --> 01:12:04,580 >> Üliõpilane: 10 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON Hirschhorn: 10 2. 1411 01:12:05,350 --> 01:12:07,200 >> Üliõpilane: Vabandust, ma ei saa aru mida me siin teeme. 1412 01:12:07,200 --> 01:12:08,640 >> JASON Hirschhorn: OK, lähme tagasi siis. 1413 01:12:08,640 --> 01:12:12,500 Nii et me ei kavatse saada aastal vastu võetud string. 1414 01:12:12,500 --> 01:12:14,470 Sest me kirjalikult atoi. 1415 01:12:14,470 --> 01:12:15,260 Me saame sooritanud string. 1416 01:12:15,260 --> 01:12:17,640 Ütle, et me kaldume edasi string 90. 1417 01:12:17,640 --> 01:12:19,930 >> Esimene asi, mida me teeme, on kehtestatud uus täisarv muutuja, mida me oleme 1418 01:12:19,930 --> 01:12:22,150 lihtsalt kavatse luua nagu meie uus täisarv. 1419 01:12:22,150 --> 01:12:24,630 See, mida me tagastama lõpus. 1420 01:12:24,630 --> 01:12:30,110 Me peame minema läbi iga tegelane string, sest leidsime, 1421 01:12:30,110 --> 01:12:34,430 et meil on vaja puudutada iga üks ja siis lisada see meie uus täisarv. 1422 01:12:34,430 --> 01:12:36,330 >> Kuid me ei saa lihtsalt lisada selle number. 1423 01:12:36,330 --> 01:12:38,270 Me ei saa lihtsalt võtta 9 ja Lisa 9 meie täisarv. 1424 01:12:38,270 --> 01:12:40,560 See sõltub sellest, mida koht see on string. 1425 01:12:40,560 --> 01:12:42,960 Me peame korrutama seda võimu 10. 1426 01:12:42,960 --> 01:12:45,580 Sest see, kuidas alus 10 tööd. 1427 01:12:45,580 --> 01:12:49,050 >> Nii et me ei kavatse saada tegelik isiksuse või tegeliku täisarv 1428 01:12:49,050 --> 01:12:53,860 number, lahutatakse iseloomu 0 alates iseloom 9 nagu tegime 1429 01:12:53,860 --> 01:12:57,560 lahutades iseloomu kapitali alates olenemata iseloomu meil oli üks 1430 01:12:57,560 --> 01:12:58,120 need probleemid. 1431 01:12:58,120 --> 01:13:04,190 Nii me tegelikult saada number vahemikus 0 kuni 9 salvestatakse reaalne number, ja me 1432 01:13:04,190 --> 01:13:07,590 korrutada see võimsus 10 olenevalt sellest, kus me oleme string. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 Ja siis me liidame selle tagasi meie uus täisarv muutuja. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Mis siis see näeks välja nagu oleks olla - me teha siin. 1437 01:13:37,890 --> 01:13:40,086 Kui me möödunud string 90 - 1438 01:13:40,086 --> 01:13:41,336 >> Õpilane: [kuuldamatu]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON Hirschhorn: Aga atoi võtab stringi. 1441 01:13:45,540 --> 01:13:46,350 Nii et me läheme läbi põllumajandusettevõttes. 1442 01:13:46,350 --> 01:13:49,900 Viime möödus 90. 1443 01:13:49,900 --> 01:13:51,540 Me läheme tagant ette. 1444 01:13:51,540 --> 01:13:53,920 Võtame 0. 1445 01:13:53,920 --> 01:13:55,080 >> Õpilane: Mul on kahju. 1446 01:13:55,080 --> 01:13:55,880 Võibolla see on loll. 1447 01:13:55,880 --> 01:13:59,440 Kui me jõuame möödunud string, Miks on 90, mida me 1448 01:13:59,440 --> 01:14:00,260 saada möödus? 1449 01:14:00,260 --> 01:14:03,160 Kuna 90 on täisarv. 1450 01:14:03,160 --> 01:14:06,820 >> JASON Hirschhorn: Kuna atoi võtab string ja muudab see täisarv 1451 01:14:06,820 --> 01:14:08,320 esindatus, et string. 1452 01:14:08,320 --> 01:14:13,650 Aga string 90 ei ole täisarv 90 või number 90. 1453 01:14:13,650 --> 01:14:17,920 String 90 on massiivi kaks või kolm märki, pigem 9 1454 01:14:17,920 --> 01:14:22,740 iseloomu, 0 iseloomuga ja kurakriips 0 iseloomu. 1455 01:14:22,740 --> 01:14:26,260 >> Ja me kirjalikult atoi seepärast, et Näiteks, kui te võtate käsk 1456 01:14:26,260 --> 01:14:30,230 line argument, ja see on salvestatud argv, see on salvestatud stringi. 1457 01:14:30,230 --> 01:14:32,940 Aga kui sa tahad pidada seda arvu, sa pead muutma selle 1458 01:14:32,940 --> 01:14:34,700 tegelik täisarv. 1459 01:14:34,700 --> 01:14:37,210 Mis me tegime üks meie probleem komplekti. 1460 01:14:37,210 --> 01:14:38,800 Mis me tegime number meie probleem komplekti. 1461 01:14:38,800 --> 01:14:41,690 Igaüks, kes võttis täisarv kui käsurea argument. 1462 01:14:41,690 --> 01:14:46,490 Nii et miks meie atoi funktsioon võtab stringi. 1463 01:14:46,490 --> 01:14:51,910 >> Nii et taas, meie näites siin, me oleme kavatseme viimane. 1464 01:14:51,910 --> 01:14:55,050 Me lahutame iseloomu 0 sellest, et märgid 0 1465 01:14:55,050 --> 01:14:58,810 lahutatud iseloomu 0 annab teile tegelik arv 0, vastavalt 1466 01:14:58,810 --> 01:15:00,950 ASCII matemaatika, mida me teeme. 1467 01:15:00,950 --> 01:15:04,870 >> Kuna tegelased on esindatud teistsugune kui nende tegelik - 1468 01:15:04,870 --> 01:15:08,830 iseloomu, näiteks väiketähed on 97. 1469 01:15:08,830 --> 01:15:10,260 See ei ole - oops! 1470 01:15:10,260 --> 01:15:13,290 See ei ole mida sa oodata seda, 0, näiteks. 1471 01:15:13,290 --> 01:15:16,200 Nii et sa pead lahutama märk saada 0. 1472 01:15:16,200 --> 01:15:18,950 >> Nii et me ei kavatse seda teha siin saada tegelik number. 1473 01:15:18,950 --> 01:15:22,560 Ja siis me korrutame seda võimsus 10 sõltuvalt sellest, kus see 1474 01:15:22,560 --> 01:15:27,030 on string ja seejärel võtta, et ja lisada selle oma koha omanik 1475 01:15:27,030 --> 01:15:32,520 muutuja, et saaksime tulla meie viimane uus täisarv. 1476 01:15:32,520 --> 01:15:35,080 Kas see on mõistlik kõigile? 1477 01:15:35,080 --> 01:15:37,730 >> Nii et me ei kavatse kood Siin just nüüd, sest me oleme 1478 01:15:37,730 --> 01:15:38,830 saada vähe aega. 1479 01:15:38,830 --> 01:15:40,860 Vabandan ajastus, et. 1480 01:15:40,860 --> 01:15:44,620 Aga see on see, mis loodetavasti sa oleks olema võimeline tegema viktoriin - kell 1481 01:15:44,620 --> 01:15:47,710 Äärmisel juhul saan selle pseudokoodi välja kirjutatud. 1482 01:15:47,710 --> 01:15:50,840 >> Ja siis, kui me kirjutada pseudokoodi, tegelikult me ​​võiks seda teha 1483 01:15:50,840 --> 01:15:51,490 päris kiiresti. 1484 01:15:51,490 --> 01:15:55,230 Iga rida märkusi me kandsime siin tõlgib umbes 1485 01:15:55,230 --> 01:15:56,970 üks rida C koodi. 1486 01:15:56,970 --> 01:16:01,780 Kuulutatakse uus muutuja, kirjalikult loop, mõned lahutamine, mõned 1487 01:16:01,780 --> 01:16:07,070 korrutamine ja mõned ülesanne. 1488 01:16:07,070 --> 01:16:09,020 Me tahaks ilmselt ka soovi kirjuta tagastamise liin. 1489 01:16:09,020 --> 01:16:12,040 Me võime ka taha panna mõned kontrollid siin. 1490 01:16:12,040 --> 01:16:12,655 Jah. 1491 01:16:12,655 --> 01:16:15,720 >> Üliõpilane: Nii et me saame ravida s kui tegelik string? 1492 01:16:15,720 --> 01:16:18,730 Sest ma tean, et see on lihtsalt aadress. 1493 01:16:18,730 --> 01:16:22,090 Meeldib, kuidas sa saad pikkus string on läbi? 1494 01:16:22,090 --> 01:16:25,310 >> JASON Hirschhorn: Nii et kuidas pikkus string? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> Üliõpilane: strlen, jah. 1497 01:16:26,660 --> 01:16:30,550 Aga kas te panete s kui argument on? 1498 01:16:30,550 --> 01:16:34,620 >> JASON Hirschhorn: Nii strlen võtab char star. 1499 01:16:34,620 --> 01:16:38,090 Ja selgub, et char star, ja see hoiab lugedes, kuni see jõuab 1500 01:16:38,090 --> 01:16:41,865 kurakriips 0. strlen oli tegelikult üks teised programmid me 1501 01:16:41,865 --> 01:16:42,850 ei kavatse kood. 1502 01:16:42,850 --> 01:16:44,560 See on veel üks hea üks kood. 1503 01:16:44,560 --> 01:16:47,270 See üks on natuke lihtsam, sest kui sa lähed mõelda, et 1504 01:16:47,270 --> 01:16:47,830 kontseptuaalselt - 1505 01:16:47,830 --> 01:16:51,620 Ma just ütlesin seda valjusti - strlen järgmiselt pointer ja peab minema ja 1506 01:16:51,620 --> 01:16:54,210 lugedes ja jälgida kuni jõuad längkriipsu 0. 1507 01:16:54,210 --> 01:16:56,530 >> Üliõpilane: OK, sain aru. 1508 01:16:56,530 --> 01:17:00,200 >> JASON Hirschhorn: Nii et palju õnne viktoriin 0 homme. 1509 01:17:00,200 --> 01:17:03,170 Kui teil on küsimusi, ma tulen olema väljaspool pärast seda. 1510 01:17:03,170 --> 01:17:05,610 Julgelt emaili mulle. 1511 01:17:05,610 --> 01:17:08,480 Jõuda oma TF kui sa oled minu jagu saada või minu 1512 01:17:08,480 --> 01:17:10,005 kiri, kui soovite. 1513 01:17:10,005 --> 01:17:13,140 >> Kui soovite närvi ja saatke mulle email, freakout email, ma tulen 1514 01:17:13,140 --> 01:17:16,710 saadan sulle tagasi, nagu naerusuu või, nagu nali või midagi. 1515 01:17:16,710 --> 01:17:18,190 Nii et võid vabalt teha ka. 1516 01:17:18,190 --> 01:17:20,750 Õnne veelkord ja ma näen teid kõiki järgmisel nädalal. 1517 01:17:20,750 --> 01:17:23,435