1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON Hirschhorn: Sveiki A5, visi. 3 00:00:07,820 --> 00:00:11,270 Turime įdomių savaitę prieš mus, daugiausia, nes yra tiek daug naujų 4 00:00:11,270 --> 00:00:12,350 susiduria šiame kambaryje. 5 00:00:12,350 --> 00:00:12,920 Tai nuostabu. 6 00:00:12,920 --> 00:00:15,740 Jus daug yra čia atsitiktinai, tai dar geriau. 7 00:00:15,740 --> 00:00:18,220 Taigi tikiuosi jums išlaikyti sutikote su mumis. 8 00:00:18,220 --> 00:00:20,220 >> Šią savaitę mes ketiname išleisti Skyriaus urmu 9 00:00:20,220 --> 00:00:21,870 rengiant viktoriną. 10 00:00:21,870 --> 00:00:26,580 Taigi pagal mūsų darbotvarkę, mes ketiname kalbėti tiek apie išteklių klasės, 11 00:00:26,580 --> 00:00:30,350 bet ir viktorinos, tada vėl praleisti klasės kalbėti urmu 12 00:00:30,350 --> 00:00:31,390 apie klausimus. 13 00:00:31,390 --> 00:00:33,900 Kai baigsime atsakyti savo klausimų, arba jei jūsų klausimai 14 00:00:33,900 --> 00:00:39,010 natūraliai veda į tam tikrą kodavimo, aš turi pavyzdžių problemas iš kontrolinius 15 00:00:39,010 --> 00:00:43,180 anksčiau, kad mes užkoduoti gyventi skyriuje kartu, kad taip pat auklėti kai kurie kiti 16 00:00:43,180 --> 00:00:45,420 geros temos padengti. 17 00:00:45,420 --> 00:00:48,280 >> Taigi, pirma, kaip mes išgyveno už pastaruosius porą savaičių jums priminti, 18 00:00:48,280 --> 00:00:51,700 vaikinai, yra išteklių tona rasti šiuo metu. 19 00:00:51,700 --> 00:00:55,020 Daugelis iš jų bus neįtikėtinai naudinga Jums, kaip jūs ir toliau 20 00:00:55,020 --> 00:00:57,280 studijuoti viktorina 0, nes tai antradienio popietę. 21 00:00:57,280 --> 00:00:59,630 Taigi jums visiems buvo mokosi šiek tiek. 22 00:00:59,630 --> 00:01:02,640 >> Yra paskaita pažymi ir šaltinis kodą, kurį turėtų 23 00:01:02,640 --> 00:01:04,050 tikrai patikrinti. 24 00:01:04,050 --> 00:01:05,019 Žiūrėti šortai. 25 00:01:05,019 --> 00:01:07,470 Patikrinkite study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 Ir tada, išvardytos toliau, ir šis skaičius kitų išteklių. 27 00:01:11,770 --> 00:01:14,020 >> Vėlgi, viktorina 0 rytoj ne 01:00. 28 00:01:14,020 --> 00:01:18,230 Jei to nepadarėte, patikrinkite pro Apie Viktorina 0 dokumento 29 00:01:18,230 --> 00:01:21,370 aikštyno puslapis išsiaiškinti kur jūs vartojate viktorinoje. 30 00:01:21,370 --> 00:01:25,770 Viktorina prasideda 01:10 ir baigiasi 70 minučių vėliau. 31 00:01:25,770 --> 00:01:29,610 Taigi, jei jums parodyti po 01:10, esate ketina gauti, kad daug mažiau minučių 32 00:01:29,610 --> 00:01:30,940 nei 70 dalyvauti viktorinoje. 33 00:01:30,940 --> 00:01:33,570 Todėl įsitikinkite, kad jūs ten laiku. 34 00:01:33,570 --> 00:01:38,690 Jei esate studentas arba plėtinys turi keletas kitų tyrimų aspektus, ji 35 00:01:38,690 --> 00:01:40,400 gali būti ne 01:00 rytoj. 36 00:01:40,400 --> 00:01:43,540 Bet vėl, patikrinkite Apie Viktorina 0 dokumentuoti įsitikinti, kad jūs žinote, kai 37 00:01:43,540 --> 00:01:44,760 jūs vartojate viktorinoje. 38 00:01:44,760 --> 00:01:46,440 Parašiau 75 minučių čia. 39 00:01:46,440 --> 00:01:48,580 Manau, kad tai tiesa, o ne 70. 40 00:01:48,580 --> 00:01:53,420 >> Ji apima visą medžiagą iš savaitę 0 su praėjusia savaite paskaitą trečiadienį. 41 00:01:53,420 --> 00:01:59,350 Ir vėl už šį testą, už tai dokumentas, galite gauti vieną iš abiejų pusių ir 8 42 00:01:59,350 --> 00:02:03,770 1/2 iki 11 popieriaus lapo, kad jūs gaunate naudoti kaip užrašų metu viktorinoje. 43 00:02:03,770 --> 00:02:08,570 Daugelis žmonių, jei ne dauguma žmonių, turi Nustatyta, kad vienas labiausiai naudingas būdas 44 00:02:08,570 --> 00:02:11,970 studijuoti viktorinoje yra kad tyrimo lape 45 00:02:11,970 --> 00:02:13,730 vienas Obliavimo, jų pačių. 46 00:02:13,730 --> 00:02:17,710 Taigi, pažvelgti į pastaruosius tie jei mačiau praeities tie. 47 00:02:17,710 --> 00:02:19,960 Užmegzti ryšius su draugais pamatyti, kas jie išleisti jų. 48 00:02:19,960 --> 00:02:23,610 >> Bet rankas žemyn, geriausias būdas galite Tyrimas yra eiti per viską ir 49 00:02:23,610 --> 00:02:26,530 Kainuos žemyn, kas turėtų ar neturėtų negali priklausyti nuo to lapo 50 00:02:26,530 --> 00:02:30,570 popierius, nes tai tik tikrai naudingas būdas jums įsitikinti, 51 00:02:30,570 --> 00:02:33,620 jūs ketinate per viską ir kai su juo supažindinti. 52 00:02:33,620 --> 00:02:36,690 Dauguma žmonių, matome, nors jie buvo popieriaus lapas sėdi dešinėje 53 00:02:36,690 --> 00:02:39,840 šalia jų ant viktorina neišjunkite į jį, nes, vėlgi, kad labai 54 00:02:39,840 --> 00:02:43,290 procesas vyksta per informacijos padėjo jiems išmokti. 55 00:02:43,290 --> 00:02:45,370 >> Ar kas nors turi kokių nors klausimų, apie viktorina 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 Ar visiems - 58 00:02:51,450 --> 00:02:53,230 Nesiruošiu daryti rankos pakėlimu. 59 00:02:53,230 --> 00:02:53,550 Nieko tokio. 60 00:02:53,550 --> 00:02:54,790 Aš buvau ketinate paklausti, kas pradėjo studijuoti. 61 00:02:54,790 --> 00:02:58,360 Bet aš nenoriu, kad jus visi jie pakelti savo rankas. 62 00:02:58,360 --> 00:03:01,290 Taigi, kaip ir sakiau - taip, AVI, eiti į priekį. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Kas būtų naudingas dalykas įdėti į vieną gaviklio? 64 00:03:04,205 --> 00:03:05,875 >> STUDENTAS: Tai priklauso nuo jūsų. 65 00:03:05,875 --> 00:03:08,210 >> JASON Hirschhorn: Gauni naudoti savo sprendimą. 66 00:03:08,210 --> 00:03:13,220 Naudingų dalykų įdėti į vieną gaviklio, Jei esate supainioti apie didįjį O 67 00:03:13,220 --> 00:03:17,510 Runtime skirtingų tipų paieškas ir rūšių, įdėti, kad ten 68 00:03:17,510 --> 00:03:18,760 patogu frantas diagrama. 69 00:03:18,760 --> 00:03:22,250 Tokiu būdu, jei esate paprašė, kad viktorina, jums nereikia bandyti skaičius 70 00:03:22,250 --> 00:03:23,560 it out ar priežastis per runtime. 71 00:03:23,560 --> 00:03:24,730 Jūs galite tiesiog nukopijuokite jį žemyn. 72 00:03:24,730 --> 00:03:28,320 Jei pažvelgti į viktorinos praeityje, nes daugeliui kartus, ten veikia laiko klausimus. 73 00:03:28,320 --> 00:03:34,150 Taigi, kad būtų iš geras pavyzdys dalykas įdėti į vieną gaviklio jūsų. 74 00:03:34,150 --> 00:03:37,450 >> Kiti gerų dalykų, kurie buvo pateikti, jei esate supainioti apie tai, kaip deklaruoti 75 00:03:37,450 --> 00:03:40,570 funkcija ar ką skirtingų dalių funkcija deklaracija yra, rašykite 76 00:03:40,570 --> 00:03:43,400 kad ten, bendrinis versija ir tada gal pavyzdys. 77 00:03:43,400 --> 00:03:47,290 Jei esate supainioti apie rodykles, kaip rodyklės darbas schema 78 00:03:47,290 --> 00:03:48,660 turbūt tikrai naudinga. 79 00:03:48,660 --> 00:03:52,440 Jei esate supainioti apie rekursijos, A imties rekursinį funkcija yra 80 00:03:52,440 --> 00:03:54,980 taip pat galėtų tapti tikrai naudinga. 81 00:03:54,980 --> 00:03:57,290 Ar tai duoti jums keletą idėjų? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Jūs turite suprasti, Visa kaupimas procesas, kaip 83 00:04:01,820 --> 00:04:03,220 kaip kad visi darbai? 84 00:04:03,220 --> 00:04:06,620 >> JASON Hirschhorn: Viskas kad buvo taikoma galėtų 85 00:04:06,620 --> 00:04:08,060 parodyti ant viktorina. 86 00:04:08,060 --> 00:04:08,930 Klausimai - 87 00:04:08,930 --> 00:04:11,300 bet vėlgi, kai viskas bus įvertintas labai, nei kiti. 88 00:04:11,300 --> 00:04:14,330 Kai kurie dalykai turi sugalvoti naujo ir vėl klasėje, į 89 00:04:14,330 --> 00:04:15,590 paskaita ir pjūvių. 90 00:04:15,590 --> 00:04:17,220 Kiti dalykai turi ne sugalvoti, kad dažnai. 91 00:04:17,220 --> 00:04:22,900 >> Mes daug kalbėjomės apie # include ir -L kas nors ir ką tie reiškia 92 00:04:22,900 --> 00:04:24,390 rengimo procesas. 93 00:04:24,390 --> 00:04:29,120 Mes daug kalbėjomės apie GDB, kabintis, šios skirtingos vėliavos, kad mes naudojame, kai 94 00:04:29,120 --> 00:04:33,100 mes kompiliuoti kažką, o ką make15, pavyzdžiui, tikrai 95 00:04:33,100 --> 00:04:34,510 tai ir tikrai veikia. 96 00:04:34,510 --> 00:04:38,110 Mes ne kalbėti daug apie kiekvienas žingsnis 97 00:04:38,110 --> 00:04:39,240 rengimo procesas. 98 00:04:39,240 --> 00:04:40,410 Mes vis dar kalbėjome apie tai. 99 00:04:40,410 --> 00:04:42,550 Taigi, tai dar kažkas, kad jūs turėtų būti susipažinę su. 100 00:04:42,550 --> 00:04:44,610 Bet vėl, mes neketiname būti - 101 00:04:44,610 --> 00:04:49,140 dalykų, kurie ateina dažniau klasėje Labiau tikėtina, kad sugalvoti daugiau 102 00:04:49,140 --> 00:04:52,495 dažnai ir būti griežčiau įvertintomis remiantis viktorina. 103 00:04:52,495 --> 00:04:53,280 >> Cool. 104 00:04:53,280 --> 00:04:54,580 Visi kiti klausimai apie viktorina 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> Gerai, kad aš įdėti sąrašą temos lenta. 107 00:05:00,050 --> 00:05:01,550 Aš nuėjau per mokymo programas. 108 00:05:01,550 --> 00:05:07,340 Aš nuėjau per peržiūros atkarpoje nuo praeitą naktį ir tos skaidres sugalvoti 109 00:05:07,340 --> 00:05:13,710 su neišsamų temų sąrašą kad mes, kuriems iki šiol CS50 110 00:05:13,710 --> 00:05:16,800 ir dalykų, kurie gali ant viktorina. 111 00:05:16,800 --> 00:05:19,900 Taigi, aš nesiruošia eiti per kiekvienas iš jų. 112 00:05:19,900 --> 00:05:22,370 Tai užtruktų daug daugiau laikas, nei turime dabar. 113 00:05:22,370 --> 00:05:26,880 Bet aš tai čia tikiuosi stumtelėti jūsų atminties, kad tai, kas gali 114 00:05:26,880 --> 00:05:28,420 arba negali būti susipažinę su jumis. 115 00:05:28,420 --> 00:05:32,850 >> Ir aš norėčiau praleisti didžiąją skyriuje atsakyti į jūsų klausimus apie 116 00:05:32,850 --> 00:05:35,130 Šios temos, temos, šios gairės netaikomos. 117 00:05:35,130 --> 00:05:36,130 Mes galime parašyti pseudo kodą. 118 00:05:36,130 --> 00:05:40,010 Mes galime parašyti tikrą kodą siekiant užtikrinti, kad jūs - 119 00:05:40,010 --> 00:05:44,280 Galiu atsakyti į jūsų klausimą ir padėti visi iš esmės suprasti 120 00:05:44,280 --> 00:05:48,330 daug iš šių temų, todėl jūs jausitės pasirengęs ir patogiai vyksta į 121 00:05:48,330 --> 00:05:50,150 viktorina rytoj. 122 00:05:50,150 --> 00:05:52,300 Taigi skaityti daugiau sąrašą. 123 00:05:52,300 --> 00:05:54,780 Jūs tikiuosi ateiti į skyrių su kai kuriais klausimais taip pat. 124 00:05:54,780 --> 00:05:58,480 Kai būsite pasirengę, pakelkite ranką ir mes pradėti. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Turėkite omenyje, kad jūsų klausimus, nėra kvailų klausimų. 127 00:06:05,200 --> 00:06:06,250 Girdėjome, kad daug. 128 00:06:06,250 --> 00:06:09,490 Ir jūsų klausimus, aš esu pasiruošęs statyti, daug kitų žmonių ir 129 00:06:09,490 --> 00:06:11,740 sėdi čia ir žiūrėti internete turi taip pat. 130 00:06:11,740 --> 00:06:13,770 Taigi, galite tik padėti žmonėms, klausinėti. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: tarp kamino ir krūvos, ten preliminariai skirtos 133 00:06:18,040 --> 00:06:22,880 dalis atminties, kuri yra apibrėžiama kaip tai yra kamino ar krūvą? 134 00:06:22,880 --> 00:06:25,010 Arba, kaip tai veikia, tiksliai? 135 00:06:25,010 --> 00:06:26,230 >> JASON Hirschhorn: Didysis klausimas. 136 00:06:26,230 --> 00:06:28,640 Aš einu atgal atsekti truputį. 137 00:06:28,640 --> 00:06:30,910 Ar visiems - 138 00:06:30,910 --> 00:06:31,660 prašome būti sąžiningas čia. 139 00:06:31,660 --> 00:06:34,130 Aš žinau, aš prašau jus pakelti savo ranka priešais savo bendraamžių. 140 00:06:34,130 --> 00:06:38,510 Tačiau yra žmonių, kurie jaučiasi nepatogu su kamino ir krūvos 141 00:06:38,510 --> 00:06:42,980 ir norėčiau eiti per, kad ir ką tie reiškia? 142 00:06:42,980 --> 00:06:43,880 Pakelkite rankas, jei: - 143 00:06:43,880 --> 00:06:44,420 Gerai. 144 00:06:44,420 --> 00:06:45,120 Ačiū. 145 00:06:45,120 --> 00:06:48,420 Taigi, mes ketiname eiti per kaminą ir krūva tikrai greitai ir tada 146 00:06:48,420 --> 00:06:50,370 perkelti į atsakyti į jūsų klausimą. 147 00:06:50,370 --> 00:06:58,250 >> Taigi, jei mes atkreipti dėmesį į langelį atstovauti atminties į kompiuterį, kas yra keletas 148 00:06:58,250 --> 00:07:02,160 dalykų, kad pereiti į šį langelį? 149 00:07:02,160 --> 00:07:03,630 Pagrindinis. 150 00:07:03,630 --> 00:07:04,020 Pagrindinė funkcija. 151 00:07:04,020 --> 00:07:05,890 Kur pagrindinis eiti? 152 00:07:05,890 --> 00:07:08,090 >> STUDENTAS: [nesigirdi]. 153 00:07:08,090 --> 00:07:09,390 >> JASON Hirschhorn: todėl mes įdėti pagrindinis čia. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Kas dar eina į šį laukelį? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> STUDENTAS: funkcijos, kad jūs vadinate. 158 00:07:18,140 --> 00:07:19,020 >> JASON Hirschhorn: funkcijos , kurį mes vadiname. 159 00:07:19,020 --> 00:07:20,440 Ir kur jie keliauja? 160 00:07:20,440 --> 00:07:21,300 >> STUDENTAS: Į kaminą. 161 00:07:21,300 --> 00:07:22,380 >> JASON Hirschhorn: Jie eiti į kaminą. 162 00:07:22,380 --> 00:07:27,350 Taigi, mes ketiname tai vadina dalykas žemyn čia kamino. 163 00:07:27,350 --> 00:07:31,880 Ir iki viršaus, mes turime krūvą. 164 00:07:31,880 --> 00:07:35,450 Taigi atmintis yra ne langas, kaip šis. 165 00:07:35,450 --> 00:07:37,330 Bet ji iš tikrųjų yra gana panašūs. 166 00:07:37,330 --> 00:07:40,840 Tai bus dėžių daug daugiau ir daugiau, priklausomai nuo to, kaip didelis savo 167 00:07:40,840 --> 00:07:43,730 kompiuteris yra arba, kaip didelis jūsų atmintis. 168 00:07:43,730 --> 00:07:46,950 >> Tuo citata-citatos "iš apačios" yra kaminas. 169 00:07:46,950 --> 00:07:50,880 Ir yra keletas dalykų, kad eiti į kaminą. 170 00:07:50,880 --> 00:07:53,840 Ir tie, priklauso nuo funkcijų jūs turite savo kodą. 171 00:07:53,840 --> 00:07:57,780 Jūs visada turi vieną funkciją savo kodas vadinamas pagrindinis, todėl visada 172 00:07:57,780 --> 00:08:00,480 skyriuje žemyn čia kamino skirtas pagrindinis. 173 00:08:00,480 --> 00:08:03,980 >> Šie kamino sekcijos vadinami kamino rėmai. 174 00:08:03,980 --> 00:08:09,580 Kai Jūs skambinate kitą funkciją, tarkim pagrindinis ragina dvejetainis paieškos funkcija, 175 00:08:09,580 --> 00:08:11,075 mes įdėti kitą rėmą ant kamino. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Tiksliau, mes ketiname paaukoti atminties riekė ant mūsų 178 00:08:17,320 --> 00:08:22,960 kompiuteriui laikyti dvejetainis paieškos s vietos kintamieji ir paleisti dvejetainis 179 00:08:22,960 --> 00:08:24,150 paieška kodas. 180 00:08:24,150 --> 00:08:26,810 >> Taigi mes vadiname binarinę paiešką. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 Šiuo atminties riekė, mes ketiname saugoti savo vietos kintamieji. 183 00:08:33,340 --> 00:08:35,270 Mes ketiname saugoti savo printf skambučius. 184 00:08:35,270 --> 00:08:38,159 Kad ir kas nutiktų, kad funkcija yra bus saugomi teisę ten. 185 00:08:38,159 --> 00:08:40,350 Dvejetainė paieška ketina vykdyti. 186 00:08:40,350 --> 00:08:42,210 Ji ketina baigti vykdymą. 187 00:08:42,210 --> 00:08:47,450 Kas yra C žodis, kuris ženklina kad funkcija turi 188 00:08:47,450 --> 00:08:49,306 užbaigti jo vykdymą? 189 00:08:49,306 --> 00:08:50,040 >> STUDENTAS: Atgal. 190 00:08:50,040 --> 00:08:50,870 >> JASON Hirschhorn: Grįžti. 191 00:08:50,870 --> 00:08:53,230 Taigi, jei matote grąžinimo pareiškimą, funkciniai galai 192 00:08:53,230 --> 00:08:54,350 kai jis hitai kad. 193 00:08:54,350 --> 00:08:56,740 Taigi, dvejetainis paieškos bus hit savo pelną. 194 00:08:56,740 --> 00:09:01,360 Šis atminties dalis bus iš esmės būti atlaisvinti. 195 00:09:01,360 --> 00:09:03,510 Ir pagrindinis sugrįš į vykdymą. 196 00:09:03,510 --> 00:09:07,240 Taigi pagrindinis sustos ten, kur buvo, skambučių Dvejetainė paieška, kažkiek grąžos vertę, 197 00:09:07,240 --> 00:09:08,700 ir toliau vykdo. 198 00:09:08,700 --> 00:09:10,840 Tai kamino rėmas išnyks. 199 00:09:10,840 --> 00:09:14,810 >> Jei mes vadiname rekursinį funkciją, kuri yra funkcija, kuri vadina save per 200 00:09:14,810 --> 00:09:18,480 ir daugiau, mes galime gauti, - sako mes padarė binarinę paiešką rekursyviai. 201 00:09:18,480 --> 00:09:21,520 Mes galime gauti dvejetainis paieškos versiją vieną, Dvejetainė paieška du, dvejetainis paieškos 202 00:09:21,520 --> 00:09:24,090 trijų, dvejetainis paieškos keturių, Dvejetainė paieška penki. 203 00:09:24,090 --> 00:09:27,950 Ir tai galutinis dvejetainis paieškos penkių bus hit pagrindą, ir kamino 204 00:09:27,950 --> 00:09:31,010 rėmai grįžti ir laikyti uždarymą kol mes grįžti į pagrindinį. 205 00:09:31,010 --> 00:09:32,530 Mes galime eiti per rekursijos į šiek tiek. 206 00:09:32,530 --> 00:09:35,530 Bet visa tai pasakyti, jei esate skambina keletą funkcijų vienu metu, 207 00:09:35,530 --> 00:09:39,250 ten bus kelių kamino Rėmelio kamino. 208 00:09:39,250 --> 00:09:42,900 >> Kaupas, kita vertus, iki čia nėra funkcijas, 209 00:09:42,900 --> 00:09:44,380 ne lokalūs kintamieji. 210 00:09:44,380 --> 00:09:48,920 Tai dinamiškai paskirstoma kintamieji. 211 00:09:48,920 --> 00:09:57,210 Taigi tai yra kintamieji, kurie gali būti inicializuoti arba pagrindinis ar 212 00:09:57,210 --> 00:09:58,640 veikti, kad pagrindiniai skambučius. 213 00:09:58,640 --> 00:10:00,790 Bet savo kodą, jie gali būti inicializuoti. 214 00:10:00,790 --> 00:10:04,360 Ir inicijuoti dinamiškai skiriama kintama. 215 00:10:04,360 --> 00:10:06,970 Ką funkcija C mes naudojame? 216 00:10:06,970 --> 00:10:07,600 >> STUDENTAS: malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON Hirschhorn: malloc. 218 00:10:09,240 --> 00:10:10,800 Jūs vadinate malloc. 219 00:10:10,800 --> 00:10:12,260 Gauni atminties vietos. 220 00:10:12,260 --> 00:10:15,020 Ir kad atminties vietos yra krūvos. 221 00:10:15,020 --> 00:10:18,840 Ir kad atminties erdvė lieka ten kol skambinti nemokamai. 222 00:10:18,840 --> 00:10:22,670 >> Taigi dinamiškai priskirti kintamieji krūva egzistuos tol, kol jums 223 00:10:22,670 --> 00:10:25,250 norime, kad jie egzistuoja, ir jie nebus išeiti, kol jums aiškiai 224 00:10:25,250 --> 00:10:26,760 pasakykite jiems eiti šalin. 225 00:10:26,760 --> 00:10:29,670 Jūs galite kurti juos vieną funkciją. 226 00:10:29,670 --> 00:10:31,930 Ši funkcija yra kaminas rėmas išnyks. 227 00:10:31,930 --> 00:10:35,490 Bet, kad kintamasis vis dar egzistuoja krūvą, kol jis atleidžiamas, 228 00:10:35,490 --> 00:10:39,650 potencialiai pagal funkciją, vadinamą Dvejetainė paieška ar whatever. 229 00:10:39,650 --> 00:10:42,580 >> Taigi tos krūvos kintamieji ten taip ilgai, kaip norite 230 00:10:42,580 --> 00:10:43,490 juos ten pasilikti. 231 00:10:43,490 --> 00:10:46,090 Ir jie gauna įdėti čia. 232 00:10:46,090 --> 00:10:47,450 Ir tada šalia vienas gauna įdėti ten. 233 00:10:47,450 --> 00:10:50,210 Jie gaunu užpildyti, ir jie ten pasilikti, kol skambinti nemokamai. 234 00:10:50,210 --> 00:10:52,870 >> Ir iš esmės, krūvos ir kamino, gauti Marcus klausimą, 235 00:10:52,870 --> 00:10:54,500 auga vienas link kito. 236 00:10:54,500 --> 00:10:57,730 Ir jei jie paleisti į vienas kitą, jūs sunaudota visą atmintį savo 237 00:10:57,730 --> 00:11:01,330 kompiuteris, ir jūsų programa bus mesti nes jūs neturite daugiau atminties 238 00:11:01,330 --> 00:11:02,420 palikta naudoti. 239 00:11:02,420 --> 00:11:07,290 Tarp jų yra potencialiai kitų dalykų. 240 00:11:07,290 --> 00:11:10,980 Tačiau šio kurso taikymo sritį, jums nereikia nerimauti, kad. 241 00:11:10,980 --> 00:11:12,020 >> Taigi, tai buvo atsakymas į jūsų klausimą. 242 00:11:12,020 --> 00:11:13,520 Nesijaudinkite dėl to. 243 00:11:13,520 --> 00:11:15,550 Bet tai buvo seniai atsakyta. 244 00:11:15,550 --> 00:11:17,800 Viskas, ką jums reikia žinoti krūvos ir kamino bus - 245 00:11:17,800 --> 00:11:18,900 vienas pradeda apačioje. 246 00:11:18,900 --> 00:11:19,570 Kamino nėra. 247 00:11:19,570 --> 00:11:20,790 Krūvą tai ten. 248 00:11:20,790 --> 00:11:21,990 Jie augs arčiau vienas kito. 249 00:11:21,990 --> 00:11:23,110 >> Ir jei jie paliesti, tai problema. 250 00:11:23,110 --> 00:11:24,500 Jūs bėgo iš atminties. 251 00:11:24,500 --> 00:11:28,760 Bet taip pat, be to, žinoti, kur jie, kas yra saugoma, tiek 252 00:11:28,760 --> 00:11:30,512 kamino ir krūvą. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: Kai jie susiduria, yra tai, kad kamino perpildymo? 255 00:11:33,570 --> 00:11:35,670 >> JASON Hirschhorn: Kai jie susiduria, tai nėra nepakeliama. 256 00:11:35,670 --> 00:11:38,340 Kamino perpildymo yra skirtingas sritis kad mes galime eiti per, jei norite. 257 00:11:38,340 --> 00:11:40,020 Gerai, mes grįžti į tą, kuris šiek tiek. 258 00:11:40,020 --> 00:11:42,730 >> STUDENTAS: Kas žodis vadinamas kai jie nukentėjo vienas kitą, 259 00:11:42,730 --> 00:11:44,450 kamino ir krūva? 260 00:11:44,450 --> 00:11:46,640 >> JASON Hirschhorn: Nes dabar, nesijaudinkite. 261 00:11:46,640 --> 00:11:47,750 Tiesiog žinau - 262 00:11:47,750 --> 00:11:50,530 Aš atsakyti į šį klausimą po klasę. 263 00:11:50,530 --> 00:11:52,680 Jei jie paleisti į kitą, jums pritrūko iš atminties, nes ten yra ne daugiau 264 00:11:52,680 --> 00:11:53,330 vietos ten. 265 00:11:53,330 --> 00:11:55,450 >> STUDENTAS: Atsiprašome, kas seg kaltės? 266 00:11:55,450 --> 00:11:58,710 >> JASON Hirschhorn: segmentas gedimas gali būti raginama - 267 00:11:58,710 --> 00:12:02,240 tai priklauso nuo to, kodėl SEG kaltės yra vadinamas. 268 00:12:02,240 --> 00:12:06,260 Kartais jūsų kamino perpildymo, jis bus pasakyti seg kaltės kaip klaidos. 269 00:12:06,260 --> 00:12:08,180 >> STUDENTAS: Ką apie dereferencing null kintamasis? 270 00:12:08,180 --> 00:12:10,040 Ar tai seg kaltės? 271 00:12:10,040 --> 00:12:11,480 >> JASON Hirschhorn: Dereferencing null rodyklė - 272 00:12:11,480 --> 00:12:17,850 Gerai, kad jei turite rodyklę, kad jūs prilyginta nuliui, patarimų, išėmimą iš apyvartos, 273 00:12:17,850 --> 00:12:20,270 parduotuvė atminties adresai kaip savo vertybes. 274 00:12:20,270 --> 00:12:23,660 Ir nulinis žymeklis yra iš esmės saugoti 0, 0-oji 275 00:12:23,660 --> 00:12:26,670 spręsti šiuo kintamuoju. 276 00:12:26,670 --> 00:12:30,010 Taigi 0x, 0, 0, 0, 0, ir tt. 277 00:12:30,010 --> 00:12:35,030 Kad 0-oji adresas atminties, kuri nėra mūsų nuotrauką, tai ten 278 00:12:35,030 --> 00:12:38,800 kažkur, tai saugomos už kompiuterį. 279 00:12:38,800 --> 00:12:40,130 Mes neleidžiama liesti. 280 00:12:40,130 --> 00:12:44,680 >> Taigi, jei jūsų programos vykdymo, jei kažkas bando eiti į atmintį 281 00:12:44,680 --> 00:12:48,990 adresas 0, jis žino, kad kad yra paliktas tuščias. 282 00:12:48,990 --> 00:12:50,820 Ji žino, nieko turėtų būti ten. 283 00:12:50,820 --> 00:12:53,420 Taigi, jei jūs bandote ir naudoti kažką ten ir kažką gydyti, kaip ten ar 284 00:12:53,420 --> 00:12:58,355 bando eiti į tą vietą, jūs ketina gauti seg kaltės ar klaidos. 285 00:12:58,355 --> 00:13:00,520 Ar tai atsakymas į jūsų klausimą? 286 00:13:00,520 --> 00:13:03,170 >> Ir dabar mes grįžti kamino perpildymo. 287 00:13:03,170 --> 00:13:09,560 Daiktai kamino, kaip jus vaikinai mačiau anksčiau, - tegul atkreipti close 288 00:13:09,560 --> 00:13:11,966 sudarytas iš kamino rėmo. 289 00:13:11,966 --> 00:13:15,050 Ar visi gali pamatyti, kad? 290 00:13:15,050 --> 00:13:16,650 Taigi, mes turime stack frame. 291 00:13:16,650 --> 00:13:23,260 Mes taupymo masyvą ir kaip vietos kintamasis šią funkciją. 292 00:13:23,260 --> 00:13:29,510 Taigi sako, kad mūsų masyvas turi penkis taškus. 293 00:13:29,510 --> 00:13:33,230 Visi šie penki bus saugomi toje kamino rėmo. 294 00:13:33,230 --> 00:13:37,540 >> Jei mes pradedame rašyti už Ribas šio masyvo - 295 00:13:37,540 --> 00:13:43,990 todėl, jei mes pradėti rašyti į, tarkim, kad tai 0. 296 00:13:43,990 --> 00:13:46,800 Tie penki indeksai mūsų masyvo. 297 00:13:46,800 --> 00:13:50,980 Jei mes pradedame rašyti į 5, indeksą, kuris mes neturime, kai mes turime 298 00:13:50,980 --> 00:13:55,900 masyvo dydis 5, pradėsime rašyti į 6 puslapis, 7, 8, 9, mes galime gauti kamino 299 00:13:55,900 --> 00:13:57,960 Perpildyta klaida. 300 00:13:57,960 --> 00:14:00,510 >> Apskritai, tai ne - 301 00:14:00,510 --> 00:14:04,910 jūs tikriausiai gausite į bėdą jei jūs einate per vieną. 302 00:14:04,910 --> 00:14:08,640 Bet apskritai, gausite į dauguma problemų, jei jūs einate per kurį daug 303 00:14:08,640 --> 00:14:12,770 ir jums eiti taip toli, per parašykite per grąžinimo adresas, kad 304 00:14:12,770 --> 00:14:16,080 funkcija, kuri yra įsikūrusi apačios kamino rėmo. 305 00:14:16,080 --> 00:14:16,520 >> Kadangi, tiesa? 306 00:14:16,520 --> 00:14:17,670 Jūs - ir - atsiprašau. 307 00:14:17,670 --> 00:14:18,550 Ne ", nes į dešinę." 308 00:14:18,550 --> 00:14:20,470 >> Į kaminą rėmo, turite jūsų vietos kintamieji. 309 00:14:20,470 --> 00:14:27,090 Pačioje apačioje kaminą rėmas yra atgalinis adresas. 310 00:14:27,090 --> 00:14:28,790 Štai kur funkcija eina, kai jis baigėsi. 311 00:14:28,790 --> 00:14:33,750 Ir jei jūs įrašysite, kad grįžti adresas, tada, kai tai kamino rėmas, 312 00:14:33,750 --> 00:14:36,680 kai jūs einate per kaminą rėmo ir vykdant kiekvieną eilutę, jūs 313 00:14:36,680 --> 00:14:40,350 ketina eiti į savo naują atgalinį adresą tai ten parašyta, o ne 314 00:14:40,350 --> 00:14:40,910 Tikrasis vienas. 315 00:14:40,910 --> 00:14:45,050 Ir tai, kaip mes matėme kai saugumo pažeidimai 316 00:14:45,050 --> 00:14:46,780 gali atsitikti su kompiuteriu. 317 00:14:46,780 --> 00:14:52,760 >> Taigi nepakeliama, trumpai tariant, yra tada, kai jūs perrašyti dalį kamino 318 00:14:52,760 --> 00:14:55,440 jums turėtų naudoti, vietos kintamasis jums turėtų naudoti, ir 319 00:14:55,440 --> 00:14:58,070 ypač, kai jūs pradedate perrašyti svarbių dalykų, pavyzdžiui, 320 00:14:58,070 --> 00:14:59,100 grįžti adresą. 321 00:14:59,100 --> 00:15:00,090 Ir tai, kai jūs gaunate klaidos pranešimą. 322 00:15:00,090 --> 00:15:03,980 O gal net galima pradėti net rašyti į - 323 00:15:03,980 --> 00:15:05,370 pasakyti, dvejetainis paieškos buvo tiesiai virš pagrindinis. 324 00:15:05,370 --> 00:15:07,790 Jei perrašė daug, jums galėtų rašyti į pagrindinį. 325 00:15:07,790 --> 00:15:10,230 Bet apskritai, jūs gaunate klaidos prieš tada, nes kompiuteris žino 326 00:15:10,230 --> 00:15:12,270 Jūs darote tai, ką neturėtų daryti. 327 00:15:12,270 --> 00:15:12,560 Taip. 328 00:15:12,560 --> 00:15:13,910 >> STUDENTAS: Koks skirtumas tarp kamino perpildymo 329 00:15:13,910 --> 00:15:16,940 ir buferio? 330 00:15:16,940 --> 00:15:19,420 >> JASON Hirschhorn: Buferio yra daugiau bendrinis tipas 331 00:15:19,420 --> 00:15:20,395 ką aš ką tik aprašytos. 332 00:15:20,395 --> 00:15:22,610 >> STUDENTAS: Taigi nepakeliama yra pavyzdys buferio. 333 00:15:22,610 --> 00:15:23,420 >> JASON Hirschhorn: Būtent. 334 00:15:23,420 --> 00:15:28,700 Tai masyvas mes galime galvoti, kaip buferis, už ką vidun erdvė 335 00:15:28,700 --> 00:15:30,600 Tai kamino buferio. 336 00:15:30,600 --> 00:15:33,210 Galėtume turėti krūvos buferio perpildymą. 337 00:15:33,210 --> 00:15:36,870 Jei ten buvo buferis, kuris yra dažnai yra masyvas krūvą, ir mes 338 00:15:36,870 --> 00:15:40,600 perrašė tas ribas, tuomet mes turėti krūvos buferio perpildymą. 339 00:15:40,600 --> 00:15:44,870 >> Ir po šio kurso taikymo sritį, jie aptiko šiek tiek kitaip. 340 00:15:44,870 --> 00:15:48,040 Kompiliatorius turi ypatingą būdai aptikti kiekvieną. 341 00:15:48,040 --> 00:15:50,660 Bet buferio yra bendresnio pobūdžio tipo ką aš aprašyti, 342 00:15:50,660 --> 00:15:54,090 kuris buvo kamino buferio. 343 00:15:54,090 --> 00:15:56,240 Ar, kad atsakyti į jūsų klausimą? 344 00:15:56,240 --> 00:15:57,910 Saldus. 345 00:15:57,910 --> 00:16:01,850 >> Yra dar kitų klausimų, susijusių į kaminą arba krūvą? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Taip. 348 00:16:05,510 --> 00:16:08,220 >> STUDENTAS: Aš žinau, jūs turite laisvų stygų nes jie į krūvą 349 00:16:08,220 --> 00:16:09,305 ir jūs nenorite, kad ištekėti atmintį. 350 00:16:09,305 --> 00:16:12,240 Bet jūs turite išlaisvinti globalių kintamųjų ir stuff like that? 351 00:16:12,240 --> 00:16:14,335 Ar jie automatiškai paleistas? 352 00:16:14,335 --> 00:16:15,700 >> JASON Hirschhorn: Geras klausimas. 353 00:16:15,700 --> 00:16:22,340 Taigi CS50.H, mes sukursime tai, ką Jums vadinamas eilutę. 354 00:16:22,340 --> 00:16:23,800 Eilutė yra tikrai tai, ką? 355 00:16:23,800 --> 00:16:24,810 >> STUDENTAS: Char žvaigždė. 356 00:16:24,810 --> 00:16:29,180 >> JASON Hirschhorn: char žvaigždė, žymeklis į simbolį, rodyklė į 357 00:16:29,180 --> 00:16:30,650 simbolių masyvas. 358 00:16:30,650 --> 00:16:32,210 Štai ką eilutė. 359 00:16:32,210 --> 00:16:36,050 Taigi mums reikia atlaisvinti jį, nes getstring, kuriuos mes naudojome daug - 360 00:16:36,050 --> 00:16:38,370 string pavadinimas yra getstring - 361 00:16:38,370 --> 00:16:43,560 kad mallocs mums šiek tiek apie atmintį užversti ir tada grąžina rodyklę į 362 00:16:43,560 --> 00:16:47,230 Pirmasis požymis, kad eilutę, char žvaigždė. 363 00:16:47,230 --> 00:16:52,760 >> Taigi, neva, jei nebuvo raštu nemokamai bet savo stygos 364 00:16:52,760 --> 00:16:55,600 kad jūs vadinamas iki šiol, jūs turite buvo nesandarus šiek tiek atminties. 365 00:16:55,600 --> 00:16:57,430 Žinoma, mes ne kalbėjo apie tai, kad niekas manimi Dotarłeś 366 00:16:57,430 --> 00:16:58,520 rūpesčių daro. 367 00:16:58,520 --> 00:16:59,980 Tačiau ateityje, taip. 368 00:16:59,980 --> 00:17:03,990 Kai Jūs skambinate getstring, jūs mallocing šiek tiek erdvės krūvą. 369 00:17:03,990 --> 00:17:07,640 Ir jei jums nereikia skambinti nemokamai vėliau, kad eilutę, turite atminties nutekėjimas. 370 00:17:07,640 --> 00:17:09,440 Kad atsakyti į jūsų klausimą? 371 00:17:09,440 --> 00:17:10,606 >> Taip 372 00:17:10,606 --> 00:17:15,020 >> STUDENTAS: Taigi, kaip tai padaryti, mes naudojame nemokamai tiesiai prieš mainais? 373 00:17:15,020 --> 00:17:18,510 Kaip, pagal taikymo sritį, manau, jei mes sakome, pavyzdžiui, int pagrindinis, per 374 00:17:18,510 --> 00:17:24,410 apimtis kodo, kad yra per tuos garbanotas petnešos, tiesiai prieš - 375 00:17:24,410 --> 00:17:26,140 jūs žinote, kur norite paprastai įdėti grąžą. 376 00:17:26,140 --> 00:17:27,950 Ar jūs įtraukėte nemokamai prieš tai? 377 00:17:27,950 --> 00:17:31,000 >> JASON Hirschhorn: Taigi, jūs galite įdėti nemokamai kur norite įdėti nemokamai. 378 00:17:31,000 --> 00:17:33,810 Nes tai yra dinamiškai paskirstoma kintamieji, nes jie gali 379 00:17:33,810 --> 00:17:39,170 gyventi ne dėl ypač taikymo sritį funkcija, jei Jūs skambinate malloc į 380 00:17:39,170 --> 00:17:44,140 atskiras funkcija, pavyzdžiui, getstring, galite skambinti nemokamai pagrindinis. 381 00:17:44,140 --> 00:17:46,050 Jums nereikia vadinti į konkrečios funkcijos 382 00:17:46,050 --> 00:17:47,570 kur malloc vadinamas. 383 00:17:47,570 --> 00:17:50,340 Bet jums reikia jį pavadinti prieš pagrindinius pajamų. 384 00:17:50,340 --> 00:17:51,120 >> Ir tai tikrai priklauso. 385 00:17:51,120 --> 00:17:54,960 Tai priklauso nuo to, kodėl jūs malloced kad vietos į pirmąją vietą. 386 00:17:54,960 --> 00:17:57,320 Kai kurie žmonės vadina atlaisvinti gana greitai. 387 00:17:57,320 --> 00:17:59,220 Kai kurie žmonės negali skambinti nemokamai iki jų programos pabaiga. 388 00:17:59,220 --> 00:18:00,660 Ir jie bus eiti per ir nemokamai viskas. 389 00:18:00,660 --> 00:18:03,597 Tai priklauso nuo to, kodėl jūs vadinamas malloc. 390 00:18:03,597 --> 00:18:11,270 >> STUDENTAS: O ką jūs pasakytumėte jei vadinamas naudojimo getstring? 391 00:18:11,270 --> 00:18:13,320 Jūs norite pasakyti, be ko? 392 00:18:13,320 --> 00:18:20,040 >> JASON Hirschhorn: Taigi už sintaksė nemokamai yra tiesiog nemokama, atviro skliaustas, netoli 393 00:18:20,040 --> 00:18:22,130 skliaustas, o rodyklės pavadinimas. 394 00:18:22,130 --> 00:18:26,410 Taigi, jei jums reikia parašyti styginių pavadinimas yra getstring, galite įdėti pavadinimą čia. 395 00:18:26,410 --> 00:18:27,760 Štai iš rodyklės pavadinimas. 396 00:18:27,760 --> 00:18:30,570 Ir tai žino nemokamai, kad atmintį. 397 00:18:30,570 --> 00:18:33,920 >> STUDENTAS: Taigi, kai jis išlaisvina, kad atmintyje, rodyklė vis dar atkreipia dėmesį į tą vietą, 398 00:18:33,920 --> 00:18:34,970 atmintyje? 399 00:18:34,970 --> 00:18:39,020 Arba yra žymeklis ir ištuštinti adresas, kad ji nurodo. 400 00:18:39,020 --> 00:18:40,290 >> JASON Hirschhorn: Turėtume stengtis, kad. 401 00:18:40,290 --> 00:18:41,430 Turėtume kodas,. 402 00:18:41,430 --> 00:18:43,880 Leiskite grįžti, kai mes gauti kodavimo, ir tegul kodas,. 403 00:18:43,880 --> 00:18:46,000 Ir jei jūs norite išsiaiškinti atsakymą to, Jūs taip pat galite kodas, 404 00:18:46,000 --> 00:18:46,690 tuo pačiu metu. 405 00:18:46,690 --> 00:18:49,100 Bet tai didelis klausimas. 406 00:18:49,100 --> 00:18:53,480 >> STUDENTAS: Ar įmanoma nemokama kažkas per anksti? 407 00:18:53,480 --> 00:18:58,530 Taigi, jūs vis dar reikia jūsų programoje, ir jums išlaisvinti, kad atminties? 408 00:18:58,530 --> 00:18:59,200 >> JASON Hirschhorn: Taip. 409 00:18:59,200 --> 00:19:03,020 Tai įmanoma, jei nemokamai kažkas ir tada ją vėl naudoti, jums 410 00:19:03,020 --> 00:19:06,890 paleisti į klaidos. 411 00:19:06,890 --> 00:19:10,810 Bet tai jums, nes jūs išlaisvino kažkas ir tada pavadino jį vėliau. 412 00:19:10,810 --> 00:19:13,940 Taigi, tai buvo programuotojas klaida. 413 00:19:13,940 --> 00:19:14,780 Bet taip. 414 00:19:14,780 --> 00:19:17,760 Jūs galite rašyti kad. 415 00:19:17,760 --> 00:19:19,240 >> Bet daugiau klausimų dėl - 416 00:19:19,240 --> 00:19:19,760 Taip. 417 00:19:19,760 --> 00:19:22,820 >> STUDENTAS: Taigi, jei jūs turėjo tik išlaisvinti jį apskritai prieš 418 00:19:22,820 --> 00:19:25,490 Programa baigiasi, ar tai reiškia, jei Programa baigiasi ir jūs neturite atlaisvinti jį, 419 00:19:25,490 --> 00:19:27,580 kad atmintis vis dar skiriama? 420 00:19:27,580 --> 00:19:31,330 >> JASON Hirschhorn: Jei jūsų programa baigiasi ir jūs pamiršti nemokamai kažką, tada 421 00:19:31,330 --> 00:19:34,390 kad atmintis buvo skirta per Jūsų programos gyvenime. 422 00:19:34,390 --> 00:19:37,670 Kai jūsų programa užsidaro visiškai kad atmintis nesiruošia 423 00:19:37,670 --> 00:19:39,490 pasilikti ten amžinai. 424 00:19:39,490 --> 00:19:42,080 Kompiuteris yra pakankamai protingas, kad žinotų kad kai programa uždaroma, ji 425 00:19:42,080 --> 00:19:46,440 turi atsikratyti visų atmintyje, kad buvo susijęs su ta programa. 426 00:19:46,440 --> 00:19:51,240 >> Tačiau, yra įrankių, galite paleisti dėl programos, siekiant nustatyti, ar, kai 427 00:19:51,240 --> 00:19:54,720 programa baigta, Jūs pamiršote atlaisvinti šiek tiek atminties. 428 00:19:54,720 --> 00:19:57,960 Ir kito problema nustatyti, kur jūs naudojate malloc ir naudojant 429 00:19:57,960 --> 00:20:02,610 patarimų, jums bus rodomi tai programą į savo programą pamatyti, jei, 430 00:20:02,610 --> 00:20:06,530 kai pagrindiniai grįžta, jūs turėjote kai dalykų, kurie buvo likę unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Taigi jie nesiruošia likti malloced amžinai kompiuterio. 432 00:20:09,130 --> 00:20:11,720 Tai būtų išlaidavimas, nes labai greitai, kompiuteriai 433 00:20:11,720 --> 00:20:12,960 būtų paleisti iš atminties. 434 00:20:12,960 --> 00:20:16,450 Bet jei jie paleisti iki savo pabaigos programuoti ir jie nėra atskirti ir savo 435 00:20:16,450 --> 00:20:20,260 Programa išeina, kad vis dar problema kad ši priemonė padės spręsti. 436 00:20:20,260 --> 00:20:21,520 >> STUDENTAS: Ar tai Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON Hirschhorn: Tai vadinamas Valgrind. 438 00:20:22,910 --> 00:20:23,520 Ir jums bus - 439 00:20:23,520 --> 00:20:25,780 >> STUDENTAS: Bet mes neturime žinoti kad viktorina, nors? 440 00:20:25,780 --> 00:20:27,600 Aš turiu galvoje, jis kalbėjo apie šiek tiek į paskaitą. 441 00:20:27,600 --> 00:20:33,600 >> JASON Hirschhorn: Taigi Valgrind yra tos įrankio pavadinimas. 442 00:20:33,600 --> 00:20:37,180 Žinant, ką jis daro, yra pakankamai viktorinoje. 443 00:20:37,180 --> 00:20:40,200 Bet jūs ne naudoti jį dar ant savo problema nustatyti, nes mes neturėjome 444 00:20:40,200 --> 00:20:43,520 problema rinkinys, kuris aiškiai sprendžiami su malloc ar jūs naudojate malloc. 445 00:20:43,520 --> 00:20:45,330 Taigi jūs turite nenaudojama Valgrind dar. 446 00:20:45,330 --> 00:20:47,760 Bet jūs naudosite jį anksčiau o ne vėliau. 447 00:20:47,760 --> 00:20:48,710 >> STUDENTAS: Ar galite tai pakartoti kas Valgrind yra? 448 00:20:48,710 --> 00:20:49,190 >> JASON Hirschhorn: Atsiprašome? 449 00:20:49,190 --> 00:20:51,240 >> STUDENTAS: Ar galite tai pakartoti, ką iš Valgring tikslas? 450 00:20:51,240 --> 00:20:53,100 >> JASON Hirschhorn: Valgrind yra pavadinimas - 451 00:20:53,100 --> 00:20:59,890 kaip GDB padeda jums derinti savo programas, Valgrind padeda jums išsiaiškinti, ar 452 00:20:59,890 --> 00:21:03,210 dalykų nebuvo paleistas kai jūsų programa uždaroma. 453 00:21:03,210 --> 00:21:05,110 Taigi jums paleisti jį į savo programą. 454 00:21:05,110 --> 00:21:09,230 Ir jūsų programa išeina, ir ji pasakys Jūsų programa, vadinama malloc tai daug 455 00:21:09,230 --> 00:21:13,670 kartus to daug baitų, ir jūs tik vadinamas nemokamai tai daug kartų. 456 00:21:13,670 --> 00:21:16,520 Ir todėl jums paliko šių daug baitų be išlaisvinti. 457 00:21:16,520 --> 00:21:18,050 Arba ji pasakys jūs išlaisvino viską. 458 00:21:18,050 --> 00:21:19,070 Geras darbas. 459 00:21:19,070 --> 00:21:19,480 >> STUDENTAS: Gerai. 460 00:21:19,480 --> 00:21:21,060 Ir tai vadinama Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON Hirschhorn: V-L-G R I N-D. 462 00:21:24,940 --> 00:21:25,970 >> STUDENTAS: klausimas apie rodykles. 463 00:21:25,970 --> 00:21:30,080 Taigi sako, kad jūs n žvaigždė X reiškia kažką. 464 00:21:30,080 --> 00:21:33,330 O tai reiškia, kad ir kokia jūs pateikėte yra tai, kad tai, kas buvo įdėti viduje 465 00:21:33,330 --> 00:21:36,120 Kas yra X nurodydama, arba X žymeklis? 466 00:21:36,120 --> 00:21:37,690 >> JASON Hirschhorn: Ar galite pakartoti klausimą? 467 00:21:37,690 --> 00:21:39,340 Galime padaryti, o jūs pasakyti? 468 00:21:39,340 --> 00:21:42,710 >> STUDENTAS: viktorinoje, iš tikrųjų, tas, kurį pasiuntė mus, tai buvo, pavyzdžiui, char 469 00:21:42,710 --> 00:21:46,520 žvaigždučių tiesa Lygu CS50 akmenis, tiesa? 470 00:21:46,520 --> 00:21:52,190 Taigi ar tai reiškia, kad ši CS50 uolienos yra tai, kas tiesa yra nukreipta? 471 00:21:52,190 --> 00:21:55,810 >> JASON Hirschhorn: Taigi jūs kalbate apie char žvaigždė eilutę, kaip 472 00:21:55,810 --> 00:21:56,460 kad veikia? 473 00:21:56,460 --> 00:21:56,890 Taip. 474 00:21:56,890 --> 00:21:57,700 Gerai. 475 00:21:57,700 --> 00:21:59,140 Leiskite atkreipti tai čia. 476 00:21:59,140 --> 00:22:07,100 >> [PUSĖ POKALBIS] 477 00:22:07,100 --> 00:22:11,130 >> JASON Hirschhorn: Taigi šis kintamasis bus tipo char žvaigždė. 478 00:22:11,130 --> 00:22:14,580 Kaip didelis yra kintamasis Tipo char žvaigždė? 479 00:22:14,580 --> 00:22:15,510 Kiek baitų? 480 00:22:15,510 --> 00:22:16,450 >> Studentai: keturi. 481 00:22:16,450 --> 00:22:18,210 >> JASON Hirschhorn: Tai keturių baitų. 482 00:22:18,210 --> 00:22:21,420 Kiek teisės yra kintamasis tipas int žvaigždė? 483 00:22:21,420 --> 00:22:22,210 >> Studentai: keturi. 484 00:22:22,210 --> 00:22:24,910 >> JASON Hirschhorn: keturi baitai. 485 00:22:24,910 --> 00:22:28,280 Jei tai žymeklis, tada jis visada yra keturi baitai, nes rodyklės, jų 486 00:22:28,280 --> 00:22:30,070 vertė yra atminties adresą. 487 00:22:30,070 --> 00:22:35,160 Ir atminties adresai apie CS50 Prietaisas yra keturių baitų ilgio. 488 00:22:35,160 --> 00:22:42,900 Taigi, kai mes vadiname getstring, arba, kai mes tarkim, stringname lygios, tada 489 00:22:42,900 --> 00:22:46,140 kabutes įdėti eilutę, mes dedame - 490 00:22:46,140 --> 00:22:46,920 gerai, kad šiek tiek kitoks. 491 00:22:46,920 --> 00:22:48,630 Mes tai getstring kaip pvz. 492 00:22:48,630 --> 00:22:52,150 Arba char žvaigždė kažkas lygi eilutę. 493 00:22:52,150 --> 00:22:54,360 Atsiprašome, duok man pavyzdį kad jūs perskaitėte? 494 00:22:54,360 --> 00:22:57,590 >> STUDENTAS: char žvaigždė tiesa Lygu "CS50 akmenys" į kabutes. 495 00:22:57,590 --> 00:23:02,260 >> JASON Hirschhorn: Taigi ši žvaigždė, tai mes tai vadiname kintamojo X mūsų 496 00:23:02,260 --> 00:23:04,060 bendrieji tikslai. 497 00:23:04,060 --> 00:23:05,970 Mes sukūrėme kintamąjį pavadinimu x. 498 00:23:05,970 --> 00:23:07,610 Tai tipo char žvaigždė. 499 00:23:07,610 --> 00:23:10,950 Tai rodyklė į seriją simbolių. 500 00:23:10,950 --> 00:23:12,200 Taigi, čia apačioje - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Taigi, tai yra, kaip tai būtų dirbti atmintyje. 503 00:23:25,890 --> 00:23:27,410 Tai būtų laikyti atminties adresą. 504 00:23:27,410 --> 00:23:31,770 Būtų nelaikykite atminties adresą Pirmasis simbolis masyve. 505 00:23:31,770 --> 00:23:33,830 Ir tada, kai jūs po žymeklis, galėtumėte 506 00:23:33,830 --> 00:23:35,200 gauti pirmąjį simbolį. 507 00:23:35,200 --> 00:23:38,780 >> Ir jei jūs skaitote šį dalyką kaip eilutę, jūsų kompiuteris yra protingas 508 00:23:38,780 --> 00:23:42,930 Pakanka žinoti, skaityti visą šį dalyką kol ji gauna neigiamą reakciją 0. 509 00:23:42,930 --> 00:23:45,530 Bet jei jūs skaitote jai simbolį laikas, todėl jūs iteravimu per 510 00:23:45,530 --> 00:23:49,910 šios eilutės, tada jums bus tik skaityti charakteris metu, kol gausite 511 00:23:49,910 --> 00:23:50,850 Backslash 0. 512 00:23:50,850 --> 00:23:52,335 Kad neatsakyti savo klausimas, nors. 513 00:23:52,335 --> 00:23:55,610 >> STUDENTAS: Taip, bet jūs turite ne malloced kad erdvė 514 00:23:55,610 --> 00:23:58,400 dar už tą rodyklę. 515 00:23:58,400 --> 00:24:02,510 >> JASON Hirschhorn: Taigi, aš nesu visiškai tikras, jūs žiūrite į ką, 516 00:24:02,510 --> 00:24:03,640 nes aš ne padaryti šį testą. 517 00:24:03,640 --> 00:24:06,370 Tai turėjo būti naudinga išteklių iš kito TF. 518 00:24:06,370 --> 00:24:11,380 Jei kuriate STRING kamino ar vietos kintamąjį, jis bus 519 00:24:11,380 --> 00:24:16,920 tiesiog masyvas mokesčius, o ne paprastai char žvaigždė nukreipta į 520 00:24:16,920 --> 00:24:18,600 kita eilutė. 521 00:24:18,600 --> 00:24:20,550 Bet aš nežinau. 522 00:24:20,550 --> 00:24:25,065 Tai galėtų būti rodyklė į kitą STRING kamino taip pat. 523 00:24:25,065 --> 00:24:27,240 Taip. 524 00:24:27,240 --> 00:24:31,116 >> STUDENTAS: Aš žinau, kad jūs turite paskirstyti atmintį, jei žymeklis 525 00:24:31,116 --> 00:24:33,360 gauti pareiškė viduje kitos funkcijos. 526 00:24:33,360 --> 00:24:36,740 Ar jums reikia padaryti tą patį, jei tai deklaruoja viduje pagrindinis, 527 00:24:36,740 --> 00:24:39,570 jūs naudojate jį viduje pagrindinis? 528 00:24:39,570 --> 00:24:43,590 >> JASON Hirschhorn: Taip taip. 529 00:24:43,590 --> 00:24:46,670 Galite paskelbti žymeklį į bet atminties adresas atminties. 530 00:24:46,670 --> 00:24:51,440 Jis gali būti atminties adresas vietos kintamasis, nors dažnai, 531 00:24:51,440 --> 00:24:55,760 žmonės nenori paskelbti atminties adresai vietos kintamuosius, nes jie eiti 532 00:24:55,760 --> 00:24:59,890 toli kartą, kad funkcija grąžina, kuris Štai kodėl mes paprastai malloc dalykų. 533 00:24:59,890 --> 00:25:04,630 Bet taip, galima deklaruoti rodyklę suteikia kitam vietiniam kintamąjį. 534 00:25:04,630 --> 00:25:06,360 Tai tiesiog paprastai nėra daroma. 535 00:25:06,360 --> 00:25:09,480 Bet aš galiu pažvelgti į tai žiūrėti specifinis dalykas po klasę. 536 00:25:09,480 --> 00:25:10,650 Taip. 537 00:25:10,650 --> 00:25:12,350 >> STUDENTAS: Manau, kad tai yra tarsi kas manimi prašoma. 538 00:25:12,350 --> 00:25:16,930 Tai atrodo keista, kad būtų Inicijuojama rodyklė ne taip 539 00:25:16,930 --> 00:25:20,760 adresas, bet tai, ką atrodo vertę. 540 00:25:20,760 --> 00:25:25,970 Atrodo CS50 yra tai, kas viduje dalykas yra pabrėžė ir 541 00:25:25,970 --> 00:25:28,820 ne faktinis adresas, tiesa? 542 00:25:28,820 --> 00:25:30,520 >> JASON Hirschhorn: Štai ne tas atvejis, nors. 543 00:25:30,520 --> 00:25:32,470 Tai nėra tai, kas vyksta. 544 00:25:32,470 --> 00:25:35,910 Kai paskelbti char žvaigždė tai adresas atmintyje. 545 00:25:35,910 --> 00:25:38,860 Rodykles visas atminties adresai nukreipta į ką nors kita. 546 00:25:38,860 --> 00:25:41,480 Kad kažkas gali būti kamino, bet beveik visada yra 547 00:25:41,480 --> 00:25:43,440 krūvos, kaip mes pamatysime ji naudojama. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 Bet stringname Lygu dvigubo citata "Getstring", mes matome, kad ir mes 550 00:25:53,500 --> 00:25:55,010 gali peržiūrėti, kad ir kodas,. 551 00:25:55,010 --> 00:26:01,190 getstring eilutė nebus išsaugotas kad kintamasis, ar kokia eilutė 552 00:26:01,190 --> 00:26:04,580 pavadinimas nėra išsaugomas tuo, kad kintamasis, nes tai ne kaip 553 00:26:04,580 --> 00:26:06,070 patarimų dirbti. 554 00:26:06,070 --> 00:26:06,770 Ar tai prasminga? 555 00:26:06,770 --> 00:26:07,170 >> STUDENTAS: Taip. 556 00:26:07,170 --> 00:26:08,570 >> JASON Hirschhorn: Gerai. 557 00:26:08,570 --> 00:26:11,690 Tikimės, kad nebuvo paini visiems. 558 00:26:11,690 --> 00:26:15,732 Bet jei jis buvo, mes galime pažvelgti į jį dar kartą į šiek tiek, nes mes iš tikrųjų ketiname 559 00:26:15,732 --> 00:26:19,240 koduoti kažką, kad bus tikiuosi dirbti su eilučių ir padės jums jaustis 560 00:26:19,240 --> 00:26:22,170 patogiau su jais. 561 00:26:22,170 --> 00:26:24,869 >> Visi kiti su šiuo klausimu susijusį temos arba kitos temos, kurios 562 00:26:24,869 --> 00:26:26,119 Aš įdėti atgal į viršų? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 Ir - 565 00:26:34,840 --> 00:26:36,310 dabar. 566 00:26:36,310 --> 00:26:37,630 Taip, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: Taigi tai yra visiškai nesusiję, bet mes galime tiesiog eiti per 568 00:26:39,860 --> 00:26:42,760 tikrai greitai ką reikia žinoti apie tarp 32 ir skirtumas 569 00:26:42,760 --> 00:26:46,345 64 bitų mašina? 570 00:26:46,345 --> 00:26:47,740 >> JASON Hirschhorn: Taip. 571 00:26:47,740 --> 00:26:52,111 Taigi 32 bitai yra kiek baitų? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: Tai keturių baitų. 573 00:26:53,060 --> 00:26:54,360 >> JASON Hirschhorn: Tai keturių baitų. 574 00:26:54,360 --> 00:26:58,420 Ir 64 bitai yra kiek baitų? 575 00:26:58,420 --> 00:26:59,112 >> STUDENTAS: Aštuoni. 576 00:26:59,112 --> 00:27:00,610 >> JASON Hirschhorn: aštuoni baitai. 577 00:27:00,610 --> 00:27:03,980 Taigi dar kartą, aštuoni bitai yra vienas baitas. 578 00:27:03,980 --> 00:27:08,340 Jūsų CS50 prietaisas 32 bitų mašina. 579 00:27:08,340 --> 00:27:13,650 Taigi atminties adresai keturių baitų ilgio. 580 00:27:13,650 --> 00:27:17,460 Yra 2 iki 32 atminties adresai. 581 00:27:17,460 --> 00:27:21,310 Nuo 0 iki 2 iki 32 minus 1. 582 00:27:21,310 --> 00:27:27,630 Ir aš nesu teigiamas, tačiau tai tikriausiai, ką jums reikia apimtis 583 00:27:27,630 --> 00:27:35,230 žinau, už 32-bitų mašina, kad atmintis adresai, vėlgi, keturių baitų ilgio, 584 00:27:35,230 --> 00:27:39,620 ir tai didžiausia suma atminties adresus. 585 00:27:39,620 --> 00:27:41,680 >> Be to, duomenų tipai - 586 00:27:41,680 --> 00:27:45,020 tai gali būti kažkas toks gerai, kad yra verta paminėti. 587 00:27:45,020 --> 00:27:49,610 Iš duomenų tipo dydis priklauso nuo mašina dirbate su. 588 00:27:49,610 --> 00:27:56,760 Taigi char, vienas simbolis, kaip daug baitų apie mūsų CS50 prietaiso? 589 00:27:56,760 --> 00:27:57,980 Vienas baitas. 590 00:27:57,980 --> 00:28:02,310 Ir tai tikrai vienas baitas kaip gerai 64 bitų kompiuteryje. 591 00:28:02,310 --> 00:28:05,920 >> Ir dauguma duomenų tipai yra tas pats numeris baitų abiejų mašinų. 592 00:28:05,920 --> 00:28:11,620 Tačiau kai kurie duomenų tipai bus kitoks abiejų mašinų. 593 00:28:11,620 --> 00:28:14,590 Taigi, kad būtų potencialiai Vienintelis dalykas, ką jums reikia žinoti. 594 00:28:14,590 --> 00:28:16,710 >> Bet net ir tai, manau, yra už ribų - 595 00:28:16,710 --> 00:28:20,990 Aš beveik teigiamas, jei pažvelgti atgal senas viktorinos, ji sako, prisiimti dėl 596 00:28:20,990 --> 00:28:24,090 kodavimo problemas jūs per 32 bitų mašina. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 Bet yra, kad eiti kartu su, kad Jei esate suinteresuoti, yra 599 00:28:30,620 --> 00:28:35,920 duomenų tipai, kurie yra tos pačios dydis ant visų mašinų. 600 00:28:35,920 --> 00:28:42,670 >> Jei mačiau kažką panašaus uint32_t, jums gali arba 601 00:28:42,670 --> 00:28:43,260 ne mačiau, kad. 602 00:28:43,260 --> 00:28:44,290 Tai duomenų tipas. 603 00:28:44,290 --> 00:28:47,570 Tai sako, kad 32 bitai nesvarbu ką aparatas tai yra. 604 00:28:47,570 --> 00:28:50,350 Taigi, kai žmonės rašo Nešiojamasis kodas, jie tikriausiai nebus panaudoti Ints. 605 00:28:50,350 --> 00:28:53,260 Jie, o ne naudoti šiuos kitus duomenis rūšys, kad jie žino, bus tas pats 606 00:28:53,260 --> 00:28:54,780 dydis apie kiekvieną mašiną. 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: turėjau klausimų dėl rengimo procesas. 610 00:29:00,150 --> 00:29:04,110 Taigi, jei norite rašyti programą, kuri naudoja kaip CS50 ar kažką biblioteka 611 00:29:04,110 --> 00:29:06,840 pavyzdžiui, kad aš žinau, kad biblioteka turi, tam tikru momentu, būti 612 00:29:06,840 --> 00:29:08,590 surinkti ir susieti in 613 00:29:08,590 --> 00:29:13,380 Bet kiek tai atsitiks per Jūsų programos kompiliavimas? 614 00:29:13,380 --> 00:29:15,880 Kokia šios bibliotekos procesą atsiranda tada, kai esate 615 00:29:15,880 --> 00:29:18,560 rengiant savo programą? 616 00:29:18,560 --> 00:29:24,020 >> JASON Hirschhorn: Taigi eikime per Paprastai šio proceso etapai. 617 00:29:24,020 --> 00:29:26,280 Jūs rašote savo. C failą. 618 00:29:26,280 --> 00:29:33,530 Jūsų. C faile # include savo header bibliotekos, pavyzdžiui, cs50.h. 619 00:29:33,530 --> 00:29:39,480 Ką reiškia, kad aštrus yra linija daryti, kad jūsų programa? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Ji priduria, prototipų importas iš antraštės funkcijos 622 00:29:43,350 --> 00:29:45,120 bylos bibliotekose. 623 00:29:45,120 --> 00:29:45,600 >> JASON Hirschhorn: Būtent. 624 00:29:45,600 --> 00:29:49,870 Ji priduria, šiuos funkcinius prototipus Jūsų kodas. 625 00:29:49,870 --> 00:29:55,230 Taigi, jei jūsų kodas yra rengiami ankstyvosiose stadijose, kompiliatorius žino 626 00:29:55,230 --> 00:29:59,250 kad tikrai egzistuoja šios funkcijos, ir kad kažkur jie buvo nustatyti. 627 00:29:59,250 --> 00:30:02,460 Į. H bylos neapima apibrėžimai šių funkcijų ar kaip 628 00:30:02,460 --> 00:30:03,950 jie faktiškai dirba. 629 00:30:03,950 --> 00:30:07,960 Cs50.h tiesiog yra kažkas, kad sako getstring yra realus dalykas, kad 630 00:30:07,960 --> 00:30:09,270 gali atsitikti. 631 00:30:09,270 --> 00:30:14,240 Ir standardio.h sako printf yra realus dalykas, kuris gali atsitikti. 632 00:30:14,240 --> 00:30:23,190 >> Taigi jūsų C kalbos su šiuo klausimu. Antraštė failas paleidžiama virto kai 633 00:30:23,190 --> 00:30:27,750 Mašininio skaitymo kodas, kuris galiausiai bus paverstas dvejetainiu 634 00:30:27,750 --> 00:30:30,030 kodas, 0 "ir" 1-aisiais. 635 00:30:30,030 --> 00:30:33,590 Ir tai kodas, kuris galiausiai paleidžiama vykdyti. 636 00:30:33,590 --> 00:30:38,550 -L CS50 linija - pavyzdžiui, kai rašote Zaszczękać - 637 00:30:38,550 --> 00:30:41,830 ir tada yra-l CS50, rašote, kad in 638 00:30:41,830 --> 00:30:42,180 Ir pamatysite, kad. 639 00:30:42,180 --> 00:30:43,890 Kai rašote, kad, jums matyti, kad linija čia. 640 00:30:43,890 --> 00:30:47,740 Ir mes matome, kad per sekundę, kai mes kodą arba vėliau, kai mes kodu. 641 00:30:47,740 --> 00:30:50,390 >> Bet tai-l CS50 linija daro kažką šiek tiek kitoks, nei 642 00:30:50,390 --> 00:30:52,440 # include cs50.h. 643 00:30:52,440 --> 00:30:56,300 Ką tai-l CS50 linija daryti? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Aš noriu pasakyti, kad jis susieja su funkcija biblioteka 646 00:31:00,310 --> 00:31:02,710 skambinti, kaip Õ. failus. 647 00:31:02,710 --> 00:31:08,200 >> JASON Hirschhorn: Taigi labai arti, jei ne vietoje-ant. 648 00:31:08,200 --> 00:31:16,220 -L CS50 mano dvejetainis failas ir susilieja su jūsų dvejetainis failas. 649 00:31:16,220 --> 00:31:21,410 Taigi cs50.h, nėra jokio lūžis cs50.h iš C kalbos į dvejetainį kas 650 00:31:21,410 --> 00:31:23,130 vieną kartą jis naudojamas. 651 00:31:23,130 --> 00:31:26,650 Tai būtų kvaila, nes tai Būtų prarasta daug laiko. 652 00:31:26,650 --> 00:31:30,420 Taigi jis jau buvo sudarytas ir kreipėsi į vykdomąjį. 653 00:31:30,420 --> 00:31:35,430 Ir dabar jis bus sujungtos su failo pabaigoje. 654 00:31:35,430 --> 00:31:38,370 Taigi tie 1-ųjų ir 0 s vyksta sujungti su jūsų tie 655 00:31:38,370 --> 00:31:39,150 ir 0 s pabaigoje. 656 00:31:39,150 --> 00:31:43,670 Taigi, dabar jūs iš tikrųjų turi faktinį 1 "ir" 0 yra, kad nustatyti, kaip getstring, 657 00:31:43,670 --> 00:31:47,890 Pavyzdžiui, darbų, arba kaip printf, pavyzdžiui, veikia. 658 00:31:47,890 --> 00:31:52,750 >> Ir daugiau informacijos, ten trumpas kompiliatoriai, kad Nate suteikia, kad 659 00:31:52,750 --> 00:31:55,410 jūs turėtumėte patikrinti, kad eina per šiuos žingsnius. 660 00:31:55,410 --> 00:31:56,050 Bet - 661 00:31:56,050 --> 00:31:56,560 Taip. 662 00:31:56,560 --> 00:32:01,700 >> STUDENTAS: Ar jie visada o bylos. kai jie bibliotekoje forma, 663 00:32:01,700 --> 00:32:06,764 pasirengusi būti sujungti, susieti - kaip jie dvejetainiu kodu? 664 00:32:06,764 --> 00:32:07,600 >> JASON Hirschhorn: Gerai. 665 00:32:07,600 --> 00:32:08,420 Kas - 666 00:32:08,420 --> 00:32:11,780 >> STUDENTAS: Ar tai visuomet taikytina bibliotekos, kai jūs juos susieti? 667 00:32:11,780 --> 00:32:12,500 >> JASON Hirschhorn: Taip. 668 00:32:12,500 --> 00:32:17,300 Taigi čia. Ai failai, kurie bus mašina kodas, kuris taip pat bus 669 00:32:17,300 --> 00:32:17,975 paslaptingas jums. 670 00:32:17,975 --> 00:32:19,410 Jums nereikia nerimauti juos. 671 00:32:19,410 --> 00:32:24,930 Bet apskritai, taip, jie bus būti. O failai pasiruošę eiti. 672 00:32:24,930 --> 00:32:27,170 >> STUDENTAS: Taigi, kai jūs laivo į biblioteka, jūs tik laivas 673 00:32:27,170 --> 00:32:28,880 . h. O? 674 00:32:28,880 --> 00:32:32,210 Jūs neturite pervežti. C arba. Ai. 675 00:32:32,210 --> 00:32:33,070 >> JASON Hirschhorn: Taigi - 676 00:32:33,070 --> 00:32:36,260 ir tai yra šiame trumpame, taip pat, jei ši informacija atrodo, kad ateina 677 00:32:36,260 --> 00:32:36,700 tiek greitai. 678 00:32:36,700 --> 00:32:39,870 Bet apie kompiliatorius trumpas kalbama apie tai, taip pat. 679 00:32:39,870 --> 00:32:43,290 Kai laivas yra biblioteka, jei laivas . h failo antraštės, tie 680 00:32:43,290 --> 00:32:46,290 funkcija prototipai ir 1-ųjų ir 0 ųjų, tai viskas, ką reikia pateikti. 681 00:32:46,290 --> 00:32:50,640 Jums nereikia pateikti kaip funkcija veikia,. c failas. 682 00:32:50,640 --> 00:32:56,360 Nes abstrakcijos taškas, arba API punkto, šiuo SPL punktas 683 00:32:56,360 --> 00:32:59,650 Stanfordo nešiojamų biblioteka, tai Jums nereikės nerimauti apie tai, kaip nauja 684 00:32:59,650 --> 00:33:04,220 GRect veikia, arba kaip perkelti darbus, arba kaip pridėti darbus. 685 00:33:04,220 --> 00:33:06,520 Viskas, ką jums reikia žinoti yra tai, kad priedas yra funkcija, galite 686 00:33:06,520 --> 00:33:08,880 naudoti, ir ji tai daro. 687 00:33:08,880 --> 00:33:12,760 Taigi jūs tikrai nereikia žinoti, kaip tai parašyta C. Jums tereikia 688 00:33:12,760 --> 00:33:15,460 žinau, čia yra funkcijos, ką jie padaryti, ir čia yra 1 "ir" 0 s 689 00:33:15,460 --> 00:33:18,870 kai tikrai norite juos naudoti. 690 00:33:18,870 --> 00:33:19,530 >> Cool. 691 00:33:19,530 --> 00:33:26,980 Bet daugiau klausimų dėl kompiliatorius ar kitos temos, ant lentos? 692 00:33:26,980 --> 00:33:30,300 >> STUDENTAS: Turiu klausimą, įgyvendinant rekursinių funkcijas. 693 00:33:30,300 --> 00:33:31,170 Klausimas apie rekursijos. 694 00:33:31,170 --> 00:33:33,030 Aš turėjau jausmą, kad būtų sugalvoti. 695 00:33:33,030 --> 00:33:38,310 Tad greitai pereiti rekursija su konkrečių 696 00:33:38,310 --> 00:33:40,690 Pavyzdžiui, faktorinė funkcija. 697 00:33:40,690 --> 00:33:44,920 Kadangi tai yra pavyzdys, dažnai ateina arba naudojamas 698 00:33:44,920 --> 00:33:46,170 iliustruoti rekursija. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Taigi "4!" suprantama kaip 4 faktorialas. 701 00:33:56,410 --> 00:33:59,120 Ir ką 4 faktorialas reiškia? 702 00:33:59,120 --> 00:34:00,696 Ką tai padaryti? 703 00:34:00,696 --> 00:34:02,235 Kaip jūs apskaičiuoti 4 faktorialas? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 kartus 3 kartus 2 kartus 1. 706 00:34:07,960 --> 00:34:11,889 >> Taigi dar vienas būdas parašyti 4 faktorialas yra parašyti tai. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 kartus 3 faktorialas. 709 00:34:19,022 --> 00:34:22,080 Kadangi 3 faktorialas yra 3 kartus 2 kartus 1. 710 00:34:22,080 --> 00:34:27,580 Taigi 4 kartus 3 faktorialas yra 4 kartus 3 kartus 2 kartus 1. 711 00:34:27,580 --> 00:34:32,679 Tai kodėl faktorialas yra puikus kandidatas rekursijos, nes tai 712 00:34:32,679 --> 00:34:36,630 aišku, kad yra kažkas, kad atsitinka vėl ir vėl ir vėl į 713 00:34:36,630 --> 00:34:39,820 mažesnis skaičius dalykų iki jums pasiekti pabaigos. 714 00:34:39,820 --> 00:34:42,570 Kada jūs pasieksite 1, 1 faktorialas yra 1. 715 00:34:42,570 --> 00:34:43,719 Jūs negalite eiti daug toliau. 716 00:34:43,719 --> 00:34:47,219 0 faktorialas taip pat apibrėžiamas kaip 1. 717 00:34:47,219 --> 00:34:50,679 Taigi, kai jūs gaunate į 1 arba 0, jūs pabaigoje, ir jūs galite 718 00:34:50,679 --> 00:34:53,219 pradėti eiti atgal į viršų. 719 00:34:53,219 --> 00:34:59,540 Taigi, jei mes norėjome parašyti rekursyvūs funkcija apskaičiuoti faktorialas, 720 00:34:59,540 --> 00:35:02,170 mes ketiname rašyti kai Pseudocode už tai dabar. 721 00:35:02,170 --> 00:35:03,300 Prieš mes rašome, kad Pseudocode - 722 00:35:03,300 --> 00:35:05,660 Aš duosiu jums, vaikinai, pora minučių rašyti pseudo kodą arba tiesiog galvoti 723 00:35:05,660 --> 00:35:09,600 apie tai - yra du dalykai, kas grįžtamojo funkcija turi. 724 00:35:09,600 --> 00:35:12,530 Kas yra tie du dalykai? 725 00:35:12,530 --> 00:35:13,220 >> LIZDAS: Jis turi vadintis. 726 00:35:13,220 --> 00:35:13,680 >> JASON Hirschhorn: Nojus? 727 00:35:13,680 --> 00:35:14,460 Oh, Džekas. 728 00:35:14,460 --> 00:35:15,100 Eiti į priekį. 729 00:35:15,100 --> 00:35:16,640 >> LIZDAS: Jis turi vadintis. 730 00:35:16,640 --> 00:35:19,220 >> JASON Hirschhorn: Taigi grįžtamojo funkcija turi rekursinį skambutį, 731 00:35:19,220 --> 00:35:20,220 skambinti sau. 732 00:35:20,220 --> 00:35:20,770 Tai viena. 733 00:35:20,770 --> 00:35:21,510 Ir kas kitas dalykas? 734 00:35:21,510 --> 00:35:22,250 >> LIZDAS: bazinį scenarijų. 735 00:35:22,250 --> 00:35:23,780 >> JASON Hirschhorn: bazinį scenarijų. 736 00:35:23,780 --> 00:35:26,940 Bazinį scenarijų yra čia, kai mes sustoti. 737 00:35:26,940 --> 00:35:29,510 Taigi jūsų funkcija pasireiškia vadinamas. 738 00:35:29,510 --> 00:35:31,410 Bazinį scenarijų ateina pirmiausia. 739 00:35:31,410 --> 00:35:33,710 Jūs norite žinoti, jei jūs pabaigoje. 740 00:35:33,710 --> 00:35:37,110 Ir, jei esate ne pabaigoje, jūs padaryti savo grįžtamojo skambutį. 741 00:35:37,110 --> 00:35:39,880 Ir jūs einate per šią funkciją vėl, patikrinti savo pagrindinę bylą dar kartą. 742 00:35:39,880 --> 00:35:42,575 Jei nesate pabaigos, jūs padaryti kitas grįžtamojo ryšio, 743 00:35:42,575 --> 00:35:44,130 ir tt, ir tt. 744 00:35:44,130 --> 00:35:47,110 >> Štai kodėl rekursyvūs funkcijos visada reikia tų bazinių atvejus ir tuos, 745 00:35:47,110 --> 00:35:48,210 rekursyvūs skambučiai. 746 00:35:48,210 --> 00:35:51,280 Jei jūs neturite rekursinį skambutį, jis nebūtų grįžtamojo funkcija. 747 00:35:51,280 --> 00:35:53,210 Jeigu tu negali turėti pagrindą, eitum amžinai ir 748 00:35:53,210 --> 00:35:54,780 nebūtų pabaiga. 749 00:35:54,780 --> 00:35:57,870 Ir bazinį scenarijų visada ateina pirmas, nes jūs visada norite patikrinti 750 00:35:57,870 --> 00:36:00,420 jei esate pabaigoje pirmasis. 751 00:36:00,420 --> 00:36:04,770 Taigi, kol mes ką nors Pseudocode, kodėl nėra išgėrėte per minutę galvoti apie 752 00:36:04,770 --> 00:36:09,360 kaip grįžtamojo faktorialas funkcija būtų parašyta? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Taip pat, kaip daugelis, kaip jūs darote, rašymas tai ant popieriaus lapo 755 00:36:26,010 --> 00:36:27,960 ką jūs ketinate turi padaryti viktorina rytoj. 756 00:36:27,960 --> 00:36:32,160 Taigi tikriausiai gera praktika, kad tikras kodas rašote 757 00:36:32,160 --> 00:36:34,420 ant popieriaus lapo - 758 00:36:34,420 --> 00:36:35,160 ar jūs galite padaryti, kad. 759 00:36:35,160 --> 00:36:36,710 Jūs žinote, kur yra kabliataškiais. 760 00:36:36,710 --> 00:36:37,660 Jūs prisimenate sintaksę. 761 00:36:37,660 --> 00:36:40,400 Kadangi jūs negalite turėti sudarytojas pasakyti padarė klaidą. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Be to, palei tas linijas, rytoj, kai Jūs kodavimo problemų, jei 764 00:37:07,240 --> 00:37:11,490 skubėjome už laiką, arba jei esate labai painioti, kaip jūs turėtų 765 00:37:11,490 --> 00:37:16,030 parašyti konkretų dalyką c, tai būtų Pienākties galite rašyti pseudo kodą 766 00:37:16,030 --> 00:37:18,160 arba rašyti komentarus taip pat. 767 00:37:18,160 --> 00:37:21,940 Nes ten yra dalinis kreditas daug dėl viktorinos klausimus. 768 00:37:21,940 --> 00:37:24,840 Taigi jums gali būti skubėjome, arba gali tiesiog būti painiojama. 769 00:37:24,840 --> 00:37:28,030 Rašymas pastabų ar pseudo-kodas dažnai būdų, kad jūs 770 00:37:28,030 --> 00:37:29,360 gali gauti dalinį kreditą. 771 00:37:29,360 --> 00:37:31,440 >> Taigi nereikia palikti kažką Blankas ant viktorina. 772 00:37:31,440 --> 00:37:33,490 Nėra jokių nuobaudos išleidimą dalykų in 773 00:37:33,490 --> 00:37:37,650 Iš tiesų, įgyvendinant pseudo kodu, arba komentarai ketina padėti rūšiuotojas 774 00:37:37,650 --> 00:37:40,410 išsiaiškinti, ar jūs iš tikrųjų žinote, ką jūs kalbate apie, o gal apdovanojimą 775 00:37:40,410 --> 00:37:42,030 jūs kai dalinis kredito už tai. 776 00:37:42,030 --> 00:37:44,510 >> Taip pat palei tas linijas, rašyti aiškiai. 777 00:37:44,510 --> 00:37:47,650 Jei mes negalime tikrai tai, ką rašote, mes neketiname skambinti jums 778 00:37:47,650 --> 00:37:49,900 vidurnaktį rytoj išsiaiškinti iš ką parašė. 779 00:37:49,900 --> 00:37:51,520 Mes tik ketina kilimo taškų. 780 00:37:51,520 --> 00:37:56,570 Rašyti aiškiai, kad mes galime išgirsti, arba, tiksliau, mes galime skaityti, ką parašė. 781 00:37:56,570 --> 00:38:00,230 >> Ir jei jis sako du sakinius, nereikia rašyti pastraipą. 782 00:38:00,230 --> 00:38:02,280 Vadovaukitės instrukcijomis. 783 00:38:02,280 --> 00:38:03,500 Rašykite aiškiai. 784 00:38:03,500 --> 00:38:07,720 Ir parašyti tuos komentarus arba Pseudocode už klausimus, kurie galėtų 785 00:38:07,720 --> 00:38:10,270 sudarymą dalinis kredito. 786 00:38:10,270 --> 00:38:12,520 >> Gerai, eikime faktorialas. 787 00:38:12,520 --> 00:38:15,000 Taigi, mes turime funkciją faktorialas. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Jei aš būčiau iš tikrųjų rašau tai C, ką man reikia daryti, prieš pavadinimą 790 00:38:21,550 --> 00:38:22,800 iš funkcijos? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 Grįžimo tipo, kuris, šiuo atveju, mes suteiksime jai int. 793 00:38:30,060 --> 00:38:35,450 Ir tada viduje garbanotas petnešos, yra kas vyksta viduje garbanotas petnešos 794 00:38:35,450 --> 00:38:36,850 funkcija? 795 00:38:36,850 --> 00:38:37,950 >> STUDENTAI: Argumentų tipas. 796 00:38:37,950 --> 00:38:39,150 >> JASON Hirschhorn: Jos argumentai. 797 00:38:39,150 --> 00:38:42,680 Taigi faktorinė tikriausiai imtis argumentą. 798 00:38:42,680 --> 00:38:44,500 Tai tikriausiai tik priimti vieną argumentą. 799 00:38:44,500 --> 00:38:49,450 Ir mes pasakyti, kad priimsime sveikasis skaičius vadinamas x. 800 00:38:49,450 --> 00:38:52,770 Ir vėl, kai rašote apie prototipą funkcija arba raštu funkciją 801 00:38:52,770 --> 00:38:57,110 savo kodą prieš apibrėžiant tai, tu parašyti duomenų tipą ir pavadinimą 802 00:38:57,110 --> 00:39:01,370 kad kintamasis tik tą funkciją. 803 00:39:01,370 --> 00:39:06,350 Taigi, jūs galite praeiti šiek numerį į tai funkcija, tai bus vadinama x 804 00:39:06,350 --> 00:39:07,340 viduje. 805 00:39:07,340 --> 00:39:08,755 >> Mes turime Faktorinė funkciją. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Mums reikia dviejų dalykų, pagrindinis bylą ir grįžtamojo skambutis. 808 00:39:15,850 --> 00:39:20,900 Kas yra bazė dėklas faktorialas? 809 00:39:20,900 --> 00:39:24,850 Kažkas, kas ją parašė, ir kuris turi ne kalbėjau dar, kas yra bazė 810 00:39:24,850 --> 00:39:26,100 dėklas faktorialas? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> STUDENTAS: Jei n yra mažesnis nei 2, grįžkite 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON Hirschhorn: Jei n yra mažiau nei 2, grąžina 1. 814 00:39:33,520 --> 00:39:37,216 Man patinka, kad, nes tai rūpinasi 0 ir 1. 815 00:39:37,216 --> 00:39:45,290 Taigi mes padarysime x <2, grįžkite 1. 816 00:39:45,290 --> 00:39:47,870 Jei mes gauti išlaikė 0, jei mes praėjo 1, ši funkcija bus 817 00:39:47,870 --> 00:39:49,790 nedelsiant grąžinti 1. 818 00:39:49,790 --> 00:39:54,020 Jei mes gauti išlaikė kai skaičius didesnis nei arba lygus 2, mes ketiname 819 00:39:54,020 --> 00:39:55,370 turime rekursinį skambutį. 820 00:39:55,370 --> 00:39:57,855 >> Ir taip, kaip yra, kad vyksta į darbą? 821 00:39:57,855 --> 00:40:01,070 Ar kažkas, kas dirbo tai kuris nekalbėjo dar man 822 00:40:01,070 --> 00:40:07,380 rekursywny skambučių šiai funkcijai į Pseudocode? 823 00:40:07,380 --> 00:40:10,770 Jei mes gauti išlaikė iš skaičiaus x ir tai didesnis nei 2, tai, ką 824 00:40:10,770 --> 00:40:13,370 mes norime daryti? 825 00:40:13,370 --> 00:40:17,930 Mes taip pat turime pavyzdys parašyta pusė, kuri gali suteikti jums užuominą. 826 00:40:17,930 --> 00:40:20,770 >> STUDENTAS: Call x kartų faktorialas X minus 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON Hirschhorn: Būtent teisus. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Mes ketiname grįžti x kartų X minus 1 faktorialas. 830 00:40:37,750 --> 00:40:41,810 Ir, nors aš rašiau daugiau, Iš esmės, ką jūs sakėte, anglų, 831 00:40:41,810 --> 00:40:44,580 tai faktorinė funkcija gaus vadinamas dar kartą. 832 00:40:44,580 --> 00:40:46,320 Tai bus atlikti ant x minus 1. 833 00:40:46,320 --> 00:40:49,320 Tai bus grįžti su kai sveikojo skaičiaus, ir tada jis bus padauginti šių dviejų 834 00:40:49,320 --> 00:40:52,050 kartu, ir ši vertė bus grįžo į ką tai pavadino 835 00:40:52,050 --> 00:40:55,010 faktorialas funkcija, kuri gali būti kitas atvejis 836 00:40:55,010 --> 00:40:58,420 tai faktorinė funkcija. 837 00:40:58,420 --> 00:41:01,360 >> Taigi, kad yra iš rekursinis pavyzdys funkcija, labai 838 00:41:01,360 --> 00:41:02,530 paprasta grįžtamojo funkcija. 839 00:41:02,530 --> 00:41:04,530 Tačiau daugelis iš jų bus kaip šis. 840 00:41:04,530 --> 00:41:11,170 Jei norite gerą rekursyvūs iššūkis viktorinoje, pabandykite kodavimo 841 00:41:11,170 --> 00:41:13,230 Dvejetainė paieška rekursyviai. 842 00:41:13,230 --> 00:41:18,950 Nes jei tu binarinę paiešką problema nustatyti trys, tikriausiai tai padarė 843 00:41:18,950 --> 00:41:21,730 keletą kartų per while cikle. 844 00:41:21,730 --> 00:41:23,700 >> Tačiau ji taip pat gali būti parašytas rekursyviai. 845 00:41:23,700 --> 00:41:26,310 Jūs ketinate reikia parašyti savo atskiras funkcija, kuri trunka keletą 846 00:41:26,310 --> 00:41:29,020 skirtingų komandų eilutės argumentai - arba ne komandinės eilutės argumentai, kai 847 00:41:29,020 --> 00:41:30,910 skirtingų tiesiog reguliariai argumentai. 848 00:41:30,910 --> 00:41:33,870 Bet jūs galite rašyti dvejetainius paiešką rekursyviai taip pat. 849 00:41:33,870 --> 00:41:36,190 >> STUDENTAS: Taigi jums gali taip pat parašyta, vietoj x minus 1, jūs 850 00:41:36,190 --> 00:41:39,502 Taip pat galėjo būti parašyta x minuso minusas, ar galima turėti 851 00:41:39,502 --> 00:41:40,830 parašyta minus minus x. 852 00:41:40,830 --> 00:41:44,740 Galite tiesiog paaiškinti labai greitai, kodėl tų būtų skirtingi dalykai, 853 00:41:44,740 --> 00:41:49,510 kaip kas skirtumas yra tarp x minus minus ir minus minus x? 854 00:41:49,510 --> 00:41:51,320 >> JASON Hirschhorn: Ne, aš ne ruošiuosi eiti į tą. 855 00:41:51,320 --> 00:41:55,500 Bet aš kalbėti su jumis apie tai, kai klasė. x minus minus minus minus x 856 00:41:55,500 --> 00:41:57,780 Mažėja x iki 1. 857 00:41:57,780 --> 00:41:59,090 Bet jie tai daro šiek tiek kitaip. 858 00:41:59,090 --> 00:42:00,340 Bet aš nenoriu eiti į tą. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 Kiti klausimai apie rekursijos ar ši funkcija? 861 00:42:09,090 --> 00:42:10,140 Tai tikrai nėra net Pseudocode. 862 00:42:10,140 --> 00:42:15,060 Tai iš esmės yra kodas C galėtumėte rašyti už tai. 863 00:42:15,060 --> 00:42:19,393 >> Gerai, visi kiti klausimai apie temas čia? 864 00:42:19,393 --> 00:42:19,864 Taip. 865 00:42:19,864 --> 00:42:23,130 >> STUDENTAS: Aš greitai suniokota slankiojo kablelio ir tikslumas. 866 00:42:23,130 --> 00:42:24,260 >> JASON Hirschhorn: Plaukiojantis taškas ir tikslumo. 867 00:42:24,260 --> 00:42:26,920 Ar kas nors tikrai greitai duoti man suniokota 868 00:42:26,920 --> 00:42:28,210 slankiojo kablelio ir tikslumas? 869 00:42:28,210 --> 00:42:30,420 Jūs visi turėjo tai padaryti dėl savo problema nustatyti, todėl jūs viską 870 00:42:30,420 --> 00:42:31,700 susipažinęs su juo. 871 00:42:31,700 --> 00:42:35,090 O gal ne visi iš jūsų. 872 00:42:35,090 --> 00:42:36,602 Anyone? 873 00:42:36,602 --> 00:42:39,530 Duok man prasidėjo nuo namų. 874 00:42:39,530 --> 00:42:40,750 Slankiojo kablelio ir tikslumas. 875 00:42:40,750 --> 00:42:42,380 Kas yra problema? 876 00:42:42,380 --> 00:42:42,960 Taip. 877 00:42:42,960 --> 00:42:43,680 Viktorija? 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 Atsiprašau. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: Yra tik ribotas skaičius numerių, kurie gali būti atstovaujama 882 00:42:51,550 --> 00:42:57,930 nes jūs esate, mūsų atveju, 32 bitų sistema. 883 00:42:57,930 --> 00:43:03,080 Taigi, jūs tipo turi padaryti kai kuriuos numerius. 884 00:43:03,080 --> 00:43:03,910 >> JASON Hirschhorn: Štai visiškai teisus. 885 00:43:03,910 --> 00:43:08,110 Yra tik tam tikras skaičiai, kurie gali būti atstovaujami. 886 00:43:08,110 --> 00:43:11,770 Jei daugintis du labai daug, ji gali ištekėti sumą 887 00:43:11,770 --> 00:43:13,950 erdvių turite atstovauti sveikasis skaičius. 888 00:43:13,950 --> 00:43:17,930 Štai kodėl kartais mes naudojame ilgai ilgai, o ne int. 889 00:43:17,930 --> 00:43:19,210 Kad turi daugiau erdvės. 890 00:43:19,210 --> 00:43:21,210 Tai gali turėti didesnį skaičių. 891 00:43:21,210 --> 00:43:24,310 >> Slankiojo kablelio tikslumo turi daryti su kad, bet taip pat turi daryti su 892 00:43:24,310 --> 00:43:29,300 Faktas, kad dešimtainiai skaičiai yra ne visada atstovauja. 893 00:43:29,300 --> 00:43:29,540 Atsiprašau. 894 00:43:29,540 --> 00:43:31,280 Leiskite įdėti šią atsargines kopijas. 895 00:43:31,280 --> 00:43:36,610 Dešimtainis skaičius 1,0 ne visada atstovaujama kaip galima tikėtis, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 Tai kartais atstovavo 1,000000001 0,999999999 arba. 898 00:43:50,360 --> 00:43:52,780 Tai gali būti net 89 įmestas ten kažkur. 899 00:43:52,780 --> 00:43:56,560 Taigi tie dešimtainiai skaičiai yra ne atstovaujama tiksliai taip, kaip tai darytumėte 900 00:43:56,560 --> 00:43:58,430 tikėtis, kad jie atstovauja. 901 00:43:58,430 --> 00:44:00,010 >> Taigi problema nustatyti - 902 00:44:00,010 --> 00:44:00,860 tai buvo du? - 903 00:44:00,860 --> 00:44:05,290 problema nustatyti du, kur mes nagrinėjo slankiojo kablelio skaičiai, kai norėjome 904 00:44:05,290 --> 00:44:08,690 jiems atstovauti, ką mes norėjome jiems atstovauti, skaičius 905 00:44:08,690 --> 00:44:12,860 centus, arba centų skaičius, mes jas padaugina iš 100. 906 00:44:12,860 --> 00:44:14,750 Mes suapvalinti juos. 907 00:44:14,750 --> 00:44:18,660 Ir tada mes išjungti viską už kablelio. 908 00:44:18,660 --> 00:44:22,020 Tai buvo užtikrinti, kad jie būtų faktiškai lygūs, ką mes norėjome 909 00:44:22,020 --> 00:44:22,410 jiems prilygti. 910 00:44:22,410 --> 00:44:26,870 >> Nes kai jūs imtis ko nors, kad yra plaukti ir paversti jį int, jūs 911 00:44:26,870 --> 00:44:29,860 išjungti viską į dešinę iš kablelio. 912 00:44:29,860 --> 00:44:33,900 Nes ten kai slankiojo kablelio netikslumai, 100,000, gali būti 913 00:44:33,900 --> 00:44:37,440 atstovavo 99,999999999. 914 00:44:37,440 --> 00:44:40,350 Ir jei jūs tiesiog išjungti viską teisę iš karto, jūs ketinate 915 00:44:40,350 --> 00:44:41,600 gauti neteisingą numerį. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Taip. 918 00:44:44,180 --> 00:44:45,290 >> STUDENTAS: turėjau klausimas apie liejimo. 919 00:44:45,290 --> 00:44:47,500 Kokia tvarka jis atsiranda? 920 00:44:47,500 --> 00:44:54,480 Jei norite padaryti, plūdė, skliausteliuose, 1 skirstomi 10, jis daro 1, padalytą iš 10, 921 00:44:54,480 --> 00:44:58,910 tada gauti 0,1, tada pasukite tai į avansinę? 922 00:44:58,910 --> 00:45:01,470 >> JASON Hirschhorn: Jei plūduriuoti 1, padalytą iš 10 - 923 00:45:01,470 --> 00:45:02,550 >> STUDENTAS: Taip, ir Tada lygu - 924 00:45:02,550 --> 00:45:04,240 gerai, tai paprastai būtų jį lygūs - 925 00:45:04,240 --> 00:45:04,690 Taip. 926 00:45:04,690 --> 00:45:06,760 Jūs norite įsitikinti, kad plūdė, tiesa? 927 00:45:06,760 --> 00:45:12,790 >> JASON Hirschhorn: Gerai, kad mes ketiname naudoti, kad Segue į suprasti, 928 00:45:12,790 --> 00:45:15,390 į šiuos klausimus per kodavimas. 929 00:45:15,390 --> 00:45:18,180 Kadangi jūs tikriausiai turite daug šios minutės klausimus ir geras būdas 930 00:45:18,180 --> 00:45:19,100 jas išspręsti yra per kodavimo. 931 00:45:19,100 --> 00:45:21,320 Taigi, mes ketiname koduoti tai dabar, ir tada mes ketiname grįžti ir 932 00:45:21,320 --> 00:45:24,020 kodą klausimą, į kurį turėjo. 933 00:45:24,020 --> 00:45:24,950 >> Taigi, pirmoji eilutė - 934 00:45:24,950 --> 00:45:29,390 Aš neturėčiau parašiau jį - kas Pirmas dalykas, mes norime padaryti, kai mes 935 00:45:29,390 --> 00:45:32,250 atverti naują failą gedit? 936 00:45:32,250 --> 00:45:34,190 >> STUDENTAS: Įtraukti. 937 00:45:34,190 --> 00:45:35,920 >> JASON Hirschhorn: Įtraukti ką? 938 00:45:35,920 --> 00:45:37,952 >> STUDENTAS: CS50 biblioteka. 939 00:45:37,952 --> 00:45:39,920 >> JASON Hirschhorn: Gerai. 940 00:45:39,920 --> 00:45:42,590 Ką dar turėtume būti? 941 00:45:42,590 --> 00:45:46,820 Mes tik ketiname patikrinti, kas atsitinka, kai jums mesti kažką plūdės. 942 00:45:46,820 --> 00:45:48,605 Bet ką mes turime būti, jei mes ketina parašyti C programa? 943 00:45:48,605 --> 00:45:49,300 >> STUDENTAS: Standartinio I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON Hirschhorn: stdio.h. 945 00:45:50,625 --> 00:45:54,880 Mes iš tikrųjų nereikia, nes tai programa, cs50.h, nors tai 946 00:45:54,880 --> 00:45:55,920 visada naudinga įtraukti. 947 00:45:55,920 --> 00:45:58,260 Bet mes visada turime stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> STUDENTAS: Kai kodavimas C? 949 00:45:59,660 --> 00:46:15,770 >> JASON Hirschhorn: Kai kodavimas C. 950 00:46:15,770 --> 00:46:17,090 >> Taigi aš jį išsaugoti kaip šis. C failas. 951 00:46:17,090 --> 00:46:18,590 Aš kažkiek gražus sintaksės. 952 00:46:18,590 --> 00:46:22,890 Parašiau tuštumą viduje pagrindinis. 953 00:46:22,890 --> 00:46:24,792 Ką negaliojančiu reiškia? 954 00:46:24,792 --> 00:46:26,740 >> STUDENTAS: nesiima jokių komandinės eilutės argumentai. 955 00:46:26,740 --> 00:46:28,900 >> JASON Hirschhorn: Void priemonėmis, tai atveju, pagrindinis ne imtis bet 956 00:46:28,900 --> 00:46:29,700 komandinės eilutės argumentai. 957 00:46:29,700 --> 00:46:32,720 Kitais atvejais ji reiškia, kad funkcija neatsižvelgiama komandinės eilutės argumentai. 958 00:46:32,720 --> 00:46:36,560 Arba funkciją, jeigu aš būčiau rašyti tuštumą Pagrindinis (tuščia), kad pasakytų pagrindinius ųjų 959 00:46:36,560 --> 00:46:38,460 negrįžta nieko. 960 00:46:38,460 --> 00:46:39,960 Taigi klaidinga tiesiog reiškia nieko. 961 00:46:39,960 --> 00:46:42,510 Ką man rašyti, jei aš buvo imtis komandinės eilutės argumentai? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> STUDENTŲ int lankas c eilutė lankas v 964 00:46:47,150 --> 00:46:49,055 >> JASON Hirschhorn int argc styginių argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 Ar tai tiesa? 967 00:46:55,572 --> 00:46:58,720 >> STUDENTAS: Tai char žvaigždė argv skliausteliuose. 968 00:46:58,720 --> 00:47:01,730 >> JASON Hirschhorn: Taigi jums gali rašyti styginių argv skliausteliuose ar char žvaigždė argv 969 00:47:01,730 --> 00:47:03,710 skliausteliuose, bet jums reikia laikiklius. 970 00:47:03,710 --> 00:47:06,290 Kadangi argv yra masyvas eilučių, prisiminti. 971 00:47:06,290 --> 00:47:07,360 Tai ne tik vienas eilutė. 972 00:47:07,360 --> 00:47:10,350 Taigi styginių argv yra čia manimi viena eilutė vadinama argv. 973 00:47:10,350 --> 00:47:13,630 Styginių argv skliausteliuose yra, čia Stygų masyvas. 974 00:47:13,630 --> 00:47:17,865 Taigi int argc styginių argv laikikliai būtų kažkas, kad aš 975 00:47:17,865 --> 00:47:18,810 tikriausiai rašyti. 976 00:47:18,810 --> 00:47:23,050 >> Taigi jūs norite sutaupyti sveikasis skaičius? 977 00:47:23,050 --> 00:47:24,285 >> STUDENTAS: Taip, sveikas. 978 00:47:24,285 --> 00:47:25,840 Arba plūdės. 979 00:47:25,840 --> 00:47:26,710 >> JASON Hirschhorn: Be plūdės? 980 00:47:26,710 --> 00:47:30,790 Kaip, plūdė x lygus 1, padalytą iš 10. 981 00:47:30,790 --> 00:47:32,040 >> JASON Hirschhorn: Gerai. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 Kaip aš galiu atsispausdinti plaukioja printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Ką? 986 00:47:46,714 --> 00:47:47,560 >> STUDENTAS:% f. 987 00:47:47,560 --> 00:47:48,300 >> JASON Hirschhorn:% f. 988 00:47:48,300 --> 00:47:50,810 Kas sveikas? 989 00:47:50,810 --> 00:47:52,110 d arba i. 990 00:47:52,110 --> 00:47:53,000 Kas seka? 991 00:47:53,000 --> 00:47:54,240 >> STUDENTAS: s. 992 00:47:54,240 --> 00:47:56,140 >> JASON Hirschhorn: s. 993 00:47:56,140 --> 00:47:57,550 Kaip aš galiu gauti naują eilutę? 994 00:47:57,550 --> 00:47:58,800 >> STUDENTAS: ukośnikiem n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON Hirschhorn: Ką aš galiu grąžinti jeigu pagrindinis veikia teisingai? 997 00:48:07,100 --> 00:48:08,360 >> STUDENTAS: 0. 998 00:48:08,360 --> 00:48:09,430 Ar man reikia parašyti, kad linija, nors? 999 00:48:09,430 --> 00:48:10,170 >> STUDENTAS: Ne 1000 00:48:10,170 --> 00:48:11,513 Gerai, mes ne rašyti, tada. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 Ar visi gali skaityti, kad? 1003 00:48:17,190 --> 00:48:18,485 Jis atrodo šiek tiek mažas. 1004 00:48:18,485 --> 00:48:20,160 Ar visi gali matyti, ar turėtų Aš jį didesnis? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Manau, fotoaparato, mes pasirūpinsime, tai šiek tiek didesni, nors. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON Hirschhorn: Jei aš noriu išjungti šią . C failą į vykdomąjį, ką 1009 00:48:38,410 --> 00:48:39,260 aš rašau? 1010 00:48:39,260 --> 00:48:41,610 >> STUDENTAS: Padaryti testą. 1011 00:48:41,610 --> 00:48:42,080 >> JASON Hirschhorn: Atsiprašome? 1012 00:48:42,080 --> 00:48:42,790 >> STUDENTAS: Padaryti testą. 1013 00:48:42,790 --> 00:48:44,040 >> JASON Hirschhorn: Padaryti testą. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Mes kalbame apie ši eilutė anksčiau. 1016 00:48:48,410 --> 00:48:49,140 Žvangėjimas. 1017 00:48:49,140 --> 00:48:51,270 Kas Zaszczękać? 1018 00:48:51,270 --> 00:48:52,200 Iš kompiliatoriaus pavadinimas. 1019 00:48:52,200 --> 00:48:53,920 Kas tai linija? 1020 00:48:53,920 --> 00:48:55,580 >> STUDENTAS: Nustato jį naudoti iš GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON Hirschhorn: Komplektai tai iki naudojimo GDB. 1022 00:48:59,230 --> 00:49:02,338 Ši eilutė, kas tai? 1023 00:49:02,338 --> 00:49:03,290 >> STUDENTAS: Išeitinis kodas. 1024 00:49:03,290 --> 00:49:06,010 >> JASON Hirschhorn: Štai šaltinio failas,. c failas. 1025 00:49:06,010 --> 00:49:08,150 Ką šios dvi linijos daryti? 1026 00:49:08,150 --> 00:49:10,245 Ar šie du ne linijos. 1027 00:49:10,245 --> 00:49:12,300 >> STUDENTAS: IT pavadinimai tai išbandyti. 1028 00:49:12,300 --> 00:49:15,410 >> JASON Hirschhorn: Taigi brūkšnys o sako, pavadinti jį skirtingai. 1029 00:49:15,410 --> 00:49:16,790 Ir čia jūs skambinate jį testas. 1030 00:49:16,790 --> 00:49:18,900 Jeigu aš neturiu, kad, kas tai pavadinti tai? 1031 00:49:18,900 --> 00:49:20,260 >> STUDENTAS: a.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON Hirschhorn: a.out. 1033 00:49:22,340 --> 00:49:25,366 Ką tai padaryti? 1034 00:49:25,366 --> 00:49:27,670 >> STUDENTAS: Nuorodos matematikos biblioteką. 1035 00:49:27,670 --> 00:49:29,550 >> JASON Hirschhorn: Tai nuorodos į matematikos biblioteką. 1036 00:49:29,550 --> 00:49:32,880 Mes neįtraukė matematikos biblioteką, tačiau nes tai taip įprasta, jie jau 1037 00:49:32,880 --> 00:49:35,780 parašyta makiažo visada yra matematikos biblioteka. 1038 00:49:35,780 --> 00:49:39,050 Ir be to, tai apima CS50 biblioteka. 1039 00:49:39,050 --> 00:49:43,010 >> Gerai, kad, jei mes sąrašą, dabar mes turime vykdomąjį vadinamas testas. 1040 00:49:43,010 --> 00:49:45,150 Jį vykdyti, rašau testą. 1041 00:49:45,150 --> 00:49:48,330 Matau, kad mano slankiojo kablelio, kaip ir tikėtasi, lygi 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 Ar tai - 1044 00:49:51,590 --> 00:49:52,060 taip - 1045 00:49:52,060 --> 00:49:55,210 >> STUDENTAS: Tada, jei jūs įtraukėte plūduriuoti dabar kaip jums mesti jį kaip plūdė - 1046 00:49:55,210 --> 00:49:56,870 >> JASON Hirschhorn: Cast 1 avansinę? 1047 00:49:56,870 --> 00:49:59,180 >> STUDENTAS: Ne, mesti visą dalyką - 1048 00:49:59,180 --> 00:49:59,500 taip. 1049 00:49:59,500 --> 00:50:02,460 Jei ką tik padarė, kad būtų , kad padaryti tai 0,1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON Hirschhorn: Gerai, kad tikrai greitai, 1, padalytą iš 10, jie yra 1051 00:50:07,170 --> 00:50:08,690 sveikieji skaičiai skaidomos. 1052 00:50:08,690 --> 00:50:13,580 Taigi, kai jūs padalinti sveikieji skaičiai, jie 0, ir Jūs sutaupysite, kad 0 yra 1053 00:50:13,580 --> 00:50:17,170 plūduriuoti, nes velniop yra tik sveikasis skaičius pasidalijimas. 1054 00:50:17,170 --> 00:50:19,180 Taigi dabar mes tekinimo kažką į avansinę. 1055 00:50:19,180 --> 00:50:21,650 >> Pažiūrėkime, kas atsitiks. 1056 00:50:21,650 --> 00:50:22,900 Mes padarysime testą. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Taigi dabar mes matome, kad velniop nebuvo sveikasis skaičius pasidalijimas, buvo plūduriuojančius 1059 00:50:31,090 --> 00:50:32,640 taškas padalinys. 1060 00:50:32,640 --> 00:50:35,700 Nes vienas iš jos argumentų buvo įmesti į avansinę. 1061 00:50:35,700 --> 00:50:38,380 Taigi, dabar jis buvo sakydamas, kad šis lapelis padalinys, kaip mes susiduriame su 1062 00:50:38,380 --> 00:50:40,140 plaukiojantieji taškų, o ne skaičiais. 1063 00:50:40,140 --> 00:50:42,760 Ir taip mes gauti atsakymą mes tikimės. 1064 00:50:42,760 --> 00:50:44,620 >> Pažiūrėkime, kas atsitiks - 1065 00:50:44,620 --> 00:50:47,103 Oi. 1066 00:50:47,103 --> 00:50:51,646 Jei aš norėjau spausdinti daugiau dešimtųjų dėmės, kaip galėčiau tai padaryti? 1067 00:50:51,646 --> 00:50:55,550 >> STUDENTAS: taškas taškas f, ar kaip daugelis dešimtųjų tikslumu, kiek norite. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON Hirschhorn: Taigi, aš spausdinti 10 tūkstantųjų dėmės. 1070 00:51:04,440 --> 00:51:06,610 Ir dabar mes matome, mes vis kažkokiam keistam dalykų. 1071 00:51:06,610 --> 00:51:09,650 Ir grįžta į savo klausimą apie slankaus kablelio nepatikslinus. 1072 00:51:09,650 --> 00:51:10,950 Yra keistai stuff saugomi čia. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> Gerai, ar tai atsakyti į jūsų klausimą? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Ką dar tu nori koduoti greitai? 1077 00:51:20,200 --> 00:51:25,470 >> STUDENTAS: Aš tik norėjau pamatyti, ar ne, jei atlaisvinti šiek tiek rodyklė, 1078 00:51:25,470 --> 00:51:30,410 ar kad žymeklis dar buvo saugomi tai, ką jis buvo adresas 1079 00:51:30,410 --> 00:51:32,170 nukreipta į anksčiau. 1080 00:51:32,170 --> 00:51:34,100 >> JASON Hirschhorn: Gerai, todėl galime tai padaryti. 1081 00:51:34,100 --> 00:51:38,030 Char žvaigždė PTR, tai sukuria kintamąjį vadinama PTR tipo char žvaigždė. 1082 00:51:38,030 --> 00:51:39,280 Kaip parašyti malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: Tiesiog malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 Bet tada ji turi būti dydžio ir Šiuo atveju, manau, norite 1087 00:51:51,040 --> 00:51:52,465 būti nukreipta į char. 1088 00:51:52,465 --> 00:51:54,450 Taigi būčiau char. 1089 00:51:54,450 --> 00:51:57,520 >> JASON Hirschhorn: Gerai, kad daugiau bendrine, viduje - 1090 00:51:57,520 --> 00:51:58,770 tegul redaguoti. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Viduje malloc, norite numerį baitų krūvą. 1093 00:52:09,260 --> 00:52:12,320 Apskritai, ką mes matėme, kad mes darote, yra mes ketiname malloc 1094 00:52:12,320 --> 00:52:14,940 stygos, pavyzdžiui, ar matricos sveikieji skaičiai. 1095 00:52:14,940 --> 00:52:21,600 Taigi, jei norime 10 sveikieji skaičiai, arba 10 simbolių, 10 duos mums 10. 1096 00:52:21,600 --> 00:52:24,370 Ir tada dydis simbolių duos mums, kad simbolių dydžio, kuris 1097 00:52:24,370 --> 00:52:25,120 šiuo atveju yra 1 baitas. 1098 00:52:25,120 --> 00:52:26,250 Gauname 10 baitų. 1099 00:52:26,250 --> 00:52:28,540 Jeigu mes buvo rašyti dydis int, kad duos mums 40 baitų. 1100 00:52:28,540 --> 00:52:31,520 >> Taigi daugiau bendrine, viduje malloc yra baitų skaičius, kurį norite. 1101 00:52:31,520 --> 00:52:34,620 Tokiu atveju, mes vis 1 baitas. 1102 00:52:34,620 --> 00:52:36,900 Kuris atrodo keistai naudoti iš malloc, bet mūsų 1103 00:52:36,900 --> 00:52:38,470 tikslai turi prasmę. 1104 00:52:38,470 --> 00:52:40,420 Taigi kad. 1105 00:52:40,420 --> 00:52:43,420 >> Mes ketiname skambinti nemokamai. 1106 00:52:43,420 --> 00:52:47,040 Mes atsikratyti juo, ir mes naudojame PTR dar kartą. 1107 00:52:47,040 --> 00:52:48,750 Ir ką jūs norite patikrinti? 1108 00:52:48,750 --> 00:52:50,550 >> STUDENTAS: Aš tik norėjau patikrinti, ar ar ne ten buvo kas nors 1109 00:52:50,550 --> 00:52:51,900 viduje ji. 1110 00:52:51,900 --> 00:52:53,050 >> JASON Hirschhorn: Taigi, ar jis atkreipė dėmesį į ką nors? 1111 00:52:53,050 --> 00:52:57,740 >> STUDENTAS: Taip, tiksliai, ar jis vis dar turėjo atminties adresą. 1112 00:52:57,740 --> 00:53:02,220 >> JASON Hirschhorn: Taigi jūs norite patikrinti PTR vertę? 1113 00:53:02,220 --> 00:53:03,470 >> STUDENTAS: Taip, tiksliai. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON Hirschhorn: Ką aš rašau čia jei noriu patikrinti vertę 1116 00:53:10,160 --> 00:53:11,880 punktas - kas yra, Jordanija sakė, vertė? 1117 00:53:11,880 --> 00:53:13,720 Arba kas yra saugoma viduje PTR? 1118 00:53:13,720 --> 00:53:14,620 >> STUDENTAS: atminties adresą. 1119 00:53:14,620 --> 00:53:16,330 >> JASON Hirschhorn: atminties adresą. 1120 00:53:16,330 --> 00:53:20,520 Taigi, jei aš rašau tik tai, jis bus duoti man PTR vertę. 1121 00:53:20,520 --> 00:53:22,800 Ir kaip aš galiu atsispausdinti atminties adresas? 1122 00:53:22,800 --> 00:53:26,470 Kas formato eilutę už atminties adresą? 1123 00:53:26,470 --> 00:53:27,430 >> STUDENTAS:% p. 1124 00:53:27,430 --> 00:53:28,050 >> JASON Hirschhorn:% p. 1125 00:53:28,050 --> 00:53:29,500 % S eilutės. 1126 00:53:29,500 --> 00:53:30,750 % P rodyklė. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 Ar tai tiesa? 1129 00:53:43,540 --> 00:53:44,790 Tai yra teisinga. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Taigi PTR Lygu - 1132 00:53:51,040 --> 00:53:53,350 ji vis dar turi kažką į jį. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 Tai turbūt daugiau Įdomus klausimas. 1135 00:53:57,645 --> 00:53:59,198 Ką tai linija daryti? 1136 00:53:59,198 --> 00:54:00,830 >> STUDENTAS: SEG gedimus. 1137 00:54:00,830 --> 00:54:01,310 >> JASON Hirschhorn: Kas? 1138 00:54:01,310 --> 00:54:02,678 >> STUDENTAS: Manau, kad tai SEG gedimus. 1139 00:54:02,678 --> 00:54:03,574 >> JASON Hirschhorn: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> STUDENTAS: Manau, jis bus seg kaltės. 1141 00:54:04,920 --> 00:54:08,265 >> JASON Hirschhorn: Taigi ši eilutė iš kodas, star PTR, ką 1142 00:54:08,265 --> 00:54:10,152 nėra žvaigždė reiškia? 1143 00:54:10,152 --> 00:54:11,240 >> STUDENTAS: turinys. 1144 00:54:11,240 --> 00:54:11,560 >> JASON Hirschhorn: Taip. 1145 00:54:11,560 --> 00:54:13,910 Eiti į gauti turinį. 1146 00:54:13,910 --> 00:54:16,830 Taigi, tai bus eiti į atmintį spręsti ten ir man, kad. 1147 00:54:16,830 --> 00:54:21,030 Aš% C čia, nes yra ženklai saugomi ten. 1148 00:54:21,030 --> 00:54:23,390 Taigi, mes ketiname eiti į tą adreso mes tik pamačiau - ar tai turbūt bus 1149 00:54:23,390 --> 00:54:25,190 šiek tiek skiriasi tai kartą, kai mes paleisti programą. 1150 00:54:25,190 --> 00:54:28,010 Bet mes eisime šiuo adresu kuri mes žinome, vis dar egzistuoja 1151 00:54:28,010 --> 00:54:29,260 ir pamatyti, kas ten. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Taigi nebuvo SEG kaltės. 1154 00:54:37,110 --> 00:54:38,970 Jis tiesiog nedavė mums nieko. 1155 00:54:38,970 --> 00:54:43,350 Tai gali iš tikrųjų davė mums kažkas, mes tiesiog negalime matyti. 1156 00:54:43,350 --> 00:54:45,110 Ir grįžta į šią idėją - 1157 00:54:45,110 --> 00:54:47,270 ir mes nesiruošia gauti per daug į tai, nes tai ne tik 1158 00:54:47,270 --> 00:54:48,460 apimtis šiuo metu. 1159 00:54:48,460 --> 00:54:51,260 Bet mes kalbėjome apie čia, jei mes peržengė masyvo ribų pagal 1160 00:54:51,260 --> 00:54:54,890 1, mes gali ne gauti į bėdą. 1161 00:54:54,890 --> 00:54:58,550 >> Kartais, kai jūs tiesiog eiti išjungti 1, darai kažką blogo, ir jūs 1162 00:54:58,550 --> 00:54:59,220 galėtų gauti į bėdą. 1163 00:54:59,220 --> 00:55:00,820 Bet jūs ne visada gauti į bėdą. 1164 00:55:00,820 --> 00:55:05,170 Tai priklauso nuo to, kiek blogas dalykas, kurį tai, kad jūs ketinate gauti į bėdą. 1165 00:55:05,170 --> 00:55:07,790 Kuris yra ne pasakyti, kad per daug jausmingas su savo kodą. 1166 00:55:07,790 --> 00:55:12,080 Tačiau reikia pasakyti, programa nebus visada mesti rūkyti, net jei jūs einate kažkur 1167 00:55:12,080 --> 00:55:14,130 Jūs nesate turėjo eiti. 1168 00:55:14,130 --> 00:55:18,170 >> Geras pavyzdys, kad yra daug " žmonių savo problemą nustatyti 3, kuris 1169 00:55:18,170 --> 00:55:22,350 buvo 15, nepatikrino Ribas lenta. 1170 00:55:22,350 --> 00:55:25,860 Taigi, jūs žiūrite į kairę, pažvelgė į teisė, pažvelgė į viršų, pažvelgė 1171 00:55:25,860 --> 00:55:27,000 į apačią. 1172 00:55:27,000 --> 00:55:31,540 Bet tu negali patikrinti, ar viršų buvo faktiškai bus ant lentos. 1173 00:55:31,540 --> 00:55:35,220 Ir žmonių, kurie padarė, kad daug ir Paaiškėjo, kad jų programa dirbo 1174 00:55:35,220 --> 00:55:38,960 puikiai, nes kai ta lenta buvo saugomas atmintyje, jei atėjo vienas 1175 00:55:38,960 --> 00:55:42,300 virš jos ar patikrino, kad atmintis adresas, nebuvo nieko 1176 00:55:42,300 --> 00:55:44,870 ypač siaubingas apie tai, kad jūsų programa nebuvo 1177 00:55:44,870 --> 00:55:45,970 ketina klykauti ne jums. 1178 00:55:45,970 --> 00:55:48,870 >> Bet mes vis dar kilimo taškų, jei tu negali patikrinti, kad, nes jums 1179 00:55:48,870 --> 00:55:50,850 darė kažką jums nebuvo turėtų daryti, ir jūs galite turėti 1180 00:55:50,850 --> 00:55:51,860 Dotarłeś į bėdą. 1181 00:55:51,860 --> 00:55:54,040 Šansų yra, nors, tikriausiai ne. 1182 00:55:54,040 --> 00:55:57,790 Taigi tai rodo, kad, taip, mes vis dar galite eiti į jį. 1183 00:55:57,790 --> 00:55:59,010 Ir mes ne gauti į problemų šiuo atveju. 1184 00:55:59,010 --> 00:56:04,000 Jei mes bandėme padaryti skaityti sekantis 100 simbolių, mes norime 1185 00:56:04,000 --> 00:56:06,000 tikriausiai gauti į bėdą. 1186 00:56:06,000 --> 00:56:09,400 Ir jūs galite užkoduoti svarstymą kitame 100 ženklai, jei norite, atlikdami kai 1187 00:56:09,400 --> 00:56:10,110 tarsi už linijos. 1188 00:56:10,110 --> 00:56:10,850 Taip. 1189 00:56:10,850 --> 00:56:16,250 >> STUDENTAS: Kadangi mes buvo suteiktas, kad erdvė tikroji vertė, nebūtume 1190 00:56:16,250 --> 00:56:17,050 iš tikrųjų galės pamatyti nieko. 1191 00:56:17,050 --> 00:56:21,740 Jei mes stengiamės ją nustatant, kad lygus kaip C ar kažką? 1192 00:56:21,740 --> 00:56:22,640 >> JASON Hirschhorn: Didysis klausimas. 1193 00:56:22,640 --> 00:56:25,340 Kaip man nustatyti tą vertę - 1194 00:56:25,340 --> 00:56:28,980 ką eilutėje kodas man rašyti linija septynių daryti tai, ką jūs pasakėte? 1195 00:56:28,980 --> 00:56:34,040 >> STUDENTAS: Žvaigždžių PTR Lygu vieno citata pabaigoje c viengubas kabutes. 1196 00:56:34,040 --> 00:56:36,970 >> JASON Hirschhorn: Štai išleidimą pobūdį, c, toje vietoje, 1197 00:56:36,970 --> 00:56:40,200 nes vėl, kad žvaigždė reiškia eiti ten. 1198 00:56:40,200 --> 00:56:43,320 Ir kai naudojamas ant kairės pusės priskyrimo operatorius, kuris lygus 1199 00:56:43,320 --> 00:56:47,270 pasirašyti, mes neketiname gauti, kad vertė tiek daug, kaip nustatyti šią vertę. 1200 00:56:47,270 --> 00:56:48,520 Dabar pažiūrėkime, kas atsitiks. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Mes įdėti kažką ten ir ji ten buvo. 1203 00:56:56,770 --> 00:56:58,000 Mes raginome nemokamai. 1204 00:56:58,000 --> 00:57:00,100 Kai kurie dalykai tikriausiai atsitiko į krūvą. 1205 00:57:00,100 --> 00:57:01,890 Taigi, tai ne ten nebėra. 1206 00:57:01,890 --> 00:57:07,440 Bet vėl, mes ne gauti problemų dėl ten eiti. 1207 00:57:07,440 --> 00:57:10,260 >> Darau tai iš kodo iliustruoti kad iš jų daug 1208 00:57:10,260 --> 00:57:12,410 klausimus, kad jūs turite, jie tikrai įdomu 1209 00:57:12,410 --> 00:57:13,650 atsakymus daug laiko. 1210 00:57:13,650 --> 00:57:15,260 Ir jie tikrai geri klausimai. 1211 00:57:15,260 --> 00:57:19,010 Ir jūs galite suprasti juos ant savo, jei, pavyzdžiui, 1212 00:57:19,010 --> 00:57:19,990 mes ne skyriuje. 1213 00:57:19,990 --> 00:57:20,940 Taip. 1214 00:57:20,940 --> 00:57:24,430 >> STUDENTAS: Kadangi jūs nesiunčia žymeklis visur, jums reikia 1215 00:57:24,430 --> 00:57:26,530 naudoti malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON Hirschhorn: Taigi tai nueina savo pradinį klausimą. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 Ar tai tik vietinis kintamasis? 1219 00:57:29,980 --> 00:57:32,280 Malloc čia yra ne tai, kad įtikinamos. 1220 00:57:32,280 --> 00:57:35,260 Iš malloc naudojimas čia nėra kad įtikinamų nes tai 1221 00:57:35,260 --> 00:57:36,500 tik vietos kintamąjį. 1222 00:57:36,500 --> 00:57:40,970 >> STUDENTAS: Taigi galima padaryti char žvaigždučių PTR Lygu labas? 1223 00:57:40,970 --> 00:57:41,400 >> JASON Hirschhorn: oh. 1224 00:57:41,400 --> 00:57:43,300 Taigi, mes ketiname dabar grįžti savo pradinį klausimą. 1225 00:57:43,300 --> 00:57:46,885 Manau, kad jums buvo nepatenkinti mano atsakymą. 1226 00:57:46,885 --> 00:57:48,220 Gerai? 1227 00:57:48,220 --> 00:57:49,226 Kaip tai? 1228 00:57:49,226 --> 00:57:49,682 >> STUDENTAS: Taip. 1229 00:57:49,682 --> 00:57:50,932 Palaukti. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON Hirschhorn: O kur norite spausdinti? 1232 00:57:57,850 --> 00:58:00,026 Taigi mes atsispausdinti panašaus eilutę? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> STUDENTAS: Įdomu. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON Hirschhorn: Taigi tai sako, kad tai argumentas turi simbolio tipą. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Taigi tai turėtų būti ženklas. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> STUDENTAS: Tiesiog mano pirmasis. 1241 00:58:26,280 --> 00:58:28,610 >> JASON Hirschhorn: Taigi šis yra tai, ką minėjau anksčiau. 1242 00:58:28,610 --> 00:58:34,240 Kaip ir sakiau, tai ne saugoti Styga viduje kintamojo žymeklis. 1243 00:58:34,240 --> 00:58:35,120 Tai saugoti - 1244 00:58:35,120 --> 00:58:36,350 >> STUDENTAS: pirmoji reikšmė į eilutę. 1245 00:58:36,350 --> 00:58:40,810 >> JASON Hirschhorn: Kreipinys Pirmoji vertė eilutę. 1246 00:58:40,810 --> 00:58:46,940 Jeigu mes buvo išspausdinti šį, mes gauti vertę viduje rodyklė. 1247 00:58:46,940 --> 00:58:51,005 Ir mes pamatysime tai, tiesą sakant, atminties adresas. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> Ar tai prasminga? 1250 00:58:56,440 --> 00:58:56,940 Atsiprašau. 1251 00:58:56,940 --> 00:58:58,996 Palaukite, ar tai atsakyti į jūsų klausimas, nors? 1252 00:58:58,996 --> 00:58:59,790 >> STUDENTAS: Taip. 1253 00:58:59,790 --> 00:59:05,830 >> JASON Hirschhorn: Šis kodas linija sukurti eilutę ir tada kitą 1254 00:59:05,830 --> 00:59:09,115 kintantis žymeklis, kad manimi nukreipta į tą eilutę, kad masyvo. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Taip. 1257 00:59:14,980 --> 00:59:19,200 >> STUDENTAS: Taigi, jei mes nuėjome vieną atminties spręsti toliau, tai mes gauname h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 Ji buvo saugomas kaip eilutė? 1260 00:59:23,150 --> 00:59:24,400 >> JASON Hirschhorn: Kaip, mes padarėme - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 todėl tai yra naudinga daryti. 1263 00:59:30,790 --> 00:59:33,780 Tai kablelio aritmetiką, kurį vaikinai matęs ir turėtų būti 1264 00:59:33,780 --> 00:59:35,550 gana patogiai. 1265 00:59:35,550 --> 00:59:36,905 Tai yra panašus į raštu - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 jei mes rašyti šią kodo eilutę, mes matėme masyvo notacijos anksčiau. 1268 00:59:46,350 --> 00:59:55,900 Tai turėtų suteikti mums sekundę vertė šio masyvo, h. 1269 00:59:55,900 --> 01:00:05,010 >> Jei mes tai padarė, tai taip pat turėtų suteikti mums antras vertė tame masyve. 1270 01:00:05,010 --> 01:00:08,320 Kadangi tai vyksta ne atmintyje adresas, pirmas dalykas, tačiau 1271 01:00:08,320 --> 01:00:10,530 atminties adresas dalykas viena puse. 1272 01:00:10,530 --> 01:00:14,360 Ir tada žvaigždučių operatorius dereferences kad žymeklis. 1273 01:00:14,360 --> 01:00:16,940 Ir vėl, pažiūrėkime. 1274 01:00:16,940 --> 01:00:18,664 Mes gauname h dar kartą. 1275 01:00:18,664 --> 01:00:20,980 >> STUDENTAS: Ką tiksliai reiškia dereference reiškia? 1276 01:00:20,980 --> 01:00:23,650 >> JASON Hirschhorn: Dereference yra išgalvotas žodis, eiti. 1277 01:00:23,650 --> 01:00:26,390 Eiti į, kad ir gauti, kas ten yra dereference rodykle. 1278 01:00:26,390 --> 01:00:28,240 Tai tik išgalvotas žodis, kad. 1279 01:00:28,240 --> 01:00:29,986 >> STUDENTAS: Jei mes norėjome spausdinti visa eilutė, mes galėtume 1280 01:00:29,986 --> 01:00:31,930 padaryti ampersand rodyklę? 1281 01:00:31,930 --> 01:00:33,490 >> JASON Hirschhorn: Gerai, mes esame ketina pristabdyti čia. 1282 01:00:33,490 --> 01:00:35,480 Mes ketiname baigti čia. 1283 01:00:35,480 --> 01:00:41,760 Ženklas suteikia jums adresą vieta, todėl, kai jūs darote ampersendas iš 1284 01:00:41,760 --> 01:00:44,080 kintamasis, jis suteiks jums adresą kur, kad kintamasis yra saugomi. 1285 01:00:44,080 --> 01:00:48,580 Ženklas rodyklė duos jums adresas PTR kur PTR atmintyje. 1286 01:00:48,580 --> 01:00:50,140 >> Mes neketiname eiti su šiuo pavyzdžiu. 1287 01:00:50,140 --> 01:00:52,640 Galite išsiaiškinti jų viskas savo. 1288 01:00:52,640 --> 01:00:55,740 Bet vėl, tai gali būti net besiribojančiu tiek už jos ribų, ką jums reikia žinoti 1289 01:00:55,740 --> 01:00:58,000 Šio laikotarpio vidurio apimtis - 1290 01:00:58,000 --> 01:00:59,070 ar tai viktorina, o. 1291 01:00:59,070 --> 01:01:00,270 Atsiprašau. 1292 01:01:00,270 --> 01:01:03,770 >> Mes ketiname judėti į priekį, nes aš norėčiau patinka daryti vieną kodavimo problema 1293 01:01:03,770 --> 01:01:05,100 prieš laikas baigėsi. 1294 01:01:05,100 --> 01:01:09,340 Ir mes ketiname kodą, ką aš manau yra įdomiausi iš jų 1295 01:01:09,340 --> 01:01:11,020 pavyzdžiai, atoi. 1296 01:01:11,020 --> 01:01:14,520 Taigi, tai buvo ant klausimas viktorina prieš dvejus metus. 1297 01:01:14,520 --> 01:01:17,810 Ir aš turiu jį ant lentos čia. 1298 01:01:17,810 --> 01:01:20,680 >> Žmonės klausė dėl viktorinos - 1299 01:01:20,680 --> 01:01:23,640 jie buvo suteikta šiek tiek daugiau tesxt į klausimas, bet aš pašalinta 1300 01:01:23,640 --> 01:01:26,640 tekstas, nes jis buvo nereikalingas mūsų tikslams dabar. 1301 01:01:26,640 --> 01:01:29,180 Tai buvo tik kai fonas apie tai, kas atoi padarė. 1302 01:01:29,180 --> 01:01:31,425 Bet jūs visi žinote, ir yra labai susipažinęs su atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Aš siūlau jums koduoti tai ant popieriaus lapo. 1304 01:01:35,620 --> 01:01:39,310 Aš taip pat rekomenduojame naudoti strategiją kad mes jau dingo per 1305 01:01:39,310 --> 01:01:41,040 mūsų skyriuje daug. 1306 01:01:41,040 --> 01:01:44,130 Pirma, įsitikinkite, kad jums suprasti kas atoi daro. 1307 01:01:44,130 --> 01:01:47,580 Nupieškite paveikslą arba sugalvoti kai psichikos įvaizdį jai galvą. 1308 01:01:47,580 --> 01:01:51,120 Toliau surašyti Pseudocode už tai. 1309 01:01:51,120 --> 01:01:53,120 Dėl viktorina, jei visi jums yra Pseudocode, bent jau 1310 01:01:53,120 --> 01:01:54,550 įdėti kažką žemyn. 1311 01:01:54,550 --> 01:02:00,070 Ir tada map kad Pseudocode ant C. Jei turite čekį 1312 01:02:00,070 --> 01:02:03,760 Pseudocode, kaip patikrinti, ar kažkas yra 1, kad žemėlapiai ant jei 1313 01:02:03,760 --> 01:02:05,750 būklė ir kt. 1314 01:02:05,750 --> 01:02:07,850 Ir, pagaliau, koduoti C programa 1315 01:02:07,850 --> 01:02:15,000 >> Taigi, grįžti į atoi ir imtis penkias minutes koduoti tai ant lapo 1316 01:02:15,000 --> 01:02:19,480 popieriaus, kuris yra tikriausiai apie daug laiko jūs imtis 1317 01:02:19,480 --> 01:02:21,260 viktorina kodas atoi. 1318 01:02:21,260 --> 01:02:27,060 Penkerių iki 15 minučių, nuo penkerių iki 12, nuo penkių iki 10 minučių, yra apie sumą 1319 01:02:27,060 --> 01:02:30,150 laiko norite praleisti apie tai klausimas viktorinoje. 1320 01:02:30,150 --> 01:02:31,670 Taigi imtis penkias minutes dabar, prašau. 1321 01:02:31,670 --> 01:02:35,957 O jei turite kokių nors klausimų, kelti ranka ir aš ateiti aplink. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [ŠALUTINIS POKALBIAI] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON Hirschhorn: Gerai, kad tai buvo penkios minutės. 1326 01:08:37,580 --> 01:08:39,880 Tai turbūt buvo apie sumą laiko jūs išleidžiate, kad viktorina, 1327 01:08:39,880 --> 01:08:42,120 gal žemos tuo metu. 1328 01:08:42,120 --> 01:08:44,010 Mes Priminti į šiek tiek. 1329 01:08:44,010 --> 01:08:45,740 Pradėkime kodavimo tai. 1330 01:08:45,740 --> 01:08:49,479 Ir jei mes negalime gauti visą kelią, į tai atsakymus ir tai 1331 01:08:49,479 --> 01:08:54,189 viktorina klausimas yra, vėl, Fall 2011, kai šis klausimas 1332 01:08:54,189 --> 01:08:54,913 atsirado viktorinos. 1333 01:08:54,913 --> 01:08:57,830 >> Ir tai buvo verta aštuonių taškų į viktorinos tada. 1334 01:08:57,830 --> 01:09:01,140 Aštuoni taškai yra ant aukšto pabaigos suma kiekis kažkas yra verta. 1335 01:09:01,140 --> 01:09:04,790 Dauguma klausimų yra intervale iš 5:59 kiekis. 1336 01:09:04,790 --> 01:09:08,500 Taigi tai yra sunkiau klausimas, tikrai. 1337 01:09:08,500 --> 01:09:09,750 Ar kas nors get me prasidėjo? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Apskritai, ką mes ketiname nori daryti su šiais 1340 01:09:15,380 --> 01:09:17,550 veikti atoi logiškai? 1341 01:09:17,550 --> 01:09:19,569 Ką mes norime padaryti? 1342 01:09:19,569 --> 01:09:22,279 Taigi, mes ketiname rašyti kai Pseudocode. 1343 01:09:22,279 --> 01:09:24,090 >> STUDENTAS: konvertuoti simbolius į sveikųjų skaičių. 1344 01:09:24,090 --> 01:09:26,700 >> JASON Hirschhorn: konvertuoti simbolius į sveikųjų skaičių. 1345 01:09:26,700 --> 01:09:27,479 Gerai. 1346 01:09:27,479 --> 01:09:30,870 Taigi, kiek simbolių yra mes reikės eiti per? 1347 01:09:30,870 --> 01:09:32,295 >> STUDENTAS: Visi iš jų. 1348 01:09:32,295 --> 01:09:34,100 >> STUDENTAS: Visi ženklai į eilutę. 1349 01:09:34,100 --> 01:09:35,540 >> JASON Hirschhorn: Visi simbolių eilutės. 1350 01:09:35,540 --> 01:09:42,180 Taigi, jei mes norėjome eiti per kiekvieną simbolis eilutę, kas yra dalykas 1351 01:09:42,180 --> 01:09:44,560 C matėme, kad leido mums pereiti per kiekvieną 1352 01:09:44,560 --> 01:09:45,939 simbolis eilutės? 1353 01:09:45,939 --> 01:09:46,819 >> STUDENTAI: už linijos. 1354 01:09:46,819 --> 01:09:48,069 >> JASON Hirschhorn: už linijos. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Taigi, mes ketiname kilpa per kiekvienas personažas s. 1357 01:09:55,330 --> 01:10:00,940 >> Tada ką mes ketiname norite daryti kai mes gauname tam tikrą charakterį? 1358 01:10:00,940 --> 01:10:02,480 Pasakykite, mes gauti išlaikė 90. 1359 01:10:02,480 --> 01:10:03,460 Mes gauname 9. 1360 01:10:03,460 --> 01:10:04,240 Tai simbolis. 1361 01:10:04,240 --> 01:10:07,440 Ką mes norime daryti su kad charakteris 9? 1362 01:10:07,440 --> 01:10:10,082 >> STUDENTAS: Atimti iš charakterio 0? 1363 01:10:10,082 --> 01:10:11,860 >> STUDENTAS: Pridėti 0? 1364 01:10:11,860 --> 01:10:13,350 >> JASON Hirschhorn: Atimti jis iš charakterio 0? 1365 01:10:13,350 --> 01:10:13,800 >> STUDENTAS: Taip. 1366 01:10:13,800 --> 01:10:15,573 >> JASON Hirschhorn: Kodėl norite padaryti, kad? 1367 01:10:15,573 --> 01:10:16,560 >> STUDENTAS: [nesigirdi] 1368 01:10:16,560 --> 01:10:17,010 vertė. 1369 01:10:17,010 --> 01:10:18,380 Jo int vertė. 1370 01:10:18,380 --> 01:10:21,580 >> JASON Hirschhorn: Gerai, kad mes simbolis 9, atimti ją iš 1371 01:10:21,580 --> 01:10:25,820 simbolis 0 gauti Tikrasis sveikas 9. 1372 01:10:25,820 --> 01:10:27,070 Saldus. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 Ir kaip jūs žinote, kad charakterį 9 atėmus 0 personažas yra 9? 1375 01:10:37,000 --> 01:10:39,222 Kas diagramos tu pažvelgti? 1376 01:10:39,222 --> 01:10:43,130 >> STUDENTAS: Yra logiškai devyni vietos tarp 9 ir 0. 1377 01:10:43,130 --> 01:10:44,620 Arba galite pažvelgti į ASCII lentelėje. 1378 01:10:44,620 --> 01:10:45,120 >> JASON Hirschhorn: ASCII lentelę. 1379 01:10:45,120 --> 01:10:46,490 Bet taip, jūs teisingai, taip pat. 1380 01:10:46,490 --> 01:10:47,780 Taigi mes atimti 0. 1381 01:10:47,780 --> 01:10:49,010 Taigi dabar mes turime sveikąjį skaičių 9. 1382 01:10:49,010 --> 01:10:49,970 Ir ką mes norime daryti su tuo? 1383 01:10:49,970 --> 01:10:54,970 Jei mes turime 90, tai pirmas sveikasis skaičius mes, ką mes norime daryti? 1384 01:10:54,970 --> 01:10:58,180 >> STUDENTAS: aš įdėti laikiną sveikojo skaičiaus masyvas, atlikite matematika jai 1385 01:10:58,180 --> 01:11:02,088 vėliau, kad jis taptų pabaigos. 1386 01:11:02,088 --> 01:11:03,020 >> JASON Hirschhorn: Gerai. 1387 01:11:03,020 --> 01:11:06,990 >> STUDENTAS: Galite pradėti pabaigoje masyvo ir tada judėti į priekį taip 1388 01:11:06,990 --> 01:11:10,350 kad kiekvieną kartą jums judėti į priekį, jūs padauginkite jį iš 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON Hirschhorn: Gerai. 1390 01:11:10,830 --> 01:11:12,250 Tai skamba kaip gana įtikinamų idėja. 1391 01:11:12,250 --> 01:11:16,040 Mes galime pradėti mūsų masyvo pabaigos, ir mes galime naudoti strleng. 1392 01:11:16,040 --> 01:11:17,030 Mes galime naudoti strleng čia. 1393 01:11:17,030 --> 01:11:18,870 Mes gauti mūsų eilutės ilgis. 1394 01:11:18,870 --> 01:11:20,100 Mes pradedame pabaigoje. 1395 01:11:20,100 --> 01:11:29,170 Ir + pirmasis, mes tiesiog imtis, kad sveikas, o gal mes sukurti kaip 1396 01:11:29,170 --> 01:11:32,270 nauja sveikasis kintamasis iki viršaus, kur mes saugoti viską. 1397 01:11:32,270 --> 01:11:37,340 Taigi mes kilpa per kiekvieną s char nuo nugaros į priekį, mes atimti 0, ir 1398 01:11:37,340 --> 01:11:42,790 tada mes jį, ir, priklausomai nuo kur ji yra, mes padauginkite jį 1399 01:11:42,790 --> 01:11:45,860 pagal 10 galios. 1400 01:11:45,860 --> 01:11:50,644 Nes pirmasis, ką mes daugintis dešinė charakterį? 1401 01:11:50,644 --> 01:11:51,440 >> STUDENTAS: 10 iki 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON Hirschhorn: 10 iki 0. 1403 01:11:53,170 --> 01:11:56,010 Ką mes daugintis antras Dešinę požymis? 1404 01:11:56,010 --> 01:11:57,450 >> STUDENTAS: [nesigirdi]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON Hirschhorn: Kas? 1406 01:11:57,960 --> 01:11:59,150 >> STUDENTAS: 10 prie 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON Hirschhorn: 10 prie 1. 1408 01:12:00,420 --> 01:12:03,754 Trečiųjų dešinė charakterį? 1409 01:12:03,754 --> 01:12:04,580 >> STUDENTAS: 10 prie 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON Hirschhorn: 10 prie 2. 1411 01:12:05,350 --> 01:12:07,200 >> STUDENTAS: Atsiprašau, aš nesuprantu ką mes darome čia. 1412 01:12:07,200 --> 01:12:08,640 >> JASON Hirschhorn: Gerai, eikime atgal, tada. 1413 01:12:08,640 --> 01:12:12,500 Taigi, mes ketiname gauti praėjo eilutę. 1414 01:12:12,500 --> 01:12:14,470 Kadangi mes raštu atoi. 1415 01:12:14,470 --> 01:12:15,260 Taigi, mes gauname praėjo eilutę. 1416 01:12:15,260 --> 01:12:17,640 Pasakykite, mes vis praėjo į eilutę 90. 1417 01:12:17,640 --> 01:12:19,930 >> Pirmas dalykas, mes ketiname padaryti, tai nustatyti nauja sveikasis kintamasis, kad mes 1418 01:12:19,930 --> 01:12:22,150 tik ketina sukurti kaip mūsų naują sveikojo skaičiaus. 1419 01:12:22,150 --> 01:12:24,630 Štai ką mes ketiname grįžti pabaigoje. 1420 01:12:24,630 --> 01:12:30,110 Mums reikia eiti per kiekvieną pobūdžio eilutė, nes mes nusprendėme, 1421 01:12:30,110 --> 01:12:34,430 kad mes turime paliesti kiekvieną ir tada įdėti į mūsų naują sveikojo skaičiaus. 1422 01:12:34,430 --> 01:12:36,330 >> Bet mes negalime tiesiog pridėkite jį kaip skaičius. 1423 01:12:36,330 --> 01:12:38,270 Mes galime ne tik imtis 9 ir pridėti 9 mūsų sveikojo skaičiaus. 1424 01:12:38,270 --> 01:12:40,560 Tai priklauso nuo to, kokią vietą jis yra eilutės. 1425 01:12:40,560 --> 01:12:42,960 Mes ketiname reikia padauginti tai pagal 10 galios. 1426 01:12:42,960 --> 01:12:45,580 Nes tai, kaip pagrindas 10 kūriniai. 1427 01:12:45,580 --> 01:12:49,050 >> Taigi, mes ketiname gauti faktinis simbolis arba faktinis sveikas 1428 01:12:49,050 --> 01:12:53,860 skaičius, atėmus charakterį 0 nuo charakterio 9 kaip mes padarėme su 1429 01:12:53,860 --> 01:12:57,560 atimant simbolių kapitalui, iš kokia charakteris mes turėjome vienoje iš 1430 01:12:57,560 --> 01:12:58,120 šios problemos. 1431 01:12:58,120 --> 01:13:04,190 Taigi mes iš tikrųjų gauti skaičių nuo 0 iki 9 išsaugotas kaip realusis skaičius, ir mes 1432 01:13:04,190 --> 01:13:07,590 padauginkite jį iš 10 galios priklausomai kur mes esame eilutę. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 Ir tada mes ketiname pridėti jį atgal į į mūsų naują kintamąjį. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Taigi, kas tai atrodys būtų būti - mes atkreipti čia. 1437 01:13:37,890 --> 01:13:40,086 Jei mes gauti išlaikė į eilutę 90 - 1438 01:13:40,086 --> 01:13:41,336 >> STUDENTAS: [nesigirdi]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON Hirschhorn: Bet atoi trunka eilutę. 1441 01:13:45,540 --> 01:13:46,350 Taigi, mes ketiname eiti per valda. 1442 01:13:46,350 --> 01:13:49,900 Mes gauti išlaikė iš 90. 1443 01:13:49,900 --> 01:13:51,540 Mes einame iš nugaros į priekį. 1444 01:13:51,540 --> 01:13:53,920 Mes priimame 0. 1445 01:13:53,920 --> 01:13:55,080 >> STUDENTAS: atsiprašau. 1446 01:13:55,080 --> 01:13:55,880 Gal tai kvaila. 1447 01:13:55,880 --> 01:13:59,440 Jei mes vis praėjo eilutę, kodėl 90, ką mes 1448 01:13:59,440 --> 01:14:00,260 gauti praėjo? 1449 01:14:00,260 --> 01:14:03,160 Kadangi 90 yra sveikasis skaičius. 1450 01:14:03,160 --> 01:14:06,820 >> JASON Hirschhorn: Kadangi atoi trunka seka ir paverčia jį į sveikojo skaičiaus 1451 01:14:06,820 --> 01:14:08,320 atstovavimas tą eilutę. 1452 01:14:08,320 --> 01:14:13,650 Tačiau eilutė 90 nėra sveikasis skaičius 90 arba skaičius 90. 1453 01:14:13,650 --> 01:14:17,920 Eilutė 90 yra dviejų masyvas arba trys simboliai, o, 9 1454 01:14:17,920 --> 01:14:22,740 pobūdis, 0 pobūdžio, ir Backslash 0 simbolis. 1455 01:14:22,740 --> 01:14:26,260 >> Ir mes rašome atoi nes, Pavyzdžiui, kai jūs imtis komandą 1456 01:14:26,260 --> 01:14:30,230 linija argumentas, ir jis išsaugotas argv, jis išsaugotas kaip eilutę. 1457 01:14:30,230 --> 01:14:32,940 Bet jei norite gydyti jį kaip skaičius, jums reikia jį konvertuoti į 1458 01:14:32,940 --> 01:14:34,700 Tikrasis sveikasis skaičius. 1459 01:14:34,700 --> 01:14:37,210 Kuris mes padarėme vieną iš mūsų problema rinkinių. 1460 01:14:37,210 --> 01:14:38,800 Kurį mes padarėme skaičiaus mūsų probleminių rinkinių. 1461 01:14:38,800 --> 01:14:41,690 Kiekvienas, kuris paėmė sveikasis skaičius kaip komandų eilutės argumentas. 1462 01:14:41,690 --> 01:14:46,490 Štai kodėl mūsų atoi funkcija mano eilutę. 1463 01:14:46,490 --> 01:14:51,910 >> Taigi dar kartą, mūsų pavyzdyje, mes ketina imtis naujausia. 1464 01:14:51,910 --> 01:14:55,050 Mes ketiname atimti simbolį 0 iš jos, nes personažai 0 1465 01:14:55,050 --> 01:14:58,810 atimama iš charakterio 0 suteikia jums faktinis skaičius 0, pagal 1466 01:14:58,810 --> 01:15:00,950 ASCII matematikos, kad mes darome. 1467 01:15:00,950 --> 01:15:04,870 >> Kadangi simboliai atstovavo kitoks nei jų tikrasis - 1468 01:15:04,870 --> 01:15:08,830 pobūdis, pavyzdžiui, mažosiomis raidėmis 97. 1469 01:15:08,830 --> 01:15:10,260 Tai ne - Oi! 1470 01:15:10,260 --> 01:15:13,290 Tai ne ką būtų galima tikėtis ji būtų, 0, pvz. 1471 01:15:13,290 --> 01:15:16,200 Taigi jūs turite atimti simbolių gauti 0. 1472 01:15:16,200 --> 01:15:18,950 >> Taigi, mes ketiname tai padaryti čia gauti realų skaičių. 1473 01:15:18,950 --> 01:15:22,560 Ir tada mes ketiname padauginkite jį iš 10 galia, priklausomai nuo to, kur jis 1474 01:15:22,560 --> 01:15:27,030 yra eilutė, o tada imtis, kad ir įdėti jį į mūsų vietą užimantis 1475 01:15:27,030 --> 01:15:32,520 kintantis, todėl mes galime sugalvoti mūsų galutinis nauja sveikasis skaičius. 1476 01:15:32,520 --> 01:15:35,080 Ar tai prasminga visiems? 1477 01:15:35,080 --> 01:15:37,730 >> Taigi mes neketiname koduoti tai dabar, nes mes 1478 01:15:37,730 --> 01:15:38,830 vis trūksta laiko. 1479 01:15:38,830 --> 01:15:40,860 Atsiprašau už to laiko. 1480 01:15:40,860 --> 01:15:44,620 Bet tai, kas, tikiuosi, jūs taip gebėti daryti Viktorinos - ne 1481 01:15:44,620 --> 01:15:47,710 labai jau gauti šią Pseudocode rašyti. 1482 01:15:47,710 --> 01:15:50,840 >> Ir tada, jei mes buvome rašyti Pseudocode, iš tikrųjų, mes galime tai padaryti 1483 01:15:50,840 --> 01:15:51,490 gana greitai. 1484 01:15:51,490 --> 01:15:55,230 Kiekvienas komentarus linija mes rašėme čia verčia apie 1485 01:15:55,230 --> 01:15:56,970 viena linija C kodą. 1486 01:15:56,970 --> 01:16:01,780 Skelbiantis naują kintamąjį, raštu kilpa, kai atimtis, kai 1487 01:16:01,780 --> 01:16:07,070 daugyba, o kai užduotis. 1488 01:16:07,070 --> 01:16:09,020 Mes tikriausiai taip pat nori parašyti grąžinimo liniją. 1489 01:16:09,020 --> 01:16:12,040 Mes taip pat gali įdėti kai kurie čia patikrinimus. 1490 01:16:12,040 --> 01:16:12,655 Taip. 1491 01:16:12,655 --> 01:16:15,720 >> STUDENTAS: Taigi mes galime gydyti ai kaip faktinio eilutės? 1492 01:16:15,720 --> 01:16:18,730 Nes aš žinau, tai tik adresas. 1493 01:16:18,730 --> 01:16:22,090 Kaip, kaip jūs gauti ilgis eilutė yra pabuvoję? 1494 01:16:22,090 --> 01:16:25,310 >> JASON Hirschhorn: Taigi, kaip tai padarė iš stringo ilgis? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> STUDENTAS: strlen, taip. 1497 01:16:26,660 --> 01:16:30,550 Bet jūs galite įdėti s kaip argumentas, kad? 1498 01:16:30,550 --> 01:16:34,620 >> JASON Hirschhorn: Taigi strlen mano char žvaigždė. 1499 01:16:34,620 --> 01:16:38,090 Ir taip, kad char žvaigždė, ir tai išlaiko skaičiuoti tol, kol ji gauna 1500 01:16:38,090 --> 01:16:41,865 Backslash 0. strlen iš tikrųjų buvo vienas kitas programas mes 1501 01:16:41,865 --> 01:16:42,850 eidavo kodą. 1502 01:16:42,850 --> 01:16:44,560 Štai dar vienas geras vienas kodas. 1503 01:16:44,560 --> 01:16:47,270 Tai vienas šiek tiek lengviau, nes jei jūs ketinate galvoti apie tai 1504 01:16:47,270 --> 01:16:47,830 konceptualiai - 1505 01:16:47,830 --> 01:16:51,620 Aš tiesiog pasakiau garsiai - strlen taip žymeklis ir išlaiko vyksta ir 1506 01:16:51,620 --> 01:16:54,210 skaičiuoti ir sekti tol, kol pasieksite Atgal nerijos velniop 0. 1507 01:16:54,210 --> 01:16:56,530 >> STUDENTAS: Gerai, got it. 1508 01:16:56,530 --> 01:17:00,200 >> JASON Hirschhorn: Taigi geriausias nepasisekė viktorina 0 rytoj. 1509 01:17:00,200 --> 01:17:03,170 Jei turite kokių nors klausimų, aš būti ne po to. 1510 01:17:03,170 --> 01:17:05,610 Nedvejodami rašykite man. 1511 01:17:05,610 --> 01:17:08,480 Užmegzti ryšius su savo TF, jei esate ne mano skyriuje, arba gauti mano 1512 01:17:08,480 --> 01:17:10,005 laišką, jei norite jį. 1513 01:17:10,005 --> 01:17:13,140 >> Jei norite freak out, ir tiesiog siųsti man elektroniniu paštu, freakout laišką, aš 1514 01:17:13,140 --> 01:17:16,710 siųsti atgal, kaip, smiley veido, arba, kaip, pokštas ar kažką. 1515 01:17:16,710 --> 01:17:18,190 Taigi nedvejodami padaryti, kad taip pat. 1516 01:17:18,190 --> 01:17:20,750 Sėkmės dar kartą, ir aš pamatyti jus visus kitą savaitę. 1517 01:17:20,750 --> 01:17:23,435