1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON HIRSCHHORN: Tervetuloa to A5, kaikille. 3 00:00:07,820 --> 00:00:11,270 Meillä on jännittävä viikko edessämme, lähinnä koska on niin monia uusia 4 00:00:11,270 --> 00:00:12,350 kasvot tässä huoneessa. 5 00:00:12,350 --> 00:00:12,920 Se on hienoa. 6 00:00:12,920 --> 00:00:15,740 Monet teistä ovat täällä sattumalta, joka on vielä parempi. 7 00:00:15,740 --> 00:00:18,220 Joten toivottavasti sinun pitää liittyä meihin. 8 00:00:18,220 --> 00:00:20,220 >> Tällä viikolla aiomme viettää Suurin osa osiossa 9 00:00:20,220 --> 00:00:21,870 valmistautuu tietokilpailu. 10 00:00:21,870 --> 00:00:26,580 Joten kohti meidän asialistalla, me aiomme puhua vähän siitä resursseja luokka, 11 00:00:26,580 --> 00:00:30,350 mutta myös tietokilpailu, ja sitten uudelleen, viettää suurimman luokan puhumisen 12 00:00:30,350 --> 00:00:31,390 noin kysymyksiä. 13 00:00:31,390 --> 00:00:33,900 Kun olemme tehneet vastaamalla kysymyksiä tai jos kysymyksiin 14 00:00:33,900 --> 00:00:39,010 luonnollisesti johtaa meidät joitakin koodausta, I on näyte ongelmia midterms 15 00:00:39,010 --> 00:00:43,180 aiemmin, että me koodaa live jaksossa yhdessä, että myös tuoda sinne muualta 16 00:00:43,180 --> 00:00:45,420 hyvä aiheita kattamiseksi. 17 00:00:45,420 --> 00:00:48,280 >> Joten ensin, koska olemme käyneet läpi varten Parin viime viikon aikana muistuttamaan 18 00:00:48,280 --> 00:00:51,700 kaverit, on olemassa ton resursseja saatavilla tämän kurssin. 19 00:00:51,700 --> 00:00:55,020 Monet heistä ovat uskomattoman hyödyllinen teille kuin jatkat 20 00:00:55,020 --> 00:00:57,280 opiskella tietokilpailu 0, koska se on tiistaina iltapäivällä. 21 00:00:57,280 --> 00:00:59,630 Joten te kaikki olette olleet opiskelevat vähän. 22 00:00:59,630 --> 00:01:02,640 >> On luentojen ja lähde koodi, joka sinun pitäisi 23 00:01:02,640 --> 00:01:04,050 ehdottomasti tarkistaa. 24 00:01:04,050 --> 00:01:05,019 Katsella shortsit. 25 00:01:05,019 --> 00:01:07,470 Tutustu study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 Ja sitten, lueteltu alla, numero muita resursseja. 27 00:01:11,770 --> 00:01:14,020 >> Jälleen tietokilpailu 0 on huomenna kello yksi. 28 00:01:14,020 --> 00:01:18,230 Jos et ole jo tehnyt niin, tarkista ulos Tietoja Quiz 0 asiakirja 29 00:01:18,230 --> 00:01:21,370 Kurssin kotisivu selvittää jos olet ottaen tietokilpailu. 30 00:01:21,370 --> 00:01:25,770 Tietovisa alkaa klo 01:10 ja päättyy 70 minuuttia myöhemmin. 31 00:01:25,770 --> 00:01:29,610 Joten jos ilmestyt jälkeen 01:10, olet menossa, että monet vähemmän minuuttia 32 00:01:29,610 --> 00:01:30,940 kuin 70 ottaa tietovisa. 33 00:01:30,940 --> 00:01:33,570 Joten varmista, että olet siellä ajoissa. 34 00:01:33,570 --> 00:01:38,690 Jos olet laajennus opiskelija tai on muulla testaus seikkojen perusteella 35 00:01:38,690 --> 00:01:40,400 ehkä olla yksi huomenna. 36 00:01:40,400 --> 00:01:43,540 Mutta jälleen kerran, tarkista Tietoja Quiz 0 dokumentoida varmista, että tiedät milloin 37 00:01:43,540 --> 00:01:44,760 olet ottaen tietokilpailu. 38 00:01:44,760 --> 00:01:46,440 Kirjoitin 75 minuuttia täällä. 39 00:01:46,440 --> 00:01:48,580 Mielestäni on oikein, ei 70. 40 00:01:48,580 --> 00:01:53,420 >> Se kattaa kaikki materiaali viikossa 0 viime viikon luento keskiviikkona. 41 00:01:53,420 --> 00:01:59,350 Ja vielä, tämän tietokilpailu, per että asiakirja, saat yksi kaksipuolinen ja 8 42 00:01:59,350 --> 00:02:03,770 1/2 11 paperiarkki, että saat käyttää muistiinpanoja tietokilpailu. 43 00:02:03,770 --> 00:02:08,570 Monet ihmiset, jos ei useimmat ihmiset, ovat todettiin, että suurin yksittäinen hyödyllinen tapa 44 00:02:08,570 --> 00:02:11,970 opiskella tietovisa on tehdä tutkimus arkki, 45 00:02:11,970 --> 00:02:13,730 yksi sisäpiirivastaavan, omia. 46 00:02:13,730 --> 00:02:17,710 Joten katso aiempien jos olet nähnyt aiempien. 47 00:02:17,710 --> 00:02:19,960 Tavoittaa ystäviä nähdä, mitä he laittaa omaansa. 48 00:02:19,960 --> 00:02:23,610 >> Mutta kädet alas, paras tapa voit Tutkimus on käydä läpi kaiken ja 49 00:02:23,610 --> 00:02:26,530 vuolla se alas, mitä katsotaan tai kuulu tähän arkille 50 00:02:26,530 --> 00:02:30,570 paperia, koska se on vain todella hyödyllinen tapa, jolla voit varmistaa, 51 00:02:30,570 --> 00:02:33,620 olet menossa läpi kaiken ja on jonkin verran perehtyneisyyttä sen. 52 00:02:33,620 --> 00:02:36,690 Useimmat ihmiset, löydämme, vaikka ne ovat paperiarkki istuu oikealla 53 00:02:36,690 --> 00:02:39,840 niiden vieressä on tietokilpailu, älä käännä sitä, koska, jälleen, että hyvin 54 00:02:39,840 --> 00:02:43,290 prosessi menee läpi tiedot on auttanut heitä oppimaan sitä. 55 00:02:43,290 --> 00:02:45,370 >> Onko kellään mitään kysyttävää noin tietokilpailu 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 On kaikki - 58 00:02:51,450 --> 00:02:53,230 En aio tehdä kättä. 59 00:02:53,230 --> 00:02:53,550 Ei se haittaa. 60 00:02:53,550 --> 00:02:54,790 Aioin kysyä, kuka alkoi opiskella. 61 00:02:54,790 --> 00:02:58,360 Mutta en halua tehdä sinulle kaikki ei nosta kätesi. 62 00:02:58,360 --> 00:03:01,290 Joten kuten sanoin - kyllä, Avi, mennä eteenpäin. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Mikä olisi hyödyllinen asia laittaa yhden hakulaite? 64 00:03:04,205 --> 00:03:05,875 >> Opiskelija: Se on sinun. 65 00:03:05,875 --> 00:03:08,210 >> JASON HIRSCHHORN: Saat käyttää harkintaa. 66 00:03:08,210 --> 00:03:13,220 Hyödyllisiä asioita laittaa yhden hakulaite, jos olet hämmentynyt iso O 67 00:03:13,220 --> 00:03:17,510 runtime erilaisia ​​hakuja ja lajittelee, pane se siellä 68 00:03:17,510 --> 00:03:18,760 näpsäkkä kaavio. 69 00:03:18,760 --> 00:03:22,250 Näin, jos sinulta kysytään, että tietokilpailu, sinun ei tarvitse yrittää selvittää 70 00:03:22,250 --> 00:03:23,560 se pois tai syy kautta runtime. 71 00:03:23,560 --> 00:03:24,730 Voit vain kopioida sen alas. 72 00:03:24,730 --> 00:03:28,320 Jos tarkastellaan tietokilpailuja ohi, paljon kertaa, siellä käyntiaika kysymyksiä. 73 00:03:28,320 --> 00:03:34,150 Niin, että olisi esimerkki hyvästä asia laittaa yhden hakulaite. 74 00:03:34,150 --> 00:03:37,450 >> Muita hyviä asioita laittaa, jos olet hämmentynyt siitä, miten julistaa 75 00:03:37,450 --> 00:03:40,570 toiminto tai mitä eri osat toiminto ilmoitus ovat, kirjoittaa 76 00:03:40,570 --> 00:03:43,400 että siellä, geneerisen version ja sitten ehkä esimerkki. 77 00:03:43,400 --> 00:03:47,290 Jos olet hämmentynyt osoittimia, kaavio siitä, miten viitteitä työ on 78 00:03:47,290 --> 00:03:48,660 luultavasti todella hyödyllinen. 79 00:03:48,660 --> 00:03:52,440 Jos olet hämmentynyt rekursio, maistella rekursiivinen funktio siellä 80 00:03:52,440 --> 00:03:54,980 voisi myös osoittautua todella hyödyllistä. 81 00:03:54,980 --> 00:03:57,290 Tarkoittaako tämä antaa teille joitakin ajatuksia? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Sinun täytyy ymmärtää koko kokoaminen prosessi, kuten 83 00:04:01,820 --> 00:04:03,220 miten tämä kaikki toimii? 84 00:04:03,220 --> 00:04:06,620 >> JASON HIRSCHHORN: Everything joka on katettu voisi 85 00:04:06,620 --> 00:04:08,060 näy tietokilpailu. 86 00:04:08,060 --> 00:04:08,930 Kysymykset - 87 00:04:08,930 --> 00:04:11,300 mutta jälleen kerran, jotkut asiat ovat painotettu voimakkaasti kuin toiset. 88 00:04:11,300 --> 00:04:14,330 Jotkut asiat ovat keksineet jälleen ja taas luokassa, vuonna 89 00:04:14,330 --> 00:04:15,590 luento, ja kohta. 90 00:04:15,590 --> 00:04:17,220 Muut asiat eivät ole keksiä usein. 91 00:04:17,220 --> 00:04:22,900 >> Olemme puhuneet paljon # include ja -L jotain ja mitä ne tarkoittavat 92 00:04:22,900 --> 00:04:24,390 tietojenkeruuprosessiin. 93 00:04:24,390 --> 00:04:29,120 Olemme puhuneet paljon GDB, takertua, niitä eri lippujen että käytämme kun 94 00:04:29,120 --> 00:04:33,100 meidän kääntää jotain, ja mitä make15, esimerkiksi todella 95 00:04:33,100 --> 00:04:34,510 tarkoittaa ja todella tekee. 96 00:04:34,510 --> 00:04:38,110 Emme ole puhua niin paljon jokainen askel 97 00:04:38,110 --> 00:04:39,240 tietojenkeruuprosessiin. 98 00:04:39,240 --> 00:04:40,410 Olemme vielä puhuneet siitä. 99 00:04:40,410 --> 00:04:42,550 Joten se on silti jotain, mitä olisi tunnettava. 100 00:04:42,550 --> 00:04:44,610 Mutta jälleen kerran, emme aio olla - 101 00:04:44,610 --> 00:04:49,140 asioita, jotka tulevat jopa useammin luokassa ovat todennäköisesti keksiä lisää 102 00:04:49,140 --> 00:04:52,495 usein ja raskaampia painotettu tietokilpailu. 103 00:04:52,495 --> 00:04:53,280 >> Cool. 104 00:04:53,280 --> 00:04:54,580 Muita kysymyksiä tietovisa 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, joten laitoin luettelo aiheita aluksella. 107 00:05:00,050 --> 00:05:01,550 Kävin läpi oppimäärän. 108 00:05:01,550 --> 00:05:07,340 Kävin läpi tarkastelun osio viime yönä ja niitä dioja keksiä 109 00:05:07,340 --> 00:05:13,710 kanssa ei ole tyhjentävä luettelo aiheista että olemme käsitelleet tähän mennessä CS50 110 00:05:13,710 --> 00:05:16,800 ja asioita, jotka saattavat näkyvät tietokilpailu. 111 00:05:16,800 --> 00:05:19,900 Joten en aio käydä läpi jokainen näistä. 112 00:05:19,900 --> 00:05:22,370 Että kestäisi paljon aikaa kuin meillä nyt. 113 00:05:22,370 --> 00:05:26,880 Mutta laitoin tämän tänne toivottavasti lenkille muistiasi siitä asioita, jotka voivat 114 00:05:26,880 --> 00:05:28,420 tai ei ehkä ole yhtä tuttu sinulle. 115 00:05:28,420 --> 00:05:32,850 >> Ja Mielelläni viettää suurimman osan § vastaamalla kysymyksiin 116 00:05:32,850 --> 00:05:35,130 näistä aiheista, aiheet, ei käsitellä tässä yhteydessä. 117 00:05:35,130 --> 00:05:36,130 Voimme kirjoittaa pseudo koodia. 118 00:05:36,130 --> 00:05:40,010 Voimme kirjoittaa koodin toiminnallisuus varmistaa, että sinulla - 119 00:05:40,010 --> 00:05:44,280 Voin vastata kysymykseesi ja auttaa jokainen pohjimmiltaan ymmärtää 120 00:05:44,280 --> 00:05:48,330 Monet näistä aiheista niin tunnet valmis ja mukava menee 121 00:05:48,330 --> 00:05:50,150 tietokilpailu huomenna. 122 00:05:50,150 --> 00:05:52,300 Joten lukea yli luettelo. 123 00:05:52,300 --> 00:05:54,780 Et toivottavasti tullut osiosta joitakin kysymyksiä. 124 00:05:54,780 --> 00:05:58,480 Kun olet valmis, nostamaan käden ja me päästä alkuun. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Pidä mielessä, sinulla on kysymyksiä, ei ole tyhmiä kysymyksiä. 127 00:06:05,200 --> 00:06:06,250 Olemme kuulleet, että paljon. 128 00:06:06,250 --> 00:06:09,490 Ja kysymyksiä sinulla on, olen valmis panostaa, monet muut ihmiset sekä 129 00:06:09,490 --> 00:06:11,740 istun tässä ja katsella verkossa on samoin. 130 00:06:11,740 --> 00:06:13,770 Joten voi vain auttaa ihmisiä kysymällä. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: Välillä pino ja kasaan, on olemassa ennalta kohdennetut 133 00:06:18,040 --> 00:06:22,880 suuri osa muistista on määritelty tämä on pino tai kasaan? 134 00:06:22,880 --> 00:06:25,010 Tai miten se toimii, tarkalleen? 135 00:06:25,010 --> 00:06:26,230 >> JASON HIRSCHHORN: Suuri kysymys. 136 00:06:26,230 --> 00:06:28,640 Aion takaisin jäljittää hieman. 137 00:06:28,640 --> 00:06:30,910 Onko kaikki - 138 00:06:30,910 --> 00:06:31,660 olkaa rehellisiä täällä. 139 00:06:31,660 --> 00:06:34,130 Tiedän Pyydän sinua nostaa käsi edessä oman ikäisensä. 140 00:06:34,130 --> 00:06:38,510 Mutta on olemassa ihmisiä, jotka tuntevat kauhistuttaa pino ja keko 141 00:06:38,510 --> 00:06:42,980 ja haluaisin mennä yli, että ja mitä ne tarkoittaa? 142 00:06:42,980 --> 00:06:43,880 Nosta kätesi, jos - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 Kiitos. 145 00:06:45,120 --> 00:06:48,420 Joten aiomme mennä yli pino ja kasaan todella nopeasti ja sitten 146 00:06:48,420 --> 00:06:50,370 siirtyä vastaamalla kysymykseen. 147 00:06:50,370 --> 00:06:58,250 >> Joten jos vedämme ulos laatikko edustamaan tietokoneen muistiin, mitkä ovat 148 00:06:58,250 --> 00:07:02,160 asioita, jotka menevät tähän kohtaan? 149 00:07:02,160 --> 00:07:03,630 Main. 150 00:07:03,630 --> 00:07:04,020 Päätehtävä. 151 00:07:04,020 --> 00:07:05,890 Mistä tärkein mennä? 152 00:07:05,890 --> 00:07:08,090 >> Opiskelija: [kuultavissa]. 153 00:07:08,090 --> 00:07:09,390 >> JASON HIRSCHHORN: niin me laittaa tärkeimmät tänne. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Mitä muuta menee tähän ruutuun? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> Opiskelija: toiminnot soitat. 158 00:07:18,140 --> 00:07:19,020 >> JASON HIRSCHHORN: toiminnot jota kutsumme. 159 00:07:19,020 --> 00:07:20,440 Ja missä he menevät? 160 00:07:20,440 --> 00:07:21,300 >> Opiskelija: In pino. 161 00:07:21,300 --> 00:07:22,380 >> JASON HIRSCHHORN: He mennä pinossa. 162 00:07:22,380 --> 00:07:27,350 Joten aiomme kutsua tätä asia tänne pinoon. 163 00:07:27,350 --> 00:07:31,880 Ja ylös, meillä on kasassa. 164 00:07:31,880 --> 00:07:35,450 Joten muisti ei ole laatikko aivan kuten tämä. 165 00:07:35,450 --> 00:07:37,330 Mutta se on oikeastaan ​​aika samanlainen. 166 00:07:37,330 --> 00:07:40,840 Se tulee olemaan paljon laatikot yli ja yli, riippuen siitä, kuinka suuri 167 00:07:40,840 --> 00:07:43,730 tietokone on tai kuinka suuri muisti on. 168 00:07:43,730 --> 00:07:46,950 >> Klo quote-lainaus "pohja" on pino. 169 00:07:46,950 --> 00:07:50,880 Ja on olemassa useita asioita jotka menevät pinoon. 170 00:07:50,880 --> 00:07:53,840 Ja ne riippuvat toiminnot sinulla on koodissa. 171 00:07:53,840 --> 00:07:57,780 Sinulla on aina yksi funktio omassa koodia kutsutaan tärkein, joten siellä on aina 172 00:07:57,780 --> 00:08:00,480 osan alas täällä pino omistettu main. 173 00:08:00,480 --> 00:08:03,980 >> Nämä osiot pinon kutsutaan pino kehyksiä. 174 00:08:03,980 --> 00:08:09,580 Kun soitat toisen funktion, sanovat tärkein kehottaa binary hakutoiminto, 175 00:08:09,580 --> 00:08:11,075 laitamme toinen runko pinoon. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Tarkemmin sanottuna aiomme lahjoittaa kimpale muisti meidän 178 00:08:17,320 --> 00:08:22,960 tietokone tallentaa binäärihaku paikallisen muuttujat ja juosta binary 179 00:08:22,960 --> 00:08:24,150 search-koodin. 180 00:08:24,150 --> 00:08:26,810 >> Joten me kutsumme binäärihaku. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 Tässä kimpale muisti, aiomme tallentaa sen paikallisia muuttujia. 183 00:08:33,340 --> 00:08:35,270 Aiomme säilyttää sen printf puhelut. 184 00:08:35,270 --> 00:08:38,159 Mitä tahansa tapahtuukin, että toiminto on aiotaan varastoida oikeassa. 185 00:08:38,159 --> 00:08:40,350 Binäärihaku aikoo toteuttaa. 186 00:08:40,350 --> 00:08:42,210 Se on menossa loppuun suorittamiseen. 187 00:08:42,210 --> 00:08:47,450 Mikä on sana C, joka merkitsee että funktio olisi 188 00:08:47,450 --> 00:08:49,306 täydentää sen toteuttamista? 189 00:08:49,306 --> 00:08:50,040 >> Opiskelija: Return. 190 00:08:50,040 --> 00:08:50,870 >> JASON HIRSCHHORN: Return. 191 00:08:50,870 --> 00:08:53,230 Joten kun näet paluulause, toiminnon päät 192 00:08:53,230 --> 00:08:54,350 kun se osuu siihen. 193 00:08:54,350 --> 00:08:56,740 Joten binäärihaku osuu sen tuottoa. 194 00:08:56,740 --> 00:09:01,360 Tämä osa muistin olennaisesti vapautunut. 195 00:09:01,360 --> 00:09:03,510 Ja tärkein palaa toteuttamista. 196 00:09:03,510 --> 00:09:07,240 Joten tärkein keskeyttää missä oli, puhelu binäärihaku, saada joitakin palauttaa arvon, 197 00:09:07,240 --> 00:09:08,700 ja jatkaa toteutus. 198 00:09:08,700 --> 00:09:10,840 Tämä pinokehyksen menee pois. 199 00:09:10,840 --> 00:09:14,810 >> Jos kutsumme rekursiivinen funktio, joka on toiminto, joka kutsuu itseään yli 200 00:09:14,810 --> 00:09:18,480 ja yli, voisimme saada - sanomme teki binäärihaku rekursiivisesti. 201 00:09:18,480 --> 00:09:21,520 Saatamme saada binäärihaku versio yksi, binäärihaku kaksi, binäärihaku 202 00:09:21,520 --> 00:09:24,090 kolme, binäärihaku neljä, binäärihaku viisi. 203 00:09:24,090 --> 00:09:27,950 Ja sitten tämä lopullinen binäärihaku viisi osuma pohja tapauksessa ja pino 204 00:09:27,950 --> 00:09:31,010 kehykset palaa ja pitää sulkeminen kunnes saamme takaisin päävalikkoon. 205 00:09:31,010 --> 00:09:32,530 Voimme mennä yli rekursiolla vähän. 206 00:09:32,530 --> 00:09:35,530 Mutta kaikki tämä on sanoa, jos olet jossa useita toimintoja samanaikaisesti, 207 00:09:35,530 --> 00:09:39,250 siellä tulee olla useita pino kehykset pinoon. 208 00:09:39,250 --> 00:09:42,900 >> Kasaan, ja toisaalta, mikä on täällä ei ole toimintoja, 209 00:09:42,900 --> 00:09:44,380 ei paikallisia muuttujia. 210 00:09:44,380 --> 00:09:48,920 Se on dynaamisesti muuttujia. 211 00:09:48,920 --> 00:09:57,210 Joten nämä ovat muuttujia, jotka saattavat olla alustetaan joko pää-tai 212 00:09:57,210 --> 00:09:58,640 toimiakseen, että tärkeimmät puhelut. 213 00:09:58,640 --> 00:10:00,790 Anywhere koodissa, ne voidaan alustaa. 214 00:10:00,790 --> 00:10:04,360 Ja alustaa dynaamisesti osuus muuttuvista. 215 00:10:04,360 --> 00:10:06,970 Mikä funktio C käytämme? 216 00:10:06,970 --> 00:10:07,600 >> Opiskelija: malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON HIRSCHHORN: malloc. 218 00:10:09,240 --> 00:10:10,800 Soitat malloc. 219 00:10:10,800 --> 00:10:12,260 Saat tilaa muistia. 220 00:10:12,260 --> 00:10:15,020 Ja tuo tila muistia on kasaan. 221 00:10:15,020 --> 00:10:18,840 Ja tuo tila muistia pysyy siellä, kunnes soita ilmaiseksi. 222 00:10:18,840 --> 00:10:22,670 >> Joten dynaamisesti muuttujat keon ovat olemassa niin kauan kuin voit 223 00:10:22,670 --> 00:10:25,250 halua niitä olemassa, ja ne eivät mene pois ennen kuin erikseen 224 00:10:25,250 --> 00:10:26,760 kertoa heille mennä pois. 225 00:10:26,760 --> 00:10:29,670 Voit luoda niitä yksi toiminto. 226 00:10:29,670 --> 00:10:31,930 Että funktion pinon runko menee pois. 227 00:10:31,930 --> 00:10:35,490 Mutta se muuttuja on edelleen olemassa kasaan, kunnes se on vapautettu, 228 00:10:35,490 --> 00:10:39,650 mahdollisesti se toiminto, jota kutsutaan binäärihakupuu tai mitä tahansa. 229 00:10:39,650 --> 00:10:42,580 >> Joten ne kasaan muuttujia siellä niin kauan kuin haluat 230 00:10:42,580 --> 00:10:43,490 heitä pysymään siellä. 231 00:10:43,490 --> 00:10:46,090 Ja he saavat laittaa tänne. 232 00:10:46,090 --> 00:10:47,450 Ja sitten seuraava saa laittaa sinne. 233 00:10:47,450 --> 00:10:50,210 Ne pitää saada täytetty, ja ne pysyä siellä, kunnes soita ilmaiseksi. 234 00:10:50,210 --> 00:10:52,870 >> Ja pääasiallisesti kasaan ja pino, saada Marcus kysymykseen, 235 00:10:52,870 --> 00:10:54,500 kasvaa toisiaan kohti. 236 00:10:54,500 --> 00:10:57,730 Ja jos he törmäävät toisiinsa, olet käyttänyt kaikki muistia 237 00:10:57,730 --> 00:11:01,330 tietokone ja ohjelma lopettaa koska sinulla ei ole enää muistia 238 00:11:01,330 --> 00:11:02,420 jäljellä käyttää. 239 00:11:02,420 --> 00:11:07,290 Niiden väliin on mahdollisesti muita asioita. 240 00:11:07,290 --> 00:11:10,980 Mutta soveltamisalan Tällä kurssilla ei tarvitse huolehtia siitä. 241 00:11:10,980 --> 00:11:12,020 >> Niin se oli vastaus kysymykseesi. 242 00:11:12,020 --> 00:11:13,520 Älä mieti sitä. 243 00:11:13,520 --> 00:11:15,550 Mutta se oli pitkä vastaus. 244 00:11:15,550 --> 00:11:17,800 Kaikki mitä sinun tarvitsee tietää on kasaan ja pino - 245 00:11:17,800 --> 00:11:18,900 lähdetään alareunassa. 246 00:11:18,900 --> 00:11:19,570 Pinon tekee. 247 00:11:19,570 --> 00:11:20,790 Pino tuolla ylhäällä. 248 00:11:20,790 --> 00:11:21,990 Ne kasvavat lähemmäksi toisiaan. 249 00:11:21,990 --> 00:11:23,110 >> Ja jos ne kosketa, se on ongelma. 250 00:11:23,110 --> 00:11:24,500 Olet muisti loppui. 251 00:11:24,500 --> 00:11:28,760 Mutta myös, lisäksi tietää, missä ne, mitä on tallennettu sekä 252 00:11:28,760 --> 00:11:30,512 pino ja keko. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: Kun he törmäävät toisiinsa, on, että pinon ylivuoto? 255 00:11:33,570 --> 00:11:35,670 >> JASON HIRSCHHORN: Kun he törmäävät toisiinsa, se ei ole pinon ylivuoto. 256 00:11:35,670 --> 00:11:38,340 Pinon ylivuoto on erilainen alue että voimme mennä yli, jos haluat. 257 00:11:38,340 --> 00:11:40,020 OK, tulemme takaisin, että vähän. 258 00:11:40,020 --> 00:11:42,730 >> Opiskelija: Mikä sana nimeltään osuessaan toisiaan, 259 00:11:42,730 --> 00:11:44,450 pino ja keko? 260 00:11:44,450 --> 00:11:46,640 >> JASON HIRSCHHORN: Toistaiseksi älä välitä. 261 00:11:46,640 --> 00:11:47,750 Vain tietää - 262 00:11:47,750 --> 00:11:50,530 Vastaan ​​tähän kysymykseen tunnin jälkeen. 263 00:11:50,530 --> 00:11:52,680 Jos he törmäävät toisiinsa, loppui muistia, koska ei ole enää olemassa 264 00:11:52,680 --> 00:11:53,330 tilaa siellä. 265 00:11:53,330 --> 00:11:55,450 >> Opiskelija: Anteeksi, mitä segmentti vika? 266 00:11:55,450 --> 00:11:58,710 >> JASON HIRSCHHORN: segmentin vika voidaan kutsua - 267 00:11:58,710 --> 00:12:02,240 se riippuu miksi segmentin vika on nimeltään. 268 00:12:02,240 --> 00:12:06,260 Joskus sinun pinon ylivuoto, se tulee sanoa seg tuottamukseen virhe. 269 00:12:06,260 --> 00:12:08,180 >> Opiskelija: Entä dereferencing null muuttuja? 270 00:12:08,180 --> 00:12:10,040 On, että segmentti vika? 271 00:12:10,040 --> 00:12:11,480 >> JASON HIRSCHHORN: Dereferencing nollaosoittimen - 272 00:12:11,480 --> 00:12:17,850 OK, joten jos sinulla on osoitin, että olet asetettu yhtä nollaamaan, osoittimet, muistaa, 273 00:12:17,850 --> 00:12:20,270 tallentaa muistiin osoitteet koska niiden käypiä arvoja. 274 00:12:20,270 --> 00:12:23,660 Ja nollaosoittimen on olennaisesti tallentamiseen 0, 0-th 275 00:12:23,660 --> 00:12:26,670 käsitellä muuttuja. 276 00:12:26,670 --> 00:12:30,010 Joten 0x, 0, 0, 0, 0, jne.. 277 00:12:30,010 --> 00:12:35,030 Että 0-th osoite muistiin, joka ei ole meidän kuva, että tuolla ylhäällä 278 00:12:35,030 --> 00:12:38,800 jonnekin, se on varattu tietokoneen. 279 00:12:38,800 --> 00:12:40,130 Emme saa koskettaa sitä. 280 00:12:40,130 --> 00:12:44,680 >> Joten kun ohjelman täytäntöönpanosta, jos jotain yrittää mennä muistiin 281 00:12:44,680 --> 00:12:48,990 osoite 0, se tietää, että että on tyhjä arvo. 282 00:12:48,990 --> 00:12:50,820 Se ei tiedä mitään pitäisi olla siellä. 283 00:12:50,820 --> 00:12:53,420 Joten jos yrität käyttää jotain siellä ja kohdella jotain siellä tai 284 00:12:53,420 --> 00:12:58,355 yrittää mennä kyseiseen paikkaan, olet menossa seg vian tai virheen. 285 00:12:58,355 --> 00:13:00,520 Vastaako tuo kysymykseesi? 286 00:13:00,520 --> 00:13:03,170 >> Ja nyt palaamme pino ylivuoto. 287 00:13:03,170 --> 00:13:09,560 Asiat pinossa, koska teillä ennen nähty, ja - nyt piirtää lähellä 288 00:13:09,560 --> 00:13:11,966 Lähikuva pinokehyksen. 289 00:13:11,966 --> 00:13:15,050 Voivatko kaikki nähdä, että? 290 00:13:15,050 --> 00:13:16,650 Joten meillä on pinokehyksen. 291 00:13:16,650 --> 00:13:23,260 Säästämme array paikallisena muuttuja tätä toimintoa. 292 00:13:23,260 --> 00:13:29,510 Niin sanovat meidän joukko on viisi paikkoja. 293 00:13:29,510 --> 00:13:33,230 Kaikki viisi näistä varastoidaan että pinokehyksen. 294 00:13:33,230 --> 00:13:37,540 >> Jos alamme kirjallisesti pidemmälle rajat tämän array - 295 00:13:37,540 --> 00:13:43,990 joten jos alamme kirjoitusta, sanotaanko, että on 0. 296 00:13:43,990 --> 00:13:46,800 Nämä ovat viisi indeksit meidän array. 297 00:13:46,800 --> 00:13:50,980 Jos alamme kirjallisesti indeksilukituspiiriin 5, joka meillä ei ole kun meillä on 298 00:13:50,980 --> 00:13:55,900 taulukon koko 5, alamme kirjoitusta indeksi 6, 7, 8, 9, voimme saada Stack 299 00:13:55,900 --> 00:13:57,960 Ylivuotovirheen. 300 00:13:57,960 --> 00:14:00,510 >> Yleensä se ei ole - 301 00:14:00,510 --> 00:14:04,910 luultavasti joutua vaikeuksiin jos menet yli yhden. 302 00:14:04,910 --> 00:14:08,640 Mutta yleensä, saat osaksi eniten ongelmia jos menet haltuunsa paljon 303 00:14:08,640 --> 00:14:12,770 ja mennä niin pitkälle yli että kirjoitat yli paluuosoitteen että 304 00:14:12,770 --> 00:14:16,080 toiminto, joka sijaitsee pinon alimmaisena runko. 305 00:14:16,080 --> 00:14:16,520 >> Koska, eikö? 306 00:14:16,520 --> 00:14:17,670 Sinä - in - sorry. 307 00:14:17,670 --> 00:14:18,550 Ei ", koska oikea." 308 00:14:18,550 --> 00:14:20,470 >> Vuonna pinokehykseen, sinulla on paikalliseen muuttujia. 309 00:14:20,470 --> 00:14:27,090 Alareunassa pinon runko on palautusosoite. 310 00:14:27,090 --> 00:14:28,790 Se kun toiminto menee kun se on ohi. 311 00:14:28,790 --> 00:14:33,750 Ja jos korvaat että paluu osoite, sitten kun tämä pinokehyksen, 312 00:14:33,750 --> 00:14:36,680 kun olet menossa läpi pinon runko ja suorittamalla kukin linja, olet 313 00:14:36,680 --> 00:14:40,350 menossa uuteen palautusosoite että on kirjoitettu siellä sijasta 314 00:14:40,350 --> 00:14:40,910 Varsinainen yksi. 315 00:14:40,910 --> 00:14:45,050 Ja siitä olemme nähneet tietyistä tietosuojarikkomuksista 316 00:14:45,050 --> 00:14:46,780 voi tapahtua tietokoneiden kanssa. 317 00:14:46,780 --> 00:14:52,760 >> Joten pinon ylivuoto, lyhyesti sanottuna, on kun korvaat osan pinossa 318 00:14:52,760 --> 00:14:55,440 sinun pitäisi käyttää, paikallinen muuttuja sinun pitäisi käyttää, ja 319 00:14:55,440 --> 00:14:58,070 erityisesti kun aloitat korvaamasta tärkeitä asioita, kuten 320 00:14:58,070 --> 00:14:59,100 palata osoite. 321 00:14:59,100 --> 00:15:00,090 Ja se jos saat virheen. 322 00:15:00,090 --> 00:15:03,980 Tai ehkä jopa voisit alkaa jopa kirjoitusta - 323 00:15:03,980 --> 00:15:05,370 sanoa binäärihaku oli oikealla yläpuolella tärkein. 324 00:15:05,370 --> 00:15:07,790 Jos korvasivat paljon, et voisi kirjoittaa keskusmuistiin. 325 00:15:07,790 --> 00:15:10,230 Mutta yleisesti, saat virheen ennen Sitten, koska tietokone tietää 326 00:15:10,230 --> 00:15:12,270 olet tekemässä jotain ei pitäisi tehdä. 327 00:15:12,270 --> 00:15:12,560 Joo. 328 00:15:12,560 --> 00:15:13,910 >> Opiskelija: Mitä eroa välillä pinon ylivuoto 329 00:15:13,910 --> 00:15:16,940 ja puskurin ylivuoto? 330 00:15:16,940 --> 00:15:19,420 >> JASON HIRSCHHORN: Puskurin ylivuoto on yleisempi tyyppi 331 00:15:19,420 --> 00:15:20,395 mitä olen juuri kuvattu. 332 00:15:20,395 --> 00:15:22,610 >> Opiskelija: Niin pinon ylivuoto on esimerkki puskurin ylivuoto. 333 00:15:22,610 --> 00:15:23,420 >> JASON HIRSCHHORN: Aivan. 334 00:15:23,420 --> 00:15:28,700 Tämä on array voimme ajatella niin puskuri, tilaa asioiden menevän sisään 335 00:15:28,700 --> 00:15:30,600 Tämä on pinon puskurin ylivuoto. 336 00:15:30,600 --> 00:15:33,210 Meillä voisi olla keon puskurin ylivuoto. 337 00:15:33,210 --> 00:15:36,870 Jos oli puskuri, joka on usein on joukko kasaan, ja me 338 00:15:36,870 --> 00:15:40,600 korvasivat niitä rajoja, niin olisimme on keon puskurin ylivuoto. 339 00:15:40,600 --> 00:15:44,870 >> Ja kuulu tämän kurssin, he havaittu hieman eri tavalla. 340 00:15:44,870 --> 00:15:48,040 Kääntäjä on erityinen tapoja havaita kukin. 341 00:15:48,040 --> 00:15:50,660 Mutta puskurin ylivuoto on yleisempi tyyppi mitä kuvailin, 342 00:15:50,660 --> 00:15:54,090 joka oli pinon puskurin ylivuoto. 343 00:15:54,090 --> 00:15:56,240 Oliko että kysymykseesi? 344 00:15:56,240 --> 00:15:57,910 Makea. 345 00:15:57,910 --> 00:16:01,850 >> Oliko liittyvät muut kysymykset pinoon tai kasaan? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Joo. 348 00:16:05,510 --> 00:16:08,220 >> Opiskelija: Tiedän, olet vapaa jouset koska he kasaan 349 00:16:08,220 --> 00:16:09,305 ja et halua vuotaa muistia. 350 00:16:09,305 --> 00:16:12,240 Mutta sinun täytyy vapauttaa yleismuuttujat ja muuta vastaavaa? 351 00:16:12,240 --> 00:16:14,335 Vai ovatko ne vapautetaan automaattisesti? 352 00:16:14,335 --> 00:16:15,700 >> JASON HIRSCHHORN: Hyvä kysymys. 353 00:16:15,700 --> 00:16:22,340 Joten CS50.H, luomme tämä asia sinulle kutsutaan merkkijono. 354 00:16:22,340 --> 00:16:23,800 Merkkijono on todella mitä? 355 00:16:23,800 --> 00:16:24,810 >> Opiskelija: Char tähti. 356 00:16:24,810 --> 00:16:29,180 >> JASON HIRSCHHORN: char tähden, osoitin haluamasi merkin, osoitin 357 00:16:29,180 --> 00:16:30,650 joukko merkkiä. 358 00:16:30,650 --> 00:16:32,210 Sitähän merkkijono on. 359 00:16:32,210 --> 00:16:36,050 Joten meidän täytyy vapauttaa sen, koska getString, jota käytimme paljon - 360 00:16:36,050 --> 00:16:38,370 merkkijonon nimi vastaa getString - 361 00:16:38,370 --> 00:16:43,560 että mallocs meille joitakin muistia kasaan ja sitten palauttaa osoittimen 362 00:16:43,560 --> 00:16:47,230 ensimmäinen merkki, joka merkkijono, char tähti. 363 00:16:47,230 --> 00:16:52,760 >> Joten näennäisesti, jos et ole ollut kirjallisesti ilmaiseksi tahansa jousille 364 00:16:52,760 --> 00:16:55,600 että olet kutsutaan niin pitkälle, sinulla on vuotanut muistia. 365 00:16:55,600 --> 00:16:57,430 Tietenkään emme ole puhuneet se, niin kukaan ei ole hankkineet 366 00:16:57,430 --> 00:16:58,520 vaikeuksia tehdä sitä. 367 00:16:58,520 --> 00:16:59,980 Mutta eteenpäin, kyllä. 368 00:16:59,980 --> 00:17:03,990 Kun soitat getString, olet mallocing jonkin verran tilaa kasaan. 369 00:17:03,990 --> 00:17:07,640 Ja jos et soita ilmaiseksi myöhemmin, että merkkijono, sinulla on muisti vuotaa. 370 00:17:07,640 --> 00:17:09,440 Että kysymykseesi? 371 00:17:09,440 --> 00:17:10,606 >> Joo 372 00:17:10,606 --> 00:17:15,020 >> Opiskelija: Niin tehdä, että käytämme vapaa oikeus ennen paluuta? 373 00:17:15,020 --> 00:17:18,510 Kuten, puitteissa, Oletan, jos sanomme, kuten, int main kuluessa 374 00:17:18,510 --> 00:17:24,410 soveltamisalaan koodi, joka on kyseisten aaltosulkeita, juuri ennen - 375 00:17:24,410 --> 00:17:26,140 tiedät missä olisit yleensä laittaa takaisin. 376 00:17:26,140 --> 00:17:27,950 Laitatko ilmaiseksi ennen sitä? 377 00:17:27,950 --> 00:17:31,000 >> JASON HIRSCHHORN: Joten voit laittaa ilmaiseksi minne haluat laittaa ilmaiseksi. 378 00:17:31,000 --> 00:17:33,810 Koska nämä ovat dynaamisesti muuttujia, koska ne voivat 379 00:17:33,810 --> 00:17:39,170 elää kuulu erityisesti toiminto, jos soitat malloc vuonna 380 00:17:39,170 --> 00:17:44,140 erillinen toiminto, esimerkiksi getString, voit soittaa ilmaiseksi tärkein. 381 00:17:44,140 --> 00:17:46,050 Sinun ei tarvitse kutsua sitä vuonna erityinen tehtävä 382 00:17:46,050 --> 00:17:47,570 jossa malloc kutsutaan. 383 00:17:47,570 --> 00:17:50,340 Mutta sinun täytyy kutsua sitä ennen isoja tuottoja. 384 00:17:50,340 --> 00:17:51,120 >> Ja se riippuu oikeastaan. 385 00:17:51,120 --> 00:17:54,960 Se riippuu miksi malloced että tilaa ylipäätään. 386 00:17:54,960 --> 00:17:57,320 Jotkut ihmiset kutsuvat vapauttaa melko nopeasti. 387 00:17:57,320 --> 00:17:59,220 Jotkut ihmiset eivät soita ilmaiseksi, kunnes lopussa niiden ohjelman. 388 00:17:59,220 --> 00:18:00,660 Ja he menevät läpi ja vapaa kaikesta. 389 00:18:00,660 --> 00:18:03,597 Se riippuu siitä, miksi soitit malloc. 390 00:18:03,597 --> 00:18:11,270 >> Opiskelija: Ja mitä sanoisit jos soitit käyttö getString? 391 00:18:11,270 --> 00:18:13,320 Sanoisit ilmaiseksi mitä? 392 00:18:13,320 --> 00:18:20,040 >> JASON HIRSCHHORN: Niin syntaksin ilmaiseksi on yksinkertaisesti ilmainen, avoimen paren, lähellä 393 00:18:20,040 --> 00:18:22,130 paren, ja nimen osoitinta. 394 00:18:22,130 --> 00:18:26,410 Joten jos kirjoitat merkkijonon nimi tasavertaisina getString, laitat nimen tänne. 395 00:18:26,410 --> 00:18:27,760 Se nimen osoitinta. 396 00:18:27,760 --> 00:18:30,570 Ja se tietää vapauttaa että muisti. 397 00:18:30,570 --> 00:18:33,920 >> Opiskelija: Joten kun se vapauttaa, että muisti, osoitin osoittaa yhä, että paikka 398 00:18:33,920 --> 00:18:34,970 muistiin? 399 00:18:34,970 --> 00:18:39,020 Vai onko osoitin myös tyhjennettävä osoite, että se osoittaa. 400 00:18:39,020 --> 00:18:40,290 >> JASON HIRSCHHORN: Meidän pitäisi yrittää sitä. 401 00:18:40,290 --> 00:18:41,430 Meidän pitäisi koodata että. 402 00:18:41,430 --> 00:18:43,880 Palataan kun pääsemme koodaus, ja anna koodi, että. 403 00:18:43,880 --> 00:18:46,000 Ja jos haluat selvittää vastaus siihen, voit myös koodin, joka 404 00:18:46,000 --> 00:18:46,690 sillä välin. 405 00:18:46,690 --> 00:18:49,100 Mutta se on hyvä kysymys. 406 00:18:49,100 --> 00:18:53,480 >> Opiskelija: Onko mahdollista free jotain liian aikaisin? 407 00:18:53,480 --> 00:18:58,530 Joten tarvitset silti sitä oman ohjelman ja te vapautti että muistia? 408 00:18:58,530 --> 00:18:59,200 >> JASON HIRSCHHORN: Kyllä. 409 00:18:59,200 --> 00:19:03,020 On mahdollista, jos ilmaiseksi jotain ja sitten käyttää sitä uudelleen, tulet 410 00:19:03,020 --> 00:19:06,890 törmätä virhe. 411 00:19:06,890 --> 00:19:10,810 Mutta se on sinulle, koska olet vapauttanut jotain ja sitten kutsui sitä myöhemmin. 412 00:19:10,810 --> 00:19:13,940 Niin että oli ohjelmoijan virhe. 413 00:19:13,940 --> 00:19:14,780 Mutta kyllä. 414 00:19:14,780 --> 00:19:17,760 Voisit kirjoittaa, että. 415 00:19:17,760 --> 00:19:19,240 >> Enempää kysymyksiä - 416 00:19:19,240 --> 00:19:19,760 Kyllä. 417 00:19:19,760 --> 00:19:22,820 >> Opiskelija: Joten jos sinun pitäisi vain vapauttaa sen yleensä ennen 418 00:19:22,820 --> 00:19:25,490 ohjelma päättyy, se tarkoittaa, jos ohjelma päättyy ja et vapauttaa sen, 419 00:19:25,490 --> 00:19:27,580 että muisti on edelleen varattu? 420 00:19:27,580 --> 00:19:31,330 >> JASON HIRSCHHORN: Jos ohjelma päättyy ja unohdat vapauttaa jotain, niin 421 00:19:31,330 --> 00:19:34,390 että muisti on varattu koko eliniän oman ohjelman. 422 00:19:34,390 --> 00:19:37,670 Kun ohjelma sulkeutuu kokonaan, että muisti ei tule 423 00:19:37,670 --> 00:19:39,490 pysyä siellä ikuisesti. 424 00:19:39,490 --> 00:19:42,080 Tietokone on fiksu tietää että kun ohjelma sulkeutuu, se 425 00:19:42,080 --> 00:19:46,440 pitäisi päästä eroon kaikista muisti, joka liittyi ohjelman. 426 00:19:46,440 --> 00:19:51,240 >> On kuitenkin olemassa työkaluja voit suorittaa ohjelmasta havaita, jos, kun 427 00:19:51,240 --> 00:19:54,720 ohjelma valmis, unohdit Vapauta muistia. 428 00:19:54,720 --> 00:19:57,960 Ja seuraavalle ongelma vahvistettu, jos voit käyttää malloc ja käyttämällä 429 00:19:57,960 --> 00:20:02,610 osoittimet, pyörität tätä ohjelmoida teidän ohjelma nähdä, jos, 430 00:20:02,610 --> 00:20:06,530 kun tärkeimmät palaa, sinulla oli joitakin asioita, jotka jäivät unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Joten he eivät aio jäädä malloced ikuisesti tietokoneellesi. 432 00:20:09,130 --> 00:20:11,720 Se olisi tuhlausta, koska hyvin nopeasti, tietokoneet 433 00:20:11,720 --> 00:20:12,960 olisi muisti loppuu. 434 00:20:12,960 --> 00:20:16,450 Mutta jos he loppuun asti oman ohjelmoida ja he eivät vapautti ja 435 00:20:16,450 --> 00:20:20,260 ohjelma loppuu, se on edelleen ongelma että tämä työkalu auttaa sinua käsitellä. 436 00:20:20,260 --> 00:20:21,520 >> Opiskelija: Onko tuo Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON HIRSCHHORN: Se on nimeltään Valgrind. 438 00:20:22,910 --> 00:20:23,520 Ja voit olla - 439 00:20:23,520 --> 00:20:25,780 >> Opiskelija: Mutta emme tarvitse tietää että tietokilpailu, vaikka? 440 00:20:25,780 --> 00:20:27,600 Tarkoitan, että se oli puhuttu hieman luento. 441 00:20:27,600 --> 00:20:33,600 >> JASON HIRSCHHORN: So Valgrind on nimi, joka työkalu. 442 00:20:33,600 --> 00:20:37,180 Tietämättä, mitä se tekee, on tarpeeksi tietokilpailu. 443 00:20:37,180 --> 00:20:40,200 Mutta et ole käyttänyt sitä vielä omalle Harjoitus koska meillä ei ole ollut 444 00:20:40,200 --> 00:20:43,520 Harjoitus, joka on nimenomaisesti käsitellyt kanssa malloc tai käytät malloc. 445 00:20:43,520 --> 00:20:45,330 Joten et ole käyttänyt Valgrind vielä. 446 00:20:45,330 --> 00:20:47,760 Mutta voit käyttää sitä ennemmin ennemmin kuin myöhemmin. 447 00:20:47,760 --> 00:20:48,710 >> Opiskelija: Voitko toistaa mitä Valgrind on? 448 00:20:48,710 --> 00:20:49,190 >> JASON HIRSCHHORN: Anteeksi? 449 00:20:49,190 --> 00:20:51,240 >> Opiskelija: Voitko toistaa sen, mitä tarkoituksena Valgring on? 450 00:20:51,240 --> 00:20:53,100 >> JASON HIRSCHHORN: Valgrind on nimi - 451 00:20:53,100 --> 00:20:59,890 kuten GDB auttaa sinua debug-ohjelma, Valgrind auttaa sinua selvittää, jos 452 00:20:59,890 --> 00:21:03,210 asioista ei ole vapautettu kun ohjelma sulkeutuu. 453 00:21:03,210 --> 00:21:05,110 Joten voit suorittaa sen ohjelman. 454 00:21:05,110 --> 00:21:09,230 Ja ohjelma poistuu, ja se tulee sanoa oma ohjelma nimeltä malloc näin monta 455 00:21:09,230 --> 00:21:13,670 kertaa näin monta tavua, ja voit vain kutsutaan vapaaksi tämän monta kertaa. 456 00:21:13,670 --> 00:21:16,520 Ja niin jätit nämä monta tavua ilman vapautti. 457 00:21:16,520 --> 00:21:18,050 Tai se sanot olet vapauttanut kaiken. 458 00:21:18,050 --> 00:21:19,070 Hyvää työtä. 459 00:21:19,070 --> 00:21:19,480 >> Opiskelija: OK. 460 00:21:19,480 --> 00:21:21,060 Ja sitä kutsutaan Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON HIRSCHHORN: V-A-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> Opiskelija: kysymys viitteitä. 463 00:21:25,970 --> 00:21:30,080 Sano olet n tähti x on yhtä kuin jotain. 464 00:21:30,080 --> 00:21:33,330 Joka vastaa, mitä olet laskemisesta siellä, että mitä on laittaa sisälle 465 00:21:33,330 --> 00:21:36,120 mitä x on osoittaa, tai osoitin x? 466 00:21:36,120 --> 00:21:37,690 >> JASON HIRSCHHORN: Voitko toistaa kysymyksen? 467 00:21:37,690 --> 00:21:39,340 Voimme tehdä sen, kun sanot sen? 468 00:21:39,340 --> 00:21:42,710 >> Opiskelija: Vuonna tietokilpailu, todella, yksi olet lähettänyt meille, se oli kuin, nieriä 469 00:21:42,710 --> 00:21:46,520 tähden totuus vastaa CS50 kiviä, eikö? 470 00:21:46,520 --> 00:21:52,190 Niin tarkoittaako se, että että CS50 kiviä on mitä totuus on osoittaa? 471 00:21:52,190 --> 00:21:55,810 >> JASON HIRSCHHORN: Eli puhut noin char tähti merkkijono, miten 472 00:21:55,810 --> 00:21:56,460 joka toimii? 473 00:21:56,460 --> 00:21:56,890 Joo. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 Katsotaanpa vetää tämän tänne. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE CONVERSATION] 477 00:22:07,100 --> 00:22:11,130 >> JASON HIRSCHHORN: Eli tämä muuttuja tulee olemaan tyyppiä char tähti. 478 00:22:11,130 --> 00:22:14,580 Kuinka suuri on vaihteleva tyypin char tähti? 479 00:22:14,580 --> 00:22:15,510 Kuinka monta tavua? 480 00:22:15,510 --> 00:22:16,450 >> Opiskelijat: Neljä. 481 00:22:16,450 --> 00:22:18,210 >> JASON HIRSCHHORN: Se on neljä tavua. 482 00:22:18,210 --> 00:22:21,420 Kuinka paljon oikeuksia on vaihteleva tyyppiä int tähti? 483 00:22:21,420 --> 00:22:22,210 >> Opiskelijat: Neljä. 484 00:22:22,210 --> 00:22:24,910 >> JASON HIRSCHHORN: neljä tavua. 485 00:22:24,910 --> 00:22:28,280 Jos se on osoitin, niin se on aina neljä tavua, koska osoittimia, niiden 486 00:22:28,280 --> 00:22:30,070 arvo on muistin osoite. 487 00:22:30,070 --> 00:22:35,160 Ja muistin osoitteet CS50 Laitteen neljä tavua pitkä. 488 00:22:35,160 --> 00:22:42,900 Joten kun me kutsumme getString, tai kun vaikkapa merkkijononNimi vastaa, ja sitten 489 00:22:42,900 --> 00:22:46,140 lainausmerkkeihin laittaa merkkijonon, asetamme - 490 00:22:46,140 --> 00:22:46,920 No, se on hieman erilainen. 491 00:22:46,920 --> 00:22:48,630 Teemme getString kuin esimerkkinä. 492 00:22:48,630 --> 00:22:52,150 Tai char tähden jotain vastaa merkkijono. 493 00:22:52,150 --> 00:22:54,360 Anteeksi, anna minulle esimerkki että luet? 494 00:22:54,360 --> 00:22:57,590 >> Opiskelija: char tähti totuus on yhtä kuin "CS50 kiviä" lainausmerkkeihin. 495 00:22:57,590 --> 00:23:02,260 >> JASON HIRSCHHORN: Eli tämä tähti, tämä soitamme tämän muuttujan x meidän 496 00:23:02,260 --> 00:23:04,060 yleiskäyttöjä. 497 00:23:04,060 --> 00:23:05,970 Olemme luoneet muuttuja nimeltä x. 498 00:23:05,970 --> 00:23:07,610 Se tyyppi Char tähden. 499 00:23:07,610 --> 00:23:10,950 Se on osoitin sarja merkkiä. 500 00:23:10,950 --> 00:23:12,200 Joten tänne - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Joten tämä on, miten tämä olisi toimivat muistiin. 503 00:23:25,890 --> 00:23:27,410 Tämä tallentaa muistiin osoite. 504 00:23:27,410 --> 00:23:31,770 Se tallentaa muistiin osoite ensimmäisen merkin jono. 505 00:23:31,770 --> 00:23:33,830 Ja sitten kun olet seurannut osoitin, olisit 506 00:23:33,830 --> 00:23:35,200 saat ensimmäisen merkin. 507 00:23:35,200 --> 00:23:38,780 >> Ja jos luet tätä asia kuin merkkijono, tietokone on älykäs 508 00:23:38,780 --> 00:23:42,930 tarpeeksi tietää, lue tämä koko juttu kunnes se pääsee takaisku 0. 509 00:23:42,930 --> 00:23:45,530 Mutta jos luet sen merkin aikaa, joten olet iteroimalla läpi 510 00:23:45,530 --> 00:23:49,910 tämä merkkijono, sinun tulee vain lukea merkki kerrallaan, kunnes saat 511 00:23:49,910 --> 00:23:50,850 kenoviiva 0. 512 00:23:50,850 --> 00:23:52,335 Joka ei ehkä vastata kysymys. 513 00:23:52,335 --> 00:23:55,610 >> Opiskelija: Joo, mutta et ole malloced että tilaa 514 00:23:55,610 --> 00:23:58,400 vielä, että osoitin. 515 00:23:58,400 --> 00:24:02,510 >> JASON HIRSCHHORN: Joten en ole aivan varma mitä etsit, 516 00:24:02,510 --> 00:24:03,640 koska en tee, että tietokilpailu. 517 00:24:03,640 --> 00:24:06,370 Jonka piti olla hyödyllinen resurssi toisesta TF. 518 00:24:06,370 --> 00:24:11,380 Jos luot merkkijono pino tai paikallinen muuttuja, se tulee 519 00:24:11,380 --> 00:24:16,920 vain olla erilaisia ​​maksuja sen sijaan yleensä char tähti osoittaa 520 00:24:16,920 --> 00:24:18,600 toinen merkkijono. 521 00:24:18,600 --> 00:24:20,550 Mutta en tiedä. 522 00:24:20,550 --> 00:24:25,065 Se voisi olla osoitin toiseen string pinoon samoin. 523 00:24:25,065 --> 00:24:27,240 Joo. 524 00:24:27,240 --> 00:24:31,116 >> Opiskelija: Tiedän, että sinun täytyy varata muistia jos osoittimen 525 00:24:31,116 --> 00:24:33,360 saada julisti sisällä toisen toiminnon. 526 00:24:33,360 --> 00:24:36,740 Sinun ei tarvitse tehdä sama asia, jos se on julistetaan sisällä tärkein, 527 00:24:36,740 --> 00:24:39,570 käytät sitä sisällä tärkein? 528 00:24:39,570 --> 00:24:43,590 >> JASON HIRSCHHORN: Joten kyllä. 529 00:24:43,590 --> 00:24:46,670 Voit ilmoittaa osoitin mihin tahansa muisti osoite muistiin. 530 00:24:46,670 --> 00:24:51,440 Se voi olla muistin osoitteen paikallinen muuttuja, vaikka Usein, 531 00:24:51,440 --> 00:24:55,760 ihmiset eivät ilmoita muisti osoitteita paikallisia muuttujia, koska ne menevät 532 00:24:55,760 --> 00:24:59,890 pois, kun että funktio palauttaa, joka Siksi me yleensä malloc asioita. 533 00:24:59,890 --> 00:25:04,630 Mutta kyllä, voit ilmoittaa osoitin toiseen paikalliseen muuttujaan. 534 00:25:04,630 --> 00:25:06,360 Se vain ei yleensä tehdä. 535 00:25:06,360 --> 00:25:09,480 Mutta voin vilkaista, että erityinen asia tunnin jälkeen. 536 00:25:09,480 --> 00:25:10,650 Joo. 537 00:25:10,650 --> 00:25:12,350 >> Opiskelija: Mielestäni tämä on eräänlainen siitä, mitä pyydetään. 538 00:25:12,350 --> 00:25:16,930 Se ei tunnu oudolta olla alustetaan osoitin ei niin 539 00:25:16,930 --> 00:25:20,760 osoite, mutta mitä tuntuu arvo. 540 00:25:20,760 --> 00:25:25,970 Tuntuu siltä CS50 on mitä on sisällä asia korostava ja 541 00:25:25,970 --> 00:25:28,820 ei todellinen osoite, eikö? 542 00:25:28,820 --> 00:25:30,520 >> JASON HIRSCHHORN: Niin, että ei ole, vaikka. 543 00:25:30,520 --> 00:25:32,470 Se ei ole mitä tapahtuu. 544 00:25:32,470 --> 00:25:35,910 Kun julistaa char tähti, se on muistin osoite. 545 00:25:35,910 --> 00:25:38,860 Osoittimet ovat kaikki muisti osoitteita osoittaa jotain muuta. 546 00:25:38,860 --> 00:25:41,480 Että jotain muuta voisi olla pino, mutta lähes aina on 547 00:25:41,480 --> 00:25:43,440 kasaan tavalla näemme sitä käytetään. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 Mutta merkkijononNimen vastaa double-quote "GetString", voimme nähdä, että sekä me 550 00:25:53,500 --> 00:25:55,010 voi katsoa läpi ja koodaavan sen. 551 00:25:55,010 --> 00:26:01,190 getString merkkijonoa ei tallennu muuttuja, tai mitä tahansa merkkijono 552 00:26:01,190 --> 00:26:04,580 nimi ei tallennu, että muuttuja, koska se ei ole, kuinka 553 00:26:04,580 --> 00:26:06,070 osoittimet toimivat. 554 00:26:06,070 --> 00:26:06,770 Onko järkeä? 555 00:26:06,770 --> 00:26:07,170 >> Opiskelija: Joo. 556 00:26:07,170 --> 00:26:08,570 >> JASON HIRSCHHORN: OK. 557 00:26:08,570 --> 00:26:11,690 Toivottavasti tämä ei ollut hämmentävää kenellekään. 558 00:26:11,690 --> 00:26:15,732 Mutta jos se oli, voimme tarkastella sitä uudelleen nyt vähän, koska olemme todella menossa 559 00:26:15,732 --> 00:26:19,240 koodata jotain, joka toivottavasti työskennellä jousille ja auttaa sinua tuntemaan 560 00:26:19,240 --> 00:26:22,170 mukavampaa heidän kanssaan. 561 00:26:22,170 --> 00:26:24,869 >> Muita kysymyksiä, jotka liittyvät näihin aiheita tai muita aiheita, jotka 562 00:26:24,869 --> 00:26:26,119 Laitan takaisin ylös? 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 juuri nyt. 566 00:26:36,310 --> 00:26:37,630 Kyllä, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: Eli tämä on täysin liity, mutta voisimmeko mennä yli 568 00:26:39,860 --> 00:26:42,760 todella nopeasti, mitä meidän tulee tietää noin ero 32 ja 569 00:26:42,760 --> 00:26:46,345 64-bittinen kone? 570 00:26:46,345 --> 00:26:47,740 >> JASON HIRSCHHORN: Kyllä. 571 00:26:47,740 --> 00:26:52,111 Joten 32 bittiä on, kuinka monta tavua? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: Se on neljä tavua. 573 00:26:53,060 --> 00:26:54,360 >> JASON HIRSCHHORN: Se on neljä tavua. 574 00:26:54,360 --> 00:26:58,420 Ja 64 bittiä on, kuinka monta tavua? 575 00:26:58,420 --> 00:26:59,112 >> Opiskelija: Kahdeksan. 576 00:26:59,112 --> 00:27:00,610 >> JASON HIRSCHHORN: Kahdeksan tavua. 577 00:27:00,610 --> 00:27:03,980 Joten jälleen, kahdeksan bittiä on yksi tavu. 578 00:27:03,980 --> 00:27:08,340 Sinun CS50 laite on 32-bittinen kone. 579 00:27:08,340 --> 00:27:13,650 Joten muisti osoitteet ovat neljä tavua pitkä. 580 00:27:13,650 --> 00:27:17,460 On 2 32 muistin osoitteet. 581 00:27:17,460 --> 00:27:21,310 0-2 ja 32 miinus 1. 582 00:27:21,310 --> 00:27:27,630 Enkä ole myönteistä, mutta se on luultavasti soveltamisalaa, mitä sinun tarvitsee 583 00:27:27,630 --> 00:27:35,230 tietää 32-bittinen kone, että muisti osoitteet ovat jälleen neljä tavua pitkä, 584 00:27:35,230 --> 00:27:39,620 ja se enimmäismäärä muistin osoitteet. 585 00:27:39,620 --> 00:27:41,680 >> Myös tietotyypit - 586 00:27:41,680 --> 00:27:45,020 tämä voisi olla jotain niin No se on syytä huomata. 587 00:27:45,020 --> 00:27:49,610 Koko tietotyyppi riippuu kone olet työskennellyt. 588 00:27:49,610 --> 00:27:56,760 Joten nieriä, yksittäinen merkki, miten monta tavua meidän CS50 laite? 589 00:27:56,760 --> 00:27:57,980 Yhden tavun. 590 00:27:57,980 --> 00:28:02,310 Ja se on itse asiassa yksi tavun hyvin 64-bittinen kone. 591 00:28:02,310 --> 00:28:05,920 >> Ja useimmat tietotyypit ovat sama numero tavujen molemmissa koneissa. 592 00:28:05,920 --> 00:28:11,620 Mutta jotkut tietotyypit on erilainen molemmissa koneissa. 593 00:28:11,620 --> 00:28:14,590 Jotta olisi mahdollisesti Ainoa asia mitä sinun tarvitsee tietää. 594 00:28:14,590 --> 00:28:16,710 >> Mutta sekin, luulen, on yli rajojen - 595 00:28:16,710 --> 00:28:20,990 Olen melko varma, jos katsotaan vanhoja tietokilpailuja, se sanoo, olettaa, 596 00:28:20,990 --> 00:28:24,090 koodaus ongelmia käytät 32-bittinen kone. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 Mutta on olemassa, mennä yhdessä, että Jos olet kiinnostunut, on olemassa 599 00:28:30,620 --> 00:28:35,920 data tyyppejä, jotka ovat samat koko kaikissa koneissa. 600 00:28:35,920 --> 00:28:42,670 >> Jos olet nähnyt jotain uint32_t, et välttämättä 601 00:28:42,670 --> 00:28:43,260 ei nähnyt sitä. 602 00:28:43,260 --> 00:28:44,290 Se tietotyyppi. 603 00:28:44,290 --> 00:28:47,570 Tämä sanoo, on 32 bittiä ei väliä mikä kone tämä on. 604 00:28:47,570 --> 00:28:50,350 Joten kun ihmiset ovat kirjallisesti kannettava koodia, he luultavasti ei käytä ints. 605 00:28:50,350 --> 00:28:53,260 He sen sijaan käyttää näitä muita tietoja tyyppejä, että he tietävät on sama 606 00:28:53,260 --> 00:28:54,780 Koko jokaisesta koneeseen. 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: Minulla oli kysymys tietojenkeruuprosessiin. 610 00:29:00,150 --> 00:29:04,110 Joten jos olet kirjoittamassa ohjelma, joka käyttää kirjaston kuten CS50 tai jotain 611 00:29:04,110 --> 00:29:06,840 niin, tiedän, että kirjasto on, jossain vaiheessa olla 612 00:29:06,840 --> 00:29:08,590 käännetty ja linkitetty sisään 613 00:29:08,590 --> 00:29:13,380 Mutta kuinka paljon se tapahtuu aikana kooste ohjelmasi? 614 00:29:13,380 --> 00:29:15,880 Mikä osa kyseisen kirjaston prosessi tapahtuu, kun olet 615 00:29:15,880 --> 00:29:18,560 koota oma ohjelma? 616 00:29:18,560 --> 00:29:24,020 >> JASON HIRSCHHORN: Joten mennään yli yleensä seuraavat vaiheet tässä prosessissa. 617 00:29:24,020 --> 00:29:26,280 Kirjoitat. C-tiedosto. 618 00:29:26,280 --> 00:29:33,530 Teidän. C-tiedoston, sinun # sisällyttää header kirjastoja, esimerkiksi cs50.h. 619 00:29:33,530 --> 00:29:39,480 Mitä se terävä sisältävät line tehdä oman ohjelman? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Se lisää prototyyppejä toimintoja header 622 00:29:43,350 --> 00:29:45,120 tiedostoja kirjastoissa. 623 00:29:45,120 --> 00:29:45,600 >> JASON HIRSCHHORN: Aivan. 624 00:29:45,600 --> 00:29:49,870 Se lisää näiden toiminto prototyyppejä koodisi. 625 00:29:49,870 --> 00:29:55,230 Joten kun koodi on koottu alkuvaiheessa, kääntäjä tietää 626 00:29:55,230 --> 00:29:59,250 että nämä toiminnot todella olemassa, ja että jossain ne on määritelty. 627 00:29:59,250 --> 00:30:02,460 . H-tiedostot eivät sisällä määritelmiä näille toiminnoille tai miten 628 00:30:02,460 --> 00:30:03,950 he tosiasiallisesti työskentelevät. 629 00:30:03,950 --> 00:30:07,960 Cs50.h vain sisältää jotain, joka kertoo getString on todellinen asia, joka 630 00:30:07,960 --> 00:30:09,270 voi tapahtua. 631 00:30:09,270 --> 00:30:14,240 Ja standardio.h sanoo printf on todellinen asia, joka voi tapahtua. 632 00:30:14,240 --> 00:30:23,190 >> Joten C-kielen kanssa tämän. Header tiedoston saa muuttuisi 633 00:30:23,190 --> 00:30:27,750 koneella luettava koodi, joka lopulta saa muuttui binary 634 00:30:27,750 --> 00:30:30,030 koodi, 0: n ja 1: n. 635 00:30:30,030 --> 00:30:33,590 Ja se koodi, joka lopulta saa teloitettiin. 636 00:30:33,590 --> 00:30:38,550 -L CS50 line - esimerkiksi kun olet kirjoittamassa kalahtaa - 637 00:30:38,550 --> 00:30:41,830 ja sitten lisäät-L CS50, kirjoitat, että sisään 638 00:30:41,830 --> 00:30:42,180 Ja näet, että. 639 00:30:42,180 --> 00:30:43,890 Kun kirjoitat tehdä, sinun nähdä, että tien tänne. 640 00:30:43,890 --> 00:30:47,740 Ja me näemme, että toinen, kun me koodin tai myöhemmin, kun me koodi. 641 00:30:47,740 --> 00:30:50,390 >> Mutta se-l CS50 line tekee jotain hieman erilainen kuin 642 00:30:50,390 --> 00:30:52,440 # include cs50.h. 643 00:30:52,440 --> 00:30:56,300 Mitä tuo-l CS50 line tehdä? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Haluan sanoa, että se yhdistää kirjaston funktion 646 00:31:00,310 --> 00:31:02,710 soittaa, kuten. O tiedostoja. 647 00:31:02,710 --> 00:31:08,200 >> JASON HIRSCHHORN: Niin kovin lähellä, jos ei nappiin. 648 00:31:08,200 --> 00:31:16,220 -L CS50 vie binaaritiedoston ja sulautuu sen kanssa binääritiedosto. 649 00:31:16,220 --> 00:31:21,410 Joten cs50.h, ei ole mitään järkeä kääntämällä cs50.h alkaen C-kieli binääri joka 650 00:31:21,410 --> 00:31:23,130 kerta sitä käyttävät. 651 00:31:23,130 --> 00:31:26,650 Se olisi typerää, koska se tuhlaisi paljon aikaa. 652 00:31:26,650 --> 00:31:30,420 Joten se on jo laadittu ja kääntyi executable. 653 00:31:30,420 --> 00:31:35,430 Ja nyt se aiotaan sulautetaan kanssa tiedoston lopussa. 654 00:31:35,430 --> 00:31:38,370 Joten ne 1: n ja 0: n ovat menossa sulautua teidän kanssa 655 00:31:38,370 --> 00:31:39,150 ja 0: n lopussa. 656 00:31:39,150 --> 00:31:43,670 Joten nyt sinun todella on todellinen 1: n ja 0: n, jotka määrittävät, kuinka getString, 657 00:31:43,670 --> 00:31:47,890 esimerkiksi toimii, tai miten printf, esimerkiksi toimii. 658 00:31:47,890 --> 00:31:52,750 >> Ja lisätietoja, siellä lyhyt kääntäjät että Nate antaa, että 659 00:31:52,750 --> 00:31:55,410 kannattaa tsekata, että menee läpi nämä vaiheet. 660 00:31:55,410 --> 00:31:56,050 Mutta - 661 00:31:56,050 --> 00:31:56,560 Kyllä. 662 00:31:56,560 --> 00:32:01,700 >> Opiskelija: Ovatko ne aina. O tiedostoja kun he kirjastossa muodossa, 663 00:32:01,700 --> 00:32:06,764 valmis yhdistetään, liittyy - kuten he ovat binäärikoodattuna? 664 00:32:06,764 --> 00:32:07,600 >> JASON HIRSCHHORN: OK. 665 00:32:07,600 --> 00:32:08,420 Mitä - 666 00:32:08,420 --> 00:32:11,780 >> Opiskelija: Onko se aina selvillä kirjastot kun linkittää ne? 667 00:32:11,780 --> 00:32:12,500 >> JASON HIRSCHHORN: Kyllä. 668 00:32:12,500 --> 00:32:17,300 Joten ei ole. S tiedostoa, joka on konekielelle, joka on myös 669 00:32:17,300 --> 00:32:17,975 arvoituksellisesti sinulle. 670 00:32:17,975 --> 00:32:19,410 Sinun ei tarvitse huolehtia niistä. 671 00:32:19,410 --> 00:32:24,930 Mutta yleisesti, joo, he olla. O tiedostot valmiina. 672 00:32:24,930 --> 00:32:27,170 >> Opiskelija: Joten kun aluksen kirjasto, sinä vain lähetettäväksi 673 00:32:27,170 --> 00:32:28,880 . h ja. O? 674 00:32:28,880 --> 00:32:32,210 Sinun ei toimiteta. C tai. S. 675 00:32:32,210 --> 00:32:33,070 >> JASON HIRSCHHORN: So - 676 00:32:33,070 --> 00:32:36,260 ja tämä on tässä lyhyessä samoin, jos tämä tieto näyttää tulevan 677 00:32:36,260 --> 00:32:36,700 vähän nopeasti. 678 00:32:36,700 --> 00:32:39,870 Mutta lyhyt kääntäjät puhuu tästä samoin. 679 00:32:39,870 --> 00:32:43,290 Kun lähetät kirjasto, jos alus . h, header-tiedosto, nämä 680 00:32:43,290 --> 00:32:46,290 toiminto prototyyppejä, ja 1: n ja 0: n, siinä kaikki sinun täytyy antaa. 681 00:32:46,290 --> 00:32:50,640 Sinun ei tarvitse antaa, miten toiminto toimii,. C-tiedosto. 682 00:32:50,640 --> 00:32:56,360 Koska pisteen abstraktio, tai kohta API, kohta tällä SPL, 683 00:32:56,360 --> 00:32:59,650 Stanford kannettava kirjasto, se on voit ei tarvitse huolehtia siitä, miten uusi 684 00:32:59,650 --> 00:33:04,220 GRect toimii, tai miten siirtää töitä, tai miten lisätä teoksia. 685 00:33:04,220 --> 00:33:06,520 Kaikki mitä sinun tarvitsee tietää on, että lisäosa on toiminto, jonka voit 686 00:33:06,520 --> 00:33:08,880 käyttää, ja se tekee tämän. 687 00:33:08,880 --> 00:33:12,760 Joten sinun ei todellakaan tarvitse osata se on kirjoitettu C. Sinun tarvitsee vain 688 00:33:12,760 --> 00:33:15,460 tiedä, tässä on toimintoja, mitä he tehdä, ja tässä on 1: n ja 0: n 689 00:33:15,460 --> 00:33:18,870 kun todella haluat käyttää niitä. 690 00:33:18,870 --> 00:33:19,530 >> Cool. 691 00:33:19,530 --> 00:33:26,980 Kysyttävää Kääntäjätekniikan tai muita aiheita pöydällä? 692 00:33:26,980 --> 00:33:30,300 >> Opiskelija: Minulla on kysymys täytäntöönpanosta rekursiivinen toiminnot. 693 00:33:30,300 --> 00:33:31,170 Kysymys rekursio. 694 00:33:31,170 --> 00:33:33,030 Minulla oli tunne, että voisi keksiä. 695 00:33:33,030 --> 00:33:38,310 Joten nopeasti läpi rekursio tiettyyn 696 00:33:38,310 --> 00:33:40,690 Esimerkiksi kertoma toiminto. 697 00:33:40,690 --> 00:33:44,920 Koska tämä on esimerkki siitä, että usein tulee ylös tai käytetään 698 00:33:44,920 --> 00:33:46,170 havainnollistaa rekursio. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Joten "4!" tulkitaan 4 kertoma. 701 00:33:56,410 --> 00:33:59,120 Ja mitä 4 kertoma tarkoittaa? 702 00:33:59,120 --> 00:34:00,696 Mitä se tekee? 703 00:34:00,696 --> 00:34:02,235 Miten lasketaan 4 kertoma? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 kertaa 3 kertaa 2 kertaa 1. 706 00:34:07,960 --> 00:34:11,889 >> Joten toinen tapa kirjoittaa 4 kertoma on kirjoittaa tämän. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 kertaa 3 kertoma. 709 00:34:19,022 --> 00:34:22,080 Koska 3 kertoma on 3 kertaa 2 kertaa 1. 710 00:34:22,080 --> 00:34:27,580 Joten 4 kertaa 3 kertoma on 4 kertaa 3 kertaa 2 kertaa 1. 711 00:34:27,580 --> 00:34:32,679 Siksi kertoma on suuri ehdokas rekursio, koska se on 712 00:34:32,679 --> 00:34:36,630 selvää, että on jotain, joka tapahtuu yhä uudestaan ​​ja uudestaan ​​päälle 713 00:34:36,630 --> 00:34:39,820 pienempi määrä asioita, kunnes tulet loppuun. 714 00:34:39,820 --> 00:34:42,570 Kun tulet 1, 1 kertoma on 1. 715 00:34:42,570 --> 00:34:43,719 Et voi mennä paljon pidemmälle. 716 00:34:43,719 --> 00:34:47,219 0 kertoma on myös määritelty 1. 717 00:34:47,219 --> 00:34:50,679 Joten kun saat 1 tai 0, olet lopussa, ja voit 718 00:34:50,679 --> 00:34:53,219 alkaa menee takaisin ylös. 719 00:34:53,219 --> 00:34:59,540 Joten jos halusimme kirjoittaa rekursiivinen funktiota kertoma, 720 00:34:59,540 --> 00:35:02,170 aiomme kirjoittaa joitakin pseudokoodi että nyt. 721 00:35:02,170 --> 00:35:03,300 Ennen kuin voimme kirjoittaa että pseudokoodina - 722 00:35:03,300 --> 00:35:05,660 Annan teille pari minuuttia kirjoittaa pseudo koodia tai vain ajatella 723 00:35:05,660 --> 00:35:09,600 siitä - on kaksi asiaa joka rekursiivinen funktio tarvitsee. 724 00:35:09,600 --> 00:35:12,530 Mitä ovat nämä kaksi asiaa? 725 00:35:12,530 --> 00:35:13,220 >> JACK: Se on kutsua itseään. 726 00:35:13,220 --> 00:35:13,680 >> JASON HIRSCHHORN: Noah? 727 00:35:13,680 --> 00:35:14,460 Voi, Jack. 728 00:35:14,460 --> 00:35:15,100 Mennä eteenpäin. 729 00:35:15,100 --> 00:35:16,640 >> JACK: Se on kutsua itseään. 730 00:35:16,640 --> 00:35:19,220 >> JASON HIRSCHHORN: So rekursiivinen toiminto tarvitsee rekursiokutsu, 731 00:35:19,220 --> 00:35:20,220 soittaa itselleen. 732 00:35:20,220 --> 00:35:20,770 Se on yksi. 733 00:35:20,770 --> 00:35:21,510 Ja mikä on toinen asia? 734 00:35:21,510 --> 00:35:22,250 >> JACK: perustapaus. 735 00:35:22,250 --> 00:35:23,780 >> JASON HIRSCHHORN: perustapaus. 736 00:35:23,780 --> 00:35:26,940 Pohja tapaus on, tässä on kun lopettaa. 737 00:35:26,940 --> 00:35:29,510 Joten funktio saa kutsutaan. 738 00:35:29,510 --> 00:35:31,410 Perustapauksessa tulee ensin. 739 00:35:31,410 --> 00:35:33,710 Haluatko tietää, jos olet lopussa. 740 00:35:33,710 --> 00:35:37,110 Ja jos et ole lopussa, voit tee rekursiokutsu. 741 00:35:37,110 --> 00:35:39,880 Ja mennä läpi tämä toiminto uudelleen, Tarkista base tapauksessa uudelleen. 742 00:35:39,880 --> 00:35:42,575 Jos et ole loppua, teet toinen rekursiokutsu, 743 00:35:42,575 --> 00:35:44,130 jne., jne.. 744 00:35:44,130 --> 00:35:47,110 >> Siksi rekursiivinen toiminnot aina Tarvitsen ne pohja tapauksissa ja nämä 745 00:35:47,110 --> 00:35:48,210 rekursiokutsua. 746 00:35:48,210 --> 00:35:51,280 Jos sinulla ei ole rekursiivinen kutsu, se ei olisi rekursiivinen funktio. 747 00:35:51,280 --> 00:35:53,210 Jos sinulla ei ole pohja tapauksessa menisit ikuisesti ja 748 00:35:53,210 --> 00:35:54,780 ei olisi loppua. 749 00:35:54,780 --> 00:35:57,870 Ja pohja tapauksessa tulee aina ensin, koska olet aina kannattaa tarkistaa 750 00:35:57,870 --> 00:36:00,420 jos olet lopussa ensin. 751 00:36:00,420 --> 00:36:04,770 Joten ennen kuin voimme tehdä joitakin pseudokoodina, miksi et kestää hetken miettiä 752 00:36:04,770 --> 00:36:09,360 miten rekursiivisen olisi kirjoitettu? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Myös peräti olet tekemässä, kirjallisesti sen ulos paperille on 755 00:36:26,010 --> 00:36:27,960 mitä olet menossa on tehdä tietovisa huomenna. 756 00:36:27,960 --> 00:36:32,160 Joten luultavasti hyvä käytäntö tehdä Muista koodin olet kirjoittamassa 757 00:36:32,160 --> 00:36:34,420 alas paperille - 758 00:36:34,420 --> 00:36:35,160 tai voit tehdä sen. 759 00:36:35,160 --> 00:36:36,710 Tiedätkö, missä puolipisteitä ovat. 760 00:36:36,710 --> 00:36:37,660 Muistat syntaksin. 761 00:36:37,660 --> 00:36:40,400 Koska et voi olla kääntäjä kertoa teille tehnyt virheen. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Myös samoilla linjoilla, huomenna, jolloin olet koodaus ongelmia, jos 764 00:37:07,240 --> 00:37:11,490 ryntäsi aikaa, tai jos olet hyvin hämmentyneitä siitä, kuinka sinun pitäisi 765 00:37:11,490 --> 00:37:16,030 kirjoittaa erityisesti asia C, se behoove voit kirjoittaa pseudo-koodi 766 00:37:16,030 --> 00:37:18,160 tai kirjoittaa kommentteja samoin. 767 00:37:18,160 --> 00:37:21,940 Koska siellä on osittainen luottoa Paljon kysymyksiä tietokilpailu. 768 00:37:21,940 --> 00:37:24,840 Joten saatat olla kova kiire, tai et ehkä vain sekoittaa. 769 00:37:24,840 --> 00:37:28,030 Kirjoittaminen kommentteja tai pseudo-koodi ovat usein tapoja, joilla voit 770 00:37:28,030 --> 00:37:29,360 voi saada osittaista luottoa. 771 00:37:29,360 --> 00:37:31,440 >> Joten älä jätä jotain tyhjä on tietokilpailu. 772 00:37:31,440 --> 00:37:33,490 Ei ole rangaistuksia asettaa asiat sisään 773 00:37:33,490 --> 00:37:37,650 Itse asiassa, ottamalla pseudo-koodi tai kommentit aikoo auttaa luokkalainen 774 00:37:37,650 --> 00:37:40,410 selvittää, jos todella tiedät mitä puhut, ja ehkä palkinto 775 00:37:40,410 --> 00:37:42,030 sinulle osittainen ansiona. 776 00:37:42,030 --> 00:37:44,510 >> Myös tämänsuuntainen, kirjoittaa selkeästi. 777 00:37:44,510 --> 00:37:47,650 Jos emme voi oikeastaan ​​mitä olet kirjoittamassa, emme aio soittaa 778 00:37:47,650 --> 00:37:49,900 keskiyöllä huomenna kuva mitä kirjoitit. 779 00:37:49,900 --> 00:37:51,520 Olemme juuri menossa ottamaan pois pistettä. 780 00:37:51,520 --> 00:37:56,570 Kirjoita selvästi, jotta voimme kuulla, tai pikemminkin, voimme lukea mitä kirjoitit. 781 00:37:56,570 --> 00:38:00,230 >> Ja jos se sanoo kaksi lausetta, älä kirjoita kappale. 782 00:38:00,230 --> 00:38:02,280 Seuraa ohjeita. 783 00:38:02,280 --> 00:38:03,500 Kirjoittaa selkeästi. 784 00:38:03,500 --> 00:38:07,720 Ja kirjoittaa näitä kommentteja tai pseudokoodi kysymyksiä, jotka voisivat 785 00:38:07,720 --> 00:38:10,270 palkinnon osittainen luottoa. 786 00:38:10,270 --> 00:38:12,520 >> OK, mennään kertoma. 787 00:38:12,520 --> 00:38:15,000 Joten meillä on funktio kertoma. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Jos olisin todella kirjoittaa tämän C, mitä minun täytyy laittaa ennen nimen 790 00:38:21,550 --> 00:38:22,800 funktion? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 Palautuva, joka tässä tapauksessa, annamme sen int. 793 00:38:30,060 --> 00:38:35,450 Ja sitten sisällä aaltosulkeiden, on mitä menee sisälle aaltosulkeiden varten 794 00:38:35,450 --> 00:38:36,850 funktio? 795 00:38:36,850 --> 00:38:37,950 >> Opiskelijat: Argumentti tyyppi. 796 00:38:37,950 --> 00:38:39,150 >> JASON HIRSCHHORN: Sen väitteet. 797 00:38:39,150 --> 00:38:42,680 Joten kertoma luultavasti ottaa argumentti. 798 00:38:42,680 --> 00:38:44,500 Se luultavasti vain yhden argumentin. 799 00:38:44,500 --> 00:38:49,450 Ja me sanomme sen otan kokonaisluku nimeltä x. 800 00:38:49,450 --> 00:38:52,770 Ja taas, kun kirjoitat prototyyppi toiminto tai kirjallisesti toiminto 801 00:38:52,770 --> 00:38:57,110 koodissa ennen kuin ne määrittelevät sen, et kirjoittaa dataa tyyppi ja nimi 802 00:38:57,110 --> 00:39:01,370 että muuttuja tätä toimintoa vain. 803 00:39:01,370 --> 00:39:06,350 Joten voit siirtää joitakin numero tähän toiminto, se tulee nimitystä x 804 00:39:06,350 --> 00:39:07,340 sisäisesti. 805 00:39:07,340 --> 00:39:08,755 >> Meillä on kertoma toimintoa. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Tarvitsemme kaksi asiaa, perustapaus ja rekursiokutsu. 808 00:39:15,850 --> 00:39:20,900 Mikä on perusta tapauksessa kertoma? 809 00:39:20,900 --> 00:39:24,850 Joku joka kirjoitti sen ulos ja joka ei ole puhunut vielä, mikä on perusta 810 00:39:24,850 --> 00:39:26,100 tapauksessa kertoma? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> Opiskelija: Jos n on pienempi kuin 2, paluu 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON HIRSCHHORN: Jos n on alle 2, paluu 1. 814 00:39:33,520 --> 00:39:37,216 Pidän siitä, koska se huolehtii 0 ja 1. 815 00:39:37,216 --> 00:39:45,290 Joten teemme x <2, paluu 1. 816 00:39:45,290 --> 00:39:47,870 Jos saamme kulunut 0, jos saamme kulunut 1, tämä toiminto 817 00:39:47,870 --> 00:39:49,790 välittömästi palautettava 1. 818 00:39:49,790 --> 00:39:54,020 Jos saamme saavuttanut muutamia suurempi, tai yhtä suuri kuin 2, aiomme 819 00:39:54,020 --> 00:39:55,370 on meidän rekursiokutsu. 820 00:39:55,370 --> 00:39:57,855 >> Ja niin miten on, että menossa töihin? 821 00:39:57,855 --> 00:40:01,070 Voiko joku muu, joka työskennelleet tämän joka ei ole puhunut vielä antaa minulle 822 00:40:01,070 --> 00:40:07,380 rekursiokutsu tätä toimintoa pseudokoodilla? 823 00:40:07,380 --> 00:40:10,770 Jos saamme hyväksyttiin numero x ja se on suurempi kuin 2, mitä 824 00:40:10,770 --> 00:40:13,370 haluamme tehdä? 825 00:40:13,370 --> 00:40:17,930 Meillä on myös esimerkki kirjoitettu puoli, joka saattaa antaa sinulle vihjeen. 826 00:40:17,930 --> 00:40:20,770 >> Opiskelija: Soita x kertaa kertoma x miinus 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON HIRSCHHORN: Aivan oikein. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Aiomme palata x kertaa kertoma x miinus 1. 830 00:40:37,750 --> 00:40:41,810 Ja että vaikka kirjoitin ylös, pohjimmiltaan, mitä sanoitte Englanti, 831 00:40:41,810 --> 00:40:44,580 Tämän kertoma toiminto saavat soitti taas. 832 00:40:44,580 --> 00:40:46,320 Se tulee suoritettavaksi x miinus 1. 833 00:40:46,320 --> 00:40:49,320 Se palauttaa joidenkin kokonaisluku, ja niin se tulee moninkertaistaa nämä kaksi 834 00:40:49,320 --> 00:40:52,050 yhteen, ja että arvo on palasi riippumatta kutsui tätä 835 00:40:52,050 --> 00:40:55,010 kertoma-toiminto, joka saattaa toinen esimerkki 836 00:40:55,010 --> 00:40:58,420 Tämän kertoma toiminnon. 837 00:40:58,420 --> 00:41:01,360 >> Niin että on esimerkki rekursiivinen toiminto, erittäin 838 00:41:01,360 --> 00:41:02,530 yksinkertainen rekursiivinen funktio. 839 00:41:02,530 --> 00:41:04,530 Mutta useimmat heistä olla näin. 840 00:41:04,530 --> 00:41:11,170 Jos haluat hyvän rekursiivinen haaste tietokilpailu, kokeile koodaus 841 00:41:11,170 --> 00:41:13,230 binäärihaku rekursiivisesti. 842 00:41:13,230 --> 00:41:18,950 Koska jos teit binäärihaku varten ongelma asettaa kolme, luultavasti teki sen 843 00:41:18,950 --> 00:41:21,730 iteratiivisesti while-silmukka. 844 00:41:21,730 --> 00:41:23,700 >> Mutta se voidaan myös kirjoittaa rekursiivisesti. 845 00:41:23,700 --> 00:41:26,310 Olet menossa tarvitse kirjoittaa oman erillinen toiminto, joka vie jonkin 846 00:41:26,310 --> 00:41:29,020 eri komentorivin argumentteja - tai ei komentorivin argumentteja, jotkut 847 00:41:29,020 --> 00:41:30,910 Eri vain säännöllisesti argumentteja. 848 00:41:30,910 --> 00:41:33,870 Mutta voisit kirjoittaa binäärihaku rekursiivisesti samoin. 849 00:41:33,870 --> 00:41:36,190 >> Opiskelija: Joten voi myös kirjoittanut, sijasta x miinus 1, voit 850 00:41:36,190 --> 00:41:39,502 olisi voinut myös kirjoittanut x miinus miinus, tai sinulla voisi olla 851 00:41:39,502 --> 00:41:40,830 kirjallinen minus minus x. 852 00:41:40,830 --> 00:41:44,740 Voisitko selittää todella nopeasti, miksi nämä olisivat eri asioita, 853 00:41:44,740 --> 00:41:49,510 kuten mitä eroa on x miinus miinus ja miinus miinus x? 854 00:41:49,510 --> 00:41:51,320 >> JASON HIRSCHHORN: Ei, en ole mene tuohon. 855 00:41:51,320 --> 00:41:55,500 Mutta aion puhua teille siitä jälkeen luokka. x minus minus, minus minus x 856 00:41:55,500 --> 00:41:57,780 vähentääksesi x 1. 857 00:41:57,780 --> 00:41:59,090 Mutta he tekevät sen hieman eri tavalla. 858 00:41:59,090 --> 00:42:00,340 Mutta en halua mennä tuohon. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 Muut kysymykset rekursio tai tätä toimintoa? 861 00:42:09,090 --> 00:42:10,140 Se ei ole oikeastaan ​​edes pseudokoodina. 862 00:42:10,140 --> 00:42:15,060 Se on pohjimmiltaan koodi C voisitte kirjoittaa tästä. 863 00:42:15,060 --> 00:42:19,393 >> OK, muita kysymyksiä aiheista täällä? 864 00:42:19,393 --> 00:42:19,864 Joo. 865 00:42:19,864 --> 00:42:23,130 >> Opiskelija: Minulla on nopea pilaantunut liukuluku ja tarkkuutta. 866 00:42:23,130 --> 00:42:24,260 >> JASON HIRSCHHORN: Kelluva kohta ja tarkkuutta. 867 00:42:24,260 --> 00:42:26,920 Voiko joku todella nopeasti anna minulle pilaantunut 868 00:42:26,920 --> 00:42:28,210 liukuluku ja tarkkuus? 869 00:42:28,210 --> 00:42:30,420 Te kaikki piti tehdä tämä teidän Harjoitus, joten olet kaikki 870 00:42:30,420 --> 00:42:31,700 perehtynyt siihen. 871 00:42:31,700 --> 00:42:35,090 Tai ehkä ei kaikki. 872 00:42:35,090 --> 00:42:36,602 Kukaan? 873 00:42:36,602 --> 00:42:39,530 Anna minulle alkoi paikalla. 874 00:42:39,530 --> 00:42:40,750 Liukuluku ja tarkkuutta. 875 00:42:40,750 --> 00:42:42,380 Mikä on ongelma? 876 00:42:42,380 --> 00:42:42,960 Kyllä. 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 Anteeksi. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: On vain rajallinen määrä numeroita, joka voidaan esittää 882 00:42:51,550 --> 00:42:57,930 koska olet, meidän tapauksessa 32-bittinen järjestelmä. 883 00:42:57,930 --> 00:43:03,080 Joten sinulla sellainen on muodostavat joitakin numeroita. 884 00:43:03,080 --> 00:43:03,910 >> JASON HIRSCHHORN: Niin, että Aivan oikein. 885 00:43:03,910 --> 00:43:08,110 On olemassa vain tietty määrä numerot, jotka voidaan esittää. 886 00:43:08,110 --> 00:43:11,770 Jos kerrot kaksi erittäin suuri määrä, se saattaa vuotaa määrä 887 00:43:11,770 --> 00:43:13,950 tilojen sinulla on edustettava kokonaisluku. 888 00:43:13,950 --> 00:43:17,930 Siksi joskus käytämme pitkä pitkä sijasta int. 889 00:43:17,930 --> 00:43:19,210 Joka on enemmän tiloja. 890 00:43:19,210 --> 00:43:21,210 Joka voi olla suurempi määrä. 891 00:43:21,210 --> 00:43:24,310 >> Liukuluku tarkkuus on tekemistä että, mutta on myös tekemistä 892 00:43:24,310 --> 00:43:29,300 Se, että desimaaliluvut ovat ei aina edustettuna. 893 00:43:29,300 --> 00:43:29,540 Anteeksi. 894 00:43:29,540 --> 00:43:31,280 Sanon tämän takaisin ylös. 895 00:43:31,280 --> 00:43:36,610 Desimaaliluku 1.0 ei ole aina edustajanaan kuten arvata saattaa, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 Se on joskus edustettuina +1,000000001 Tai 0,999999999. 898 00:43:50,360 --> 00:43:52,780 Se saattaa olla jopa 89 heitetään siellä jossain. 899 00:43:52,780 --> 00:43:56,560 Joten ne desimaalin numerot eivät ole on ollut täsmälleen kuin olisit 900 00:43:56,560 --> 00:43:58,430 odottavat, että heitä edustaa. 901 00:43:58,430 --> 00:44:00,010 >> Joten ongelma set - 902 00:44:00,010 --> 00:44:00,860 se oli kaksi? - 903 00:44:00,860 --> 00:44:05,290 ongelma asettaa kaksi, jossa käsitellään liukuluvut, kun halusimme 904 00:44:05,290 --> 00:44:08,690 nämä edustamaan mitä halusimme ne edustavat, numero 905 00:44:08,690 --> 00:44:12,860 penniä, tai sentteinä, me kerrottava ne 100. 906 00:44:12,860 --> 00:44:14,750 Me pyöristetty niitä. 907 00:44:14,750 --> 00:44:18,660 Ja sitten leikkaamme kaiken takana desimaalin tarkkuudella. 908 00:44:18,660 --> 00:44:22,020 Se oli varmistaa, että ne olisivat oikeastaan ​​yhtä mitä halusimme 909 00:44:22,020 --> 00:44:22,410 ne olisi yhtä suuri. 910 00:44:22,410 --> 00:44:26,870 >> Koska kun otat jotain, joka on float ja muuttaa sen int, voit 911 00:44:26,870 --> 00:44:29,860 katkaista kaiken oikealle desimaalipilkun. 912 00:44:29,860 --> 00:44:33,900 Koska siellä on joitakin liukuluku epätarkkuus, 100.000 ehkä 913 00:44:33,900 --> 00:44:37,440 edustettuina 99,999999999. 914 00:44:37,440 --> 00:44:40,350 Ja jos vain leikata pois kaiken oikea heti, olet menossa 915 00:44:40,350 --> 00:44:41,600 saada väärä numero. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Joo. 918 00:44:44,180 --> 00:44:45,290 >> Opiskelija: Minulla oli kysymys noin valu. 919 00:44:45,290 --> 00:44:47,500 Missä järjestyksessä se tapahtuu? 920 00:44:47,500 --> 00:44:54,480 Jos haluat tehdä kellua, kannattimet, 1 jaettuna 10, se ei 1 jaettuna 10, 921 00:44:54,480 --> 00:44:58,910 sitten saada 0,1, kytke se float? 922 00:44:58,910 --> 00:45:01,470 >> JASON HIRSCHHORN: Jos teet float 1 jaettuna 10 - 923 00:45:01,470 --> 00:45:02,550 >> Opiskelija: Joo, ja sitten vastaa - 924 00:45:02,550 --> 00:45:04,240 No, se olisi normaalisti on se yhtä - 925 00:45:04,240 --> 00:45:04,690 Joo. 926 00:45:04,690 --> 00:45:06,760 Haluat tehdä sen kellua, eikö? 927 00:45:06,760 --> 00:45:12,790 >> JASON HIRSCHHORN: OK, joten aiomme käyttää sitä segue osaksi miettiminen 928 00:45:12,790 --> 00:45:15,390 vastauksia näihin kysymyksiin kautta koodausta. 929 00:45:15,390 --> 00:45:18,180 Koska sinun on todennäköisesti paljon Näiden minuutti kysymyksiä, ja hyvä tapa 930 00:45:18,180 --> 00:45:19,100 ratkaisemaan niitä on kautta koodausta. 931 00:45:19,100 --> 00:45:21,320 Menemme siis koodaamaan tätä juuri nyt, ja sitten me aiomme mennä takaisin ja 932 00:45:21,320 --> 00:45:24,020 koodata kysymys sinulla oli. 933 00:45:24,020 --> 00:45:24,950 >> Joten ensimmäinen rivi - 934 00:45:24,950 --> 00:45:29,390 Minun ei olisi pitänyt kirjoittanut - mikä on Ensimmäinen asia, jota haluamme tehdä, kun me 935 00:45:29,390 --> 00:45:32,250 avata uuden tiedoston gedit? 936 00:45:32,250 --> 00:45:34,190 >> Opiskelija: Sisällytä. 937 00:45:34,190 --> 00:45:35,920 >> JASON HIRSCHHORN: Sisällytä mitä? 938 00:45:35,920 --> 00:45:37,952 >> Opiskelija: CS50 kirjasto. 939 00:45:37,952 --> 00:45:39,920 >> JASON HIRSCHHORN: OK. 940 00:45:39,920 --> 00:45:42,590 Mitä muuta meidän pitäisi sisältää? 941 00:45:42,590 --> 00:45:46,820 Olemme juuri menossa tarkistaa, mitä tapahtuu kun heität jotain kellua. 942 00:45:46,820 --> 00:45:48,605 Mutta mitä me tarvitse sisällyttää, jos olemme aikoo kirjoittaa C-ohjelma? 943 00:45:48,605 --> 00:45:49,300 >> Opiskelija: Vakio I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON HIRSCHHORN: stdio.h. 945 00:45:50,625 --> 00:45:54,880 Emme itse asiassa tarvitse, tämän ohjelma, cs50.h, vaikka se on 946 00:45:54,880 --> 00:45:55,920 aina hyödyllistä sisällyttää se. 947 00:45:55,920 --> 00:45:58,260 Mutta emme aina tarvitse stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> Opiskelija: Kun koodaus C? 949 00:45:59,660 --> 00:46:15,770 >> JASON HIRSCHHORN: Kun koodaus C. 950 00:46:15,770 --> 00:46:17,090 >> Joten en tallenna se tästä. C-tiedosto. 951 00:46:17,090 --> 00:46:18,590 Saan muutamia kivoja syntaksin korostus. 952 00:46:18,590 --> 00:46:22,890 Kirjoitin mitätön sisällä tärkein. 953 00:46:22,890 --> 00:46:24,792 Mitä void tarkoittaa? 954 00:46:24,792 --> 00:46:26,740 >> Opiskelija: Ei tehdä mitään komentorivin argumentteja. 955 00:46:26,740 --> 00:46:28,900 >> JASON HIRSCHHORN: Void keinoja, tässä tapauksessa tärkein ei ota mitään 956 00:46:28,900 --> 00:46:29,700 komentorivin argumentteja. 957 00:46:29,700 --> 00:46:32,720 Muissa tapauksissa, se tarkoittaa, että toiminto ei ota komentorivin argumentteja. 958 00:46:32,720 --> 00:46:36,560 Tai toiminto, jos olisin kirjoittaa void main (void), joka sanoisi Mainin 959 00:46:36,560 --> 00:46:38,460 eivät palaa mitään. 960 00:46:38,460 --> 00:46:39,960 Joten void juuri merkitse mitään. 961 00:46:39,960 --> 00:46:42,510 Mitä kirjoittaisin jos olisin ottaa komentorivin argumentteja? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> Opiskelija: int arc c string arc v. 964 00:46:47,150 --> 00:46:49,055 >> JASON HIRSCHHORN: int argc merkkijono argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 Onko näin? 967 00:46:55,572 --> 00:46:58,720 >> Opiskelija: Se on char tähden argv suluissa. 968 00:46:58,720 --> 00:47:01,730 >> JASON HIRSCHHORN: Joten voi kirjoittaa merkkijono argv suluissa tai nieriää tähden argv 969 00:47:01,730 --> 00:47:03,710 suluissa, mutta sinun täytyy suluissa. 970 00:47:03,710 --> 00:47:06,290 Koska argv on array merkkijonojen, muistaa. 971 00:47:06,290 --> 00:47:07,360 Se ei ole vain yksi merkkijono. 972 00:47:07,360 --> 00:47:10,350 Joten merkkijono argv on, tässä yksi merkkijono kutsutaan argv. 973 00:47:10,350 --> 00:47:13,630 Merkkijono argv suluissa, tässä Merkkijonotaulukko. 974 00:47:13,630 --> 00:47:17,865 Joten int argc merkkijono argv suluissa olisi jotain, että olen 975 00:47:17,865 --> 00:47:18,810 luultavasti kirjoittaa. 976 00:47:18,810 --> 00:47:23,050 >> Joten halusit tallentaa kokonaisluku? 977 00:47:23,050 --> 00:47:24,285 >> Opiskelija: Joo, kokonaisluku. 978 00:47:24,285 --> 00:47:25,840 Tai float. 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 on yhtä kuin 1 jaettuna 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 Miten tulostaa float Printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Mitä? 986 00:47:46,714 --> 00:47:47,560 >> Opiskelija:% f. 987 00:47:47,560 --> 00:47:48,300 >> JASON HIRSCHHORN:% f. 988 00:47:48,300 --> 00:47:50,810 Mikä on kokonaisluku? 989 00:47:50,810 --> 00:47:52,110 d tai i. 990 00:47:52,110 --> 00:47:53,000 Mikä merkkijono? 991 00:47:53,000 --> 00:47:54,240 >> Opiskelija: s. 992 00:47:54,240 --> 00:47:56,140 >> JASON HIRSCHHORN: s. 993 00:47:56,140 --> 00:47:57,550 Miten saan uuden linjan? 994 00:47:57,550 --> 00:47:58,800 >> Opiskelija: Backslash n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON HIRSCHHORN: Mitä voin palata jos tärkein toimii oikein? 997 00:48:07,100 --> 00:48:08,360 >> Opiskelija: 0. 998 00:48:08,360 --> 00:48:09,430 Onko minun täytyy kirjoittaa, että linja, vaikka? 999 00:48:09,430 --> 00:48:10,170 >> Opiskelija: No 1000 00:48:10,170 --> 00:48:11,513 OK, emme kirjoita sitä sitten. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 Voivatko kaikki lukenut, että? 1003 00:48:17,190 --> 00:48:18,485 Se näyttää vähän pieni. 1004 00:48:18,485 --> 00:48:20,160 Voivatko kaikki nähdä, vai pitäisikö Teen sen isompi? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Uskon kamera, teemme se vähän isompi, vaikka. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON HIRSCHHORN: Jos haluan tehdä tästä . C tiedosto executable, mitä 1009 00:48:38,410 --> 00:48:39,260 voin kirjoittaa? 1010 00:48:39,260 --> 00:48:41,610 >> Opiskelija: Tee testi. 1011 00:48:41,610 --> 00:48:42,080 >> JASON HIRSCHHORN: Anteeksi? 1012 00:48:42,080 --> 00:48:42,790 >> Opiskelija: Tee testi. 1013 00:48:42,790 --> 00:48:44,040 >> JASON HIRSCHHORN: Tee testi. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Puhuimme tätä linjaa aikaisemmin. 1016 00:48:48,410 --> 00:48:49,140 Kalahtaa. 1017 00:48:49,140 --> 00:48:51,270 Mitä kalahtaa? 1018 00:48:51,270 --> 00:48:52,200 Nimi kääntäjä. 1019 00:48:52,200 --> 00:48:53,920 Mikä tämä linja? 1020 00:48:53,920 --> 00:48:55,580 >> Opiskelija: Asettaa sen käytöstä GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON HIRSCHHORN: setit sen käytöstä GDB. 1022 00:48:59,230 --> 00:49:02,338 Tämä linja, mikä tuo on? 1023 00:49:02,338 --> 00:49:03,290 >> Opiskelija: Lähdekoodi. 1024 00:49:03,290 --> 00:49:06,010 >> JASON HIRSCHHORN: Tuo lähdetiedoston. C-tiedosto. 1025 00:49:06,010 --> 00:49:08,150 Mitä nämä kaksi riviä tehdä? 1026 00:49:08,150 --> 00:49:10,245 Tai nämä kaksi eivät riviä. 1027 00:49:10,245 --> 00:49:12,300 >> Opiskelija: Se nimiä sitä testata. 1028 00:49:12,300 --> 00:49:15,410 >> JASON HIRSCHHORN: Eli viiva o sanoo, name it jotain eri tavalla. 1029 00:49:15,410 --> 00:49:16,790 Ja tässä soitat sen testin. 1030 00:49:16,790 --> 00:49:18,900 Jos minulla ei ole, että, mikä se nimi on? 1031 00:49:18,900 --> 00:49:20,260 >> Opiskelija: a.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON HIRSCHHORN: a.out. 1033 00:49:22,340 --> 00:49:25,366 Mitä tämä tekee? 1034 00:49:25,366 --> 00:49:27,670 >> Opiskelija: Linkit matematiikka kirjasto. 1035 00:49:27,670 --> 00:49:29,550 >> JASON HIRSCHHORN: Se yhdistää vuonna matemaattisen kirjaston. 1036 00:49:29,550 --> 00:49:32,880 Meillä ei sisältynyt matemaattisen kirjaston, mutta koska se on niin yleistä, he ovat 1037 00:49:32,880 --> 00:49:35,780 kirjoitettu tehdä aina sisällyttää matematiikka kirjasto. 1038 00:49:35,780 --> 00:49:39,050 Ja samoin, tähän sisältyy CS50 kirjasto. 1039 00:49:39,050 --> 00:49:43,010 >> OK, joten jos me luettelo, meillä on nyt suoritettavan nimeltään testi. 1040 00:49:43,010 --> 00:49:45,150 Voit suorittaa sen, minä kirjoitan testi. 1041 00:49:45,150 --> 00:49:48,330 Näen, että minun liukuluku, odotetusti, on yhtä kuin 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 Tekee sen - 1044 00:49:51,590 --> 00:49:52,060 niin - 1045 00:49:52,060 --> 00:49:55,210 >> Opiskelija: Sitten jos laitat kellua nyt kuin heität sen float - 1046 00:49:55,210 --> 00:49:56,870 >> JASON HIRSCHHORN: Cast 1 kellua? 1047 00:49:56,870 --> 00:49:59,180 >> Opiskelija: Ei, heittää koko asia - 1048 00:49:59,180 --> 00:49:59,500 joo. 1049 00:49:59,500 --> 00:50:02,460 Jos teit, että olisi jotka tekevät sen 0,1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON HIRSCHHORN: OK, niin todella nopeasti, 1 jaettuna 10, ne ovat 1051 00:50:07,170 --> 00:50:08,690 kokonaislukuja jakautuvan. 1052 00:50:08,690 --> 00:50:13,580 Joten kun jaat kokonaislukuja, he 0, ja säästät että 0 1053 00:50:13,580 --> 00:50:17,170 kellua, koska slash on vain kokonaisluku jako. 1054 00:50:17,170 --> 00:50:19,180 Joten nyt olemme siirtymässä jotain osaksi float. 1055 00:50:19,180 --> 00:50:21,650 >> Katsotaan, mitä tapahtuu. 1056 00:50:21,650 --> 00:50:22,900 Teemme testin. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Joten nyt näemme, että hakkuutähteellä ei ollut kokonaisluku alue, se on kelluva 1059 00:50:31,090 --> 00:50:32,640 kohta jako. 1060 00:50:32,640 --> 00:50:35,700 Koska yksi sen perustelut oli heitetty sen kellua. 1061 00:50:35,700 --> 00:50:38,380 Joten nyt se sanoi, käsitellä tätä jako kuten olemme tekemisissä 1062 00:50:38,380 --> 00:50:40,140 kelluva pistettä, ei kokonaislukuja. 1063 00:50:40,140 --> 00:50:42,760 Ja niin saamme vastauksen odotamme. 1064 00:50:42,760 --> 00:50:44,620 >> Katsotaan, mitä tapahtuu - 1065 00:50:44,620 --> 00:50:47,103 oho. 1066 00:50:47,103 --> 00:50:51,646 Jos haluaisin tulostaa enemmän desimaalin paikkoja, miten voisin tehdä? 1067 00:50:51,646 --> 00:50:55,550 >> Opiskelija: Point piste F, tai niin monta desimaalia kuin haluat. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON HIRSCHHORN: Joten voin tulostaa 10 desimaalin paikkoja. 1070 00:51:04,440 --> 00:51:06,610 Ja näemme nyt olemme pääsemässä outoja juttuja. 1071 00:51:06,610 --> 00:51:09,650 Ja että menee takaisin kysymykseen noin liukuluku epätarkkuus. 1072 00:51:09,650 --> 00:51:10,950 On outoa tavaraa säilytetään täällä. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, tuo kysymykseesi? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Mitä muuta haluat koodata nopeasti? 1077 00:51:20,200 --> 00:51:25,470 >> Opiskelija: Halusin vain nähdä, onko ei, jos vapauttanut joitakin osoitin, 1078 00:51:25,470 --> 00:51:30,410 onko tämä osoitin vielä oli tallennettu se osoite mitä se oli ollut 1079 00:51:30,410 --> 00:51:32,170 osoittaa aiemmin. 1080 00:51:32,170 --> 00:51:34,100 >> JASON HIRSCHHORN: OK, niin tehdään se. 1081 00:51:34,100 --> 00:51:38,030 Char tähden PTR, tämä luo muuttujan nimeltään PTR tyypin char tähti. 1082 00:51:38,030 --> 00:51:39,280 Kuinka kirjoitan malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: Vain malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 Mutta sitten sen täytyy olla koko, ja Tässä tapauksessa en voi kai 1087 00:51:51,040 --> 00:51:52,465 osoittavan char. 1088 00:51:52,465 --> 00:51:54,450 Niin se olis char. 1089 00:51:54,450 --> 00:51:57,520 >> JASON HIRSCHHORN: OK, niin enemmän yleisesti, Inside - 1090 00:51:57,520 --> 00:51:58,770 Katsotaanpa muokata. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Sisällä malloc, haluatko numero tavujen kasaan. 1093 00:52:09,260 --> 00:52:12,320 Yleensä mitä olemme nähneet, että olemme tekemässä on aiomme malloc 1094 00:52:12,320 --> 00:52:14,940 jouset, esimerkiksi, tai ryhmät kokonaislukuja. 1095 00:52:14,940 --> 00:52:21,600 Joten jos haluamme 10 kokonaislukuja tai 10 merkkiä, 10 antaa meille 10. 1096 00:52:21,600 --> 00:52:24,370 Ja sitten koko merkkiä antaisi meille, että koko merkkiä, joka 1097 00:52:24,370 --> 00:52:25,120 Tässä tapauksessa on 1 tavu. 1098 00:52:25,120 --> 00:52:26,250 Saamme 10 tavua. 1099 00:52:26,250 --> 00:52:28,540 Jos meidän pitäisi kirjoittaa koko int, joka antaisi meille 40 tavua. 1100 00:52:28,540 --> 00:52:31,520 >> Joten lisää yleisesti, sisällä malloc on tavujen haluat. 1101 00:52:31,520 --> 00:52:34,620 Tässä tapauksessa emme saa 1 tavu. 1102 00:52:34,620 --> 00:52:36,900 Joka tuntuu oudolta käyttöä malloc, mutta meidän 1103 00:52:36,900 --> 00:52:38,470 tarkoituksiin järkevää. 1104 00:52:38,470 --> 00:52:40,420 Joten ei tuo. 1105 00:52:40,420 --> 00:52:43,420 >> Aiomme soittaa ilmaiseksi. 1106 00:52:43,420 --> 00:52:47,040 Me päästä siitä eroon ja käytämme PTR uudelleen. 1107 00:52:47,040 --> 00:52:48,750 Ja mitä sinä haluat tarkistaa? 1108 00:52:48,750 --> 00:52:50,550 >> Opiskelija: Halusin vain tarkistaa, onko tai ei ollut mitään 1109 00:52:50,550 --> 00:52:51,900 sen sisälle. 1110 00:52:51,900 --> 00:52:53,050 >> JASON HIRSCHHORN: Joten onko se huomautti mitään? 1111 00:52:53,050 --> 00:52:57,740 >> Opiskelija: Joo, tarkalleen, onko se oli vielä muistissa osoite. 1112 00:52:57,740 --> 00:53:02,220 >> JASON HIRSCHHORN: Haluat tarkistaa arvoa PTR? 1113 00:53:02,220 --> 00:53:03,470 >> Opiskelija: Joo, aivan. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON HIRSCHHORN: Mitä minä kirjoitan täällä jos haluan tarkistaa arvoa 1116 00:53:10,160 --> 00:53:11,880 kohta - mitä on, Jordania sanoi, arvo? 1117 00:53:11,880 --> 00:53:13,720 Tai mikä on varastoitu sisällä PTR? 1118 00:53:13,720 --> 00:53:14,620 >> Opiskelija: muisti osoite. 1119 00:53:14,620 --> 00:53:16,330 >> JASON HIRSCHHORN: muisti osoite. 1120 00:53:16,330 --> 00:53:20,520 Joten jos kirjoitan vain tätä, se tulee antaa minulle arvo PTR. 1121 00:53:20,520 --> 00:53:22,800 Ja miten voin tulostaa muistiosoitteen? 1122 00:53:22,800 --> 00:53:26,470 Mikä muotomerkkijonoa ja muistin osoite? 1123 00:53:26,470 --> 00:53:27,430 >> Opiskelija:% s.. 1124 00:53:27,430 --> 00:53:28,050 >> JASON HIRSCHHORN:% s.. 1125 00:53:28,050 --> 00:53:29,500 % S on merkkijono. 1126 00:53:29,500 --> 00:53:30,750 % P osoitin. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 Onko näin? 1129 00:53:43,540 --> 00:53:44,790 Se on oikein. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Joten PTR vastaa - 1132 00:53:51,040 --> 00:53:53,350 se on vielä jotain se. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 Tämä on luultavasti enemmän mielenkiintoinen kysymys. 1135 00:53:57,645 --> 00:53:59,198 Mitä tämä linja tehdä? 1136 00:53:59,198 --> 00:54:00,830 >> Opiskelija: Seg viat. 1137 00:54:00,830 --> 00:54:01,310 >> JASON HIRSCHHORN: Mitä? 1138 00:54:01,310 --> 00:54:02,678 >> Opiskelija: Minusta se segmenteille viat. 1139 00:54:02,678 --> 00:54:03,574 >> JASON HIRSCHHORN: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> Opiskelija: Minusta tulee segmenteille vika. 1141 00:54:04,920 --> 00:54:08,265 >> JASON HIRSCHHORN: Eli tämä rivi koodia, tähti ptr, mitä 1142 00:54:08,265 --> 00:54:10,152 ei tähti tarkoittaa? 1143 00:54:10,152 --> 00:54:11,240 >> Opiskelija: sisältö. 1144 00:54:11,240 --> 00:54:11,560 >> JASON HIRSCHHORN: Joo. 1145 00:54:11,560 --> 00:54:13,910 Mennä saada sisältöä. 1146 00:54:13,910 --> 00:54:16,830 Joten tämä on menossa muisti käsitellään siellä ja anna se minulle. 1147 00:54:16,830 --> 00:54:21,030 Käytin% c täällä, koska siellä ovat merkkejä tallennetaan sinne. 1148 00:54:21,030 --> 00:54:23,390 Joten aiomme mennä kyseiseen osoitteeseen me juuri näin - tai se varmaan 1149 00:54:23,390 --> 00:54:25,190 hieman erilainen tässä aika suorita ohjelma. 1150 00:54:25,190 --> 00:54:28,010 Mutta menemme tähän osoitteeseen jonka tiedämme edelleen olemassa 1151 00:54:28,010 --> 00:54:29,260 ja katso, mitä siellä. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Joten se ei segmenteille vika. 1154 00:54:37,110 --> 00:54:38,970 Se vain ei antanut meille mitään. 1155 00:54:38,970 --> 00:54:43,350 Se saattoi olla todella antanut meille jotain, emme vain voi nähdä sitä. 1156 00:54:43,350 --> 00:54:45,110 Ja juontaa tätä ajatusta - 1157 00:54:45,110 --> 00:54:47,270 ja emme tule saamaan liikaa tätä, koska se on yli 1158 00:54:47,270 --> 00:54:48,460 kuulu tämän kurssin. 1159 00:54:48,460 --> 00:54:51,260 Mutta puhuimme täällä, jos me ylittää rajat array 1160 00:54:51,260 --> 00:54:54,890 1, emme ehkä joudu vaikeuksiin. 1161 00:54:54,890 --> 00:54:58,550 >> Joskus, kun vain mennä pois 1, teet jotain väärin, ja te 1162 00:54:58,550 --> 00:54:59,220 voisi joutua vaikeuksiin. 1163 00:54:59,220 --> 00:55:00,820 Mutta et aina pulaan. 1164 00:55:00,820 --> 00:55:05,170 Se riippuu kuinka paljon huono asia sinua do, olet menossa joutua vaikeuksiin. 1165 00:55:05,170 --> 00:55:07,790 Joka ei ole sanoa, huolimaton koodin kanssa. 1166 00:55:07,790 --> 00:55:12,080 Mutta se on sanottava, ohjelma ei aina lopettaa, vaikka menet jonnekin 1167 00:55:12,080 --> 00:55:14,130 et pitäisi mennä. 1168 00:55:14,130 --> 00:55:18,170 >> Hyvä esimerkki tästä on, paljon ihmisiä heidän Harjoitus 3, joka 1169 00:55:18,170 --> 00:55:22,350 oli 15, ei tarkista rajat aluksella. 1170 00:55:22,350 --> 00:55:25,860 Joten kun katsoin vasemmalle, katsoin oikeus, katsoin ylös, näytti 1171 00:55:25,860 --> 00:55:27,000 pohjaan. 1172 00:55:27,000 --> 00:55:31,540 Mutta et tarkistaa, onko alkuun oli todella olemaan hallituksessa. 1173 00:55:31,540 --> 00:55:35,220 Ja paljon ihmisiä, jotka teki sen ja kääntyi, että niiden ohjelma toimi 1174 00:55:35,220 --> 00:55:38,960 täydellisesti, koska jos kyseinen elin oli tallennetaan muistiin, jos meni yksi 1175 00:55:38,960 --> 00:55:42,300 yläpuolella tai tarkastettu, että muisti osoite, siellä ei ollut mitään 1176 00:55:42,300 --> 00:55:44,870 Erityisen kamala siitä, joten sinulla ei ollut 1177 00:55:44,870 --> 00:55:45,970 menossa huutaa sinulle. 1178 00:55:45,970 --> 00:55:48,870 >> Mutta meillä olisi silti ottaa pois pisteitä, jos et tarkista, että koska olet 1179 00:55:48,870 --> 00:55:50,850 tekivät jotain et ollut pitäisi tehdä, ja sinulla voisi olla 1180 00:55:50,850 --> 00:55:51,860 joutunut tekemisiin. 1181 00:55:51,860 --> 00:55:54,040 Kertoimet ovat kuitenkin luultavasti ei. 1182 00:55:54,040 --> 00:55:57,790 Joten tämä on osoittaa, että kyllä, voimme silti mennä sitä. 1183 00:55:57,790 --> 00:55:59,010 Ja emme päästä sisään ongelmia tässä asiassa. 1184 00:55:59,010 --> 00:56:04,000 Jos yritimme tehdä lukea Seuraavan 100 merkkiä, olisimme 1185 00:56:04,000 --> 00:56:06,000 luultavasti joutua vaikeuksiin. 1186 00:56:06,000 --> 00:56:09,400 Ja voit koodin lukeminen seuraava 100 merkkiä, jos haluat tekemällä joitakin 1187 00:56:09,400 --> 00:56:10,110 tavallaan silmukan. 1188 00:56:10,110 --> 00:56:10,850 Joo. 1189 00:56:10,850 --> 00:56:16,250 >> Opiskelija: Koska saimme tehtäväksi, että space todellinen arvo, emme olisi 1190 00:56:16,250 --> 00:56:17,050 todella voi nähdä mitään. 1191 00:56:17,050 --> 00:56:21,740 Pitäisikö meidän kokeilla myös asettaa, että sama kuten C tai jotain? 1192 00:56:21,740 --> 00:56:22,640 >> JASON HIRSCHHORN: Suuri kysymys. 1193 00:56:22,640 --> 00:56:25,340 Miten määritän, että arvo - 1194 00:56:25,340 --> 00:56:28,980 mitä koodiriviä voin kirjoittaa verkossa seitsemän tehdä mitä sanoit? 1195 00:56:28,980 --> 00:56:34,040 >> Opiskelija: Star ptr vastaa yhden quote c lopettaa yksi tarjous. 1196 00:56:34,040 --> 00:56:36,970 >> JASON HIRSCHHORN: Niin, että laskemisesta luonne, c, kyseiselle paikalle, 1197 00:56:36,970 --> 00:56:40,200 koska jälleen, että tähti tarkoittaa mennä sinne. 1198 00:56:40,200 --> 00:56:43,320 Ja kun sitä käytetään vasemmalla puolella sijoitusoperaattori, joka vastaa 1199 00:56:43,320 --> 00:56:47,270 allekirjoittaa, emme aio saada, että arvoa niin paljon kuin asettaa tämän arvon. 1200 00:56:47,270 --> 00:56:48,520 Katsotaanpa nyt, mitä tapahtuu. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Laitoimme jotain siellä ja se oli siellä. 1203 00:56:56,770 --> 00:56:58,000 Soitimme ilmaiseksi. 1204 00:56:58,000 --> 00:57:00,100 Joitakin juttuja todennäköisesti käynyt kasaan. 1205 00:57:00,100 --> 00:57:01,890 Joten se ei ole siellä enää. 1206 00:57:01,890 --> 00:57:07,440 Mutta jälleen kerran, emme saa pulassa menossa sinne. 1207 00:57:07,440 --> 00:57:10,260 >> Teen tämän ulos koodin havainnollistaa että monet näistä 1208 00:57:10,260 --> 00:57:12,410 kysymyksiä, että sinulla on, he ovat todella mielenkiintoista 1209 00:57:12,410 --> 00:57:13,650 vastaa paljon aikaa. 1210 00:57:13,650 --> 00:57:15,260 Ja he todella hyviä kysymyksiä. 1211 00:57:15,260 --> 00:57:19,010 Ja voit selvittää ne ulos oman jos esimerkiksi 1212 00:57:19,010 --> 00:57:19,990 Emme ole jaksossa. 1213 00:57:19,990 --> 00:57:20,940 Joo. 1214 00:57:20,940 --> 00:57:24,430 >> Opiskelija: Koska et ole lähettämistä osoitin mihin tahansa, sinun ei tarvitse 1215 00:57:24,430 --> 00:57:26,530 käyttää malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON HIRSCHHORN: Eli tämä menee takaisin sinun alkuperäiseen kysymykseen. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 Onko se vain paikallinen muuttuja? 1219 00:57:29,980 --> 00:57:32,280 Malloc täällä ei ole niin vakuuttava. 1220 00:57:32,280 --> 00:57:35,260 Käyttö malloc tässä ei ole että pakottavia koska se on 1221 00:57:35,260 --> 00:57:36,500 vain paikallinen muuttuja. 1222 00:57:36,500 --> 00:57:40,970 >> Opiskelija: Voisitko tehdä char tähden PTR vastaa haloo? 1223 00:57:40,970 --> 00:57:41,400 >> JASON HIRSCHHORN: Oh. 1224 00:57:41,400 --> 00:57:43,300 Joten aiomme nyt saada takaisin sinun alkuperäiseen kysymykseen. 1225 00:57:43,300 --> 00:57:46,885 Luulen et ollut tyytyväinen vastaukseeni. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 Pidätkö siitä? 1228 00:57:49,226 --> 00:57:49,682 >> Opiskelija: Joo. 1229 00:57:49,682 --> 00:57:50,932 Odota. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON HIRSCHHORN: Ja missä haluat tulostaa? 1232 00:57:57,850 --> 00:58:00,026 Niin me tulostaa merkkijonon tuollainen? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> Opiskelija: Mielenkiintoinen. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON HIRSCHHORN: Eli tämä sanoo Väite on tyypin luonnetta. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Joten tämä olisi merkki. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> Opiskelija: vain vie ensimmäinen. 1241 00:58:26,280 --> 00:58:28,610 >> JASON HIRSCHHORN: Eli tämä on mitä sanoin. 1242 00:58:28,610 --> 00:58:34,240 Kuten sanoin, se ei ole tallentaa string sisällä muuttuja osoitin. 1243 00:58:34,240 --> 00:58:35,120 Se tallentaa - 1244 00:58:35,120 --> 00:58:36,350 >> Opiskelija: ensimmäinen arvo merkkijonon. 1245 00:58:36,350 --> 00:58:40,810 >> JASON HIRSCHHORN: osoite Ensimmäinen arvo merkkijono. 1246 00:58:40,810 --> 00:58:46,940 Jos olisimme tulostaa tämän, olemme saada arvon sisällä osoittimen. 1247 00:58:46,940 --> 00:58:51,005 Ja näemme se on, todellakin, muistin osoite. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> Onko järkeä? 1250 00:58:56,440 --> 00:58:56,940 Anteeksi. 1251 00:58:56,940 --> 00:58:58,996 Odota, Vastaako tuo kysymys, vaikka? 1252 00:58:58,996 --> 00:58:59,790 >> Opiskelija: Joo. 1253 00:58:59,790 --> 00:59:05,830 >> JASON HIRSCHHORN: Tämä rivi koodia on luoda merkkijono ja sitten toinen 1254 00:59:05,830 --> 00:59:09,115 muuttuja osoitin, joka osoittaa tähän merkkijono, että jono. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Joo. 1257 00:59:14,980 --> 00:59:19,200 >> Opiskelija: Joten jos menimme muistista käsitellään edelleen, saisimme h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 Onko se tallennetaan merkkijono? 1260 00:59:23,150 --> 00:59:24,400 >> JASON HIRSCHHORN: Like, teimme - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 joten tämä on arvokas tehtävä. 1263 00:59:30,790 --> 00:59:33,780 Tämä on kohta aritmeettinen, jonka te ole ennen nähnyt ja se olisi 1264 00:59:33,780 --> 00:59:35,550 melko mukava. 1265 00:59:35,550 --> 00:59:36,905 Tämä on kuin kirjallisesti - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 jos me kirjoittaa tämän Koodirivin olemme nähneet array merkintää ennen. 1268 00:59:46,350 --> 00:59:55,900 Tämän pitäisi antaa meille toisen arvoa tässä array, h. 1269 00:59:55,900 --> 01:00:05,010 >> Jos emme tätä, tämän pitäisi myös antaa meille toinen arvo kyseisessä array. 1270 01:00:05,010 --> 01:00:08,320 Koska se tulee olemaan muistia osoite ensimmäinen asia, mutta 1271 01:00:08,320 --> 01:00:10,530 muisti osoite asia yksi yli. 1272 01:00:10,530 --> 01:00:14,360 Ja sitten tähti operaattorin dereferences että osoitin. 1273 01:00:14,360 --> 01:00:16,940 Ja vielä, katsotaanpa. 1274 01:00:16,940 --> 01:00:18,664 Saamme h uudelleen. 1275 01:00:18,664 --> 01:00:20,980 >> Opiskelija: Mikä tekee dereference tarkoittaa? 1276 01:00:20,980 --> 01:00:23,650 >> JASON HIRSCHHORN: dereference on fancy sana mennä. 1277 01:00:23,650 --> 01:00:26,390 Mene siitä ja saada mitä siellä on dereference osoitin. 1278 01:00:26,390 --> 01:00:28,240 Se on vain hieno sana siitä. 1279 01:00:28,240 --> 01:00:29,986 >> Opiskelija: Jos haluaisimme tulosta koko jono, voisimmeko 1280 01:00:29,986 --> 01:00:31,930 tehdä et-merkki osoitin? 1281 01:00:31,930 --> 01:00:33,490 >> JASON HIRSCHHORN: OK, olemme menossa tauko täällä. 1282 01:00:33,490 --> 01:00:35,480 Aiomme pääty tähän. 1283 01:00:35,480 --> 01:00:41,760 Ampersand antaa sinulle osoitteen sijainti, joten kun teet ampersand of 1284 01:00:41,760 --> 01:00:44,080 muuttuja, se antaa sinulle osoitteen jos tämä muuttuja tallennetaan. 1285 01:00:44,080 --> 01:00:48,580 Et-osoitin antaa sinulle osoite PTR jossa PTR on muistissa. 1286 01:00:48,580 --> 01:00:50,140 >> Emme aio mennä tämän esimerkin. 1287 01:00:50,140 --> 01:00:52,640 Voit selvittää nämä asioita itse. 1288 01:00:52,640 --> 01:00:55,740 Mutta jälleen kerran, tämä saattaa jopa olla hipoo vähän pidemmälle, mitä sinun tarvitsee tietää 1289 01:00:55,740 --> 01:00:58,000 kuulu tämän puolivälin - 1290 01:00:58,000 --> 01:00:59,070 tai tämän tietovisan pikemminkin. 1291 01:00:59,070 --> 01:01:00,270 Anteeksi. 1292 01:01:00,270 --> 01:01:03,770 >> Aiomme siirtyä, koska en haluavat tehdä yhden koodaus ongelma 1293 01:01:03,770 --> 01:01:05,100 ennen aika loppuu. 1294 01:01:05,100 --> 01:01:09,340 Ja aiomme koodata mitä ajattelen on kaikkein pakottavia näistä 1295 01:01:09,340 --> 01:01:11,020 esimerkkejä, atoi. 1296 01:01:11,020 --> 01:01:14,520 Joten tämä oli kysymys tietokilpailu kaksi vuotta sitten. 1297 01:01:14,520 --> 01:01:17,810 Ja minulla on sen aluksella tässä. 1298 01:01:17,810 --> 01:01:20,680 >> Ihmiset kysyttiin tietokilpailu - 1299 01:01:20,680 --> 01:01:23,640 he saivat hieman enemmän tesxt vuonna kysymys, mutta olen poistanut 1300 01:01:23,640 --> 01:01:26,640 tekstin, koska se oli tarpeetonta meidän kannalta nyt. 1301 01:01:26,640 --> 01:01:29,180 Se oli vain joitakin tausta mitä atoi teki. 1302 01:01:29,180 --> 01:01:31,425 Mutta te kaikki tiedätte ja ovat hyvin perehtynyt atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Ehdotan koodia tämän on paperiarkille. 1304 01:01:35,620 --> 01:01:39,310 Ehdotan myös, että strategia että olemme menneet yli 1305 01:01:39,310 --> 01:01:41,040 paljon osiosta. 1306 01:01:41,040 --> 01:01:44,130 Ensinnäkin, varmista, että ymmärrät mitä atoi n tekemässä. 1307 01:01:44,130 --> 01:01:47,580 Piirrä kuva tai keksiä jokin mielikuva sen pään. 1308 01:01:47,580 --> 01:01:51,120 Seuraava, kirjoittaa pseudokoodihajota tästä. 1309 01:01:51,120 --> 01:01:53,120 On tietokilpailu, jos kaikki mitä saat on pseudokoodina, ainakin sinulla 1310 01:01:53,120 --> 01:01:54,550 laittaa jotain alas. 1311 01:01:54,550 --> 01:02:00,070 Ja sitten kartta että pseudokoodina päälle C. Jos sinulla on tarkistaa oman 1312 01:02:00,070 --> 01:02:03,760 pseudokoodina, kuten tarkistaa, jos jotain on 1, joka kartoittaa päälle, jos 1313 01:02:03,760 --> 01:02:05,750 kunnossa ja niin edelleen. 1314 01:02:05,750 --> 01:02:07,850 Ja lopuksi, koodaamaan ohjelmaa C. 1315 01:02:07,850 --> 01:02:15,000 >> Joten mene takaisin atoi ja kestää viisi minuuttia koodata tämä arkki 1316 01:02:15,000 --> 01:02:19,480 paperia, joka on luultavasti noin paljon aikaa sinulla ottaisi 1317 01:02:19,480 --> 01:02:21,260 tietovisa koodia atoi. 1318 01:02:21,260 --> 01:02:27,060 Viisi 15 minuuttia, viisi 12, viidestä 10 minuuttia, on noin määrä 1319 01:02:27,060 --> 01:02:30,150 aikaa haluat viettää tämän kysymys tietovisa. 1320 01:02:30,150 --> 01:02:31,670 Joten kestää viisi minuuttia nyt, kiitos. 1321 01:02:31,670 --> 01:02:35,957 Ja jos sinulla on kysyttävää, nostaa kätesi ja tulen ympärille. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [Puoli keskusteluja] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON HIRSCHHORN: OK, joten , joka oli viisi minuuttia. 1326 01:08:37,580 --> 01:08:39,880 Se oli luultavasti noin määrä kerran haluat viettää että tietokilpailu, 1327 01:08:39,880 --> 01:08:42,120 ehkä alapäästä tuolloin. 1328 01:08:42,120 --> 01:08:44,010 Me kertaus nyt vähän. 1329 01:08:44,010 --> 01:08:45,740 Aloitetaanpa koodauksen. 1330 01:08:45,740 --> 01:08:49,479 Ja jos emme saa kaikki läpi, vastauksia tähän ja tähän 1331 01:08:49,479 --> 01:08:54,189 tietokilpailu kysymys on saatavilla jälleen Syksy 2011 on tämä kysymys 1332 01:08:54,189 --> 01:08:54,913 ilmestyi tietokilpailu. 1333 01:08:54,913 --> 01:08:57,830 >> Ja se oli kahdeksan pisteen arvoinen on tietovisa sitten. 1334 01:08:57,830 --> 01:09:01,140 Kahdeksan pistettä on kalliimpien määrä pisteitä jotain kannattaa. 1335 01:09:01,140 --> 01:09:04,790 Useimmat kysymykset ovat välillä yhdestä kuuteen pistettä. 1336 01:09:04,790 --> 01:09:08,500 Joten tämä on haastavampaa kysymys, varmasti. 1337 01:09:08,500 --> 01:09:09,750 Voiko joku minua alkoi? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Yleensä mitä aiomme halua tehdä tätä 1340 01:09:15,380 --> 01:09:17,550 toimiakseen atoi loogisesti? 1341 01:09:17,550 --> 01:09:19,569 Mitä haluat tehdä? 1342 01:09:19,569 --> 01:09:22,279 Menemme siis kirjoittaa Joissakin pseudokoodina. 1343 01:09:22,279 --> 01:09:24,090 >> Opiskelija: Convert merkkiä osaksi kokonaislukuja. 1344 01:09:24,090 --> 01:09:26,700 >> JASON HIRSCHHORN: Convert merkkiä osaksi kokonaislukuja. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 Joten kuinka monta merkkiä on meidän menossa täytyy mennä läpi? 1347 01:09:30,870 --> 01:09:32,295 >> Opiskelija: Kaikki. 1348 01:09:32,295 --> 01:09:34,100 >> Opiskelija: Kaikki merkit merkkijonon. 1349 01:09:34,100 --> 01:09:35,540 >> JASON HIRSCHHORN: Kaikki merkkejä merkkijonon. 1350 01:09:35,540 --> 01:09:42,180 Joten jos halusimme mennä läpi jokaisen merkin merkkijono, mikä on asia, 1351 01:09:42,180 --> 01:09:44,560 C olemme nähneet, että on mahdollistanut meidän käytävä läpi 1352 01:09:44,560 --> 01:09:45,939 merkki merkkijonon? 1353 01:09:45,939 --> 01:09:46,819 >> Opiskelijat: silmukka. 1354 01:09:46,819 --> 01:09:48,069 >> JASON HIRSCHHORN: silmukka. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Joten aiomme silmukan läpi jokaisen merkin s. 1357 01:09:55,330 --> 01:10:00,940 >> Sitten mitä aiomme halua tehdä kun saamme erityisluonnetta? 1358 01:10:00,940 --> 01:10:02,480 Sano menemme kulunut 90. 1359 01:10:02,480 --> 01:10:03,460 Saamme 9. 1360 01:10:03,460 --> 01:10:04,240 Se on merkki. 1361 01:10:04,240 --> 01:10:07,440 Mitä haluamme tehdä että merkki 9? 1362 01:10:07,440 --> 01:10:10,082 >> Opiskelija: Vähennä sen luonnetta 0? 1363 01:10:10,082 --> 01:10:11,860 >> OPISKELIJAN: Lisää 0? 1364 01:10:11,860 --> 01:10:13,350 >> JASON HIRSCHHORN: Miinus se merkki 0? 1365 01:10:13,350 --> 01:10:13,800 >> Opiskelija: Joo. 1366 01:10:13,800 --> 01:10:15,573 >> JASON HIRSCHHORN: Miksi haluat tehdä? 1367 01:10:15,573 --> 01:10:16,560 >> Opiskelija: [kuultavissa] 1368 01:10:16,560 --> 01:10:17,010 arvo. 1369 01:10:17,010 --> 01:10:18,380 Sen int arvo. 1370 01:10:18,380 --> 01:10:21,580 >> JASON HIRSCHHORN: OK, joten otamme luonne 9, vähennä sitä 1371 01:10:21,580 --> 01:10:25,820 merkki 0 päästä Varsinainen kokonaisluku 9. 1372 01:10:25,820 --> 01:10:27,070 Makea. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 Ja mistä tiedät, että merkin 9 miinus 0 hahmo on 9? 1375 01:10:37,000 --> 01:10:39,222 Mitä kaavion sinä katsot? 1376 01:10:39,222 --> 01:10:43,130 >> OPISKELIJAN: On loogisesti yhdeksän paikkoja välillä 9 ja 0. 1377 01:10:43,130 --> 01:10:44,620 Tai voisit katsoa ASCII taulukossa. 1378 01:10:44,620 --> 01:10:45,120 >> JASON HIRSCHHORN: ASCII taulukossa. 1379 01:10:45,120 --> 01:10:46,490 Mutta kyllä, olet oikeassa samoin. 1380 01:10:46,490 --> 01:10:47,780 Joten me vähennä 0. 1381 01:10:47,780 --> 01:10:49,010 Joten nyt meillä on kokonaisluku 9. 1382 01:10:49,010 --> 01:10:49,970 Ja mitä haluamme tehdä sen kanssa? 1383 01:10:49,970 --> 01:10:54,970 Jos meillä on 90, se on ensimmäinen kokonaisluku olemme, mitä haluamme tehdä? 1384 01:10:54,970 --> 01:10:58,180 >> Opiskelija: veisin väliaikaiseen kokonaisluku array, niin tee matematiikka sille 1385 01:10:58,180 --> 01:11:02,088 myöhemmin tehdä siitä lopun. 1386 01:11:02,088 --> 01:11:03,020 >> JASON HIRSCHHORN: OK. 1387 01:11:03,020 --> 01:11:06,990 >> Opiskelija: Voit aloittaa lopussa array ja sitten eteenpäin niin 1388 01:11:06,990 --> 01:11:10,350 että joka kerta kun eteenpäin, voit moninkertaistaa sen 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON HIRSCHHORN: OK. 1390 01:11:10,830 --> 01:11:12,250 Kuulostaa melko pakottavia idea. 1391 01:11:12,250 --> 01:11:16,040 Voimme aloittaa lopussa meidän array, ja voimme käyttää strleng. 1392 01:11:16,040 --> 01:11:17,030 Voimme käyttää strleng täällä. 1393 01:11:17,030 --> 01:11:18,870 Pääsemme pituus meidän merkkijonon. 1394 01:11:18,870 --> 01:11:20,100 Aloitamme lopussa. 1395 01:11:20,100 --> 01:11:29,170 Ja + ensimmäinen, otetaan vain että kokonaisluku, ja ehkä luomme kuten 1396 01:11:29,170 --> 01:11:32,270 uusi Kokonaislukumuuttuja ylös missä me tallentaa kaiken. 1397 01:11:32,270 --> 01:11:37,340 Joten me silmukan läpi jokaisen nieriää s takaa eteen, vähennämme 0, ja 1398 01:11:37,340 --> 01:11:42,790 sitten otamme sen, ja riippuen missä se on, me moninkertaistaa sen 1399 01:11:42,790 --> 01:11:45,860 jonka teho 10. 1400 01:11:45,860 --> 01:11:50,644 Koska ensimmäinen, mitä me moninkertaistaa oikeanpuoleisin merkin? 1401 01:11:50,644 --> 01:11:51,440 >> Opiskelija: 10 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON HIRSCHHORN: 10 0. 1403 01:11:53,170 --> 01:11:56,010 Mitä me kerrotaan toisen oikeanpuoleisin merkin? 1404 01:11:56,010 --> 01:11:57,450 >> Opiskelija: [kuultavissa]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON HIRSCHHORN: Mitä? 1406 01:11:57,960 --> 01:11:59,150 >> Opiskelija: 10 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON HIRSCHHORN: 10 1. 1408 01:12:00,420 --> 01:12:03,754 Kolmannen oikeanpuoleisin merkki? 1409 01:12:03,754 --> 01:12:04,580 >> Opiskelija: 10 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON HIRSCHHORN: 10 2. 1411 01:12:05,350 --> 01:12:07,200 >> Opiskelija: Anteeksi, en ymmärrä mitä teemme täällä. 1412 01:12:07,200 --> 01:12:08,640 >> JASON HIRSCHHORN: OK, mennään takaisin sitten. 1413 01:12:08,640 --> 01:12:12,500 Joten aiomme saada hyväksyttiin merkkijono. 1414 01:12:12,500 --> 01:12:14,470 Koska olemme kirjallisesti atoi. 1415 01:12:14,470 --> 01:12:15,260 Joten saamme hyväksyttiin merkkijono. 1416 01:12:15,260 --> 01:12:17,640 Sano menemme ohi merkkijonon 90. 1417 01:12:17,640 --> 01:12:19,930 >> Ensimmäinen asia, aiomme tehdä, on asettaa uusi Kokonaislukumuuttuja että olemme 1418 01:12:19,930 --> 01:12:22,150 juuri menossa luoda kuin uusi kokonaisluku. 1419 01:12:22,150 --> 01:12:24,630 Sitähän me aiomme palata lopussa. 1420 01:12:24,630 --> 01:12:30,110 Meidän täytyy käydä läpi jokaisen merkin string koska olemme määritetty 1421 01:12:30,110 --> 01:12:34,430 että meidän täytyy koskettaa jokaista ja lisää se sitten uusi kokonaisluku. 1422 01:12:34,430 --> 01:12:36,330 >> Mutta emme voi vain lisätä sen numeron. 1423 01:12:36,330 --> 01:12:38,270 Emme voi vain ottaa 9 ja lisätä 9 meidän kokonaisluku. 1424 01:12:38,270 --> 01:12:40,560 Se riippuu siitä, mitä tapahtuu se on merkkijono. 1425 01:12:40,560 --> 01:12:42,960 Aiomme pitää lisääntyä sen teho 10. 1426 01:12:42,960 --> 01:12:45,580 Koska niin pohja 10 toimii. 1427 01:12:45,580 --> 01:12:49,050 >> Joten aiomme saada todellinen merkki tai todellinen kokonaisluku 1428 01:12:49,050 --> 01:12:53,860 numero, vähentämällä merkki 0 kirjasinmerkkiompeleiden 9 kuten teimme kanssa 1429 01:12:53,860 --> 01:12:57,560 vähentämällä hahmo pääomaa alkaen mitä merkki meillä oli yhdessä 1430 01:12:57,560 --> 01:12:58,120 näihin ongelmiin. 1431 01:12:58,120 --> 01:13:04,190 Niin me itse saada numero 0 9 tallennetaan reaaliluku, ja me 1432 01:13:04,190 --> 01:13:07,590 moninkertaistaa sen teho 10 riippuen missä olemme merkkijono. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 Ja sitten me aiomme lisätä sen takaisin meidän uusi kokonaisluku muuttuja. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Joten mitä tämä näyttäisi olisi olla - me tehdä täällä. 1437 01:13:37,890 --> 01:13:40,086 Jos saamme kulunut merkkijono 90 - 1438 01:13:40,086 --> 01:13:41,336 >> Opiskelija: [kuultavissa]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON HIRSCHHORN: Mutta atoi vie merkkijono. 1441 01:13:45,540 --> 01:13:46,350 Joten aiomme käydä läpi tilalla. 1442 01:13:46,350 --> 01:13:49,900 Saamme hyväksyttiin 90. 1443 01:13:49,900 --> 01:13:51,540 Menemme takaisin eteen. 1444 01:13:51,540 --> 01:13:53,920 Otamme 0. 1445 01:13:53,920 --> 01:13:55,080 >> Opiskelija: Olen pahoillani. 1446 01:13:55,080 --> 01:13:55,880 Ehkä tämä on tyhmä. 1447 01:13:55,880 --> 01:13:59,440 Jos menemme hyväksyttiin merkkijono, miksi on 90, mitä olemme 1448 01:13:59,440 --> 01:14:00,260 saada kului? 1449 01:14:00,260 --> 01:14:03,160 Koska 90 on kokonaisluku. 1450 01:14:03,160 --> 01:14:06,820 >> JASON HIRSCHHORN: Koska atoi kestää merkkijono ja muuntaa sen kokonaisluku 1451 01:14:06,820 --> 01:14:08,320 edustus merkkijonon. 1452 01:14:08,320 --> 01:14:13,650 Mutta merkkijono 90 ei ole kokonaisluku 90 tai numero 90. 1453 01:14:13,650 --> 01:14:17,920 Merkkijono 90 on joukko kahden tai kolme merkkiä, vaan 9 1454 01:14:17,920 --> 01:14:22,740 merkki, 0 luonnetta, ja kenoviiva 0 luonnetta. 1455 01:14:22,740 --> 01:14:26,260 >> Ja me kirjallisesti atoi tarpeen, sillä Esimerkiksi kun otat komennon 1456 01:14:26,260 --> 01:14:30,230 argumentti, ja se on tallennettu argv, se tallennetaan merkkijono. 1457 01:14:30,230 --> 01:14:32,940 Mutta jos haluat pitää sitä numero, sinun täytyy muuntaa sen 1458 01:14:32,940 --> 01:14:34,700 Varsinainen kokonaisluku. 1459 01:14:34,700 --> 01:14:37,210 Jonka teimme yksi ongelma sarjaa. 1460 01:14:37,210 --> 01:14:38,800 Jonka teimme useita meidän ongelma sarjaa. 1461 01:14:38,800 --> 01:14:41,690 Jokainen, joka otti kokonaisluku kuin komentorivillä. 1462 01:14:41,690 --> 01:14:46,490 Joten siksi meidän atoi toiminto vie merkkijono. 1463 01:14:46,490 --> 01:14:51,910 >> Joten jälleen, meidän esimerkiksi täällä, me olemme vie viimeinen. 1464 01:14:51,910 --> 01:14:55,050 Aiomme vähentää merkin 0 siitä, koska merkit 0 1465 01:14:55,050 --> 01:14:58,810 vähennettynä merkki 0 saat todellinen määrä 0 mukaan 1466 01:14:58,810 --> 01:15:00,950 ASCII matematiikka, mitä teemme. 1467 01:15:00,950 --> 01:15:04,870 >> Koska merkit edustettuina eri kuin niiden todellinen - 1468 01:15:04,870 --> 01:15:08,830 merkki, esimerkiksi pienet on 97. 1469 01:15:08,830 --> 01:15:10,260 Se ei ole - oho! 1470 01:15:10,260 --> 01:15:13,290 Se ei ole mitä odottaa se on, 0, esimerkiksi. 1471 01:15:13,290 --> 01:15:16,200 Joten sinun täytyy vähentää merkin saada 0. 1472 01:15:16,200 --> 01:15:18,950 >> Joten aiomme tehdä sen täällä saada todellinen määrä. 1473 01:15:18,950 --> 01:15:22,560 Ja sitten me aiomme kertoa sen teho 10 sen mukaan, missä 1474 01:15:22,560 --> 01:15:27,030 on merkkijono, ja sitten ottaa että ja lisää se meidän paikka haltijalle 1475 01:15:27,030 --> 01:15:32,520 muuttuja jotta voimme keksiä meidän lopullinen uusi kokonaisluku. 1476 01:15:32,520 --> 01:15:35,080 Tarkoittaako tämä järkevää kaikille? 1477 01:15:35,080 --> 01:15:37,730 >> Joten emme aio koodin tähän juuri nyt, koska olemme 1478 01:15:37,730 --> 01:15:38,830 saada vähän aikaa. 1479 01:15:38,830 --> 01:15:40,860 Pahoittelen ajoituksen että. 1480 01:15:40,860 --> 01:15:44,620 Mutta tämä on mitä, toivottavasti, olisit voitava tehdä tietovisa - klo 1481 01:15:44,620 --> 01:15:47,710 Ainakin, saat tämän pseudokoodina kirjoitettuna. 1482 01:15:47,710 --> 01:15:50,840 >> Ja sitten, jos me kirjoittaa pseudokoodina, itse asiassa, voisimme tehdä tämän 1483 01:15:50,840 --> 01:15:51,490 melko nopeasti. 1484 01:15:51,490 --> 01:15:55,230 Jokainen rivi kommentit me kirjoitimme tässä tarkoittaa noin 1485 01:15:55,230 --> 01:15:56,970 yksi rivi C-koodia. 1486 01:15:56,970 --> 01:16:01,780 Julistamisesta uusi muuttuja, kirjoittaminen silmukka, jotkut vähennyslasku, jotkut 1487 01:16:01,780 --> 01:16:07,070 kerto-ja jonkin tehtävän. 1488 01:16:07,070 --> 01:16:09,020 Meidät luultavasti myös halua kirjoittaa paluulinjan. 1489 01:16:09,020 --> 01:16:12,040 Saatamme myös haluta laittaa joitakin tarkastuksia täällä. 1490 01:16:12,040 --> 01:16:12,655 Joo. 1491 01:16:12,655 --> 01:16:15,720 >> Opiskelija: Joten voimme hoitaa s kuin todellinen merkkijono? 1492 01:16:15,720 --> 01:16:18,730 Koska tiedän, se on vain osoite. 1493 01:16:18,730 --> 01:16:22,090 Kuten, miten saat pituus merkkijono johdettiin läpi? 1494 01:16:22,090 --> 01:16:25,310 >> JASON HIRSCHHORN: Joten miten merkkijonon pituuden? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> Opiskelija: strlen, joo. 1497 01:16:26,660 --> 01:16:30,550 Mutta voit laittaa s kuten argumentti, että? 1498 01:16:30,550 --> 01:16:34,620 >> JASON HIRSCHHORN: So strlen vie char tähti. 1499 01:16:34,620 --> 01:16:38,090 Ja tästä seuraa, että char tähti, ja se pitää laskee, kunnes se pääsee 1500 01:16:38,090 --> 01:16:41,865 kenoviiva 0. strlen oli oikeastaan yksi muista ohjelmista me 1501 01:16:41,865 --> 01:16:42,850 olivat menossa koodia. 1502 01:16:42,850 --> 01:16:44,560 Se on toinen hyvä koodin. 1503 01:16:44,560 --> 01:16:47,270 Tuo on hieman helpompaa, koska jos aiot ajatella, että 1504 01:16:47,270 --> 01:16:47,830 käsitteellisesti - 1505 01:16:47,830 --> 01:16:51,620 Sanoin vain se ääneen - strlen seuraa osoitin ja pitää menossa ja 1506 01:16:51,620 --> 01:16:54,210 laskenta ja pitää kirjaa kunnes tulet kenoviiva 0. 1507 01:16:54,210 --> 01:16:56,530 >> Opiskelija: OK, sain sen. 1508 01:16:56,530 --> 01:17:00,200 >> JASON HIRSCHHORN: Joten paras onnea tietovisa 0 huomenna. 1509 01:17:00,200 --> 01:17:03,170 Jos sinulla on kysyttävää, minä ulkopuolella tämän jälkeen. 1510 01:17:03,170 --> 01:17:05,610 Ota yhteyttä sähköpostitse minulle. 1511 01:17:05,610 --> 01:17:08,480 Tavoittaa oman TF jos olet ei minun jaksossa, tai saan 1512 01:17:08,480 --> 01:17:10,005 sähköpostia jos haluat. 1513 01:17:10,005 --> 01:17:13,140 >> Jos haluat älyttömästi ja lähetä minulle sähköpostia, freakout sähköposti, minä 1514 01:17:13,140 --> 01:17:16,710 lähettää sinut takaisin, kuten, hymiö kasvot, tai, kuten, vitsi tai jotain. 1515 01:17:16,710 --> 01:17:18,190 Joten rohkeasti tehdä samoin. 1516 01:17:18,190 --> 01:17:20,750 Onnea jälleen, ja minä Nähdään kaikki ensi viikolla. 1517 01:17:20,750 --> 01:17:23,435