1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> SPEAKER 1: Sveiki visi. 3 00:00:05,680 --> 00:00:07,530 Mes ketiname pradėti. 4 00:00:07,530 --> 00:00:09,330 Manau, kad žmonės vis dar vyksta būti filtravimo. 5 00:00:09,330 --> 00:00:12,840 Bet po kurio laiko labui, todėl mes galime jums vaikinai iš čia laiku, 6 00:00:12,840 --> 00:00:14,110 mes ketiname pradėti. 7 00:00:14,110 --> 00:00:18,780 Taigi sveiki atvykę į CS50 Viktorina 0 peržiūros. 8 00:00:18,780 --> 00:00:23,020 Tiems iš jūsų, kurie ne suprato, dar turite trečiadienį klausimą. 9 00:00:23,020 --> 00:00:25,700 Woo-hoo. 10 00:00:25,700 --> 00:00:29,780 >> Jei neturite pradėjo studijuoti ar dar ne suprato, kad tai yra dar 11 00:00:29,780 --> 00:00:34,070 Pastaruosius viktorinos ir visa informacija apie Jūsų viktorina yra cs50.net/quizzes. 12 00:00:34,070 --> 00:00:38,090 Yra keletas gana neblogai ten, Pastaruosius viktorinos iš Paskutines 10 13 00:00:38,090 --> 00:00:43,760 metų, taip pat informacija apie šį testą ir pranešimus 14 00:00:43,760 --> 00:00:46,250 kad bus padengtos. 15 00:00:46,250 --> 00:00:48,980 Taigi leiskite pradėti. 16 00:00:48,980 --> 00:00:54,240 >> Taigi vaikinai gali prisiminti, pirmasis dieną klasės Dovydas tuos žibintus. 17 00:00:54,240 --> 00:00:59,650 Taigi, iš esmės, viskas, kas vyksta dirbti pagal iš kompiuterio dangtis yra 18 00:00:59,650 --> 00:01:00,860 daroma dvejetainis. 19 00:01:00,860 --> 00:01:04,080 Dvejetainiai tai, ką jis skamba kaip, 0 "ir 1-aisiais. 20 00:01:04,080 --> 00:01:09,290 Jis turi dvi vertybes, kurios gali būti atstovaujama. 21 00:01:09,290 --> 00:01:14,675 >> Taigi kaip ir pirmą dieną skyriuje Dovydas įjungtas šviesos 22 00:01:14,675 --> 00:01:21,990 lemputė atstovauti įjungtas, arba 1, mūsų kompiuterį supranta dvejetainiu kaip 0 "ir 23 00:01:21,990 --> 00:01:24,110 1 s, įjungti arba išjungti. 24 00:01:24,110 --> 00:01:25,360 Pagrindai Binary. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 Kiekviena vieta yra atstovaujama į bazę dvi. 27 00:01:32,470 --> 00:01:36,260 Taigi jūs pridedate 2 iki 0 iki 1 2 visą kelią iki. 28 00:01:36,260 --> 00:01:41,970 >> Norėdami apskaičiuoti, kiek jūsų dvejetainis yra Dešimtainis, jūs tiesiog sekite šią lygtį 29 00:01:41,970 --> 00:01:42,840 tipas dalykas. 30 00:01:42,840 --> 00:01:49,510 Jei turite 1 bet kurioje iš šių vietų, Jūs padauginkite jį iš bet kokio 31 00:01:49,510 --> 00:01:53,820 pagrįsti jis yra, kad įtrauktumėte jį į viršų, ir Jūs gaunate dešimtosios. 32 00:01:53,820 --> 00:01:57,930 Taigi, tai, kaip galite tikėtis iki 5 dvejetainiu. 33 00:01:57,930 --> 00:02:01,400 Tiesiog patinka tai, ką mes darome dėl paskutinę skaidrę, tai yra, kaip tai darytumėte 34 00:02:01,400 --> 00:02:02,650 atstovauti nuo 1 iki 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Be to, kaip jūs galite pridėti ir atimti iš dešimtosios arba pagrįsti 10, arba 37 00:02:09,660 --> 00:02:13,040 tikrai bet pagrindas, ant gali pridėti ir atimti iš dvejetainis. 38 00:02:13,040 --> 00:02:18,400 Būtent tai, ko galima tikėtis, kai jūs pridėti du aukštyn, jeigu ji yra lygi daugiau 39 00:02:18,400 --> 00:02:24,220 nei 1, vykdote 1, kad ji 0, ir daryti to, kad taip, tiesiog 40 00:02:24,220 --> 00:02:29,910 kaip būtų galima tikėtis su reguliariai dešimtainis arba bet koks kitas pagrindas. 41 00:02:29,910 --> 00:02:30,970 Cool. 42 00:02:30,970 --> 00:02:35,140 >> Taigi, kaip minėjau anksčiau, viskas, kas eina pagal mūsų kompiuterio gaubtu 43 00:02:35,140 --> 00:02:37,560 daroma 0 s ir 1 s, arba dvejetainis. 44 00:02:37,560 --> 00:02:43,470 Taigi, kaip mes išreiškiame, pavyzdžiui, raidės ar skaičiai, arba simboliai? 45 00:02:43,470 --> 00:02:45,560 Ir atsakymas į šį yra ASCII. 46 00:02:45,560 --> 00:02:49,380 >> ASCII yra tarp simbolių priskyrimas kad mes paprastai pamatyti 47 00:02:49,380 --> 00:02:53,360 Anglų kalba, kaip savo, B, C 's, pabrėžti, brūkšneliai, ir 48 00:02:53,360 --> 00:02:54,910 nieko panašaus. 49 00:02:54,910 --> 00:02:57,260 Ir tai, kad žemėlapiai į ASCII reikšmė. 50 00:02:57,260 --> 00:03:03,080 ASCII reikšmė yra tik numeris, gali būti suprantamas jūsų kompiuteryje. 51 00:03:03,080 --> 00:03:07,430 Ir kaip jūs galite padaryti papildymą ir atimtis su numeriais, tai galite padaryti 52 00:03:07,430 --> 00:03:10,890 juos su ASCII reikšmes. 53 00:03:10,890 --> 00:03:14,050 >> Taigi šiame pavyzdyje, ką ar tai atsispausdinti? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Taip, taip, tik erdvė B erdvė C erdvė D. Kur mano pele eiti? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Atkreipkite dėmesį, jūs galite nustatyti int 65. 58 00:03:43,380 --> 00:03:47,080 Ir kai spausdinate, kad naudojant procentų, C, jis bus išaiškinti, kad 59 00:03:47,080 --> 00:03:49,330 charakteris ir bus išspausdinti A. 60 00:03:49,330 --> 00:03:52,800 >> Be to, Jūs galite deklaruoti tai kaip char. 61 00:03:52,800 --> 00:03:56,860 Ir kai jūs jį atspausdinti naudojant procentų C, jis bus išaiškinti, kad 62 00:03:56,860 --> 00:04:05,240 procentų D. Ir kaip jūs galite pridėti skaičius, galite įdėti simboliai 63 00:04:05,240 --> 00:04:06,878 ASCII vertės, šiuo atveju. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Taigi mažai žymeklis visiems. 66 00:04:16,130 --> 00:04:19,610 5, kaip eilutė, ne faktiškai lygus 5. 67 00:04:19,610 --> 00:04:26,610 Taigi, kaip gali mes konvertuoti styginių 5 iki sveikojo skaičiaus 5? 68 00:04:26,610 --> 00:04:28,930 Any ideas? 69 00:04:28,930 --> 00:04:31,630 Taip. 70 00:04:31,630 --> 00:04:36,720 >> Taigi, jei mes turime 5 kaip eilutę, mes galime atimti 0. 71 00:04:36,720 --> 00:04:37,820 Ir tai bus mums 5. 72 00:04:37,820 --> 00:04:41,670 Ir panašiai, jei mes turime 5 kaip sveikasis skaičius, tai pridėti prie eilutės 0. 73 00:04:41,670 --> 00:04:43,112 Ir tai suteikia mums eilutę 5. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Cool. 76 00:04:48,350 --> 00:04:52,940 >> Dabar prisiminti atgal į paskaitą viena, kai mes kalbėjome apie algoritmus. 77 00:04:52,940 --> 00:04:57,260 Taigi, kaip mes iš tikrųjų norime kompiuterį padaryti įdomių dalykų? 78 00:04:57,260 --> 00:05:00,460 Žinai, tiesiog pridedant ir atimant Skaičiai ir spausdinimo dalykų iš ne 79 00:05:00,460 --> 00:05:01,730 kad įdomu. 80 00:05:01,730 --> 00:05:04,620 Paprastai, mes norime, kad mūsų kompiuterio į atlikti tam tikrą algoritmą natūra. 81 00:05:04,620 --> 00:05:07,820 Kažkas šiek tiek sudėtingesnis ne tik paprasto aritmetinio. 82 00:05:07,820 --> 00:05:11,930 >> Algoritmas yra tiesiog po žingsnio rinkinys žingsnis instrukcijų, skirtų, kaip atlikti 83 00:05:11,930 --> 00:05:14,640 tikras task-- 84 00:05:14,640 --> 00:05:15,660 tiesiog patinka receptą. 85 00:05:15,660 --> 00:05:19,990 Jūs galite prisiminti pirmąją dieną klasė, kurioje Dovydas mums tikėtis kambarį 86 00:05:19,990 --> 00:05:22,550 žmonių ir kiek žmonių buvo į kambarį. 87 00:05:22,550 --> 00:05:24,480 Jums gali būti naudojama skaičiuojant vieną. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 Tokiu atveju, linijinis laikas algoritmas. 90 00:05:28,010 --> 00:05:31,710 >> Dovydas pristatė už algoritmą Jums suskaičiuoti į kambarį žmones 91 00:05:31,710 --> 00:05:37,340 kur kiekvienas atsistoja, jums pasakyti savo skaičius kitam asmeniui, pridėti, kad 92 00:05:37,340 --> 00:05:39,200 skaičius iki, ir vienas asmuo atsisėda. 93 00:05:39,200 --> 00:05:40,410 Ir jūs tai pakartoti. 94 00:05:40,410 --> 00:05:42,910 Štai vieno tipo algoritmas. 95 00:05:42,910 --> 00:05:47,520 Mes galime analizuoti kaip veiksmingą an algoritmas yra pagrįsta tai paleisti laiką. 96 00:05:47,520 --> 00:05:49,680 Bet mes kalbame šiek tiek daugiau apie tai vėliau. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Taigi visi algoritmai taip pat gali būti parašyta Pseudocode. 99 00:05:57,090 --> 00:06:01,120 Pseudocode yra tik kaip Anglų sintaksė naudojamas atstovauti 100 00:06:01,120 --> 00:06:02,420 programavimo kalba. 101 00:06:02,420 --> 00:06:06,070 Pavyzdžiui, jei mes norėjome paklausti vartotoją atspėti mano mėgstamiausia numerį, mes 102 00:06:06,070 --> 00:06:08,390 gali turėti Pseudocode kaip tokios. 103 00:06:08,390 --> 00:06:09,850 >> Gauti vartotojai atspėti. 104 00:06:09,850 --> 00:06:13,570 Jei spėjimas teisingas, pasakykite jiems, jie teisingi, nors pasakykite jiems 105 00:06:13,570 --> 00:06:15,560 jie nėra teisingi. 106 00:06:15,560 --> 00:06:22,530 Ir Pseudocode yra lengvai būdas atstovaujančių idėją ar algoritmą. 107 00:06:22,530 --> 00:06:26,910 Taigi dabar mes norime, kad iš tikrųjų rašyti tai kalba, kad kompiuteris 108 00:06:26,910 --> 00:06:27,980 might supratimas. 109 00:06:27,980 --> 00:06:35,660 Taigi, mes galime rašyti mūsų Pseudocode ir interpretuoti, kad į kodą. 110 00:06:35,660 --> 00:06:41,320 >> Iki šiol, kodo turi laikytis tam tikrą sintaksės 111 00:06:41,320 --> 00:06:42,490 programavimo kalba. 112 00:06:42,490 --> 00:06:45,430 Ir iki šiol, į CS50, mes naudoja daugiausia c. 113 00:06:45,430 --> 00:06:48,320 Taigi tai gali būti šaltinis kodas c. 114 00:06:48,320 --> 00:06:51,440 Vėliau kurse, jūs naktį ateiti kontakto su kitais programavimo 115 00:06:51,440 --> 00:06:52,480 kalbos kaip PHP. 116 00:06:52,480 --> 00:06:57,540 Arba, jei jūs net imtis kitų klasių, jums gali padaryti Java, Python, ar net OCML. 117 00:06:57,540 --> 00:07:01,570 Bet mūsų c programos kalba, tai kaip mes galime rašyti kodą už 118 00:07:01,570 --> 00:07:04,760 Pseudocode algoritmas, Aš tiesiog aprašyta anksčiau. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Taigi, kaip jūsų kompiuteris iš tikrųjų suprasti, kad? 121 00:07:11,430 --> 00:07:14,490 Kaip ir sakiau anksčiau, tai tik tikrai supranta nuliai ir tie. 122 00:07:14,490 --> 00:07:17,880 Taigi, kaip tai gauti iš šaltinio kodas į kažką, kad gali būti 123 00:07:17,880 --> 00:07:18,960 suprantamas? 124 00:07:18,960 --> 00:07:22,920 Na, mes turime kažką vadinamas sudarytojas. 125 00:07:22,920 --> 00:07:28,450 >> Jei prisimenate atgal didžiąją dalį savo psets, jūs turėjote tam tikrą programą natūra 126 00:07:28,450 --> 00:07:30,370 parašyta dot c failą. 127 00:07:30,370 --> 00:07:32,550 Ir tada jums reikės įvesti markę. 128 00:07:32,550 --> 00:07:35,970 Taigi, kas yra, kad daro? 129 00:07:35,970 --> 00:07:39,970 >> Galite įvesti markę sudaryti savo programa, nes someone-- 130 00:07:39,970 --> 00:07:42,730 kas rašė savo p rinkinį; tikriausiai David-- 131 00:07:42,730 --> 00:07:44,190 sukūrė makiažą failą. 132 00:07:44,190 --> 00:07:51,320 Ir tai pasako, kad žinoti, paleisti sudarytojas, vadinamas Zaszczękać, kad valia 133 00:07:51,320 --> 00:07:55,560 tada sudaryti savo kodą prieštarauti kodas, kuris yra nulių ir 134 00:07:55,560 --> 00:07:57,720 kad jūsų kompiuteris supranta. 135 00:07:57,720 --> 00:08:01,610 Bet šiek tiek vėliau, mes galėsime eiti išsamiau apie kompiliatorius. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Taigi prisiminti pset 0, where-- taip, turite klausimų? 138 00:08:10,800 --> 00:08:11,620 >> PUBLIKA: [nesigirdi]? 139 00:08:11,620 --> 00:08:12,490 >> SPEAKER 1: Taip. 140 00:08:12,490 --> 00:08:14,960 Manau, kad jie iš tikrųjų turėtų būti internete. 141 00:08:14,960 --> 00:08:15,120 Taip. 142 00:08:15,120 --> 00:08:16,572 >> PUBLIKA: Ar tai kaip [nesigirdi]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> SPEAKER 1: Tai ne. 145 00:08:20,830 --> 00:08:25,810 Yra cs50.net/quizzes. 146 00:08:25,810 --> 00:08:32,900 >> PUBLIKA: Slash viktorinos, velniop 2013, Slash 0, ir tiesiog spustelėkite per 147 00:08:32,900 --> 00:08:35,956 viktorinos 2013 ir viktorinos 0, peržiūrėti skyrių skaidres. 148 00:08:35,956 --> 00:08:40,380 >> SPEAKER 1: Taip, todėl, jei jus vaikinai nori patraukite jį aukštyn ir žiūrėti į jį ant jūsų 149 00:08:40,380 --> 00:08:42,740 savo kompiuteryje, tai gerai. 150 00:08:42,740 --> 00:08:43,130 Pasakykite, kad dar kartą. 151 00:08:43,130 --> 00:08:44,546 >> PUBLIKA: [nesigirdi]. 152 00:08:44,546 --> 00:08:48,780 >> SPEAKER 1: Taip, [nesigirdi] yra fiktyvus kintamasis. 153 00:08:48,780 --> 00:08:49,644 Ak, taip? 154 00:08:49,644 --> 00:08:51,372 >> PUBLIKA: [nesigirdi]? 155 00:08:51,372 --> 00:08:54,300 >> KOLONĖLIŲ 1: Nėra, streikai yra ne egzaminą. 156 00:08:54,300 --> 00:08:55,950 Atsiprašome, jos klausimas buvo, buvo streikai dėl egzamino. 157 00:08:55,950 --> 00:08:59,530 Ir tai ne. 158 00:08:59,530 --> 00:09:05,780 Taigi pset 0, vaikinai turėtų turėti visi įgyvendinti kažką naudojant nulio. 159 00:09:05,780 --> 00:09:13,100 Ir mes sužinojome keletą pagrindinių statybiniai blokai, naudojant nulio. 160 00:09:13,100 --> 00:09:15,590 >> Taigi leiskite pažvelgti kai atrodo Šių blokų 161 00:09:15,590 --> 00:09:18,170 kad sudaro programą. 162 00:09:18,170 --> 00:09:20,570 Pirmasis yra Būlio išraiška. 163 00:09:20,570 --> 00:09:24,540 Būlio išraiškos yra tie, ir 0 s ar nieko, kad turi 164 00:09:24,540 --> 00:09:25,700 dvi galimos reikšmės. 165 00:09:25,700 --> 00:09:30,320 Šiuo atveju, teisinga, ar klaidinga, įjungti arba išjungti, ir taip arba ne. 166 00:09:30,320 --> 00:09:35,390 Iš paprastos, labai paprastas pavyzdys, programa, kuri naudoja Būlio 167 00:09:35,390 --> 00:09:39,140 išraiška čia. 168 00:09:39,140 --> 00:09:43,220 >> Taigi tam, kad Būlio išraiškas būti naudinga, turime loginius operatorius. 169 00:09:43,220 --> 00:09:48,920 Tai yra operatoriai, kurie gali būti naudojami palyginti tam tikras vertybes. 170 00:09:48,920 --> 00:09:52,820 Taigi, mes turime ir ar nėra lygus, mažiau nei arba lygus arba didesnis 171 00:09:52,820 --> 00:09:55,130 lygūs, ir mažiau nei arba didesnis. 172 00:09:55,130 --> 00:09:59,060 Tačiau šie subjektai nėra labai naudinga nebent mes galime sujungti juos į 173 00:09:59,060 --> 00:10:00,320 sąlygos. 174 00:10:00,320 --> 00:10:04,370 >> Taigi vaikinai gali prisiminti iš naujo ir iš savo p nustato, kad mes 175 00:10:04,370 --> 00:10:05,400 turėjo sąlygas. 176 00:10:05,400 --> 00:10:09,710 Jie, iš esmės, kaip ir šakutės iš jūsų programos logika, kad 177 00:10:09,710 --> 00:10:12,670 vykdo priklausomai nuo to, ar sąlyga yra įvykdyta. 178 00:10:12,670 --> 00:10:18,150 Taigi viena iš sąlygų, kad mes turėjome naudojama daug kartų šiame kurse yra 179 00:10:18,150 --> 00:10:21,470 jei kitur, jei ir kitur sąlygos. 180 00:10:21,470 --> 00:10:24,060 >> Štai kaip pavyzdys galite naudoti, kad. 181 00:10:24,060 --> 00:10:28,430 Ar kas nors žino skirtumą tarp tik naudojant if visų 182 00:10:28,430 --> 00:10:32,530 kelią žemyn eilutėmis, jei kitur, jei ir kitur kartu? 183 00:10:32,530 --> 00:10:33,013 Taip? 184 00:10:33,013 --> 00:10:34,263 >> PUBLIKA: [nesigirdi]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> SPEAKER 1: Būtent. 187 00:10:42,160 --> 00:10:50,210 Taigi, jei aš turėjo, jei viskas iki galo tai būdas, net jei ši sąlyga grąžą 188 00:10:50,210 --> 00:10:52,800 tiesa, jis bus dar toliau išbandyti kitą du. 189 00:10:52,800 --> 00:11:00,120 Kadangi su kita-, jei, kaip kitur pareiškimą, jei vienas grąžina true, 190 00:11:00,120 --> 00:11:02,640 kiti nėra patikrinta. 191 00:11:02,640 --> 00:11:05,955 Bet apie tai klausimai? 192 00:11:05,955 --> 00:11:06,890 Cool. 193 00:11:06,890 --> 00:11:12,240 >> Taigi jūs naudojate, jei-kitas, kurio kitur teiginys, jei žinote, kad jis gali tik 194 00:11:12,240 --> 00:11:14,470 būti vienas iš šių atvejų. 195 00:11:14,470 --> 00:11:21,550 Taigi mes žinome, jei x yra mažesnis nei 0, tai tikrai nesiruošia būti 196 00:11:21,550 --> 00:11:22,890 didesnis už 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Kitas, kita statybinis blokas kad mes sužinojome, yra kilpos. 199 00:11:31,480 --> 00:11:33,310 Turime trijų rūšių kilpos. 200 00:11:33,310 --> 00:11:35,830 Dėl kilpų, o kilpos, ir daryti, o kilpų. 201 00:11:35,830 --> 00:11:38,730 Ir apskritai, kai tu sėdi rašyti kažką, jūs turite nuspręsti, 202 00:11:38,730 --> 00:11:40,060 kuri iš trijų, kurį norite naudoti. 203 00:11:40,060 --> 00:11:41,900 Taigi, kaip mes nuspręsti, kuris vienas? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Mes paprastai naudoti už linijos, jei mes žinome, Kiek kartų mes norime pakartoti 206 00:11:48,790 --> 00:11:53,650 per kažką arba kiek kartų mes norime atlikti užduotį. 207 00:11:53,650 --> 00:11:58,830 Mes naudojame o kilpos, jei mes turime kai sąlyga, kad būtų tiesa nuolat veikia. 208 00:11:58,830 --> 00:12:03,730 Ir mes naudojame daryti, o labai panaši į o, bet mes norime, kad mūsų kodui veikti ne 209 00:12:03,730 --> 00:12:04,880 bent vieną kartą. 210 00:12:04,880 --> 00:12:09,410 >> Taigi, tai, o tai, kas yra į darbų bus visada paleisti bent vieną kartą. 211 00:12:09,410 --> 00:12:13,120 Kadangi, siekiant laiką, jį negali paleisti visus, jei 212 00:12:13,120 --> 00:12:15,490 sąlyga nėra įvykdyta. 213 00:12:15,490 --> 00:12:16,740 Bet kokie sutapimai su kad klausimai? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Taigi struktūra už linijos. 216 00:12:22,860 --> 00:12:23,620 Vaikinai visi matė tai. 217 00:12:23,620 --> 00:12:25,320 Jūs inicijuoti jį. 218 00:12:25,320 --> 00:12:26,600 Jūs turite tam tikrą būklę natūra. 219 00:12:26,600 --> 00:12:32,340 Taigi, pavyzdžiui, mes galime inicijuoti kaip i lygi 0. 220 00:12:32,340 --> 00:12:34,040 i yra mažesnis nei 10. 221 00:12:34,040 --> 00:12:35,442 Ir i ++. 222 00:12:35,442 --> 00:12:39,010 Labai paprasta, kad mes padarėme. 223 00:12:39,010 --> 00:12:42,210 >> Dėl while cikle, taip pat, jūs turite turėti tam tikrą iniciacijos natūra, 224 00:12:42,210 --> 00:12:44,980 kai sąlyga natūra, ir kai atnaujinimo natūra. 225 00:12:44,980 --> 00:12:51,990 Taigi, mes galime įgyvendinti savo už linijos, taip pat kaip while cikle naudojant tai. 226 00:12:51,990 --> 00:12:56,000 Ir panašiai su do while cikle, mes galime turėti tam tikrą iniciacijos, 227 00:12:56,000 --> 00:12:58,640 vykdyti kažką, jį atnaujinti, o tada patikrinkite būklę. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Taigi, dabar veikia. 230 00:13:05,140 --> 00:13:06,460 Mes viską kartu. 231 00:13:06,460 --> 00:13:10,140 Mes galime norite rašyti kai rūšies funkcija. 232 00:13:10,140 --> 00:13:12,790 Bendra funkcija, kuri jums gali mačiau jau yra pagrindinis. 233 00:13:12,790 --> 00:13:13,770 Pagrindinis yra funkcija. 234 00:13:13,770 --> 00:13:16,160 Jis turi grįžimo tipo, int. 235 00:13:16,160 --> 00:13:18,470 Jis turi funkciją pavadinimą, pagrindinį. 236 00:13:18,470 --> 00:13:20,810 Ir ji turi argumentų argc ir argv. 237 00:13:20,810 --> 00:13:24,040 Taigi pagrindinis yra tik funkcija. 238 00:13:24,040 --> 00:13:27,230 >> Kitos funkcijos, kurias gali turėti naudojami, printf-- printf yra function-- 239 00:13:27,230 --> 00:13:29,330 GetInt, toupper. 240 00:13:29,330 --> 00:13:32,010 Bet tai atsitiks jau įgyvendintos mums 241 00:13:32,010 --> 00:13:33,270 kai bibliotekoje natūra. 242 00:13:33,270 --> 00:13:37,400 Jei vaikinai prisiminti įskaitant tai CS50.h biblioteka arba 243 00:13:37,400 --> 00:13:38,510 standartinis I / O biblioteka. 244 00:13:38,510 --> 00:13:39,200 Taip, klausimas? 245 00:13:39,200 --> 00:13:41,610 >> PUBLIKA: Ar pagrindinė tiesiog neatskiriamas c? 246 00:13:41,610 --> 00:13:44,740 Ar tai tiesiog rūšies [nesigirdi]? 247 00:13:44,740 --> 00:13:47,370 >> SPEAKER 1: klausimas yra jei pagrindinis yra neatskiriamas c. 248 00:13:47,370 --> 00:13:51,460 Ir taip, visos funkcijos turi pagrindinę funkciją. 249 00:13:51,460 --> 00:13:55,290 Tai tipo reikia kompiuterio žinoti, kur pradėti 250 00:13:55,290 --> 00:13:55,993 veikia kodą. 251 00:13:55,993 --> 00:13:58,108 >> PUBLIKA: Taigi jums nereikės [nesigirdi]? 252 00:13:58,108 --> 00:13:59,480 >> SPEAKER 1: Ne 253 00:13:59,480 --> 00:14:00,760 Visi kiti klausimai? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Cool. 256 00:14:04,770 --> 00:14:08,050 Taigi, kaip jūs galite naudoti funkciją kad parašyta, Jums taip pat gali 257 00:14:08,050 --> 00:14:10,380 parašyti savo funkciją. 258 00:14:10,380 --> 00:14:17,050 Tai funkcija, kuri kas nors gali parašiau apskaičiuoti tūrį 259 00:14:17,050 --> 00:14:18,395 iš q, pavyzdžiui. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Yra grįžimas čia, šiuo atveju int, mūsų funkcijos pavadinimas q ir mūsų 262 00:14:29,500 --> 00:14:31,360 parametrų sąrašas. 263 00:14:31,360 --> 00:14:34,550 >> Ir atminkite, kad turite įrašyti duomenis tipo parametro, kurį norite 264 00:14:34,550 --> 00:14:38,660 naudoti ar kitur funkcija nėra žinoti, kokios 265 00:14:38,660 --> 00:14:41,650 parametras turėčiau būti priimti. 266 00:14:41,650 --> 00:14:48,110 Taigi, šiuo atveju, mes norime sveikas kaip mūsų indėlis. 267 00:14:48,110 --> 00:14:50,390 Taigi, kodėl gali norime naudoti funkcijas? 268 00:14:50,390 --> 00:14:52,800 >> Visų pirma, puikus organizavimas. 269 00:14:52,800 --> 00:14:56,350 Jie padeda lūžti savo kodą į daugiau organizuotas gabaliukus ir padaryti 270 00:14:56,350 --> 00:14:57,960 būtų lengviau skaityti. 271 00:14:57,960 --> 00:14:59,760 Supaprastinimas. 272 00:14:59,760 --> 00:15:01,740 Tai gerai dizainas. 273 00:15:01,740 --> 00:15:04,570 Kai jūs skaitote kodo gabalas ir pagrindinė funkcija yra tikrai, 274 00:15:04,570 --> 00:15:07,750 tikrai ilgai, tai gali būti sunkiau priežastis apie tai, kas vyksta. 275 00:15:07,750 --> 00:15:11,710 Taigi, jei jūs ją padalyti į funkcijas, tai gali būti lengviau skaityti. 276 00:15:11,710 --> 00:15:12,750 Ir pakartotinai-gebėjimas. 277 00:15:12,750 --> 00:15:16,940 Jei turite kodo gabalą, kad manimi yra vadinama arba paleisti kelis kartus, 278 00:15:16,940 --> 00:15:20,690 vietoj perrašyti to kodekso 10 kartų savo pagrindinę funkciją, galite 279 00:15:20,690 --> 00:15:21,440 norite jį pakartotinai. 280 00:15:21,440 --> 00:15:25,740 Ir tada kiekvieną kartą jums reikia naudoti, kad kodo fragmentą, skambinkite funkciją. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Taigi dabar, jei mes prisimename atgal į nulio, mes taip pat kalbėjome apie keletą sąvokų, 283 00:15:35,380 --> 00:15:37,680 iš kurių vienas yra sriegimo. 284 00:15:37,680 --> 00:15:41,120 Tema yra daugybė, koncepcija sekos kodą 285 00:15:41,120 --> 00:15:43,040 vykdyti tuo pačiu metu. 286 00:15:43,040 --> 00:15:47,490 Taigi prisiminkite vieną dieną kur Dovydas vaikinai skaičius nuo skaičiaus 287 00:15:47,490 --> 00:15:48,440 žmonių kambaryje. 288 00:15:48,440 --> 00:15:50,550 >> Iš esmės, tai, kas vyksta apie tai visi jus vaikinai buvo 289 00:15:50,550 --> 00:15:52,370 veikia atskiras temas. 290 00:15:52,370 --> 00:15:55,540 Ir tie siūlai ateidavo kartu kažkiek atsakyti natūra. 291 00:15:55,540 --> 00:15:58,890 Panašiai Scratch, kai jūs turite kelis animacinius, galite 292 00:15:58,890 --> 00:16:01,070 turi katę ir šunį. 293 00:16:01,070 --> 00:16:08,770 Ir jie būtų vienu metu veikia savo scenarijus. 294 00:16:08,770 --> 00:16:10,020 Tai iš sriegimo pavyzdys. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> Ir kita koncepcija, kuri buvo pristatė nulio buvo įvykių. 297 00:16:18,000 --> 00:16:22,550 Ir įvykiai, kai keli dalys Jūsų kodas bendrauti vieni su kitais. 298 00:16:22,550 --> 00:16:26,840 Be nulio, tai buvo tada, kai Jūs naudojote Transliacija kontrolė ir Kai aš 299 00:16:26,840 --> 00:16:29,500 Gauti blokai. 300 00:16:29,500 --> 00:16:35,170 >> Ir taip pat, kad problemą, 4, matėme Šiek tiek įvykių, taip pat. 301 00:16:35,170 --> 00:16:38,250 Vaikinai galėjo naudoti Gevent biblioteka. 302 00:16:38,250 --> 00:16:42,450 Ir ten buvo funkcija waitForClick kuriame jūs laukėte 303 00:16:42,450 --> 00:16:44,300 kad vartotojas galėtų spustelėkite. 304 00:16:44,300 --> 00:16:47,870 Ir jūsų paspaudimas, šiuo atveju, būtų renginys ir laukti paspaudimu yra jūsų 305 00:16:47,870 --> 00:16:49,120 renginys prižiūrėtojas. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> Ir taip pat, visus veikia savo psets ir dirbti savo psets, jūs 308 00:16:58,630 --> 00:17:01,920 galėjo liestis su kai kurie iš šių komandų. 309 00:17:01,920 --> 00:17:05,579 Tai yra tai, ką jūs įvedėte į savo terminalo langą ar kokia langas 310 00:17:05,579 --> 00:17:12,119 kad rodo ant jūsų g redaguoti, iš esmės, naršyti savo kompiuteryje. 311 00:17:12,119 --> 00:17:19,440 >> Taigi, pavyzdžiui, LS sąrašai turinys kataloge. 312 00:17:19,440 --> 00:17:22,510 Padaryti katalogas sukuria naują aplanką. 313 00:17:22,510 --> 00:17:24,819 CD, pakeisti katalogas. 314 00:17:24,819 --> 00:17:28,400 RM, pašalinti, ištrina failą arba kai katalogas. 315 00:17:28,400 --> 00:17:31,050 Ir tada pašalinti katalogą pašalina katalogą. 316 00:17:31,050 --> 00:17:32,300 >> PUBLIKA: [nesigirdi]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> SPEAKER 1: Taip, tikrai. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Atsiprašome, klausimas buvo, jei jums siūlyčiau pradėti tai 321 00:17:46,040 --> 00:17:48,840 ant apgauti lape. 322 00:17:48,840 --> 00:17:49,440 Tai galėtų padėti. 323 00:17:49,440 --> 00:17:51,490 Jei turite kambarį, galite įdėti ją. 324 00:17:51,490 --> 00:17:56,170 Tai taip pat tik paprastai pakankamai gera prisiminti, nes kai jūs jį naudoti 325 00:17:56,170 --> 00:17:59,060 galbūt norėsite tiesiog jį įsiminė. 326 00:17:59,060 --> 00:18:02,750 Tai bus padaryti jūsų gyvenimą daug paprasčiau. 327 00:18:02,750 --> 00:18:04,000 Ar galiu atsakyti į jūsų klausimą? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Taigi dabar mes kalbėjome šiek tiek Trumpai apie bibliotekose. 330 00:18:14,290 --> 00:18:18,570 Tačiau du pagrindiniai tie, kad mes buvome naudojant iki šiol žinoma yra 331 00:18:18,570 --> 00:18:20,860 standartinis I / O ir CS50. 332 00:18:20,860 --> 00:18:25,410 Kokios dalykų yra įtraukti standartinės I / O biblioteka? 333 00:18:25,410 --> 00:18:28,410 >> Taip, iki šiol mes naudojamas printf. 334 00:18:28,410 --> 00:18:31,150 Be CS50, mes naudojamas GetInt ir GetString. 335 00:18:31,150 --> 00:18:37,200 Ir duomenų tipas string taip atsitinka būti deklaruojamos šiame CS50 bibliotekoje. 336 00:18:37,200 --> 00:18:40,250 Mes kalbėsime šiek tiek daugiau gylis apie kaip bibliotekos darbą ir tai, kaip jie 337 00:18:40,250 --> 00:18:41,870 bendrauti su savo likusia kodas. 338 00:18:41,870 --> 00:18:46,220 Bet tie, yra du pagrindiniai tie, kad mes jau liečiasi su iki šiol 339 00:18:46,220 --> 00:18:48,430 Žinoma. 340 00:18:48,430 --> 00:18:50,050 >> Tipai. 341 00:18:50,050 --> 00:18:58,120 Tai yra gera prisiminti, kiek kiekvieno tipo atstovauja arba kaip 342 00:18:58,120 --> 00:19:02,840 daug baitų kiekvienam konstrukcijos requires-- 343 00:19:02,840 --> 00:19:04,990 int, 4 baitai; char, 1 baitas. 344 00:19:04,990 --> 00:19:06,550 Plūdės yra 4 baitai. 345 00:19:06,550 --> 00:19:07,782 Kas yra dvigubas? 346 00:19:07,782 --> 00:19:09,032 >> PUBLIKA: [nesigirdi]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> SPEAKER 1: Taip, taip, plūdė bet dvigubai dydį. 349 00:19:16,240 --> 00:19:17,150 Ką apie ilgai? 350 00:19:17,150 --> 00:19:18,400 >> PUBLIKA: [nesigirdi]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> SPEAKER 1: Gerai. 353 00:19:24,680 --> 00:19:25,410 Kas yra ilgai? 354 00:19:25,410 --> 00:19:26,660 >> PUBLIKA: [nesigirdi]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> SPEAKER 1: Taip, dvigubas int. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Taip. 359 00:19:34,705 --> 00:19:36,100 >> PUBLIKA: [nesigirdi]. 360 00:19:36,100 --> 00:19:38,030 >> SPEAKER 1: Ilgi [nesigirdi]. 361 00:19:38,030 --> 00:19:41,860 Ir tada ilgai ilgai dvigubai. 362 00:19:41,860 --> 00:19:42,814 >> PUBLIKA: Ne, ne. 363 00:19:42,814 --> 00:19:47,107 Kol yra tik vid. 364 00:19:47,107 --> 00:19:50,910 Tai priklauso nuo architektūros prieš [nesigirdi] 365 00:19:50,910 --> 00:19:52,922 ir int turi tą patį dydį. 366 00:19:52,922 --> 00:19:54,172 [Nesigirdi]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> SPEAKER 1: Taigi ilgas ir int yra tas pats. 369 00:20:00,920 --> 00:20:02,943 Ir tada ilgai ilgai yra dvigubai vid. 370 00:20:02,943 --> 00:20:03,910 Cool. 371 00:20:03,910 --> 00:20:05,550 Ir tada, kas yra paskutinis tipas? 372 00:20:05,550 --> 00:20:06,510 >> PUBLIKA: pointer. 373 00:20:06,510 --> 00:20:10,350 >> SPEAKER 1: Taip, taip, mes sužinojome, Šiek tiek apie rodykles. 374 00:20:10,350 --> 00:20:14,015 Ir nepriklausomai nuo to, ką žymeklis nukreipta to-- ji galėtų būti char žvaigždė 375 00:20:14,015 --> 00:20:15,880 ar int star-- 376 00:20:15,880 --> 00:20:20,530 ji visada 4 baitų rodyklė. 377 00:20:20,530 --> 00:20:21,633 Klausimai apie tai? 378 00:20:21,633 --> 00:20:22,116 Taip? 379 00:20:22,116 --> 00:20:24,531 >> PUBLIKA: [nesigirdi]? 380 00:20:24,531 --> 00:20:29,530 >> SPEAKER 1: Taigi ilgas ir int yra Šiame CS50 prietaiso pats. 381 00:20:29,530 --> 00:20:32,302 >> PUBLIKA: prietaisas yra visiškai sukeisti. 382 00:20:32,302 --> 00:20:33,510 >> SPEAKER 1: Taip. 383 00:20:33,510 --> 00:20:36,610 Taigi ilgai ilgai dvigubai vid. 384 00:20:36,610 --> 00:20:39,250 >> PUBLIKA: Tai 32-bit? 385 00:20:39,250 --> 00:20:40,620 >> SPEAKER 1: 32 bit, taip. 386 00:20:40,620 --> 00:20:43,572 >> PUBLIKA: Taigi [nesigirdi]? 387 00:20:43,572 --> 00:20:46,790 >> SPEAKER 1: Taip, jei jis nėra aiškiai pasakyti, jus 388 00:20:46,790 --> 00:20:47,870 turėtų prisiimti 32 bitų. 389 00:20:47,870 --> 00:20:50,040 >> PUBLIKA: Tai ką pasakyti kaip prielaidą 390 00:20:50,040 --> 00:20:51,498 architektūra, kaip prietaiso. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 Dėl 64 bitų, tik tai, kas kaita yra ilgi ir patarimų. 393 00:21:01,710 --> 00:21:05,614 Jie abu [nesigirdi]. 394 00:21:05,614 --> 00:21:06,590 >> SPEAKER 1: Taip? 395 00:21:06,590 --> 00:21:07,566 >> PUBLIKA: Klausimas. 396 00:21:07,566 --> 00:21:10,982 Taigi vienu iš praktikos viktorinos, jis klausia apie beženklis tarpt. 397 00:21:10,982 --> 00:21:15,374 Taigi, kaip norėčiau, kad būtų nustatytas iš int [nesigirdi]? 398 00:21:15,374 --> 00:21:18,140 >> SPEAKER 1: unsigned į tai, taip pat 4 baitai. 399 00:21:18,140 --> 00:21:21,172 Bet kas skiriasi apie pasirašytas int ir unsigned int? 400 00:21:21,172 --> 00:21:22,422 >> PUBLIKA: [nesigirdi]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> SPEAKER 1: Teisingai. 403 00:21:25,630 --> 00:21:27,570 Vienas gali atstovauti neigiamas reikšmes. 404 00:21:27,570 --> 00:21:28,580 Bet kaip tai padaryti? 405 00:21:28,580 --> 00:21:30,536 >> PUBLIKA: [nesigirdi]. 406 00:21:30,536 --> 00:21:36,370 >> SPEAKER 1: Taip, ji taupo 1 tiek atstovauti ženklą. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 Pasirašė turi vieną tiek, kad atstovauja ženklas. 409 00:21:45,040 --> 00:21:48,886 Ir nepasirašytas tiesiog visi teigiami. 410 00:21:48,886 --> 00:21:50,365 >> PUBLIKA: Gerai. 411 00:21:50,365 --> 00:21:54,230 Taigi jūs sakote, kad dvigubas yra du kartus iš plūdės dydis? 412 00:21:54,230 --> 00:21:58,202 >> SPEAKER 1: Double dvigubai iš plūdės dydis, taip. 413 00:21:58,202 --> 00:22:01,639 >> PUBLIKA: Kaip rodyklę į ilgai ilgai [nesigirdi]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> SPEAKER 1: Taigi klausimas yra, kaip veikia į ilgą long-- žymeklis 416 00:22:10,870 --> 00:22:13,800 Kaip tai tik keturi baitai Kada ilgai ilgai jos 8 baitai. 417 00:22:13,800 --> 00:22:17,310 Taigi prisiminti, kas yra žymeklis, iš esmės, tuo labai bazinės vertės. 418 00:22:17,310 --> 00:22:19,046 >> PUBLIKA: [nesigirdi]. 419 00:22:19,046 --> 00:22:22,670 >> SPEAKER 1: Taip, taip, žymeklis yra tik atminties. 420 00:22:22,670 --> 00:22:28,040 Taigi nesvarbu, kaip daug vietos kad žymeklis būtų nukreipta į. 421 00:22:28,040 --> 00:22:32,060 Tai tik reikia 4 baitų sekti tos atminties vietos. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Visi kiti klausimai? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Cool. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Taigi paskutinis dalykas, aš turiu yra standartinė produkcija. 428 00:22:47,460 --> 00:22:51,020 Jūs turėtumėte naudoti juos dažnai pakankamai, kad jūs galite prisiminti. 429 00:22:51,020 --> 00:22:54,800 Bet tai kai mes naudojame printf, pavyzdžiui. 430 00:22:54,800 --> 00:22:59,260 Ir mes turime šiuos rezervuotų kad buvo vadinamas formato kodai. 431 00:22:59,260 --> 00:23:03,910 >> Taigi proc c char, proc I int, ir mes taip pat galime naudoti procentų r. 432 00:23:03,910 --> 00:23:05,130 Tai tas pats dalykas. 433 00:23:05,130 --> 00:23:08,200 Bet, apskritai, į CS50 mes pabandykite naudoti procentų i. 434 00:23:08,200 --> 00:23:09,860 Procentas f už plūdės. 435 00:23:09,860 --> 00:23:15,620 Procentas ld ilgai ilgai ir proc s eilutę. 436 00:23:15,620 --> 00:23:18,550 >> Be to, mes jau naudojate kelias Šių sekas pabėgti. 437 00:23:18,550 --> 00:23:22,431 Pavyzdžiui, backslash n naujosios linijos. 438 00:23:22,431 --> 00:23:26,910 Tai tik dėl kai jūs formatavimą Jūsų kodas spausdinimo f. 439 00:23:26,910 --> 00:23:27,260 Taip? 440 00:23:27,260 --> 00:23:28,906 >> PUBLIKA: Kas yra procentai D? 441 00:23:28,906 --> 00:23:31,850 >> SPEAKER 1: Taigi klausimas yra tai, kas yra procentai D? 442 00:23:31,850 --> 00:23:33,270 Procentas d yra int. 443 00:23:33,270 --> 00:23:37,392 Procentas d ir proc i yra tas pats. 444 00:23:37,392 --> 00:23:41,130 >> PUBLIKA: Kas skirtumas tarp Backslash n ir Backslash r? 445 00:23:41,130 --> 00:23:45,300 >> SPEAKER 1: Taigi klausimas yra tai, kas skirtumas tarp tarpo n ir 446 00:23:45,300 --> 00:23:48,615 tarpelis r? 447 00:23:48,615 --> 00:23:50,906 Manau backslash r is-- 448 00:23:50,906 --> 00:23:54,340 >> PUBLIKA: Taigi Backslash r tiesiog reiškia, grįžta į eilutės pradžią 449 00:23:54,340 --> 00:23:56,670 be iš tikrųjų vyksta į naują eilutę. 450 00:23:56,670 --> 00:24:01,000 Taigi, jei galite išspausdinti backslash r ir jūs grįžti į eilutės pradžią 451 00:24:01,000 --> 00:24:04,005 tada jums spausdinti daugiau stuff, jūs perrašyti stuff, kad yra jau 452 00:24:04,005 --> 00:24:04,390 [Nesigirdi]. 453 00:24:04,390 --> 00:24:06,725 Kadangi n tikrųjų eina į naują linija ir eina į [nesigirdi]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> SPEAKER 1: Na, bet kokie kiti klausimai? 456 00:24:13,915 --> 00:24:15,430 Viskas gerai. 457 00:24:15,430 --> 00:24:18,617 Aš ruošiuosi perduoti jį išjungti Danas, kuris tęsis. 458 00:24:18,617 --> 00:24:25,078 >> [Plojimai] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> DAN: Visi righty. 461 00:25:09,720 --> 00:25:18,590 Taigi aš kalbėti apie kitą pločio diapazonas idėjų iš klasės, kad yra 462 00:25:18,590 --> 00:25:23,220 maždaug atstovas dvi savaites ir Savaitės trijų pradžia pradedant važiuoti 463 00:25:23,220 --> 00:25:28,690 su liejimo, kuri yra tik iš būdų gydant vertę tam tikro tipo kaip 464 00:25:28,690 --> 00:25:30,830 vertė skirtingo tipo. 465 00:25:30,830 --> 00:25:34,110 Taigi, mes galime tai padaryti su simbolių į ints, plūdes į int, ir 466 00:25:34,110 --> 00:25:35,360 long long padvigubinti. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Visi šie dalykai gali būti naudojamas kaip būdų gydant kai skaitinė vertė 469 00:25:44,500 --> 00:25:48,370 atėmus char kaip kai kurie kiti skaitinė vertė. 470 00:25:48,370 --> 00:25:54,480 Taigi yra keletas klausimų, su šiuo, iš Žinoma, kuris ateina, kai jums mesti 471 00:25:54,480 --> 00:25:57,860 dalykų, pavyzdžiui, plaukti int. 472 00:25:57,860 --> 00:26:00,500 Taigi, tai yra šiek tiek keista. 473 00:26:00,500 --> 00:26:03,170 Mes turime plūdę, kuri yra 1,31. 474 00:26:03,170 --> 00:26:05,220 Mes padauginkite jį iš 10.000. 475 00:26:05,220 --> 00:26:08,380 Ir tada mes atsispausdinti jį kaip int. 476 00:26:08,380 --> 00:26:09,630 Ką šis išėjimas? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 10.000 kartų 1.31. 479 00:26:14,020 --> 00:26:18,761 Taigi 13.000, yra tai, kad atspėti? 480 00:26:18,761 --> 00:26:20,685 >> PUBLIKA: manau, kad tai 10,000. 481 00:26:20,685 --> 00:26:24,234 >> DAN: Taigi, aš padauginus 10000 prieš aš liejimo jį. 482 00:26:24,234 --> 00:26:25,202 >> PUBLIKA: O. 483 00:26:25,202 --> 00:26:27,622 Ar ne ten būti vienas 9 o kai 0 numeriai? 484 00:26:27,622 --> 00:26:29,270 >> DAN: Galbūt kažkokiam keistam skaitmenų. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Taigi teisinga, tai 1,3 karto 10.000. 487 00:26:37,670 --> 00:26:40,040 Štai 13.000. 488 00:26:40,040 --> 00:26:41,313 Ir tai papildomai weird-- 489 00:26:41,313 --> 00:26:42,160 >> PUBLIKA: 13.100. 490 00:26:42,160 --> 00:26:42,650 >> DAN: 13.100. 491 00:26:42,650 --> 00:26:44,910 Ačiū, Rob. 492 00:26:44,910 --> 00:26:46,610 Ir tai papildomai weirdness-- 493 00:26:46,610 --> 00:26:48,060 tai 9,9-- 494 00:26:48,060 --> 00:26:53,860 Paprasčiausiai todėl, kad šios liejimo baigėsi apvalinant kur 495 00:26:53,860 --> 00:26:55,394 ji neturėtų turėti. 496 00:26:55,394 --> 00:26:55,871 Taip. 497 00:26:55,871 --> 00:26:58,256 >> PUBLIKA: liejimo nutiks po ko nors kito? 498 00:26:58,256 --> 00:27:03,865 >> DAN: Taigi, nes turiu tai spaudoje, tai daro šį dauginimąsi prieš jį 499 00:27:03,865 --> 00:27:05,230 daro šį liejimas. 500 00:27:05,230 --> 00:27:06,140 >> PUBLIKA: [nesigirdi]. 501 00:27:06,140 --> 00:27:11,350 >> DAN: Manau, kad tai būtų įmestas pirmas, Taip, tai būtų 10000. 502 00:27:11,350 --> 00:27:12,610 Kitoks? 503 00:27:12,610 --> 00:27:13,330 Cool. 504 00:27:13,330 --> 00:27:16,344 Taigi tai yra 13.099. 505 00:27:16,344 --> 00:27:17,840 Kodėl tai vyksta? 506 00:27:17,840 --> 00:27:18,900 Netikslumų. 507 00:27:18,900 --> 00:27:21,020 >> Plūdės nėra tobula. 508 00:27:21,020 --> 00:27:27,550 Jie gali tik atstovauti numerius tam tikras skaičius reikšminių skaitmenų. 509 00:27:27,550 --> 00:27:35,120 Taigi, jei mes atsispausdinti 8 SIG figų nuo tai plūdė, kurią mes gauname iš natūra 510 00:27:35,120 --> 00:27:36,800 negraži ieškote skaičius. 511 00:27:36,800 --> 00:27:45,580 Ir tai todėl, kad 1,31 negali tiksliai atstovauja paprastas 512 00:27:45,580 --> 00:27:49,000 įgaliojimai dviejų mašinoje. 513 00:27:49,000 --> 00:27:53,530 Taigi galų gale, atsižvelgiant arčiausiai atspėti, kuris baigiasi 514 00:27:53,530 --> 00:27:55,710 yra šiek tiek mažas. 515 00:27:55,710 --> 00:27:57,730 Padaryti jausmą? 516 00:27:57,730 --> 00:27:59,110 Gerai. 517 00:27:59,110 --> 00:28:05,840 >> Dabar, įjungus yra kitoks būdas daro sąlyginės ataskaitas, kuriose visų 518 00:28:05,840 --> 00:28:09,900 mes rūpinamės yra vienas kintamas. 519 00:28:09,900 --> 00:28:16,570 Taigi šiuo konkrečiu Pavyzdžiui, mes gauti žinutę iš vartotojo sveikasis skaičius. 520 00:28:16,570 --> 00:28:21,070 Ir tada mes ieškome ką, kad sveikasis skaičius yra. 521 00:28:21,070 --> 00:28:23,500 Matyt, tai skaičius tarp vieno ir keturių. 522 00:28:23,500 --> 00:28:24,800 Štai ką mes prašyti. 523 00:28:24,800 --> 00:28:28,450 >> Taigi jūs daug jungiklį kintamojo vardas. 524 00:28:28,450 --> 00:28:34,290 Tada jums sukurti atvejus galima vertina tai galėtų būti. 525 00:28:34,290 --> 00:28:37,730 Taigi byloje yra, sako, kad tai mažai. 526 00:28:37,730 --> 00:28:41,080 Ir tada jūs pertrauka išeiti jungiklio būklę taip 527 00:28:41,080 --> 00:28:43,270 Jūs neturite nesustoti. 528 00:28:43,270 --> 00:28:44,830 >> Kitame case-- 529 00:28:44,830 --> 00:28:46,940 taip du byla ir byla three-- 530 00:28:46,940 --> 00:28:51,920 jei tai atvejis du jis tiesiog nukrenta žemyn Pirmoji eilutė kodo ji mato, kaip su 531 00:28:51,920 --> 00:28:55,400 byloje trys, kol jis mato pertraukos. 532 00:28:55,400 --> 00:29:00,430 Taigi priežastis gausite bylą vieną į tik spausdinimo mažai, nes aš 533 00:29:00,430 --> 00:29:01,890 turėti šią pertrauką čia. 534 00:29:01,890 --> 00:29:05,360 Jei aš, tarkim, ignoravo šį break-- jei aš išmetė šį breakaway-- 535 00:29:05,360 --> 00:29:09,740 ji atsispausdinti mažas, ir tada jis būtų spausdinti vidurį, ir tada jis būtų sulaužyti. 536 00:29:09,740 --> 00:29:12,200 >> Taigi pertraukos svarbi Jungiklio sąlygas ir 537 00:29:12,200 --> 00:29:14,340 jie turėtų būti ten. 538 00:29:14,340 --> 00:29:20,070 Bet atvejai, kurie nėra aiškiai nurodyta, yra tvarkomi pagal nutylėjimą 539 00:29:20,070 --> 00:29:26,645 atvejis jungiklio ir turi būti išmestas. 540 00:29:26,645 --> 00:29:31,363 >> PUBLIKA: Taigi 1, 2, 3, ir 4 būtų n? 541 00:29:31,363 --> 00:29:33,310 >> DAN: Vertybės kad n gali būti. 542 00:29:33,310 --> 00:29:34,654 Taip. 543 00:29:34,654 --> 00:29:35,146 Taip? 544 00:29:35,146 --> 00:29:37,606 >> PUBLIKA: Taigi, kai jūs turite kad [nesigirdi]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> DAN: Galima būtų spausdinti mažas, ir tada būtų išspausdinti vidurį, ir 547 00:29:46,830 --> 00:29:47,400 tada jis bus pertrauka. 548 00:29:47,400 --> 00:29:50,244 >> PUBLIKA: Kodėl spausdinti viduryje, jei [nesigirdi]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> DAN: Taigi viskas pagal byloje prieš pertrauka patenka. 551 00:30:00,550 --> 00:30:09,390 Taigi atvejis vienas atspaudas po atvejis vienas kaip tai po spausdinimo. 552 00:30:09,390 --> 00:30:09,890 Taip? 553 00:30:09,890 --> 00:30:11,140 >> PUBLIKA: [nesigirdi]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> DAN: Taigi šis skaičius yra tik pirma vertė, kad šis kintamasis 556 00:30:22,170 --> 00:30:23,420 gali būti, tiesa? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 Ar tai prasminga? 559 00:30:28,490 --> 00:30:28,990 Taip. 560 00:30:28,990 --> 00:30:31,490 >> PUBLIKA: [nesigirdi]? 561 00:30:31,490 --> 00:30:34,130 >> DAN: Taip, atveju du atspausdins viduryje ir tada pertrauka. 562 00:30:34,130 --> 00:30:35,380 >> PUBLIKA: [nesigirdi]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> DAN: Manau, kad tokių yra? 565 00:30:40,050 --> 00:30:43,855 Ką kiti duomenų tipai galite perjungti? 566 00:30:43,855 --> 00:30:46,320 >> PUBLIKA: Jūs galite įjungti per bet duomenų tipų. 567 00:30:46,320 --> 00:30:50,905 Bet tai tik reiškia, nieko per simbolių ir ints ir stuff like that, nes 568 00:30:50,905 --> 00:30:55,600 jei esate pereinant rodyklę kad nėra prasmės, 569 00:30:55,600 --> 00:30:59,555 pereinant krovinį, jeigu jis net tegul Jūs tai padaryti, nes slankiojo kablelio 570 00:30:59,555 --> 00:31:02,840 tikslumo, jūs tikrai ne norite padaryti, kad vistiek. 571 00:31:02,840 --> 00:31:07,320 Taigi gana daug, tik ints ir simbolių ir stuff like that. 572 00:31:07,320 --> 00:31:12,360 >> DAN: Taip, tai yra, kai jūs turite aiškiai vertės, kad jūs žinote, aš manau, gali būti 573 00:31:12,360 --> 00:31:14,250 kad jungiklis yra iš tikrųjų naudinga. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Geras? 576 00:31:18,990 --> 00:31:21,370 Gerai. 577 00:31:21,370 --> 00:31:26,180 >> Taikymo sritis yra diapazonas, kad deklaruota kintamasis apima. 578 00:31:26,180 --> 00:31:32,190 Taigi šioje mažoje riekė kodas turiu, jis būtų pilnas klaidų. 579 00:31:32,190 --> 00:31:41,450 Ir priežastis yra tai, aš paskelbė šį int i pagal šią taikymo sritį už kilpos. 580 00:31:41,450 --> 00:31:46,390 Ir tada aš bandau nuoroda, kad i ne, kad kilpos taikymo sritį. 581 00:31:46,390 --> 00:31:50,330 >> Taigi, iš esmės, jūs galite galvoti apie taikymo sritį kaip nieko, kad jūs deklaruoti 582 00:31:50,330 --> 00:31:59,750 su viduje iš klamrami rinkinys tik egzistuoja tose klamrami. 583 00:31:59,750 --> 00:32:04,990 Ir jei bandysite ir naudoti šį kintamąjį, už tų klamrami, jums 584 00:32:04,990 --> 00:32:08,356 gauti iš kompiliatoriaus klaidą. 585 00:32:08,356 --> 00:32:08,812 Taip? 586 00:32:08,812 --> 00:32:09,724 >> PUBLIKA: Taigi tai vienas neveikia? 587 00:32:09,724 --> 00:32:11,790 >> DAN: Tai neveikia, taip. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Stygos. 590 00:32:18,660 --> 00:32:19,780 Styginių char *. 591 00:32:19,780 --> 00:32:22,250 Jie lygiai taip pat. 592 00:32:22,250 --> 00:32:25,540 Jie tiesiog rodykles simbolių. 593 00:32:25,540 --> 00:32:33,000 Ir bet stygos, kad jūs turite turėtų baigtis su backslash nulio, kuri yra tik 594 00:32:33,000 --> 00:32:34,410 c konvencija. 595 00:32:34,410 --> 00:32:36,680 >> Tai vadinama NULL terminatorius. 596 00:32:36,680 --> 00:32:39,050 Ir NULL-- 597 00:32:39,050 --> 00:32:41,670 kapitalas N kapitalas U kapitalas L, kapitalo L-- 598 00:32:41,670 --> 00:32:44,290 yra ne tas pats, kaip NULL terminatorius. 599 00:32:44,290 --> 00:32:46,640 Tai žymeklis. 600 00:32:46,640 --> 00:32:48,280 Tai personažas. 601 00:32:48,280 --> 00:32:49,530 Jie yra labai skirtingi. 602 00:32:49,530 --> 00:32:50,200 Prisiminti jį. 603 00:32:50,200 --> 00:32:52,320 Tai bus viktorinos, tikriausiai. 604 00:32:52,320 --> 00:32:54,040 Aš nemačiau viktorinoje. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Taip? 607 00:32:58,840 --> 00:33:01,232 >> PUBLIKA: Taigi NULL, tarkim, žymeklis? 608 00:33:01,232 --> 00:33:01,995 >> DAN: Taip. 609 00:33:01,995 --> 00:33:05,170 >> PUBLIKA: Ką [nesigirdi]? 610 00:33:05,170 --> 00:33:10,050 >> DAN: Jei, tarkim, malloc vadinamas kai jums neturi pakankamai atminties, kad gauti 611 00:33:10,050 --> 00:33:14,400 kokio dydžio jūs klausia, malloc grįš NULL. 612 00:33:14,400 --> 00:33:19,550 Tai, iš esmės, kai funkcija yra turėtų grįžti žymeklį, galite 613 00:33:19,550 --> 00:33:22,600 reikia patikrinti prieš NULL, nes NULL gana good-- 614 00:33:22,600 --> 00:33:25,260 tai, tarsi, šiukšlių vertė. 615 00:33:25,260 --> 00:33:27,050 Tai nulinis kiek rodykles eiti. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Kai skambinate funkciją, kad grąžina rodyklę. 618 00:33:32,250 --> 00:33:35,960 Jūs ketinate norite patikrinti, kad būtų Įsitikinkite, kad, kad žymiklis nėra NULL 619 00:33:35,960 --> 00:33:37,760 nes niekinis yra labai dažnas. 620 00:33:37,760 --> 00:33:40,160 Tai tarsi šiukšlių mainais. 621 00:33:40,160 --> 00:33:44,902 Taigi, jei kas nors nėjo į dešinę, tiesiog grįžti NULL vietoj. 622 00:33:44,902 --> 00:33:45,898 >> PUBLIKA: [nesigirdi]? 623 00:33:45,898 --> 00:33:48,922 >> DAN: Taip, ir tai yra tai. 624 00:33:48,922 --> 00:33:51,750 >> PUBLIKA: [nesigirdi]? 625 00:33:51,750 --> 00:33:52,800 >> DAN: Rašybos jį kaip šis. 626 00:33:52,800 --> 00:33:54,150 Tai NULL terminatorius. 627 00:33:54,150 --> 00:33:56,560 Tai mažosios raidės N-U-L-l, jei jūs paraidžiui jį. 628 00:33:56,560 --> 00:33:59,860 >> PUBLIKA: Ir aš tiesiog nuėjo atgal ir išbandyti jį. 629 00:33:59,860 --> 00:34:03,010 Ir jei jūs bandote įdėti slankiojo kablelio vertė į jungikliu, jis bus klykauti ne jums 630 00:34:03,010 --> 00:34:05,916 sakydamas, teiginys reikalauja išraiška iš sveikojo tipo. 631 00:34:05,916 --> 00:34:07,166 >> DAN: There you go. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Bet taip, kas vėl buvo klausimas? 634 00:34:12,246 --> 00:34:13,496 >> PUBLIKA: [nesigirdi]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> DAN: Taigi kapitalas N kapitalas U kapitalas L, kapitalas L yra tikrasis c dalykas. 637 00:34:23,679 --> 00:34:29,719 Tai NULL žymiklį ir bus būti traktuojami tik kaip pvz. 638 00:34:29,719 --> 00:34:33,530 Jums nebus kada nors pabandyti ir rašybos NULL pobūdį ir pamatyti, bet 639 00:34:33,530 --> 00:34:35,630 Kitas būdas, nei tai. 640 00:34:35,630 --> 00:34:36,610 Taip? 641 00:34:36,610 --> 00:34:42,490 >> PUBLIKA: Taigi grįžtant į char max arba kažkas pastabose, ar ji 642 00:34:42,490 --> 00:34:43,960 įkūnyti tą pačią funkciją kaip [nesigirdi]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> PUBLIKA: Taigi jūs nuoroda į grįžti char max nuo getchar arba 645 00:34:54,949 --> 00:34:55,444 kokia ji yra? 646 00:34:55,444 --> 00:34:55,940 >> PUBLIKA: Taip. 647 00:34:55,940 --> 00:34:58,620 >> PUBLIKA: Taip, taip, apskritai terminas visoms tų dalykų, 648 00:34:58,620 --> 00:34:59,920 yra kontroliniai dydžiai. 649 00:34:59,920 --> 00:35:03,640 Taigi, kaip grįžti int max nuo GetInt ir char max nuo getchar, tai 650 00:35:03,640 --> 00:35:06,010 turėtų būti kaip, gerai, jei šie dalykai grįžta į mus, 651 00:35:06,010 --> 00:35:07,210 kažkas negerai. 652 00:35:07,210 --> 00:35:09,950 >> Dėl rodyklės, mes tiesiog atsitikti, kad tai sarginių vertė, kad kiekvienas 653 00:35:09,950 --> 00:35:10,750 sutinka ant. 654 00:35:10,750 --> 00:35:13,210 Ir tai, ką jūs grįžti kai kas nors nesiseka. 655 00:35:13,210 --> 00:35:15,910 Taigi char max ką mes naudojame atstovauti kažką 656 00:35:15,910 --> 00:35:18,100 kaip NULL arba getchar. 657 00:35:18,100 --> 00:35:23,420 >> PUBLIKA: Taigi, jei jūs išbandyti getchar, gal galėtumėte tiesiog įdėti NULL? 658 00:35:23,420 --> 00:35:23,910 Ar tai padaryti skirtumą? 659 00:35:23,910 --> 00:35:25,400 >> DAN: Jūs galite ne tik patikrinti NULL. 660 00:35:25,400 --> 00:35:30,130 Jums tektų patikrinti char max, nes Grąžina reikšmę iš funkcija 661 00:35:30,130 --> 00:35:35,416 charakteris ne žymeklis. 662 00:35:35,416 --> 00:35:35,888 Taip? 663 00:35:35,888 --> 00:35:38,248 >> PUBLIKA: Tokį klausimą už styginių ilgio. 664 00:35:38,248 --> 00:35:40,136 Ar tai apima NULL charakterį? 665 00:35:40,136 --> 00:35:41,000 >> DAN: Ne 666 00:35:41,000 --> 00:35:45,930 Ir tai iš tikrųjų, kaip eilutės ilgis žino, kad sustoti, nes jis eina per 667 00:35:45,930 --> 00:35:49,070 Jūsų masyvas simbolių, kol ji mato NULL charakterį. 668 00:35:49,070 --> 00:35:51,030 Ir tada tai kaip visi Gerai, aš padaryti. 669 00:35:51,030 --> 00:35:52,130 >> PUBLIKA: [nesigirdi] penkių? 670 00:35:52,130 --> 00:35:53,990 >> DAN: Sveiki būtų penki. 671 00:35:53,990 --> 00:35:55,240 Yep. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Taigi matricos yra nuolatinis blokai atmintyje. 674 00:36:02,880 --> 00:36:08,480 Jie turi tiesioginę prieigą sakydamas pavadinimas masyvo ir tada garbanotus 675 00:36:08,480 --> 00:36:16,720 petnešos, kokia indekso norite eiti į, jie indeksuojami nuo nulio per 676 00:36:16,720 --> 00:36:20,100 masyvo minus 1 ilgis. 677 00:36:20,100 --> 00:36:23,070 >> Ir jie deklaruotas tipą dalykas, kad jūs ją saugoti 678 00:36:23,070 --> 00:36:29,750 masyvas, masyvo pavadinimas, o tada kokia apimtis to masyvo. 679 00:36:29,750 --> 00:36:36,660 Taigi tai yra char masyvas ilgio šešių, kad turi šias vertybes. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Taip? 682 00:36:42,700 --> 00:36:43,950 >> PUBLIKA: [nesigirdi]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> DAN: Taip. 685 00:36:48,460 --> 00:36:51,340 >> PUBLIKA: [nesigirdi]? 686 00:36:51,340 --> 00:36:56,700 >> DAN: Jei turite tai, kas vyksta į masyvą jau yra padaryta. 687 00:36:56,700 --> 00:37:02,260 Taigi jums gali nurodyti tai, o ne kaip, tarkim, char, nepriklausomai nuo vardo jūsų 688 00:37:02,260 --> 00:37:12,200 masyvas, tuščios skliausteliuose lygi garbanotas petnešomis H kablelis kablelis E L kableliais L kablelį 689 00:37:12,200 --> 00:37:16,290 O kablelis NULL pobūdis ir garbanotas petnešomis. 690 00:37:16,290 --> 00:37:18,180 Tai taip pat dirba kaip deklaracijoje. 691 00:37:18,180 --> 00:37:20,886 >> PUBLIKA: [nesigirdi]? 692 00:37:20,886 --> 00:37:23,110 >> DAN: Tada jums reikia turėti dydis jau yra padaryta. 693 00:37:23,110 --> 00:37:23,896 >> PUBLIKA: [nesigirdi]? 694 00:37:23,896 --> 00:37:25,146 >> DAN: Taip. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 Visi righty. 697 00:37:32,420 --> 00:37:36,430 Komandų eilutės argumentai yra iš būdų gauti informacijos iš vartotojo, kaip 698 00:37:36,430 --> 00:37:39,380 argumentai pagrindinis. 699 00:37:39,380 --> 00:37:40,600 Pagrindinis trunka du argumentus. 700 00:37:40,600 --> 00:37:47,680 Argumentų skaičius, kad yra yra plaukė į komandų eilutę ir A 701 00:37:47,680 --> 00:37:55,340 styginių vektorius arba styginių masyvas Visų pateiktų argumentų. 702 00:37:55,340 --> 00:38:07,840 >> Taigi, jei aš, tarkim, vadinamas funkciją, pavyzdžiui, dot iš 1 vietos, 2 erdvės, trys, 703 00:38:07,840 --> 00:38:10,110 argc būtų 4. 704 00:38:10,110 --> 00:38:17,370 Ir argv 0 būtų taškas iš. 705 00:38:17,370 --> 00:38:19,130 Argv1 būtų 1. 706 00:38:19,130 --> 00:38:23,030 argv2 būtų 2 argv3 būtų 3, toje konkrečioje byloje. 707 00:38:23,030 --> 00:38:23,310 Taip? 708 00:38:23,310 --> 00:38:25,400 >> PUBLIKA: [nesigirdi]? 709 00:38:25,400 --> 00:38:34,010 >> DAN: paskutinis elementas masyve nes masyvo ilgis argc plius 710 00:38:34,010 --> 00:38:41,050 vienas argb, paskutinis elementas yra NULL žymiklį. 711 00:38:41,050 --> 00:38:42,580 Tai argc plius 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Taigi tuo atveju, jei aš ką tik pasakė, kad būtų argv 0 yra taškas iš. 714 00:38:52,150 --> 00:38:56,330 argv 1 yra 1 argv2 yra 2 argv 3 yra 3. 715 00:38:56,330 --> 00:39:03,490 argv 4, kuris yra vienas didesnis nei argc būtų niekinis. 716 00:39:03,490 --> 00:39:04,870 >> Ir tai NULL žymiklį. 717 00:39:04,870 --> 00:39:06,590 Taip. 718 00:39:06,590 --> 00:39:11,250 Ir tai todėl, kad eilutė yra char žvaigždė žymeklis. 719 00:39:11,250 --> 00:39:14,102 Taigi ji turi būti to paties tipo. 720 00:39:14,102 --> 00:39:14,595 Taip? 721 00:39:14,595 --> 00:39:16,074 >> PUBLIKA: Du klausimai. 722 00:39:16,074 --> 00:39:21,004 Taigi vienas, kas skirtumas tarp tai ir GetString išskyrus vienos rūšies 723 00:39:21,004 --> 00:39:22,483 vartotojo variklis? 724 00:39:22,483 --> 00:39:25,934 Ir du, jis saugomas Jūsų neseniai atmintis? 725 00:39:25,934 --> 00:39:28,399 Taigi kaip, GetString būtų būti [nesigirdi]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> DAN: Kur jis saugomas? 728 00:39:33,650 --> 00:39:34,905 Aš nežinau, kur jis saugomas. 729 00:39:34,905 --> 00:39:40,000 >> PUBLIKA: Taigi, iš tikrųjų, jūs žinote, kaip bet kokia veikti skambinate tai argumentai 730 00:39:40,000 --> 00:39:42,170 saugomi kamino? 731 00:39:42,170 --> 00:39:46,610 Taigi argc ir argv yra argumentai Pagrindinis ir jie yra ant kamino, ar tikrai 732 00:39:46,610 --> 00:39:49,131 šiek tiek aukščiau, ką jūs manote, kaip kamino pradžia. 733 00:39:49,131 --> 00:39:53,490 Koks buvo kitas dalis klausimo? 734 00:39:53,490 --> 00:39:56,821 >> PUBLIKA: Taigi, kas [nesigirdi]? 735 00:39:56,821 --> 00:40:00,990 >> DAN: Taip, tai tiesiog kitoks būdas gauti indėlį iš vartotojo. 736 00:40:00,990 --> 00:40:06,030 Tai vienas šiek tiek efektyviau ir tai tvirtos už scenarijų, nes jums 737 00:40:06,030 --> 00:40:10,070 gali tiesiog praeiti argumentus jūsų pagrindinis funkcija, o ne laukti, kol 738 00:40:10,070 --> 00:40:13,400 vartotojams, jei jūs neturite jokių naudotojų. 739 00:40:13,400 --> 00:40:16,280 >> PUBLIKA: Ir taip, gauti stygos būtų [nesigirdi]. 740 00:40:16,280 --> 00:40:17,922 Būtų laikyti stuff jums reikia. 741 00:40:17,922 --> 00:40:18,834 >> DAN: Taip? 742 00:40:18,834 --> 00:40:21,114 >> PUBLIKA: [nesigirdi]? 743 00:40:21,114 --> 00:40:27,545 >> DAN: Taip, argv 0 visada yra dot slash iš skambinimo funkcijos. 744 00:40:27,545 --> 00:40:28,042 Taip? 745 00:40:28,042 --> 00:40:29,292 >> PUBLIKA: [nesigirdi]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> DAN: Taip, kiekvienas iš argumentų yra baigėsi NULL pobūdžio, nes jie 748 00:40:37,310 --> 00:40:38,310 yra stygos. 749 00:40:38,310 --> 00:40:40,892 >> PUBLIKA: [nesigirdi]? 750 00:40:40,892 --> 00:40:44,116 >> DAN: Taip, argv argc yra NULL žymiklį. 751 00:40:44,116 --> 00:40:45,112 >> PUBLIKA: [nesigirdi]? 752 00:40:45,112 --> 00:40:47,104 >> DAN: Oh yeah. 753 00:40:47,104 --> 00:40:48,100 Taip, atsiprašau. 754 00:40:48,100 --> 00:40:49,594 >> PUBLIKA: Taigi [nesigirdi]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> DAN: Taigi klausimas yra, jei jūs turėjote komandinės eilutės dot slash dot iš 1, 2, 757 00:41:16,340 --> 00:41:20,410 būtų iš komandinės eilutės numeris argumentai yra du ar tai būtų tris? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> PUBLIKA: Manau, kad tai nėra tikrai svarbu. 760 00:41:28,240 --> 00:41:31,370 Aš linkęs sakyti, oi, tu negali praeiti bet komandinės eilutės argumentai, kai 761 00:41:31,370 --> 00:41:32,730 Akivaizdu, kad pavadino funkciją. 762 00:41:32,730 --> 00:41:37,950 Taigi, aš linkę balsu neįtraukti funkcija iš komandinės eilutės 763 00:41:37,950 --> 00:41:40,350 argumentai, nors tai įtraukti į argv. 764 00:41:40,350 --> 00:41:42,600 >> DAN: Bet jei tai buvo ant test-- 765 00:41:42,600 --> 00:41:46,550 yeah-- ir taip pat, jei ką nors pasakyti kaip argc lygi 3, 766 00:41:46,550 --> 00:41:48,512 jūs saugiai stovint. 767 00:41:48,512 --> 00:41:49,416 Taip? 768 00:41:49,416 --> 00:41:50,666 >> PUBLIKA: [nesigirdi]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> DAN: Manau, kad jei vietoj paskambinus tai į argc ir styginių argv skliausteliuose 771 00:42:09,510 --> 00:42:14,350 bet laikomi tos pačios rūšies ir tiesiog vadinamas jiems kažkas kita, kaip 772 00:42:14,350 --> 00:42:16,640 ir b, ar ji vis dar dirba? 773 00:42:16,640 --> 00:42:18,790 Ir ji vis dar veikia, jūs just-- 774 00:42:18,790 --> 00:42:21,520 , o ne naudojant argc-- norite naudoti, ir b. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Taip? 777 00:42:25,408 --> 00:42:26,658 >> PUBLIKA: [nesigirdi]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> DAN: Taigi klausimas yra GetString yra ketina saugoti atminties krūvos 780 00:42:38,850 --> 00:42:42,280 nes GetString yra char *. 781 00:42:42,280 --> 00:42:47,530 Jis saugo atmintį į krūvą, nes tai ragina dabar malloc per faktinį 782 00:42:47,530 --> 00:42:49,258 įgyvendinimas GetString. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 Gerai, juda toliau. 785 00:42:55,090 --> 00:42:55,950 >> Saugumo. 786 00:42:55,950 --> 00:43:01,090 Taigi būtų tikrai saugus, jūs remtis ne vienas ir leisite ne vieną prieigą prie bet 787 00:43:01,090 --> 00:43:04,540 Jūsų informacija, kuri yra, kodėl visi stato savo mašinas, 788 00:43:04,540 --> 00:43:09,580 jų pačių operacinės sistemos, visi jų programas iš naujo, ir akivaizdžiai 789 00:43:09,580 --> 00:43:13,410 nejunkite jokių kitų mašinų internetu. 790 00:43:13,410 --> 00:43:17,350 Taigi kompiuteriai nesaugus. 791 00:43:17,350 --> 00:43:19,200 Jie tikrai yra. 792 00:43:19,200 --> 00:43:20,940 Mes turime pasitikėti kitais žmonėmis. 793 00:43:20,940 --> 00:43:26,500 >> Ir saugumo idėja yra ta, kad jūs esate bando apriboti sumą 794 00:43:26,500 --> 00:43:27,540 pasitikėjimas, kad jums reikia. 795 00:43:27,540 --> 00:43:32,080 Ir viena iš priemonių tai padaryti, kad yra per kriptografija. 796 00:43:32,080 --> 00:43:34,950 Kriptografija yra iš esmės turime paslapčių. 797 00:43:34,950 --> 00:43:38,880 >> Kartais mes turime praeiti mūsų paslaptis kartu per, tarkim, interneto arba 798 00:43:38,880 --> 00:43:39,980 kitų dalykų. 799 00:43:39,980 --> 00:43:43,180 Ir mes nenorime, kad žmonės žinoti šiuos paslaptis. 800 00:43:43,180 --> 00:43:50,100 Taigi, mes užšifruoti mūsų paslaptis į taip kuri, tikimės, niekas negali išsiaiškinti. 801 00:43:50,100 --> 00:43:51,600 >> Taigi, mes used-- 802 00:43:51,600 --> 00:43:54,340 per šio class-- žinoma 803 00:43:54,340 --> 00:44:00,750 dalykų, pavyzdžiui, Cezario šifras ir [Nesigirdi], kurie abu labai, labai 804 00:44:00,750 --> 00:44:03,200 nesaugių būdų šifravimo dalykų. 805 00:44:03,200 --> 00:44:07,930 Jie lengva išsiaiškinti, ką jie yra ir tai, ką jūsų paslaptys. 806 00:44:07,930 --> 00:44:12,130 Realaus pasaulio naudoja daug daugiau Sudėtingesni šifravimo sistemų. 807 00:44:12,130 --> 00:44:13,880 Ir mes ne gauti į daug daugiau nei tai. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Derinimo. 810 00:44:19,430 --> 00:44:20,785 GDB yra geriausias. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Aš ruošiuosi pabrėžti tai dar kartą. 813 00:44:25,810 --> 00:44:30,920 Naudokite GDB visą laiką kiekvieną kartą jūs turite problemą. 814 00:44:30,920 --> 00:44:36,030 Komandos, kurios yra naudinga GDB yra pertrauka, kurios jums perduoti arba linija 815 00:44:36,030 --> 00:44:41,330 skaičius, funkcijos pavadinimas, iš esmės kur jūsų kode norite sustabdyti, 816 00:44:41,330 --> 00:44:45,600 ir galės imtis kontroliuoti. 817 00:44:45,600 --> 00:44:54,140 >> Spausdinti trunka kintamąjį ir spausdina kokia, kad kintamasis yra, kad 818 00:44:54,140 --> 00:44:55,990 vieta jūsų vykdymą. 819 00:44:55,990 --> 00:45:00,130 Kitas juda savo vykdymo kartu vieną žingsnį. 820 00:45:00,130 --> 00:45:05,050 Ir žingsnis veiksmų viduje funkcijos jūsų vykdymą. 821 00:45:05,050 --> 00:45:10,480 >> Kiti dalykai yra paleisti, kuris yra, kaip jūs iš tikrųjų paleisti savo kodą. 822 00:45:10,480 --> 00:45:16,630 Tęsti imasi visų priemonių, reikalingų patekti į kitą pertraukos tašką. 823 00:45:16,630 --> 00:45:18,300 Ir yra daug, daug kitų. 824 00:45:18,300 --> 00:45:19,040 Galite juos. 825 00:45:19,040 --> 00:45:19,901 Jie puikiai. 826 00:45:19,901 --> 00:45:20,863 Taip? 827 00:45:20,863 --> 00:45:22,113 >> PUBLIKA: [nesigirdi]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> DAN: Taip, tai yra debuggerem. 830 00:45:28,200 --> 00:45:34,230 Taigi debuggerem yra programa, kuri leidžia jums derinti savo programą. 831 00:45:34,230 --> 00:45:39,931 Tai nėra programa, kuri nustato klaidas ir jūs, nors tai būtų puiku. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> Ir paskutinis, man yra paieška. 834 00:45:46,040 --> 00:45:51,470 Taigi ieškant tipų, kad mes kalbėjome apie šioje klasėje yra tiesinė paieška, 835 00:45:51,470 --> 00:45:55,960 kuri yra tiesiog, kad jums atrodo per kiekvieną elementas paieškos erdvėje, vienas 836 00:45:55,960 --> 00:46:00,410 elementas vienu metu, kol rasite ką Jūs ieškote arba kol pasieksite 837 00:46:00,410 --> 00:46:03,350 Jūsų paieškos erdvėje galas, kuriame atkreipti jums pasakyti, kad tu negali rasti 838 00:46:03,350 --> 00:46:06,360 elementas, kad jūs ieškote. 839 00:46:06,360 --> 00:46:13,450 Ir tai trunka geriausiu pastovų laiką, kuris yra 0 iš 1 ir blogiausiu linijinių 840 00:46:13,450 --> 00:46:16,070 laikas, kuris yra 0 n. 841 00:46:16,070 --> 00:46:19,250 >> Dvejetainiai paieškos, kuri turi niekingas elementai. 842 00:46:19,250 --> 00:46:24,230 Nueini į vidurį savo elementais, pamatyti, jei elementas jūs ieškote 843 00:46:24,230 --> 00:46:30,120 yra didesnis arba mažesnis nei elementą kad jūs esate viduryje. 844 00:46:30,120 --> 00:46:36,510 Tai jis didesnis, jūs sakote, kad dugnas Jūsų paieškos erdvė yra jūsų 845 00:46:36,510 --> 00:46:41,550 dabartinės buvimo vietos, vidurinis, ir jūs iš naujo procesą. 846 00:46:41,550 --> 00:46:46,150 Jei jis mažesnis, jums atrodo pasakyti kad the-- Taip, kas atsitiko? 847 00:46:46,150 --> 00:46:47,400 >> PUBLIKA: [nesigirdi]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> DAN: Taip. 850 00:46:54,260 --> 00:46:58,360 Bet rūšiuoti rūšiuoti, kad manimi buvo mokoma klasė teisingas žaidimas testą. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [Juokas] 853 00:47:04,920 --> 00:47:10,260 >> DAN: Ir tai, kad jūs neturėjote padaryti jį probleminę rinkinys, tai teisinga 854 00:47:10,260 --> 00:47:12,420 žaidimas testą. 855 00:47:12,420 --> 00:47:15,186 >> PUBLIKA: Ar mes galime eiti per jį, kaip to-- 856 00:47:15,186 --> 00:47:17,052 >> DAN: Tai bus dingo daugiau. 857 00:47:17,052 --> 00:47:20,496 >> SPEAKER 2: tikrasis kodas [Nesigirdi] yra study.cs50.net. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Taigi, jei jums pažvelgti į praktikos problemos į suliejimą rūšiavimo puslapyje 860 00:47:32,680 --> 00:47:35,880 study.cs50.net, yra kodas įgyvendinimo sujungti rūšiuoti. 861 00:47:35,880 --> 00:47:38,550 Taigi jūs neturite įdiegti jis sau vakarą. 862 00:47:38,550 --> 00:47:42,090 Tačiau įsitikinkite, kad jums suprasti, o ne tik įsiminti jį. 863 00:47:42,090 --> 00:47:45,035 >> PUBLIKA: [nesigirdi]? 864 00:47:45,035 --> 00:47:49,720 >> SPEAKER 2: sujungti tarsi puslapyje study.cs50.net, yra praktika 865 00:47:49,720 --> 00:47:53,570 problema, kad jei paspausite per problema, pačioje pabaigoje yra 866 00:47:53,570 --> 00:47:56,280 sprendimas, kuris yra sujungti Rūšiuoti įgyvendinimas. 867 00:47:56,280 --> 00:47:58,510 Tačiau įsitikinkite, kad jūs jį suprasti o ne tik įsiminti jį 868 00:47:58,510 --> 00:47:59,760 ar kopijuodami ją žemyn. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> PUBLIKA: Ir puikiai galioja problema egzaminams būtų 871 00:48:06,340 --> 00:48:07,990 kažkas panašaus čia sąrašas. 872 00:48:07,990 --> 00:48:12,100 Ką šis sąrašas atrodyti po vienas žingsnis atrankas rūšiuoti arba 873 00:48:12,100 --> 00:48:13,330 įterpimo rūšiuoti ar dar ką nors. 874 00:48:13,330 --> 00:48:14,940 Vienas visą pasikartojančių sąrašo. 875 00:48:14,940 --> 00:48:18,530 Taigi, net jei jūs neturite galų gale, kuriems reikia kodas už jį, jums reikia jį suprasti 876 00:48:18,530 --> 00:48:20,440 Pakanka žinoti, kaip tai vyksta būti pakeisti šią masyvo. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> DAN: Štai ji už mane. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [Plojimai] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> LUCAS: Hey everyone. 883 00:49:07,410 --> 00:49:08,390 Mano vardas Lukas. 884 00:49:08,390 --> 00:49:16,840 Aš ruošiuosi kalbėti apie rekursijos, visi kad rūšių, kad mes sužinojome, ir 885 00:49:16,840 --> 00:49:18,050 Šiek tiek visų patarimų. 886 00:49:18,050 --> 00:49:18,740 Gerai? 887 00:49:18,740 --> 00:49:20,340 Taigi, visų pirma, rekursija. 888 00:49:20,340 --> 00:49:22,951 Ką tai reiškia pasakyti, kad funkcija yra grįžtamojo? 889 00:49:22,951 --> 00:49:24,675 >> PUBLIKA: vadina save. 890 00:49:24,675 --> 00:49:26,500 >> LUCAS: Gerai, vadina save, taip. 891 00:49:26,500 --> 00:49:27,700 Taigi, kaip šioje nuotraukoje, pavyzdžiui. 892 00:49:27,700 --> 00:49:30,280 Tai kaip paveikslėlyje viduje iš paveikslėlio ir pan. 893 00:49:30,280 --> 00:49:35,740 Taigi, pavyzdžiui, galite have-- Dano kad buvo kalbama apie dvejetainėje paiešką. 894 00:49:35,740 --> 00:49:41,840 Vienas iš būdų, dvejetainis paieška grįžtamojo yra tai, kad jūs esate 895 00:49:41,840 --> 00:49:43,130 bando rasti skaičių. 896 00:49:43,130 --> 00:49:44,250 Taigi jūs einate į vidurį. 897 00:49:44,250 --> 00:49:47,130 Ir tada jums patikrinti, jei ten skaičiai į kairę ir į dešinę. 898 00:49:47,130 --> 00:49:49,650 >> Ir tada, jei sužinojote, skaičius yra bus kairėje, tai tas pats 899 00:49:49,650 --> 00:49:53,340 dalykas, kaip daro dar kartą atlikti paiešką bet tiesiog dėl sąrašo kairėje. 900 00:49:53,340 --> 00:49:57,350 Štai kaip tai skamba kaip tai pakartotinė. 901 00:49:57,350 --> 00:50:01,870 Štai kodėl vaikinai turi grįžtamojo sprendimas merge rūšiuoti. 902 00:50:01,870 --> 00:50:04,270 >> Gerai, kad čia yra pavyzdys. 903 00:50:04,270 --> 00:50:07,280 Taigi tarkime, kad aš noriu pasirinkti visi skaičiai nuo 1 iki n. 904 00:50:07,280 --> 00:50:13,790 Galiu suprasti, kad "n suma skaičius yra n plius n atėmus 1 iki 1. 905 00:50:13,790 --> 00:50:17,810 Bet tada, jei žiūriu n minus 1 plius n atėmus 2 plius 1, tai tas pats 906 00:50:17,810 --> 00:50:20,680 dalykas kaip sudedant numeriais iki n atėmus 1. 907 00:50:20,680 --> 00:50:25,890 Taigi galiu pasakyti, kad vienodas sumą sumą lygi n plius apie n minus 1 suma. 908 00:50:25,890 --> 00:50:28,010 Ar tai prasminga? 909 00:50:28,010 --> 00:50:32,630 >> Ir aš taip pat turės ką nors kita vadinamas bazinį scenarijų, o tai, kad 910 00:50:32,630 --> 00:50:37,440 iš skaičių suma iki nuliui, turėtų būti nulinis. 911 00:50:37,440 --> 00:50:42,770 Taigi, kai aš gauti į numerį nulis, aš sustabdyti skaičiuoti. 912 00:50:42,770 --> 00:50:45,330 Ar tai prasminga? 913 00:50:45,330 --> 00:50:48,120 >> Taigi čia kaip pavyzdys Galiu įgyvendinti tai. 914 00:50:48,120 --> 00:50:49,860 Taigi turiu šią funkciją kai. 915 00:50:49,860 --> 00:50:51,700 Tai užtrunka sveikasis skaičius n. 916 00:50:51,700 --> 00:50:56,300 Taigi čia aš pirmą kartą patikrinti, ar n mažiau arba lygi nuliui. 917 00:50:56,300 --> 00:51:00,310 Taigi, jei tai yra mažiau arba lygus nuliui, aš grįžti nulį, kuri yra mūsų bazė atvejis. 918 00:51:00,310 --> 00:51:05,690 Priešingu atveju, aš galiu tik grąžinti n plius iš skaičių suma iš 919 00:51:05,690 --> 00:51:07,190 vienas n minus vienas. 920 00:51:07,190 --> 00:51:09,360 Padaryti jausmą? 921 00:51:09,360 --> 00:51:10,100 Gerai. 922 00:51:10,100 --> 00:51:11,610 >> Taigi čia, kaip jis atrodo. 923 00:51:11,610 --> 00:51:15,260 Turite sumą 2 lygių 2 plius 1, suma. 924 00:51:15,260 --> 00:51:18,930 Ir kai kurie iš 1 yra 1 plius suma 0, kuris yra 0. 925 00:51:18,930 --> 00:51:20,216 Padaryti jausmą? 926 00:51:20,216 --> 00:51:25,342 Taigi, jei mes pažvelgti į krūvą savo programa, tai, kaip jis atrodo. 927 00:51:25,342 --> 00:51:26,820 >> Pirma, mes turime pagrindinę funkciją. 928 00:51:26,820 --> 00:51:30,320 Ir tada pagrindinė funkcija vadinama suma 2. 929 00:51:30,320 --> 00:51:36,690 Ir tada suma 2 ketina pasakyti, oh, suma 2 yra lygus 2, plius vieną sumą. 930 00:51:36,690 --> 00:51:39,460 Taigi, aš pridėti sumą 1 iki kamino. 931 00:51:39,460 --> 00:51:43,860 Ir iš 1 suma ketinate skambinti sumą 0, kuris taip pat bus pridėta 932 00:51:43,860 --> 00:51:44,630 į krūvą. 933 00:51:44,630 --> 00:51:49,240 Ir tada kiekvienas iš šių tuos, kurie yra ant kito turi grįžti 934 00:51:49,240 --> 00:51:52,020 prieš kitus tie gali nesustoti. 935 00:51:52,020 --> 00:51:56,240 >> Taigi, pavyzdžiui, čia, suma 0, pirma, ketina grįžti 0. 936 00:51:56,240 --> 00:51:58,320 Ir tada pasirinkti sumą 1. 937 00:51:58,320 --> 00:52:00,850 Tada suma 1 ketina grįžti 1 Apibendrinant 2. 938 00:52:00,850 --> 00:52:03,900 Ir, pagaliau, suma 2 vyksta grįžti 3 į pagrindinį. 939 00:52:03,900 --> 00:52:05,320 Ar tai prasminga? 940 00:52:05,320 --> 00:52:09,496 >> Tai tikrai svarbu suprasti, kaip kamino dirba ir stengiasi 941 00:52:09,496 --> 00:52:11,980 pamatyti, jei ji turi prasmę. 942 00:52:11,980 --> 00:52:13,260 Gerai, kad rūšiavimas. 943 00:52:13,260 --> 00:52:16,170 Tad kodėl rūšiavimas svarbus, pirmiausia? 944 00:52:16,170 --> 00:52:18,260 Kodėl turėtume rūpintis? 945 00:52:18,260 --> 00:52:20,310 Kiekvienas? 946 00:52:20,310 --> 00:52:20,695 Duok man pavyzdį? 947 00:52:20,695 --> 00:52:21,040 Taip? 948 00:52:21,040 --> 00:52:22,968 >> PUBLIKA: [nesigirdi]. 949 00:52:22,968 --> 00:52:24,700 >> LUCAS: Taip, gerai. 950 00:52:24,700 --> 00:52:26,090 Taigi jūs galite ieškoti efektyviau. 951 00:52:26,090 --> 00:52:28,580 Štai geras būdas. 952 00:52:28,580 --> 00:52:32,462 Taigi, pavyzdžiui, mes turime daug dalykų, iš tikrųjų, mūsų gyvenimai, kad 953 00:52:32,462 --> 00:52:32,920 bus rūšiuojami. 954 00:52:32,920 --> 00:52:34,830 Pavyzdžiui, žodynai. 955 00:52:34,830 --> 00:52:39,210 >> Tai labai svarbu, kad visi žodžiai tam tikra tvarka, kurią mes 956 00:52:39,210 --> 00:52:41,970 gali lengvai pasiekti. 957 00:52:41,970 --> 00:52:43,280 Štai ką jis sako. 958 00:52:43,280 --> 00:52:45,530 Jūs galite ieškoti efektyviau. 959 00:52:45,530 --> 00:52:48,740 Pagalvokite apie tai, kaip sunku būtų turėti žodynas, kuriame žodžiai yra 960 00:52:48,740 --> 00:52:49,500 atsitiktine tvarka. 961 00:52:49,500 --> 00:52:53,120 Jūs turite žiūrėti, gana daug, kiekvienas žodis, kol rasite 962 00:52:53,120 --> 00:52:54,720 žodis, kad jūs ieškote. 963 00:52:54,720 --> 00:52:58,710 >> Jei jūs naudojate "Facebook", taip pat, kai jūs ieškote savo draugais, esate 964 00:52:58,710 --> 00:53:03,540 ketiname pamatyti, kad "Facebook įdėti savo arčiau Draugo viršuje tie 965 00:53:03,540 --> 00:53:05,470 kad jums nereikia kalbėti, kad daug. 966 00:53:05,470 --> 00:53:08,080 Jei pereiti visą kelią į dugną Jūsų draugas sąrašas, jūs ketinate pamatyti 967 00:53:08,080 --> 00:53:11,250 žmonės, kad jūs tikriausiai net nereikia nepamirškite, kad jūs esate draugai su. 968 00:53:11,250 --> 00:53:14,590 Ir tai todėl, kad "Facebook" rūšių jūsų draugai remiantis kaip 969 00:53:14,590 --> 00:53:16,472 uždaryti esate su jais. 970 00:53:16,472 --> 00:53:17,930 >> Taigi organizuojant duomenis. 971 00:53:17,930 --> 00:53:18,450 Taip pat Pokemon. 972 00:53:18,450 --> 00:53:21,400 Taigi, kaip matote, kad visi pokemons turi numerius. 973 00:53:21,400 --> 00:53:27,210 Ir tai, kaip lengva būdas prieigą prie duomenų. 974 00:53:27,210 --> 00:53:29,050 >> PUBLIKA: Priėjimas prie Pokemon. 975 00:53:29,050 --> 00:53:29,890 >> LUCAS: Taip. 976 00:53:29,890 --> 00:53:32,395 >> PUBLIKA: [nesigirdi]. 977 00:53:32,395 --> 00:53:33,460 >> LUCAS: Yep. 978 00:53:33,460 --> 00:53:35,140 Gerai, kad atranka rikiuoti. 979 00:53:35,140 --> 00:53:41,610 Atrankos tarsi ketina pasirinkti mažiausia nerūšiuotus vertė sąrašą kiekviena 980 00:53:41,610 --> 00:53:43,300 Laikas kiekvienos iteracijos. 981 00:53:43,300 --> 00:53:46,800 Tai lyg panašaus, kad jūs galvą, kai bandote 982 00:53:46,800 --> 00:53:48,430 rūšiuoti po ranka, sąrašą. 983 00:53:48,430 --> 00:53:51,990 >> Iš esmės, visi jūs darote, yra jums atrodo už mažiausio skaičiaus. 984 00:53:51,990 --> 00:53:54,280 Jūs įdėti jį į rūšiuotų sąrašą. 985 00:53:54,280 --> 00:53:56,230 Ir tada jums ieškoti Kitas mažiausias skaičius. 986 00:53:56,230 --> 00:54:00,080 Ir tada jūs nuolat daro kad ir taip toliau. 987 00:54:00,080 --> 00:54:04,600 >> Taigi pasirinkimas tarsi iš esmės jūs pasirinkti kiekvieną kartą mažiausią 988 00:54:04,600 --> 00:54:05,750 nerūšiuotus vertė. 989 00:54:05,750 --> 00:54:10,840 Įdėkite pasibaigus rūšiuojami pabaigoje dalis, sąrašą. 990 00:54:10,840 --> 00:54:12,370 Ir nuolat daryti. 991 00:54:12,370 --> 00:54:15,890 Tad greitai pamatyti, kas tai atrodo. 992 00:54:15,890 --> 00:54:19,340 Taigi čia yra rūšiuojami ir nerūšiuotus sąrašas. 993 00:54:19,340 --> 00:54:23,350 >> Taigi rūšiuojami sąrašo, tai iš pradžių tuščias. 994 00:54:23,350 --> 00:54:26,760 Ir tada aš ruošiuosi pasirinkti Mažiausiai čia, kuris yra 2. 995 00:54:26,760 --> 00:54:30,650 Taigi man su numeriu 2 ir aš į sąrašą priekyje. 996 00:54:30,650 --> 00:54:34,910 Ir tada aš ieškoti šalia mažiausias elementas, kuris yra 3. 997 00:54:34,910 --> 00:54:37,050 Taigi, aš įdėti jį pabaigoje išrūšiuotų sąrašą. 998 00:54:37,050 --> 00:54:38,140 Ir tada aš nuolat daryti. 999 00:54:38,140 --> 00:54:40,040 Manau, 4 ir įdėti jį pabaigoje. 1000 00:54:40,040 --> 00:54:41,360 Ieškoti 5 ir įdėti jį pabaigoje. 1001 00:54:41,360 --> 00:54:44,830 >> Ir pažvelgti, kaip visus tuos kartus, kad Aš sakau įdėti jį galas, 1002 00:54:44,830 --> 00:54:46,850 iš esmės, keičiant dvi reikšmes. 1003 00:54:46,850 --> 00:54:48,100 Gerai? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 Ir tada naujausia, ką tik turi daugiau kaip vieną elementą. 1006 00:54:52,825 --> 00:54:55,870 Taigi jis jau išrūšiuotos. 1007 00:54:55,870 --> 00:54:57,800 >> Gerai, kad įterpimo rūšiuoti. 1008 00:54:57,800 --> 00:55:03,180 Įterpimas tarsi jūs ketinate turėti, taip pat kad padarius rūšiuojami dalykas ir 1009 00:55:03,180 --> 00:55:04,690 nerūšiuotus sąrašas. 1010 00:55:04,690 --> 00:55:14,540 Vienintelis dalykas yra tai, kad kiekvieną kartą, kai norite pridėti elementą į rūšiuojami 1011 00:55:14,540 --> 00:55:18,170 sąrašas, jūs tiesiog pasirinkti elementą, kuris yra priešais nerūšiuotų sąrašą. 1012 00:55:18,170 --> 00:55:20,880 Ir tada jūs einate rasti ką pozicija turėtų būti surūšiuoti 1013 00:55:20,880 --> 00:55:22,300 dalis, sąrašą. 1014 00:55:22,300 --> 00:55:25,840 >> Pažiūrėkime, kas tai yra, kad tai suteikia daugiau prasmės. 1015 00:55:25,840 --> 00:55:29,360 Taigi iš pradžių, pavyzdžiui, aš bandau įterpti numerį trys 1016 00:55:29,360 --> 00:55:30,680 Rūšiuoti dalis sąrašo. 1017 00:55:30,680 --> 00:55:31,800 Taigi sąrašas neturi nieko. 1018 00:55:31,800 --> 00:55:34,160 Taigi aš galiu tiesiog įdėti 3 numeriu. 1019 00:55:34,160 --> 00:55:37,480 >> Dabar aš noriu pridėti skaičių 5 į Rūšiuoti dalis sąrašo. 1020 00:55:37,480 --> 00:55:38,900 Taigi, aš pažvelgti į skaičius 5. 1021 00:55:38,900 --> 00:55:40,450 Aš pastebėjau, kad jis didesnis nei 3. 1022 00:55:40,450 --> 00:55:41,980 Taigi aš žinau, kad ji turi būti po 3. 1023 00:55:41,980 --> 00:55:44,100 Taigi, aš įdėti 3 ir 5 dalis. 1024 00:55:44,100 --> 00:55:45,940 >> Tada aš noriu įterpti numerį 2. 1025 00:55:45,940 --> 00:55:51,630 Aš pastebėjau, kad skaičius 2 yra faktiškai trukti tada abu 3 ir 5 dalis. 1026 00:55:51,630 --> 00:55:54,580 Taigi aš iš tikrųjų turite įdėti visa tai būdas sąrašo pradžioje. 1027 00:55:54,580 --> 00:55:59,030 Taigi aš turiu, tipo, perkelti visus elementai surūšiuoti sąrašą, kad galėčiau 1028 00:55:59,030 --> 00:56:01,970 padaryti kambarį už skaičių 2. 1029 00:56:01,970 --> 00:56:03,160 >> Tada matau skaičių 6. 1030 00:56:03,160 --> 00:56:05,450 Matau, kad jis turėtų būti po 5. 1031 00:56:05,450 --> 00:56:06,240 Taigi, aš įdėti jį čia. 1032 00:56:06,240 --> 00:56:07,965 Ir pagaliau, aš pažvelgti į skaičius 4. 1033 00:56:07,965 --> 00:56:11,030 Ir aš pastebiu, tai turėtų būti tarp 3 ir 5. 1034 00:56:11,030 --> 00:56:14,870 Ir tada aš jį ten ir perėjimas visi kiti elementai. 1035 00:56:14,870 --> 00:56:16,120 Padaryti jausmą? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Burbulas Rūšiuoti. 1038 00:56:19,150 --> 00:56:25,730 Taigi burbulas tarsi iš esmės yra tai, ką jūs ketina do-- mes jį vadiname burbulas 1039 00:56:25,730 --> 00:56:30,113 Rūšiuoti nes jūs einate per list-- tai tikrai geriau, jei aš tiesiog parodyti 1040 00:56:30,113 --> 00:56:32,300 norite this-- 1041 00:56:32,300 --> 00:56:35,030 ir jūs ketinate palyginti gretimi skaičiai. 1042 00:56:35,030 --> 00:56:38,410 Ir jūs ketinate iškeisti pozicijų, jeigu jie nėra 1043 00:56:38,410 --> 00:56:39,190 teisinga tvarka. 1044 00:56:39,190 --> 00:56:42,570 >> Taigi, iš esmės, tai, kas vyksta atsitikti čia, pavyzdžiui, 1045 00:56:42,570 --> 00:56:44,160 jūs turite 8 ir 6. 1046 00:56:44,160 --> 00:56:47,270 Jūs žinote, kad Rūšiuota įsakymas iš tikrųjų yra 6 ir 5, tiesa? 1047 00:56:47,270 --> 00:56:49,540 Taigi jūs ketinate apsikeitimo užsakymus. 1048 00:56:49,540 --> 00:56:51,370 Tada matau 8 ir 4 čia. 1049 00:56:51,370 --> 00:56:52,250 Ir aš tą patį. 1050 00:56:52,250 --> 00:56:53,400 Aš apsikeitimo vėl. 1051 00:56:53,400 --> 00:56:55,070 Ir, pagaliau, 2 ir 8. 1052 00:56:55,070 --> 00:56:56,670 Aš taip pat sukeisti juos. 1053 00:56:56,670 --> 00:57:01,690 >> Tai vadinama burbulas Rūšiuoti nes po kiekviena iš šių iteracijų, iš tikrųjų, 1054 00:57:01,690 --> 00:57:05,910 Daugiausia sąraše gauna visi kelias į sąrašo pabaigą. 1055 00:57:05,910 --> 00:57:06,940 Ar tai prasminga? 1056 00:57:06,940 --> 00:57:11,880 Nes ji saugo keičiant jį ir perkelti jį į dešinę. 1057 00:57:11,880 --> 00:57:14,440 >> Gerai, kad tai yra antra iteracija. 1058 00:57:14,440 --> 00:57:17,200 Tai būtų tas pats dalykas. 1059 00:57:17,200 --> 00:57:20,190 Aš tai vieną apsikeitimo ir tada naujausia. 1060 00:57:20,190 --> 00:57:23,290 Aš, kad nėra apsikeitimo ir sąrašas surūšiuotas. 1061 00:57:23,290 --> 00:57:27,460 Taigi Bubble Rūšiuoti, mes iš esmės išlaikyti išgyvena sąrašo ir Swapping 1062 00:57:27,460 --> 00:57:32,310 dalykų, kol aš pastebėsite, kad aš ne daryti bet apsikeitimo daryti, kad iteracijos, kurios 1063 00:57:32,310 --> 00:57:34,270 reiškia, kad sąrašas yra jau išrūšiuotos. 1064 00:57:34,270 --> 00:57:35,520 Padaryti jausmą? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Pakalbėkime šiek tiek apie bėgančio laiko. 1067 00:57:40,870 --> 00:57:45,165 Taigi jūs vaikinai prisiminti Big O Omega ir teta? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Taip? 1070 00:57:50,990 --> 00:57:53,070 Gerai, kas yra Big O, visų pirma? 1071 00:57:53,070 --> 00:57:54,315 >> PUBLIKA: [nesigirdi]. 1072 00:57:54,315 --> 00:57:59,070 >> LUCAS: Aha, jis vadinamas blogiausiu atveju Runtime, kuris tiesiog reiškia, kad jis 1073 00:57:59,070 --> 00:58:03,470 kiek tikitės programą imtis paleisti. 1074 00:58:03,470 --> 00:58:04,910 Kaip, kalbant of-- 1075 00:58:04,910 --> 00:58:06,660 Šiame case-- n. 1076 00:58:06,660 --> 00:58:09,150 Elementų skaičius sąrašas blogiausiu atveju. 1077 00:58:09,150 --> 00:58:12,520 Kaip, blogiausiu galimu atveju. 1078 00:58:12,520 --> 00:58:17,100 >> Taigi burbulas rūšiuoti, pavyzdžiui, Turime didelę Õ n kvadratu. 1079 00:58:17,100 --> 00:58:20,580 Kodėl mes turime tai? 1080 00:58:20,580 --> 00:58:24,716 Kodėl burbulas Rūšiuoti Didelės O n kvadratinių? 1081 00:58:24,716 --> 00:58:27,614 >> PUBLIKA: [nesigirdi]. 1082 00:58:27,614 --> 00:58:35,670 >> LUCAS: Taip, taip, blogiausiu atveju bus kad aš turiu daryti n iteracijų. 1083 00:58:35,670 --> 00:58:39,260 Taigi kiekvienas iš iteracijų ketina atnešti didžiausią elementą prie pabaigos 1084 00:58:39,260 --> 00:58:40,290 iš sąrašo. 1085 00:58:40,290 --> 00:58:44,230 Taigi blogiausiu atveju yra tai, kad aš turiu padaryti, kad dalykas n kartų. 1086 00:58:44,230 --> 00:58:48,550 Ir kiekvienas iš tų laikų, turiu padaryti n apsikeitimo nes turiu palyginti 1087 00:58:48,550 --> 00:58:49,870 kiekvienas iš dviejų elementų. 1088 00:58:49,870 --> 00:58:53,730 Štai kodėl ji n kvadratu nes tai n kartų n. 1089 00:58:53,730 --> 00:59:00,120 >> Tada pasirinkimas tarsi taip pat n kvadratinių nes kiekvienos iteracijos, turiu 1090 00:59:00,120 --> 00:59:02,650 pažvelgti kiekvieną elementą sąraše. 1091 00:59:02,650 --> 00:59:04,980 Ir tada rasti mažiausias, o tai reiškia, kad aš turiu 1092 00:59:04,980 --> 00:59:06,130 atrodo per n elementų. 1093 00:59:06,130 --> 00:59:11,750 Ir aš turiu daryti, kad n kartų, nes Turiu pasirinkite visus n elementų. 1094 00:59:11,750 --> 00:59:18,273 >> Įterpimo rūšiuoti taip pat n kvadratinių nes blogiausiu atveju bus 1095 00:59:18,273 --> 00:59:20,950 būti, viena, turiu įterpti n numeriai, tiesa? 1096 00:59:20,950 --> 00:59:22,765 Taigi, aš jau žinau, kad aš ruošiuosi turėti n iteracijų. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Tačiau kiekvienas iš šių numerių, jei turėjau pažvelgti į visus numerius 1099 00:59:29,840 --> 00:59:34,380 rūšiuojamos sąrašą ir įdėti jį visą kelią priekyje, kad bus n kvadratinių 1100 00:59:34,380 --> 00:59:36,230 nes ji bus n kartų n dar kartą. 1101 00:59:36,230 --> 00:59:38,280 Padaryti jausmą? 1102 00:59:38,280 --> 00:59:41,512 Ką apie omega? 1103 00:59:41,512 --> 00:59:42,886 >> PUBLIKA: [nesigirdi]. 1104 00:59:42,886 --> 00:59:44,620 >> LUCAS: Tai geriausias scenarijus. 1105 00:59:44,620 --> 00:59:48,810 Taigi, tai, kaip, kad daug kartų už rūšiavimas, geriausias scenarijus yra 1106 00:59:48,810 --> 00:59:50,660 kai sąrašas jau išrūšiuotos. 1107 00:59:50,660 --> 00:59:52,670 Taigi jūs neturite iš tikrųjų turi nieko daryti. 1108 00:59:52,670 --> 00:59:56,290 Burbulas Rūšiuoti turi geriausias scenarijaus atveju n. 1109 00:59:56,290 --> 00:59:58,820 Ar jūs žinote, kodėl? 1110 00:59:58,820 --> 01:00:00,620 >> PUBLIKA: [nesigirdi]. 1111 01:00:00,620 --> 01:00:05,640 >> LUCAS: Taip, jei jums sekti ar duomenys racionas neturėjo apsikeitimo arba 1112 01:00:05,640 --> 01:00:10,533 ne, jei turite kažką panašaus nustatytas tiesa, jei ten buvo iteracija, jei 1113 01:00:10,533 --> 01:00:15,140 sąrašas jau rūšiuojamos, iš esmės, kas nutiks tai aš ruošiuosi 1114 01:00:15,140 --> 01:00:17,890 pabandykite sukeisti kas du gretimi elementai. 1115 01:00:17,890 --> 01:00:19,920 Aš ruošiuosi pamatyti, kad nėra apsikeitimo. 1116 01:00:19,920 --> 01:00:21,230 Ir aš tiesiog grįžti iš karto. 1117 01:00:21,230 --> 01:00:24,240 >> Taigi tai reiškia, kad aš tiesiog turėjo eiti per sąrašą vienu metu. 1118 01:00:24,240 --> 01:00:28,990 Taigi, tai n, nes man atrodo ne n elementų. 1119 01:00:28,990 --> 01:00:30,930 Kodėl pasirinkimas tarsi n kvadratu? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Taip, net jei sąrašas surūšiuotas, už kiekvienas atrankos rūšiuoti iteracija, aš 1122 01:00:45,520 --> 01:00:47,590 turite pasirinkti mažiausią elementą. 1123 01:00:47,590 --> 01:00:49,980 Taigi, tai reiškia, kad aš turiu atlikti ieškoti ne visus nerūšiuotus elementus 1124 01:00:49,980 --> 01:00:53,350 sąrašą ir rasti mažiausiai kiekvienos iteracijos. 1125 01:00:53,350 --> 01:00:54,600 Ar tai prasminga? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> Ir įterpimas kardas yra n, nes atvejis, kad aš bandau įterpti 1128 01:01:04,690 --> 01:01:09,320 Skaičiai ir visus numerius, kai aš pabandykite įdėti juos, matau, kad jie 1129 01:01:09,320 --> 01:01:10,510 yra teisingoje padėtyje. 1130 01:01:10,510 --> 01:01:15,120 Aš neturiu eiti patikrinti, ar visi kiti numerius nerūšiuotų sąrašą. 1131 01:01:15,120 --> 01:01:17,170 Štai kodėl ji bus n. 1132 01:01:17,170 --> 01:01:19,480 Padaryti jausmą? 1133 01:01:19,480 --> 01:01:21,035 Ir kas yra teta? 1134 01:01:21,035 --> 01:01:23,410 >> PUBLIKA: [nesigirdi]. 1135 01:01:23,410 --> 01:01:24,380 >> LUCAS: Kas, atsiprašau? 1136 01:01:24,380 --> 01:01:24,960 Pasakykite, kad jį dar kartą. 1137 01:01:24,960 --> 01:01:25,666 >> PUBLIKA: [nesigirdi]. 1138 01:01:25,666 --> 01:01:26,490 >> LUCAS: Būtent. 1139 01:01:26,490 --> 01:01:31,280 Taigi jūs galite pamatyti, kad tik pasirinkimas saugomi Merge sort turi thetas. 1140 01:01:31,280 --> 01:01:39,920 Ir tai todėl, kad jūs turite tik teta jei abi Didelės O ir Omega yra tas pats. 1141 01:01:39,920 --> 01:01:41,520 Gerai. 1142 01:01:41,520 --> 01:01:44,210 Ir, pagaliau, sujungti tarsi yra žurnalo n. 1143 01:01:44,210 --> 01:01:48,910 >> Ir tada, kaip Dan sakė, Merge sort yra lyg taip pat, kad 1144 01:01:48,910 --> 01:01:50,320 jūs dvejetainis paiešką. 1145 01:01:50,320 --> 01:01:53,530 Taigi Jūs gaunate sąrašą. 1146 01:01:53,530 --> 01:01:55,170 Ir jūs ketinate sumažinti perpus. 1147 01:01:55,170 --> 01:02:00,580 Ir tada jūs supjaustyti juos mažesniuose puselės. 1148 01:02:00,580 --> 01:02:01,730 Ir tada jūs juos sujungti. 1149 01:02:01,730 --> 01:02:02,960 Jūs vaikinai prisiminti, kad, tiesa? 1150 01:02:02,960 --> 01:02:04,960 Gerai, kaip jis sakė. 1151 01:02:04,960 --> 01:02:08,330 >> Gerai, rodyklės. 1152 01:02:08,330 --> 01:02:11,078 Taigi, kas yra žymeklis? 1153 01:02:11,078 --> 01:02:12,050 >> PUBLIKA: [nesigirdi]. 1154 01:02:12,050 --> 01:02:12,820 >> LUCAS: adresas. 1155 01:02:12,820 --> 01:02:13,720 Gerai. 1156 01:02:13,720 --> 01:02:18,530 Aš žinau, kad Dovydas rodo krūva filmai apie Binky ir viskas nukreipta 1157 01:02:18,530 --> 01:02:19,080 tarpusavyje. 1158 01:02:19,080 --> 01:02:22,960 Bet man patinka galvoti apie rodykles vien kaip adresą. 1159 01:02:22,960 --> 01:02:26,110 Taigi, tai kintamasis, kuris vyksta saugoti adresą. 1160 01:02:26,110 --> 01:02:31,940 >> Taigi, tai tik šis specialus kintamasis kad yra keturių baitų ilgio. 1161 01:02:31,940 --> 01:02:36,550 Atminkite, kad žymiklis nieko yra visada keturių baitų ilgio mūsų 32-bit 1162 01:02:36,550 --> 01:02:39,370 mašina taip daroma prietaisas. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 Ir jis tiesiog turi vietą iš viduje jo kintamojo. 1165 01:02:47,050 --> 01:02:50,240 >> Gerai, kad ten tai atmintis, iš esmės. 1166 01:02:50,240 --> 01:02:57,420 Taigi, kiekvienas atminties blokas iš tikrųjų turi etiketės, kuri yra adresas 1167 01:02:57,420 --> 01:02:58,890 slotty atminties. 1168 01:02:58,890 --> 01:03:02,370 Taigi, tai reiškia, kad aš galiu turėti rodyklė nukreipta į 1169 01:03:02,370 --> 01:03:03,380 bet kurį iš šių adresų. 1170 01:03:03,380 --> 01:03:09,930 Taigi priežastis, kodėl mes naudojame patarimų yra jei aš turiu prisiminti vietą 1171 01:03:09,930 --> 01:03:12,300 kad konkretus kintamasis yra atminties. 1172 01:03:12,300 --> 01:03:16,560 >> Ir jūs vaikinai prisiminti, kad vienas iš tų atvejai buvo, jei aš turiu tam tikrą funkciją 1173 01:03:16,560 --> 01:03:20,820 jei aš iš tikrųjų noriu, kad jūs apsikeitimo už Reals, aš iš tikrųjų 1174 01:03:20,820 --> 01:03:22,110 turi siųsti rodyklę. 1175 01:03:22,110 --> 01:03:23,460 Ne kintamasis. 1176 01:03:23,460 --> 01:03:25,200 Ar jus vaikinai prisiminti, kad? 1177 01:03:25,200 --> 01:03:26,450 Skirtumas between-- 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 kas yra vardas? 1180 01:03:34,120 --> 01:03:36,010 Skambinimas pagal vertę ir skambina nurodant, ar ne? 1181 01:03:36,010 --> 01:03:36,840 >> Gerai, taip. 1182 01:03:36,840 --> 01:03:38,330 Taigi skambinkite vertės. 1183 01:03:38,330 --> 01:03:43,570 Kai jums tiesiog siųsti kintamąjį funkcionuoti jūs tiesiog siunčiant vertę. 1184 01:03:43,570 --> 01:03:45,610 Taigi jūs tikrai siuntimo kintamojo kopiją. 1185 01:03:45,610 --> 01:03:49,720 Ir jūsų programa negalėjo rūpintis mažiau apie tai, jei pats kintamasis tikrųjų 1186 01:03:49,720 --> 01:03:51,650 daro kopiją. 1187 01:03:51,650 --> 01:03:56,330 >> Ir skambinimą nuoroda reiškia, kad Aš iš tiesų siųsdami kopiją 1188 01:03:56,330 --> 01:03:57,550 žymiklį į tą kintamąjį. 1189 01:03:57,550 --> 01:04:00,970 Taigi tai reiškia, kad aš siuntimą vieta, kad kintamasis. 1190 01:04:00,970 --> 01:04:04,440 Taigi pajusti turiu vietą kintamasis, kai aš skambinti funkcija 1191 01:04:04,440 --> 01:04:09,700 su rodyklėmis, aš galėtų iš tikrųjų keisti duomenis, kurie buvo pagrindinis. 1192 01:04:09,700 --> 01:04:12,050 Padaryti jausmą? 1193 01:04:12,050 --> 01:04:17,560 >> Nors, žymeklis yra kopija, rodyklė dar turi realų adresą 1194 01:04:17,560 --> 01:04:20,090 kintamasis, noriu pakeisti. 1195 01:04:20,090 --> 01:04:21,920 Padaryti jausmą? 1196 01:04:21,920 --> 01:04:24,290 >> Taigi kuriant patarimų. 1197 01:04:24,290 --> 01:04:28,410 Atminkite, kad žymeklį visada tipo, kad ji nukreipta 1198 01:04:28,410 --> 01:04:29,890 ir po to žvaigždę. 1199 01:04:29,890 --> 01:04:31,030 Ir tada jūs galėsite įdėti pavadinimą. 1200 01:04:31,030 --> 01:04:35,765 Taigi nepamirškite, kad jei turite kokia žvaigždė, tai kaip rodyklė į 1201 01:04:35,765 --> 01:04:38,990 kad nepriklausomai nuo kintamo tipo, kad jūs turėjote. 1202 01:04:38,990 --> 01:04:42,850 >> Taigi čia žvaigždė, pavyzdžiui, tai žymeklis ir sveikasis skaičius. 1203 01:04:42,850 --> 01:04:47,680 Ir tada char žvaigždė žymeklis char žvaigždė ir pan. 1204 01:04:47,680 --> 01:04:47,960 Taip? 1205 01:04:47,960 --> 01:04:52,710 >> PUBLIKA: Ką daryti, jei mes turime rodyklė n žvaigždė x. 1206 01:04:52,710 --> 01:04:55,255 Žinau, kad sukuria žymiklį į x. 1207 01:04:55,255 --> 01:04:59,432 Ar ji taip pat paskelbti x sveikasis skaičius? 1208 01:04:59,432 --> 01:05:05,170 >> LUCAS: Gerai, kad, kai jūs sakote n star x, jūs ne sukurti rodyklę 1209 01:05:05,170 --> 01:05:06,000 kintamasis x. 1210 01:05:06,000 --> 01:05:08,170 Jūs kuriate rodyklę pavadintas x. 1211 01:05:08,170 --> 01:05:09,396 >> PUBLIKA: [nesigirdi]. 1212 01:05:09,396 --> 01:05:14,250 >> LUCAS: Taigi, kai aš sakau, n star x, aš sakydamas, ei, į atmintį, aš ruošiuosi 1213 01:05:14,250 --> 01:05:16,390 gauti vieną iš šių trijų langelių. 1214 01:05:16,390 --> 01:05:20,750 Ir aš ruošiuosi pasakyti, kad šis bus x, kuris yra 1215 01:05:20,750 --> 01:05:22,000 bus žymeklis. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 Ir kažką įdomaus apie rodykles yra tai, kad mes sakome, kad jie turi 1218 01:05:30,640 --> 01:05:32,620 4 baitų 32 bitų mašina. 1219 01:05:32,620 --> 01:05:36,320 Ir dėl šios priežasties yra todėl, kad 4 baitai 32-bitai. 1220 01:05:36,320 --> 01:05:40,490 >> Ir mašinos, kurios yra 64 bitai iš tikrųjų turi patarimų adresus 1221 01:05:40,490 --> 01:05:43,480 kad yra 64 bitų ilgio. 1222 01:05:43,480 --> 01:05:49,820 Taigi tai tiesiog reiškia, kad iš dydis adresai mašinoje yra skirtingas. 1223 01:05:49,820 --> 01:05:52,270 >> Taigi nurodymas ir Dereferencing. 1224 01:05:52,270 --> 01:05:54,310 Yra du operatoriai, kurie vaikinai turėtų prisiminti. 1225 01:05:54,310 --> 01:05:55,450 Pirmasis ampersand. 1226 01:05:55,450 --> 01:05:56,810 Antrasis yra žvaigždė. 1227 01:05:56,810 --> 01:06:05,060 Negalima susipainioti ta žvaigždė ir tai STAR reikalavimus, nes prisimenu, kad 1228 01:06:05,060 --> 01:06:06,950 Šiuo atveju, jūs turite n žvaigždė. 1229 01:06:06,950 --> 01:06:08,700 >> Tai kaip visa tai kartu. 1230 01:06:08,700 --> 01:06:10,720 Nėra n Space Star. 1231 01:06:10,720 --> 01:06:12,070 Taigi tai reiškia, kad jis tipo. 1232 01:06:12,070 --> 01:06:14,870 Atminkite, kad kai jūs turite kintamasis žvaigždė, esate 1233 01:06:14,870 --> 01:06:16,230 kalbame apie tipo. 1234 01:06:16,230 --> 01:06:20,540 >> Jei turite tik žvaigždę, o tada pavadinimas kintamąjį, tai reiškia, kad 1235 01:06:20,540 --> 01:06:24,100 jūs dereferencing žymeklį, kuris tai reiškia, kad jūs ieškote 1236 01:06:24,100 --> 01:06:28,290 žymeklis, rasti adresą, tai nukreipta į, einu į tą adresą, 1237 01:06:28,290 --> 01:06:30,850 ir žiūri, kai jūs turite ten. 1238 01:06:30,850 --> 01:06:34,310 Taigi aš sakau mano studentai, kad jei turite žvaigždė, jums reikia galvoti, kad jis 1239 01:06:34,310 --> 01:06:36,850 iš turinio santrumpa. 1240 01:06:36,850 --> 01:06:39,770 >> Taigi, jei turite žymeklį ir jūs padaryti žvaigždės žymeklį, tai 1241 01:06:39,770 --> 01:06:41,720 turinys žymeklis. 1242 01:06:41,720 --> 01:06:44,580 Taigi jūs einate į kokia ji nukreipta į ir pažvelgti į nuolat turinį. 1243 01:06:44,580 --> 01:06:47,730 Ir ampersand yra pats dalyko kaip adreso. 1244 01:06:47,730 --> 01:06:52,560 >> Taigi, jei aš turiu A-- kaip kintamąjį, tegul pasakyti, kad aš vid lygi 3-- 1245 01:06:52,560 --> 01:06:56,900 jei aš noriu rasti, kad adresą kintamasis atminties, galiu tik daryti 1246 01:06:56,900 --> 01:06:58,240 Ženklas. 1247 01:06:58,240 --> 01:07:00,280 Taigi, tai adresas. 1248 01:07:00,280 --> 01:07:01,530 Padaryti jausmą? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Taigi čia yra pavyzdys. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Tai nėra int b ir c int. 1253 01:07:11,530 --> 01:07:16,520 Taigi int lygus 3 reiškia, kad Aš ruošiuosi eiti į atmintį. 1254 01:07:16,520 --> 01:07:19,870 Ir aš ruošiuosi rasti lizdą ir įdėti 3 numeriu čia. 1255 01:07:19,870 --> 01:07:22,200 >> Ir tada int B lygus 4. 1256 01:07:22,200 --> 01:07:23,100 Aš ruošiuosi daryti tą patį. 1257 01:07:23,100 --> 01:07:25,840 Eiti į atmintį ir įdėti numerį 4 viename iš dėžės. 1258 01:07:25,840 --> 01:07:27,100 Ir int lygus 5. 1259 01:07:27,100 --> 01:07:29,740 Find another langelį ir įdėti numerį 5. 1260 01:07:29,740 --> 01:07:36,160 >> Taigi, kas yra ši eilutė darai? n žvaigždė pa lygi ampersand a. 1261 01:07:36,160 --> 01:07:37,800 Taigi, visų pirma, n žvaigždė pa. 1262 01:07:37,800 --> 01:07:39,050 Kas tai daro? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> PUBLIKA: [nesigirdi]. 1265 01:07:42,298 --> 01:07:47,890 >> LUCAS: Taip, taip n žvaigždė pa, pirma, pareiškia žymeklį vadinamas pa. 1266 01:07:47,890 --> 01:07:53,720 Ir tada ji paskiriant į vertę kad žymeklis būtų iš adresas. 1267 01:07:53,720 --> 01:07:55,790 Taigi Ženklas. 1268 01:07:55,790 --> 01:07:58,510 Tada, jei aš žvaigždė PB, kas yra žvaigždė pb? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> Oi, atsiprašau. 1271 01:08:03,150 --> 01:08:06,330 Tai taip pat nėra. n star pb. 1272 01:08:06,330 --> 01:08:07,905 Aš turiu galvoje žvaigždės vnt. 1273 01:08:07,905 --> 01:08:11,200 Man labai gaila. 1274 01:08:11,200 --> 01:08:11,940 Tai tas pats dalykas. 1275 01:08:11,940 --> 01:08:16,408 Bet dabar aš geras AR sukurti rodyklę B ir tada žymiklį į c. 1276 01:08:16,408 --> 01:08:16,886 Taip? 1277 01:08:16,886 --> 01:08:18,136 >> PUBLIKA: [nesigirdi]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> LUCAS: Taip. 1280 01:08:26,670 --> 01:08:32,630 Taigi, jei jūs einate į atmintį, ir jūs einate į langas, kuris yra žymintis per metus, 1281 01:08:32,630 --> 01:08:37,149 jūs iš tikrųjų ketiname pamatyti pavyzdį adresą. 1282 01:08:37,149 --> 01:08:38,399 Gerai? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Taip? 1285 01:08:43,300 --> 01:08:45,605 >> PUBLIKA: [nesigirdi]? 1286 01:08:45,605 --> 01:08:49,260 >> LUCAS: Taip, žymeklis adresas. 1287 01:08:49,260 --> 01:08:50,120 Niekada nepamirškite, kad. 1288 01:08:50,120 --> 01:08:52,800 Tai kaip svarbiausias dalis apie rodykles. 1289 01:08:52,800 --> 01:08:56,180 Yra sandėliavimo ir adresas tam tikru kintamuoju. 1290 01:08:56,180 --> 01:08:56,890 Kitoks? 1291 01:08:56,890 --> 01:08:58,370 Visi kiti klausimai? 1292 01:08:58,370 --> 01:08:59,189 Gerai. 1293 01:08:59,189 --> 01:09:00,399 >> Taigi Pointeriai ir masyvai. 1294 01:09:00,399 --> 01:09:08,189 Atminkite, kad kai aš int masyvas 3, Iš esmės, ką aš darau yra aš, natūra 1295 01:09:08,189 --> 01:09:12,779 d nurodydama, rodyklė. 1296 01:09:12,779 --> 01:09:18,960 Taigi masyvas yra lyg rodyklė į konkrečią vietą atmintyje, kurioje aš 1297 01:09:18,960 --> 01:09:21,999 skiriama tris tarpsnius sveikieji skaičiai. 1298 01:09:21,999 --> 01:09:23,430 Ar tai prasminga? 1299 01:09:23,430 --> 01:09:30,250 >> Taigi, kai aš padaryti int masyvas 3, ką aš daro, iš esmės, yra sukurti trys 1300 01:09:30,250 --> 01:09:31,479 lizdai atmintyje. 1301 01:09:31,479 --> 01:09:33,899 Taigi aš tiesiog rasti trijų lizdus atminties. 1302 01:09:33,899 --> 01:09:38,810 Taigi, jei aš, tada, žvaigždė masyvas, jį Iš esmės tai reiškia, kad matrica turinį, 1303 01:09:38,810 --> 01:09:46,180 o tai reiškia, aš ištrinti žymeklį, aš einu į tą vietą, kad ji būtų nukreipta į, 1304 01:09:46,180 --> 01:09:47,939 ir aš įdėti numeris vienas. 1305 01:09:47,939 --> 01:09:53,729 >> Ir tada, jei aš žvaigždė masyvo plius 1, tai tas pats, kaip daro masyvo 1306 01:09:53,729 --> 01:09:59,690 kronšteinai vienas, kuris tiesiog reiškia, kad aš eiti į vieta, kad ji nukreipta ne. 1307 01:09:59,690 --> 01:10:03,000 Ir tada plius 1 markių man pereiti per vieną poziciją. 1308 01:10:03,000 --> 01:10:06,510 Taigi aš einu į šią poziciją, iš tikrųjų, ir įdėti numeris du. 1309 01:10:06,510 --> 01:10:10,900 >> Ir tada, pagaliau, kai aš masyvas plius 2, aš einu ten, kur 1310 01:10:10,900 --> 01:10:11,825 Array savo nukreipta ne. 1311 01:10:11,825 --> 01:10:14,690 Ir tada aš pereiti prie atminties blokus. 1312 01:10:14,690 --> 01:10:16,240 Ir tada aš įdėti numeris trys čia. 1313 01:10:16,240 --> 01:10:16,600 Taip? 1314 01:10:16,600 --> 01:10:21,400 >> PUBLIKA: Taigi žvaigždė masyvas yra tiesiog sakydamas labai pirmąjį tašką. 1315 01:10:21,400 --> 01:10:25,090 Ir jūs galite pridėti 1, tik todėl, kad mes tik tikrai 1316 01:10:25,090 --> 01:10:27,295 nuorodos, kad pirmąjį adresą. 1317 01:10:27,295 --> 01:10:28,545 >> LUCAS: Taip. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Kodėl mes, pavyzdžiui, pasakyti, masyvas 0, 1 masyvas, ir masyvas 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 Aš sakau, kodėl jūs darote 0, 1, 2, 1 3, o ne 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Viena iš priežasčių yra, vienas, kompiuterio programuotojai nori pradėti 1323 01:10:46,550 --> 01:10:47,750 skaičiuoti nuo 0. 1324 01:10:47,750 --> 01:10:52,370 Du yra, nes, kai jūs darote įvairių 0, tai tas pats, kaip daro masyvo 1325 01:10:52,370 --> 01:10:56,330 plius 0, o tai reiškia, aš einu į kad pozicija, ir aš ne 1326 01:10:56,330 --> 01:10:59,320 praleisti visas atminties blokus. 1327 01:10:59,320 --> 01:11:01,750 Taigi aš nemanau, perkelti visas atminties blokus. 1328 01:11:01,750 --> 01:11:02,015 Taip? 1329 01:11:02,015 --> 01:11:03,265 >> PUBLIKA: [nesigirdi]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> LUCAS: Taigi ji klausia, kas yra tarp daro skirtumą 1332 01:11:12,670 --> 01:11:14,000 tai ar daro malloc. 1333 01:11:14,000 --> 01:11:17,550 Vienas iš skirtumų yra tas, kad int masyvas 3 yra sukurti 1334 01:11:17,550 --> 01:11:19,260 masyvas ant kamino. 1335 01:11:19,260 --> 01:11:23,080 Ir kai aš malloc, jį sukuria ant krūvos. 1336 01:11:23,080 --> 01:11:25,250 Ar tai prasminga? 1337 01:11:25,250 --> 01:11:28,870 >> Taigi, kaip malloc faktiškai dirba? 1338 01:11:28,870 --> 01:11:32,245 Taigi, kodėl mes net reikia naudoti malloc? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Jūsų sudarytojas rūšies skaičiai iš visų kintamieji, kad jūs deklaruotos. 1341 01:11:39,700 --> 01:11:44,040 Ir jis sukuria erdvę visiems iš jų kamino. 1342 01:11:44,040 --> 01:11:47,180 Taigi visi jūsų kintamųjų vyksta būti kažkur kamino. 1343 01:11:47,180 --> 01:11:49,460 Taigi čia yra aplinkos kintamieji. 1344 01:11:49,460 --> 01:11:53,850 >> Taigi, iš esmės, erdvė tiems kintamiesiems, atmintyje skiriama ne 1345 01:11:53,850 --> 01:11:55,080 kompiliavimo metu. 1346 01:11:55,080 --> 01:11:58,790 Taigi tai reiškia, kad jūsų kompiuteris turi žinoti visų šių kintamųjų 1347 01:11:58,790 --> 01:11:59,790 iš anksto. 1348 01:11:59,790 --> 01:12:02,500 Jam nereikia žinoti, kas vertė jūs ketinate įdėti į juos. 1349 01:12:02,500 --> 01:12:05,490 Tačiau reikia žinoti, kaip kiek atminties jūs turite. 1350 01:12:05,490 --> 01:12:09,380 >> Bet dabar tarkime, kad, pavyzdžiui, kuriate masyvą arba atsižvelgiant 1351 01:12:09,380 --> 01:12:13,430 eilutė, kad jūs vartojate nuo naudotojo. 1352 01:12:13,430 --> 01:12:17,300 Jūs nežinote, kaip ilgai eilutė bus, pavyzdžiui. 1353 01:12:17,300 --> 01:12:20,600 Taigi jūs nežinote, kiek tiksliai atminties blokai jums skirti, ar ne? 1354 01:12:20,600 --> 01:12:24,120 >> Taigi tai tikrai ne prasmės jums pasakyti įdėti 100 simbolių. 1355 01:12:24,120 --> 01:12:26,420 Ir kas tada, jei vartotojas rašo 150? 1356 01:12:26,420 --> 01:12:27,670 Jūs ketinate būti prisukamas. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Taigi, iš esmės, jūs negalite būti tikri, kaip Kiek atminties reikia skirti 1359 01:12:34,620 --> 01:12:35,960 kai sudaryti programą. 1360 01:12:35,960 --> 01:12:38,240 Jūs tiesiog žinau, kad vykdymo metu. 1361 01:12:38,240 --> 01:12:39,950 Štai kodėl jūs turite krūvą. 1362 01:12:39,950 --> 01:12:47,610 Taigi krūva turės atmintį kad jūs skyrimo metu 1363 01:12:47,610 --> 01:12:50,810 trukmės programa veikia. 1364 01:12:50,810 --> 01:12:55,780 >> Taigi, iš esmės, kai jūs darote malloc, ką darote paskirstyti atmintį 1365 01:12:55,780 --> 01:13:00,160 Runtime, o tai reiškia, kad jūs esate Sprendžiant teisę tuo metu, kad jus 1366 01:13:00,160 --> 01:13:02,670 turėtų būti, kad atminties. 1367 01:13:02,670 --> 01:13:04,210 Štai, kai jūs jį paskirstyti. 1368 01:13:04,210 --> 01:13:06,430 Ar tai prasminga? 1369 01:13:06,430 --> 01:13:11,690 >> Taigi nepamirškite, kamino turi kintamuosius kad yra sukurta kompiliavimo metu. 1370 01:13:11,690 --> 01:13:14,560 Ir tada krūva yra kintamieji kad yra sukurta, kaip jūs einate 1371 01:13:14,560 --> 01:13:15,600 su malloc, pavyzdžiui. 1372 01:13:15,600 --> 01:13:16,850 >> PUBLIKA: [nesigirdi]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> LUCAS: Taigi GetString yra ketinate skambinti malloc. 1375 01:13:24,340 --> 01:13:26,710 Leiskite kalbėti apie malloc ir Aš paaiškinti GetString. 1376 01:13:26,710 --> 01:13:32,000 Taigi malloc yra tas pats, kaip atminties paskirstymas. 1377 01:13:32,000 --> 01:13:34,600 Taigi ji ketina skirti atminties į krūvą. 1378 01:13:34,600 --> 01:13:40,010 Ir jis ketina grįžti rodyklę į kai ta atmintis buvo skirta ne. 1379 01:13:40,010 --> 01:13:43,090 >> Taigi, kai jūs do-- 1380 01:13:43,090 --> 01:13:44,910 čia example-- 1381 01:13:44,910 --> 01:13:45,830 n star žymeklis. 1382 01:13:45,830 --> 01:13:50,520 Ir tada žymiklį lygi malloc dydis colių kartus 10. 1383 01:13:50,520 --> 01:13:52,110 Aš sukurti rodyklę. 1384 01:13:52,110 --> 01:13:59,020 Ir tada aš priskiriant tą rodyklę iš rodyklės, kad malloc vertė 1385 01:13:59,020 --> 01:13:59,680 duoda man. 1386 01:13:59,680 --> 01:14:04,150 >> Taigi aš prašau malloc galite skirti plotas 10 sveikieji skaičiai. 1387 01:14:04,150 --> 01:14:05,390 Štai ką jis sako. 1388 01:14:05,390 --> 01:14:09,020 Ir malloc suteikia man atgal žymiklį į tą vietą. 1389 01:14:09,020 --> 01:14:11,460 Padaryti jausmą? 1390 01:14:11,460 --> 01:14:12,270 Gerai. 1391 01:14:12,270 --> 01:14:17,940 Aš Ir GetString yra, iš esmės, daro skambinti į malloc, todėl jūs galite paskirstyti 1392 01:14:17,940 --> 01:14:21,680 atminties runtime metu. 1393 01:14:21,680 --> 01:14:26,460 >> Visada atminkite, kad patikrinti null nes malloc ketina grįžti null 1394 01:14:26,460 --> 01:14:28,200 jei jis negali paskirstyti atmintį. 1395 01:14:28,200 --> 01:14:31,660 Tarkime, kad jūs paprašykite juokinga atminties kiekis. 1396 01:14:31,660 --> 01:14:33,950 Jūsų kompiuteris yra nesiruošia būti galėtų skirti, kad daug. 1397 01:14:33,950 --> 01:14:36,410 >> Taigi malloc yra tik ketina grįžti null. 1398 01:14:36,410 --> 01:14:42,210 Taigi visada prisiminti, kad patikrinti, ar žymeklis, kad jūs turite iš malloc yra 1399 01:14:42,210 --> 01:14:45,640 null ar ne, nes, jei jis yra, jums gali būti dereferencing žymeklį ir 1400 01:14:45,640 --> 01:14:48,340 sukelia šalutinį gedimus. 1401 01:14:48,340 --> 01:14:50,930 Ir galiausiai, nepamirškite Jūsų laisvos atminties. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Malloc yra sukurti atminties į krūvą. 1404 01:15:00,560 --> 01:15:03,436 Ir jūs turite atlaisvinti atmintį iki programos pabaigos. 1405 01:15:03,436 --> 01:15:05,370 Gerai, kad viskas man. 1406 01:15:05,370 --> 01:15:07,900 Atsiprašome, Rob. 1407 01:15:07,900 --> 01:15:07,950 Ačiū. 1408 01:15:07,950 --> 01:15:09,878 >> [Plojimai] 1409 01:15:09,878 --> 01:15:12,679 >> LUCAS: Bet paskutiniai klausimai prieš Rob ateina? 1410 01:15:12,679 --> 01:15:13,138 Nėra? 1411 01:15:13,138 --> 01:15:13,597 Taip? 1412 01:15:13,597 --> 01:15:15,892 >> PUBLIKA: Nemačiau tai vienas internete. 1413 01:15:15,892 --> 01:15:17,269 Ar jūs įkelti jį dar? 1414 01:15:17,269 --> 01:15:19,106 >> LUCAS: Manau, kad Dave yra įkelti jį greičiau. 1415 01:15:19,106 --> 01:15:19,880 >> DAVE: Tai bus paskelbta. 1416 01:15:19,880 --> 01:15:20,310 >> LUCAS: Tai bus internete. 1417 01:15:20,310 --> 01:15:21,175 >> PUBLIKA: Tai iki. 1418 01:15:21,175 --> 01:15:22,090 >> LUCAS: Tai naujo? 1419 01:15:22,090 --> 01:15:23,157 Gerai. 1420 01:15:23,157 --> 01:15:23,644 Taip? 1421 01:15:23,644 --> 01:15:27,053 >> PUBLIKA: [nesigirdi]? 1422 01:15:27,053 --> 01:15:30,285 >> LUCAS: Taip, jums reikia atlaisvinti visi atmintis, kuri įdėti į krūvą. 1423 01:15:30,285 --> 01:15:31,535 >> PUBLIKA: [nesigirdi]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> LUCAS: Taip. 1426 01:15:36,160 --> 01:15:39,980 Bet koks laikas, kad jūs turite kultūrą malloc, Jūs turėtumėte turėti kultūrą nemokamai 1427 01:15:39,980 --> 01:15:42,640 po to, kai nustosite vartoti, kad kintamasis. 1428 01:15:42,640 --> 01:15:44,800 Taigi malloc ir nemokamai yra visada kartu. 1429 01:15:44,800 --> 01:15:45,410 Jų geriausi draugai. 1430 01:15:45,410 --> 01:15:46,720 Taip. 1431 01:15:46,720 --> 01:15:47,970 Rob? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> ROB: eisiu greitai. 1434 01:15:56,850 --> 01:16:00,466 O taip pat vaizdo įrašas bus supakuoti. 1435 01:16:00,466 --> 01:16:01,716 Turiu apie mic. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> Gerai, kad per savaitę penkių dalykų. 1438 01:16:26,230 --> 01:16:27,970 Pirmas dalykas, kurį mes turime, yra kamino. 1439 01:16:27,970 --> 01:16:33,390 Taigi atminkite, kad yra tik vienas kaminas rėmas už aktyvią skambinimo funkcijos. 1440 01:16:33,390 --> 01:16:34,710 Pamatysime, kad per sekundę. 1441 01:16:34,710 --> 01:16:37,850 Ir taip pat prisiminti, kas iš tikrųjų vyksta kiekvienoje kamino rėmo ketinate būti 1442 01:16:37,850 --> 01:16:41,880 vietos kintamieji mūsų funkcijų, argumentai, kurie patenka į mūsų 1443 01:16:41,880 --> 01:16:43,880 funkcijos, kartu su pora kitų dalykų, jums nereikia tikrai 1444 01:16:43,880 --> 01:16:45,260 jaudintis. 1445 01:16:45,260 --> 01:16:50,950 >> Taigi čia yra pavyzdys programa, kurioje, pranešimas, pagrindinis yra printfing grąžą 1446 01:16:50,950 --> 01:16:52,830 vertė foo 4. 1447 01:16:52,830 --> 01:16:57,930 foo yra tik ketina grįžti vertė baras 4 kableliu 6. 1448 01:16:57,930 --> 01:17:02,380 Ir baras ketina nustatyti kai vietos kintamasis n lygi 4 kartus 6. 1449 01:17:02,380 --> 01:17:03,920 Ir tada grįžti n. 1450 01:17:03,920 --> 01:17:09,130 >> Taigi pažvelkime į kaminą per Tikrasis pasikartojančių šią programą. 1451 01:17:09,130 --> 01:17:10,500 Taigi, čia yra mūsų kamino apačioje. 1452 01:17:10,500 --> 01:17:12,620 Atminkite, kad kamino užauga. 1453 01:17:12,620 --> 01:17:15,370 Tad mūsų kamino apačioje, mes turėti kamino rėmas pagrindinis. 1454 01:17:15,370 --> 01:17:17,000 Kai pradedama programa, pagrindinis visada bus ne 1455 01:17:17,000 --> 01:17:18,560 dugnas mūsų kamino. 1456 01:17:18,560 --> 01:17:20,880 >> Ir kas yra viduje mūsų kamino rėmas pagrindinis? 1457 01:17:20,880 --> 01:17:23,810 Taigi, nors ten nėra vietos kintamuosius pagrindinis, kaip minėjau anksčiau, 1458 01:17:23,810 --> 01:17:29,670 mes argc ir RGV pradėjimo vietos viduje pagrindinis kamino rėmo. 1459 01:17:29,670 --> 01:17:33,260 Taigi pagrindinis dabar vyksta skambinti funkcija foo. 1460 01:17:33,260 --> 01:17:35,125 Ir tai reiškia, kad foo ketina gauti savo kamino rėmo. 1461 01:17:35,125 --> 01:17:36,970 >> Taigi dabar mes viduje funkcija foo. 1462 01:17:36,970 --> 01:17:38,610 Ir tai, kas turi eiti Foo savo kamino rėmo? 1463 01:17:38,610 --> 01:17:41,100 Na, foo yra argumentas n. 1464 01:17:41,100 --> 01:17:45,440 Ir n yra lygus 4, nes tai, ką Pagrindinis bėga kaip Foo argumentą. 1465 01:17:45,440 --> 01:17:48,490 >> Taigi dabar foo ketina skambinti juostą. 1466 01:17:48,490 --> 01:17:52,070 Kas yra baras teks viduje jos "kamino rėmo? 1467 01:17:52,070 --> 01:17:55,610 Jis turi vienodą x 4 y vienodo iki šešių. 1468 01:17:55,610 --> 01:17:58,540 Tai dar ne viskas, kad mes ketiname turėti į kaminą rėmo, nes baras 1469 01:17:58,540 --> 01:18:00,580 taip pat turi vietinį kintamąjį n. 1470 01:18:00,580 --> 01:18:03,370 Ir n mes ketiname nustatyti lygi 24. 1471 01:18:03,370 --> 01:18:05,750 >> Taigi dabar baras ketina grįžti n. 1472 01:18:05,750 --> 01:18:09,300 Taigi baras grįžta 24 iki kamino rėmas foo. 1473 01:18:09,300 --> 01:18:12,560 Ir todėl, kad juosta yra dabar grįžta, kad tai mes Popping kamino rėmo 1474 01:18:12,560 --> 01:18:14,250 baro off kamino. 1475 01:18:14,250 --> 01:18:18,430 Taigi, visi atmintis, baras buvo naudojant dabar nėra kamino. 1476 01:18:18,430 --> 01:18:21,550 >> Dabar, foo taip pat ketina grįžti 24 į pagrindinį. 1477 01:18:21,550 --> 01:18:25,470 Taigi dabar, kad foo grįžta, atmintį kad foo buvo naudojant savo ' 1478 01:18:25,470 --> 01:18:27,550 kamino rėmas taip pat dingo. 1479 01:18:27,550 --> 01:18:29,660 Ir dabar, pagrindinis ketina skambinti printf. 1480 01:18:29,660 --> 01:18:31,660 Taigi printf yra tiesiog kita funkcija. 1481 01:18:31,660 --> 01:18:35,320 Kai mes vadiname printf, tai bus kitas kamino rėmo už printf 1482 01:18:35,320 --> 01:18:36,470 skambinimo funkcijos. 1483 01:18:36,470 --> 01:18:37,990 >> Kas yra mūsų artimųjų printf? 1484 01:18:37,990 --> 01:18:40,090 Štai kas vyksta eiti jos kamino rėmo. 1485 01:18:40,090 --> 01:18:44,970 Bent jau, mes artimųjų kad proc i Kairinis pasvirasis brūkšnys n ir 1486 01:18:44,970 --> 01:18:47,180 argumentas 24. 1487 01:18:47,180 --> 01:18:50,370 Tai gali turėti daugiau tai kamino rėmo jei printf atsitinka būti naudojamos tam tikros 1488 01:18:50,370 --> 01:18:51,200 vietos kintamieji. 1489 01:18:51,200 --> 01:18:51,920 Mes nežinome. 1490 01:18:51,920 --> 01:18:53,810 >> Bet visa tai eina printf aisiais kamino rėmo. 1491 01:18:53,810 --> 01:18:55,740 Jis ketina įvykdyti printf. 1492 01:18:55,740 --> 01:18:56,830 Tada printf daroma. 1493 01:18:56,830 --> 01:18:57,820 Jis grįš. 1494 01:18:57,820 --> 01:18:58,960 Galiausiai, pagrindinis yra padaryta. 1495 01:18:58,960 --> 01:18:59,860 Pagrindinis grįš. 1496 01:18:59,860 --> 01:19:02,020 Ir tada mūsų programa yra padaryta. 1497 01:19:02,020 --> 01:19:02,480 Taip? 1498 01:19:02,480 --> 01:19:04,505 >> PUBLIKA: Ar jūs matote [nesigirdi] 1499 01:19:04,505 --> 01:19:05,900 argumentai [nesigirdi] 1500 01:19:05,900 --> 01:19:06,830 parametrai? 1501 01:19:06,830 --> 01:19:09,970 >> ROB: Taigi yra subtilus skirtumas tarp argumentų ir parametrus. 1502 01:19:09,970 --> 01:19:14,400 Ir tikrai, bendrinėje kalbėti, žmonės linkę tiesiog sumaišykite juos visą laiką. 1503 01:19:14,400 --> 01:19:17,550 Bet parametrai yra formalus Pavadinimas dalykų. 1504 01:19:17,550 --> 01:19:20,180 >> Taigi argc ir argv yra parametrai, pagrindinis. 1505 01:19:20,180 --> 01:19:23,440 Argumentai yra tai, ką jūs iš tikrųjų praeiti kaip šių parametrų. 1506 01:19:23,440 --> 01:19:28,340 Taigi, kai aš skambinti foo 4, 4 yra argumentas aš einančios. 1507 01:19:28,340 --> 01:19:31,460 Ir parametras n viduje foo įgauna vertę 4 1508 01:19:31,460 --> 01:19:32,880 nuo 4 buvo argumentas. 1509 01:19:32,880 --> 01:19:35,826 >> PUBLIKA: [nesigirdi]? 1510 01:19:35,826 --> 01:19:37,880 >> ROB: n yra vietos kintamąjį į barą. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 n yra dar vietos į foo, bet tai parametras foo. 1513 01:19:44,960 --> 01:19:48,190 Tai nėra vietos kintamąjį. 1514 01:19:48,190 --> 01:19:48,546 Taip? 1515 01:19:48,546 --> 01:19:51,180 >> PUBLIKA: [nesigirdi]? 1516 01:19:51,180 --> 01:19:55,400 >> ROB: foo yra tiesiog paskambinę baras ir grįžti bet kokiomis baras grąžą. 1517 01:19:55,400 --> 01:19:56,786 >> PUBLIKA: [nesigirdi]? 1518 01:19:56,786 --> 01:19:59,591 >> ROB: Taip, tik pamatyti, kelių kamino kadrų. 1519 01:19:59,591 --> 01:20:00,082 Taip? 1520 01:20:00,082 --> 01:20:03,519 >> PUBLIKA: Kodėl foo buvo vadinamas prieš printf? 1521 01:20:03,519 --> 01:20:05,920 >> ROB: Kodėl foo vadinamas prieš printf? 1522 01:20:05,920 --> 01:20:10,740 Taigi, aš gali turėti, vietoj to, padaryti tai, ko kaip int x lygus foo 4 1523 01:20:10,740 --> 01:20:12,980 ir tada atspausdinti x. 1524 01:20:12,980 --> 01:20:17,900 Bet vietoj to, aš kartu su funkcija skambinti į printf argumentas. 1525 01:20:17,900 --> 01:20:23,670 >> Tačiau pastebite, kad mes negalime iš tikrųjų vykdyti kvietimą printf, kol mes 1526 01:20:23,670 --> 01:20:25,610 išsiaiškinti, kas foo 4 yra. 1527 01:20:25,610 --> 01:20:27,480 Taigi mes ketiname įvertinti tai. 1528 01:20:27,480 --> 01:20:32,504 Ir tik tada, kai tai padaryta vyksta grįžti ir įvertinti tai. 1529 01:20:32,504 --> 01:20:32,990 Taip? 1530 01:20:32,990 --> 01:20:37,364 >> PUBLIKA: Kadangi tiek bare [nesigirdi] 1531 01:20:37,364 --> 01:20:41,738 vertė, kodėl mes neturime [nesigirdi]? 1532 01:20:41,738 --> 01:20:44,400 >> ROB: Jie visiškai turėtų būti int. 1533 01:20:44,400 --> 01:20:46,260 Tai buvo ne sugauti daugiau keli leidimai. 1534 01:20:46,260 --> 01:20:49,010 Taigi ji turi būti int baras ir int foo nes abu iš tų 1535 01:20:49,010 --> 01:20:50,460 grįžta sveikieji skaičiai. 1536 01:20:50,460 --> 01:20:54,214 Tuštuma yra tik tada, jei jie nesiruošia grįžti tikrąsias vertybes. 1537 01:20:54,214 --> 01:20:54,692 Taip? 1538 01:20:54,692 --> 01:20:58,038 >> PUBLIKA: Jei turėjo liniją aukščiau grąža, [nesigirdi]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> ROB: virš grąžinimo linija? 1541 01:21:03,730 --> 01:21:04,410 >> PUBLIKA: Taip. 1542 01:21:04,410 --> 01:21:10,780 Pavyzdžiui, jei tu printf ir [nesigirdi] būtų išspausdinti du kartus? 1543 01:21:10,780 --> 01:21:12,992 >> ROB: Taigi viduje foo? 1544 01:21:12,992 --> 01:21:15,945 Jei mes turėjo printf čia? 1545 01:21:15,945 --> 01:21:16,750 >> PUBLIKA: Taip. 1546 01:21:16,750 --> 01:21:19,510 >> ROB: Taigi, jei mes turėjome printf teisę čia būtų išspausdinti vieną kartą. 1547 01:21:19,510 --> 01:21:23,400 Kadangi mes vadiname foo kartą į dešinę čia, tada mes hit printf. 1548 01:21:23,400 --> 01:21:24,620 Tada mes vadiname baras. 1549 01:21:24,620 --> 01:21:25,710 Ir tada foo grįš. 1550 01:21:25,710 --> 01:21:26,275 Ir tai viskas. 1551 01:21:26,275 --> 01:21:30,985 Mes tik kada nors susidurti su printf kartą. 1552 01:21:30,985 --> 01:21:31,482 Taip? 1553 01:21:31,482 --> 01:21:32,973 >> PUBLIKA: [nesigirdi] 1554 01:21:32,973 --> 01:21:37,950 printf skambina foo, nes mes pirmą kartą paskambinę printf ir tada mes artimųjų 1555 01:21:37,950 --> 01:21:38,580 argumentai. 1556 01:21:38,580 --> 01:21:40,960 >> ROB: Taigi teoriškai nėra printf skambina foo? 1557 01:21:40,960 --> 01:21:42,220 Taigi ne. 1558 01:21:42,220 --> 01:21:47,360 Tiesiog tam, kad c ketina vykdyti šių dalykų yra, kol mes galime 1559 01:21:47,360 --> 01:21:49,800 skambinti funkciją, visi argumentai su funkcija turi 1560 01:21:49,800 --> 01:21:51,600 būti visiškai įvertintos. 1561 01:21:51,600 --> 01:21:53,540 Taigi tai yra visiškai įvertintas? 1562 01:21:53,540 --> 01:21:54,610 Taip, tai tik eilutė. 1563 01:21:54,610 --> 01:21:55,480 Tai tiesiog vertė. 1564 01:21:55,480 --> 01:21:57,200 >> Tada mes turime visiškai įvertinti tai. 1565 01:21:57,200 --> 01:21:59,720 Kai tai bus padaryta, dabar visi jos argumentai yra vertinami. 1566 01:21:59,720 --> 01:22:01,982 Ir dabar mes galime padaryti skambinti į printf. 1567 01:22:01,982 --> 01:22:02,478 Taip? 1568 01:22:02,478 --> 01:22:03,966 >> PUBLIKA: Vienas klausimas. 1569 01:22:03,966 --> 01:22:06,942 Jei turite void funkcija, turi jūs turite grįžti kabliataškį? 1570 01:22:06,942 --> 01:22:09,910 >> ROB: Jūs neturite grąža kabliataškis jei turite void funkcija. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 Gerai. 1573 01:22:14,780 --> 01:22:15,830 Taigi dabar kai krūva daiktų. 1574 01:22:15,830 --> 01:22:19,640 Taigi krūva yra tai, kaip mes ketiname spręsti su dinaminiu atminties valdymas. 1575 01:22:19,640 --> 01:22:23,100 Ir tai tiesiogiai kontrastuoja su kamino kurią mes vadinčiau automatinė 1576 01:22:23,100 --> 01:22:24,100 atminties valdymas. 1577 01:22:24,100 --> 01:22:27,140 >> Taigi ant kamino, jūs niekada iš tikrųjų turi spręsti, kaip vietos kintamųjų 1578 01:22:27,140 --> 01:22:30,400 yra stumiamos ir popped ne visi šie kamino rėmai ir visi, kad kita. 1579 01:22:30,400 --> 01:22:31,070 Jūs neturite jaudintis dėl to. 1580 01:22:31,070 --> 01:22:32,070 Tai automatinis. 1581 01:22:32,070 --> 01:22:36,990 Taigi krūva yra vadovas. 1582 01:22:36,990 --> 01:22:38,070 Ir [nesigirdi] 1583 01:22:38,070 --> 01:22:41,260 kilęs iš šių funkcijų malloc ir nemokamai. 1584 01:22:41,260 --> 01:22:43,550 >> Taigi čia yra kita programa. 1585 01:22:43,550 --> 01:22:47,145 Viskas, ką mes darome yra mallocing sveikasis skaičius. 1586 01:22:47,145 --> 01:22:49,360 Mes ją saugoti žvaigždutėmis x. 1587 01:22:49,360 --> 01:22:52,520 Žinoma, mes turime patikrinti pamatyti, jei x yra niekinis. 1588 01:22:52,520 --> 01:22:56,400 Tada mes einame tik nustatyti, ką x yra nukreipta į 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Spausdinti ko x yra nukreipta į, spausdinti x, tada nemokamai x. 1591 01:23:03,260 --> 01:23:08,920 >> Taigi kaip tai iš tikrųjų vyksta ieškoti jei pažvelgsime į mūsų krūvą ir krūvą? 1592 01:23:08,920 --> 01:23:10,950 Taigi mes pradėsime iš naujo. 1593 01:23:10,950 --> 01:23:12,580 Mūsų kamino apačioje, kaip ir anksčiau. 1594 01:23:12,580 --> 01:23:15,930 Atminkite, kad tave pasikvies tiesiogiai prieštarauja krūvą? 1595 01:23:15,930 --> 01:23:18,850 Taigi, mes ketiname turėti top mūsų krūvos ten. 1596 01:23:18,850 --> 01:23:22,590 >> Taigi mūsų kamino apačioje, mes turime mūsų kamino rėmas pagrindinis. 1597 01:23:22,590 --> 01:23:28,000 Ji yra atsakinga už argc, argv erdvę, ir mes dabar turi vietinį kintamąjį x, kuris 1598 01:23:28,000 --> 01:23:30,030 yra int žvaigždė. 1599 01:23:30,030 --> 01:23:32,240 Taigi mes ketiname pakartoti per šią programą. 1600 01:23:32,240 --> 01:23:34,420 Pirmas dalykas, kurį mes turime, yra kvietimas malloc. 1601 01:23:34,420 --> 01:23:36,250 >> Taigi mes skambindami į malloc. 1602 01:23:36,250 --> 01:23:37,100 Malloc yra funkcija. 1603 01:23:37,100 --> 01:23:38,770 Jis ketina gauti kamino rėmo. 1604 01:23:38,770 --> 01:23:40,180 Ką mes artimųjų malloc? 1605 01:23:40,180 --> 01:23:41,610 Tai ketina eiti į vidų iš kamino rėmo. 1606 01:23:41,610 --> 01:23:45,130 Mes artimųjų dydį n, kuris yra 4. 1607 01:23:45,130 --> 01:23:49,700 Taigi, kad yra perduodama malloc. 1608 01:23:49,700 --> 01:23:50,910 >> Ką malloc daryti? 1609 01:23:50,910 --> 01:23:53,820 Jis griebia mums šiek tiek apie krūvą erdvę. 1610 01:23:53,820 --> 01:23:55,320 Taigi, mes ketiname eiti į krūvą. 1611 01:23:55,320 --> 01:23:57,990 Ir mes ketiname patraukti 4 baitų iš krūvos. 1612 01:23:57,990 --> 01:24:01,500 Taigi tegul tiesiog duoti, kad savavališkas adresas. 1613 01:24:01,500 --> 01:24:06,680 0x123 Tiesiog apsimesti, kad yra adresas, kuris yra ant krūvos. 1614 01:24:06,680 --> 01:24:12,300 >> Taigi, kas iš tikrųjų yra viduje, kad regionas atminties adresu Ox123? 1615 01:24:12,300 --> 01:24:13,080 Šiukšlių. 1616 01:24:13,080 --> 01:24:15,270 Taigi mes ne saugomi nieko joje. 1617 01:24:15,270 --> 01:24:18,830 Taigi, kiek mes žinome, kad gali būti bet kas. 1618 01:24:18,830 --> 01:24:20,560 Jūs neturėtumėte manyti, kad tai nulis. 1619 01:24:20,560 --> 01:24:23,870 Tai greičiausiai ne nulis. 1620 01:24:23,870 --> 01:24:26,260 >> Taigi dabar malloc grįžta. 1621 01:24:26,260 --> 01:24:28,020 Ir ką mes darome, kai malloc grąžą? 1622 01:24:28,020 --> 01:24:29,800 Mes nustatėme, kas jis grįžta. 1623 01:24:29,800 --> 01:24:32,290 Mes nustatėme x lygias ką jis grįžta. 1624 01:24:32,290 --> 01:24:33,690 Taigi, kas yra jis grįžta? 1625 01:24:33,690 --> 01:24:38,150 Jis grįžta 0x123 nes tai yra adresas atminties bloko, kad ji 1626 01:24:38,150 --> 01:24:40,850 tiesiog paskirstyti į krūvą. 1627 01:24:40,850 --> 01:24:47,160 >> Taigi grįžti 0x123 x dabar bus nustatomi lygi 0x123, kuri pavaizduotomis piktogramo-, 1628 01:24:47,160 --> 01:24:52,940 mes dažnai rengia kaip x turintys faktinis rodyklė nukreipta į tą bloką. 1629 01:24:52,940 --> 01:24:55,820 Bet x tiesiog laikyti šį adresą. 1630 01:24:55,820 --> 01:24:58,670 Taigi dabar mes turime patikrinti, ar x yra niekinis. 1631 01:24:58,670 --> 01:24:59,120 Tai nėra tuščias. 1632 01:24:59,120 --> 01:25:02,170 Mes drįstame kad malloc pavyko. 1633 01:25:02,170 --> 01:25:04,950 >> Taigi, dabar žvaigždė X reiškia 50. 1634 01:25:04,950 --> 01:25:08,450 Taigi žvaigždė prisimena, tai reiškia, eiti į tą adresą. 1635 01:25:08,450 --> 01:25:12,700 Taigi 0x123 Mes ketiname eiti į tą adresą. 1636 01:25:12,700 --> 01:25:14,660 Taigi, kad suteikia mums ten. 1637 01:25:14,660 --> 01:25:16,310 Ką mes darome ne tuo adresu? 1638 01:25:16,310 --> 01:25:19,020 Mes saugoti 50. 1639 01:25:19,020 --> 01:25:22,500 >> Taigi po šios linijos, kad yra kas viskas atrodys. 1640 01:25:22,500 --> 01:25:24,640 Taigi, dabar tai nebėra šiukšlių ten. 1641 01:25:24,640 --> 01:25:28,910 Dabar mes žinome, kad 50 yra, kad ypač adresas, nes 1642 01:25:28,910 --> 01:25:32,410 mes jį, kad. 1643 01:25:32,410 --> 01:25:32,790 Gerai? 1644 01:25:32,790 --> 01:25:34,370 Taigi dabar mes ketiname spausdinti f. 1645 01:25:34,370 --> 01:25:38,490 >> Taigi, pirmiausia mes ketiname spausdinti žvaigždės x. 1646 01:25:38,490 --> 01:25:39,640 Taigi, kas yra žvaigždė x? 1647 01:25:39,640 --> 01:25:44,300 Vėlgi, žvaigždutė x reiškia eiti į dalykas, kad x yra nukreipta į. 1648 01:25:44,300 --> 01:25:47,140 Taigi x yra saugoti 0x123 Eiti į tai. 1649 01:25:47,140 --> 01:25:48,490 Mes gauname 50. 1650 01:25:48,490 --> 01:25:50,540 Taigi spausdinti f, kad. 1651 01:25:50,540 --> 01:25:54,900 Ir tai reiškia, kad jis ketina spausdinti 50. 1652 01:25:54,900 --> 01:25:56,850 Ir tada, kad grįžta. 1653 01:25:56,850 --> 01:25:58,340 >> Ir tada mes turime antrą printf. 1654 01:25:58,340 --> 01:25:59,370 Mes dabar proc p. 1655 01:25:59,370 --> 01:26:01,680 Jei jūs dar nematėte, tai bus tiesiog, kaip jūs spausdinti žymeklį. 1656 01:26:01,680 --> 01:26:04,960 Taigi, mes turime proc i, proc f, ir visi jau. 1657 01:26:04,960 --> 01:26:07,160 Taigi proc p, spausdinti žymeklį. 1658 01:26:07,160 --> 01:26:08,920 >> Taigi x yra žymeklis. 1659 01:26:08,920 --> 01:26:13,440 Taigi, jei mes ketiname spausdinti x savaime, mes spausdinti tai, kas iš tikrųjų viduje 1660 01:26:13,440 --> 01:26:19,220 x, kuris yra 0x123 Taigi pirmas spausdinimo f ketinate spausdinti 50. 1661 01:26:19,220 --> 01:26:23,620 Antra spausdinimo f vyksta spausdinti 0x123 Taip? 1662 01:26:23,620 --> 01:26:27,460 >> PUBLIKA: Ar naudojatės proc x spausdinti žymeklį? 1663 01:26:27,460 --> 01:26:31,200 >> ROB: Taigi jūs naudojate proc x spausdinti žymeklį? 1664 01:26:31,200 --> 01:26:38,350 Taigi jūs galite, bet procentai x yra teisingas, prasme, pavyzdžiui, jei jūs turite kai kurie 1665 01:26:38,350 --> 01:26:40,325 sveikasis skaičius ir norite spausdinti tai kaip šešioliktainis. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 Tai tiesiog, kaip tai daryti. 1668 01:26:44,880 --> 01:26:47,160 >> Kadangi proc r būtų spausdinti kaip po kablelio. 1669 01:26:47,160 --> 01:26:50,310 Štai čia mes gauti procentų d. i yra tik sveikasis skaičius. 1670 01:26:50,310 --> 01:26:52,690 procentų p yra specialiai už rodykles. 1671 01:26:52,690 --> 01:26:54,060 >> Taigi x yra žymeklis. 1672 01:26:54,060 --> 01:26:56,360 Mes norime naudoti procentų psl. 1673 01:26:56,360 --> 01:26:57,937 Bet proc x galėtų dirbti. 1674 01:26:57,937 --> 01:26:58,414 Taip? 1675 01:26:58,414 --> 01:26:59,664 >> PUBLIKA: [nesigirdi]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> ROB: Taip. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 Bent jau tai call-- todėl aš neįtraukė čia. 1680 01:27:13,440 --> 01:27:19,850 Tačiau šie du argumentai yra nebūtinai viduje šio kamino rėmo 1681 01:27:19,850 --> 01:27:23,040 kartu su bet lokalūs kintamieji printf atsitinka būti naudojant. 1682 01:27:23,040 --> 01:27:27,020 Ir tada kitas kvietimas printf dabar viduje printf kamino rėmas 1683 01:27:27,020 --> 01:27:33,960 procentų p Backslash n ir kokia vertė x yra, kuris yra 0x123. 1684 01:27:33,960 --> 01:27:34,425 Taip? 1685 01:27:34,425 --> 01:27:35,675 >> PUBLIKA: [nesigirdi]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> ROB: Tai bus atspausdinti kažką kad atrodo taip. 1688 01:27:40,880 --> 01:27:41,846 >> PUBLIKA: [nesigirdi]. 1689 01:27:41,846 --> 01:27:44,510 >> ROB: Taigi jis spausdina jį adreso forma. 1690 01:27:44,510 --> 01:27:47,003 Atrodo adresą. 1691 01:27:47,003 --> 01:27:47,494 Taip? 1692 01:27:47,494 --> 01:27:49,458 >> PUBLIKA: [nesigirdi]? 1693 01:27:49,458 --> 01:27:51,075 >> ROB: Kodėl yra tai, ką? 1694 01:27:51,075 --> 01:27:52,920 >> PUBLIKA: [nesigirdi]? 1695 01:27:52,920 --> 01:27:55,240 >> ROB: Kodėl tai yra žymeklis 4 baitų? 1696 01:27:55,240 --> 01:27:58,500 Taigi yra visa krūva iš 0 aisiais priešais tai. 1697 01:27:58,500 --> 01:28:03,740 Taigi, tai tikrai 0x0000000123. 1698 01:28:03,740 --> 01:28:06,510 Dėl 64 bitų sistemos, būtų visa krūva daugiau nulių. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Taip? 1701 01:28:11,900 --> 01:28:13,150 >> PUBLIKA: [nesigirdi]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> ROB: Taigi pirmoji printf ketina print-- 1704 01:28:21,130 --> 01:28:21,980 >> PUBLIKA: [nesigirdi]. 1705 01:28:21,980 --> 01:28:24,420 >> ROB: Taip, jis ketina spausdinti Kas yra X nukreipta į. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Žvaigždžių sako kas tai yra dalykas nukreipta į. 1708 01:28:29,070 --> 01:28:30,300 Grab jį. 1709 01:28:30,300 --> 01:28:31,455 Taigi, kas tai yra nukreipta į? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Grab jį. 1712 01:28:32,410 --> 01:28:33,390 Štai ką mes ketiname spausdinti. 1713 01:28:33,390 --> 01:28:37,020 Kadangi kito, mes tik spausdinant x savaime. 1714 01:28:37,020 --> 01:28:38,850 Kas yra viduje f? 1715 01:28:38,850 --> 01:28:43,710 0x123. 1716 01:28:43,710 --> 01:28:44,500 Gerai. 1717 01:28:44,500 --> 01:28:46,620 >> Ir tada, pagaliau, mes turime nemokamai. 1718 01:28:46,620 --> 01:28:48,040 Kas yra mūsų artimųjų nemokamai? 1719 01:28:48,040 --> 01:28:49,470 Mes artimųjų x. 1720 01:28:49,470 --> 01:28:52,380 Tuo metu aš iš tikrųjų rodomas jį kamino rėmo. 1721 01:28:52,380 --> 01:28:56,370 >> Taigi mes artimųjų vertę 0x123 nemokamai. 1722 01:28:56,370 --> 01:28:59,070 Taigi dabar nemokamai žino, viskas gerai, Turiu eiti į krūvą 1723 01:28:59,070 --> 01:29:00,050 ir be, kad atmintis. 1724 01:29:00,050 --> 01:29:03,920 Tai nebėra tai, ką naudojate yra adresu 0x123. 1725 01:29:03,920 --> 01:29:07,010 >> Taigi laisvas ketina išleisti kad iš krūvos. 1726 01:29:07,010 --> 01:29:09,490 Dabar mūsų krūva vėl tuščias. 1727 01:29:09,490 --> 01:29:11,120 Mes neturime Atminties nutekėjimas. 1728 01:29:11,120 --> 01:29:12,940 Dabar nemokamai grįš. 1729 01:29:12,940 --> 01:29:16,130 Atkreipkite dėmesį, kad x yra dar 0x123. 1730 01:29:16,130 --> 01:29:18,240 Bet tai dabar negalioja atminties. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Turėtume nebėra dereference x. 1733 01:29:23,986 --> 01:29:24,440 Taip? 1734 01:29:24,440 --> 01:29:27,240 >> PUBLIKA: Ar grįžti 0 nebereikalingas? 1735 01:29:27,240 --> 01:29:28,290 >> ROB: Ar returen 0 nereikalingas? 1736 01:29:28,290 --> 01:29:31,110 Taip. 1737 01:29:31,110 --> 01:29:33,950 Mes tiesiog įdėti, kad ten, nes mes turime grįžti vieną už orą. 1738 01:29:33,950 --> 01:29:36,830 Taigi, tai, kaip, taip, leidžia įtraukti grąžą 0. 1739 01:29:36,830 --> 01:29:37,310 Taip? 1740 01:29:37,310 --> 01:29:38,560 >> PUBLIKA: [nesigirdi]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> ROB: Taigi, po nemokamų x, kas atsitiks, jei mes stengiamės dereference rodyklės? 1743 01:29:45,580 --> 01:29:47,240 Gali būti, kad nieko negerai. 1744 01:29:47,240 --> 01:29:49,330 Gali būti, kad mes vis dar gausite 50. 1745 01:29:49,330 --> 01:29:53,590 >> Tai įmanoma, taip pat, kad atmintis dabar naudojama kažkas. 1746 01:29:53,590 --> 01:29:57,140 Taigi, tai neapibrėžta elgesys. 1747 01:29:57,140 --> 01:30:00,772 Ir undefined tai nieko gali atsitikti. 1748 01:30:00,772 --> 01:30:01,250 Taip? 1749 01:30:01,250 --> 01:30:02,500 >> PUBLIKA: [nesigirdi]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> ROB: Ne, todėl, jei jums priskirti x kažkas. 1752 01:30:10,830 --> 01:30:15,870 Taigi, jei čia sakėme X reiškia malloc kažkas else-- 1753 01:30:15,870 --> 01:30:17,100 malloc dydis event-- 1754 01:30:17,100 --> 01:30:20,180 tada, kad originalus blokas atminties nėra paleistas. 1755 01:30:20,180 --> 01:30:21,490 Ir mes oficialiai neteko. 1756 01:30:21,490 --> 01:30:23,150 Tai yra atminties nutekėjimas. 1757 01:30:23,150 --> 01:30:25,090 Mes praradome visas nuorodas tos atminties blokas. 1758 01:30:25,090 --> 01:30:26,827 Taigi, čia yra ne taip, kaip mes kada nors galėtų išlaisvinti ją. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 Gerai, kad tada grįžkite 0 reiškia nuveikti. 1761 01:30:36,630 --> 01:30:37,900 >> Gerai, kad kamino perpildymo. 1762 01:30:37,900 --> 01:30:39,320 Kas idėja čia? 1763 01:30:39,320 --> 01:30:41,210 Taigi atminkite, kad krūva mažėja. 1764 01:30:41,210 --> 01:30:43,480 Kamino einame. 1765 01:30:43,480 --> 01:30:48,000 Taigi, tai buvo pavyzdys iš paskaitos, Manau, kur pagrindinis yra tik ketina 1766 01:30:48,000 --> 01:30:51,380 skambinti Ši funkcija foo, kuri vyksta skambinti pati rekursyviai daugiau ir 1767 01:30:51,380 --> 01:30:52,320 vėl. 1768 01:30:52,320 --> 01:30:55,370 >> Taigi kamino rėmai ketinate tiksliai dirbti pats. 1769 01:30:55,370 --> 01:30:58,130 Taigi mes ketiname pradėti Pagrindinis kaip apatiniame kamino rėmo. 1770 01:30:58,130 --> 01:31:02,000 Tada pagrindinis ketina skambinti foo, kuris ketina gauti kamino rėmo. 1771 01:31:02,000 --> 01:31:04,260 >> Tada foo ketina skambinti foo vėl, kuris ketina gauti 1772 01:31:04,260 --> 01:31:05,500 kitas kamino rėmo. 1773 01:31:05,500 --> 01:31:08,270 Ir tada vėl, ir vėl, ir vėl, ir vėl, kol, galų gale, mes paleisti 1774 01:31:08,270 --> 01:31:09,190 į krūvą. 1775 01:31:09,190 --> 01:31:11,990 Taigi, tai, kaip mes gauti kamino perpildymo. 1776 01:31:11,990 --> 01:31:14,910 Ir šiuo metu, jūs seg kaltės. 1777 01:31:14,910 --> 01:31:17,335 Arba jūs tikrai seg kaltės prieš šis punktas, bet taip. 1778 01:31:17,335 --> 01:31:19,660 >> PUBLIKA: Ar šerdis sąvartynas tas pats kaip seg kaltės? 1779 01:31:19,660 --> 01:31:26,140 >> ROB: Taigi jūs pamatysite segmentaciją kaltė branduolys dempingo kaina. 1780 01:31:26,140 --> 01:31:28,760 Gauni core dump kai Jūs seg kaltės. 1781 01:31:28,760 --> 01:31:32,580 Ir tai tarsi visi sąvartyną turinys jūsų dabartinės atminties taip 1782 01:31:32,580 --> 01:31:36,670 kad jūs galite išbandyti ir nustatyti kodėl jūs SEG yda. 1783 01:31:36,670 --> 01:31:37,135 Taip? 1784 01:31:37,135 --> 01:31:38,385 >> PUBLIKA: [nesigirdi]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> ROB: Taigi segmentavimo kaltės priemonės ten kamino perpildymo. 1787 01:31:45,460 --> 01:31:47,060 Taigi nebūtinai. 1788 01:31:47,060 --> 01:31:49,880 Segmentavimo kaltės reiškia, kad esate neliesti atmintis taip 1789 01:31:49,880 --> 01:31:50,880 Jums neturėtų būti. 1790 01:31:50,880 --> 01:31:54,750 Taigi vienas iš būdų, kad vyksta tai, kai sukrauti perpildymo, mes pradedame neliesti 1791 01:31:54,750 --> 01:31:58,736 atminties taip, kad mes neturėtų būti. 1792 01:31:58,736 --> 01:31:59,208 Taip? 1793 01:31:59,208 --> 01:32:00,458 >> PUBLIKA: [nesigirdi]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> ROB: Taigi viduje begalinis ciklas. 1796 01:32:05,830 --> 01:32:08,770 Kaip, tai kaip grįžtamojo begalybės kilpa ir todėl mes gauti kitą 1797 01:32:08,770 --> 01:32:09,770 kamino rėmo kiekvieną kartą. 1798 01:32:09,770 --> 01:32:13,540 Bet tik viduje reguliariai begalinis, o one-- 1799 01:32:13,540 --> 01:32:16,390 gerai, tegul net spausdinti F-- 1800 01:32:16,390 --> 01:32:17,040 kažką daryti. 1801 01:32:17,040 --> 01:32:18,390 Koks skirtumas. 1802 01:32:18,390 --> 01:32:20,610 >> Mes neketiname būti gauti kitas kamino rėmo. 1803 01:32:20,610 --> 01:32:22,530 Mes tiesiog ketiname išlaikyti Looping per šį vieną nurodymą. 1804 01:32:22,530 --> 01:32:23,920 Kamino neauga. 1805 01:32:23,920 --> 01:32:27,290 Tai faktas, kad kiekvienas grįžtamojo kvietimas suteikia mums kamino rėmo. 1806 01:32:27,290 --> 01:32:31,231 Štai kodėl mes gauti kamino perpildymo. 1807 01:32:31,231 --> 01:32:31,728 Taip? 1808 01:32:31,728 --> 01:32:38,189 >> PUBLIKA: Taigi, jei jūs sakėte, gauti o kilpos ir tada [nesigirdi]? 1809 01:32:38,189 --> 01:32:42,000 >> ROB: Taigi, jei viduje while cikle ten buvo printf, jūs vis dar būtų 1810 01:32:42,000 --> 01:32:42,790 ne seg kaltės. 1811 01:32:42,790 --> 01:32:46,090 Aš tiesiog nenorėjau klaidinti dalykų. 1812 01:32:46,090 --> 01:32:46,610 Tai būtų kilpa. 1813 01:32:46,610 --> 01:32:48,225 Jūs norite gauti vieną krūvą rėmo už printf. 1814 01:32:48,225 --> 01:32:49,580 >> Tada printf sugrįš. 1815 01:32:49,580 --> 01:32:50,280 Tada jūs kilpa dar kartą. 1816 01:32:50,280 --> 01:32:51,460 Jūs norite gauti vieną krūvą rėmo už printf. 1817 01:32:51,460 --> 01:32:52,850 Jis sugrįš. 1818 01:32:52,850 --> 01:32:54,060 Vieno kamino rėmo. 1819 01:32:54,060 --> 01:33:00,215 Taigi jūs negaunate tai begalinis kaupiasi kamino kadrų. 1820 01:33:00,215 --> 01:33:03,185 >> PUBLIKA: [nesigirdi]? 1821 01:33:03,185 --> 01:33:04,040 >> ROB: Taip. 1822 01:33:04,040 --> 01:33:09,360 Taigi, tai nepakeliama tinklo atsitinka nes nė vienas iš jų 1823 01:33:09,360 --> 01:33:11,600 skambučiai į foo grįžta. 1824 01:33:11,600 --> 01:33:15,250 Taigi, jei mes grįžti, tada mes būtų pradėti prarasti kamino kadrų. 1825 01:33:15,250 --> 01:33:17,870 Ir tada mes nebūtume sukrauti perpildymo. 1826 01:33:17,870 --> 01:33:20,070 Ir štai kodėl jums reikia bazinę bylą jūsų asmens funkcijų. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Taip? 1829 01:33:23,479 --> 01:33:27,375 >> PUBLIKA: Ar galimas dydis ir kamino už krūvą už tą patį 1830 01:33:27,375 --> 01:33:29,880 visos programos? 1831 01:33:29,880 --> 01:33:31,910 >> ROB: Grubiai. 1832 01:33:31,910 --> 01:33:35,090 Ar galimas dydis kamino ir krūva visoms programoms patį? 1833 01:33:35,090 --> 01:33:37,180 Grubiai. 1834 01:33:37,180 --> 01:33:40,080 Yra tikimybių, kad kur kamino prasideda ir 1835 01:33:40,080 --> 01:33:42,400 kur krūva pradeda. 1836 01:33:42,400 --> 01:33:45,870 Jei atsitiktų, kad visai daug globalių kintamųjų ir dalykų, jums gali 1837 01:33:45,870 --> 01:33:49,520 atimti iš šiek tiek erdvės Jūsų krūvą. 1838 01:33:49,520 --> 01:33:54,060 >> Dėl 64 bitų sistemos, jūs praktiškai turėti begalinį atmintį. 1839 01:33:54,060 --> 01:33:55,820 Yra tik tiek daug. 1840 01:33:55,820 --> 01:33:59,250 Nuo 32 bitų ir 64 bitų, ty yra didelis skirtumas. 1841 01:33:59,250 --> 01:34:02,350 >> Jūs ketinate gauti daug daugiau kamino ir krūva erdvė ant 64-bit 1842 01:34:02,350 --> 01:34:05,810 sistema, nes ten tik daugiau adresus, kad jie gali naudoti. 1843 01:34:05,810 --> 01:34:09,360 Bet individualiai sistemai, jis bus būti maždaug tokio pat dydžio kamino 1844 01:34:09,360 --> 01:34:10,785 ir krūva erdvė. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 Viskas gerai. 1847 01:34:15,530 --> 01:34:18,220 >> Taigi paskutinis dalykas yra kompiliacija. 1848 01:34:18,220 --> 01:34:19,810 Taigi, jūs turėtumėte žinoti, kad šis procesas. 1849 01:34:19,810 --> 01:34:22,240 Yra keturi dideli žingsniai. 1850 01:34:22,240 --> 01:34:24,400 Taigi pirmasis turėtų būtų lengva prisiminti. 1851 01:34:24,400 --> 01:34:25,085 Išankstinis informacijos apdorojimas. 1852 01:34:25,085 --> 01:34:28,390 Jis turi priešdėlį iš anksto į jį. 1853 01:34:28,390 --> 01:34:32,080 Taigi kalbama prieš visa kita. 1854 01:34:32,080 --> 01:34:34,000 >> Dalykas, prisiminti tai maišos. 1855 01:34:34,000 --> 01:34:37,250 Taigi maišos apibrėžia ir maišos apima į visus tuos. 1856 01:34:37,250 --> 01:34:39,560 Tie visi anksto procesorius direktyvų. 1857 01:34:39,560 --> 01:34:42,030 Tai yra tai, ką, kad anksto procesorius rūpinasi. 1858 01:34:42,030 --> 01:34:43,680 >> Taigi, ką iš anksto procesorius daryti? 1859 01:34:43,680 --> 01:34:44,850 Tai tikrai kvailas dalykas. 1860 01:34:44,850 --> 01:34:49,380 Visa tai gali visi iš jų Kopijuoti, ir supjaustyti, o pasta operacijos. 1861 01:34:49,380 --> 01:34:51,790 >> Taigi maišos apima standartinį I0 dot val. 1862 01:34:51,790 --> 01:34:52,990 Kas tai daro? 1863 01:34:52,990 --> 01:34:56,610 Tai greiferiniai standartinį I0 dot h failą ir įkelti jį į viršų 1864 01:34:56,610 --> 01:34:58,960 kur jis sako maišos apima standartas I0 dot val. 1865 01:34:58,960 --> 01:35:02,480 >> Ir nors maišos apibrėžti, kad mes matyti, kas yra, kad daro? 1866 01:35:02,480 --> 01:35:06,730 Jos kopijavimo vertę, kad maišos apibrėžtas apibrėžiamas kaip ir įklijuoti, kad 1867 01:35:06,730 --> 01:35:08,500 kur jūs naudojate vertę. 1868 01:35:08,500 --> 01:35:13,400 Taigi Preprocesorius tiesiog daro tikrai paprastas tekstinis operacijos. 1869 01:35:13,400 --> 01:35:15,870 Jis nieko nedaro protingas. 1870 01:35:15,870 --> 01:35:18,920 Taigi viskas dar yra sudėtingesnis. 1871 01:35:18,920 --> 01:35:22,970 >> Taigi dabar, kad Preprocesorius yra padaryti, mes iš tikrųjų kaupia. 1872 01:35:22,970 --> 01:35:24,320 Taigi, ką sudarymas reiškia? 1873 01:35:24,320 --> 01:35:27,310 Mes dabar vyksta nuo c kodą į surinkimo kodą. 1874 01:35:27,310 --> 01:35:27,570 Taip? 1875 01:35:27,570 --> 01:35:28,820 >> PUBLIKA: [nesigirdi]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> ROB: Taip, mes sugauti, kad. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Taigi sudarant. 1880 01:35:38,660 --> 01:35:40,310 Mes ketiname iš C į surinkimo. 1881 01:35:40,310 --> 01:35:42,470 Taigi tai yra tikrasis keisti kalbą. 1882 01:35:42,470 --> 01:35:45,240 Kompiliavimas pati tai vyksta nuo aukštesnio lygio kalba 1883 01:35:45,240 --> 01:35:47,340 žemesnio lygio kalba. 1884 01:35:47,340 --> 01:35:50,720 >> Ir C yra aukšto lygio kalba , palyginti su surinkimo. 1885 01:35:50,720 --> 01:35:52,320 Kas yra surinkimas? 1886 01:35:52,320 --> 01:35:56,440 Jo nurodymai, kurie, gana daug, padarė savo CPU. 1887 01:35:56,440 --> 01:35:59,130 Tačiau kompiuteris vis dar veikia nesuprantu surinkimas. 1888 01:35:59,130 --> 01:36:01,570 Jis tik supranta ir nulių. 1889 01:36:01,570 --> 01:36:06,160 Taigi kitas žingsnis yra montavimas, kuri duoda mums nuo šių nurodymų, kad 1890 01:36:06,160 --> 01:36:08,760 procesoriaus supranta ir realiai verčia juos, 1891 01:36:08,760 --> 01:36:10,820 tie ir nuliai. 1892 01:36:10,820 --> 01:36:13,570 >> Taigi C surinkimas į dvejetainę. 1893 01:36:13,570 --> 01:36:15,870 Bet aš neturiu vykdomąjį dar. 1894 01:36:15,870 --> 01:36:19,550 Taigi manau, kad CS50 bibliotekoje. 1895 01:36:19,550 --> 01:36:23,070 Mes pateikėme jums dvejetainiu tai CS50 biblioteka, kuri turi GetString 1896 01:36:23,070 --> 01:36:24,400 ir GetInt ir visa kita. 1897 01:36:24,400 --> 01:36:25,700 >> Bet CS50 library-- 1898 01:36:25,700 --> 01:36:27,650 ir iš itself-- nėra vykdomąjį. 1899 01:36:27,650 --> 01:36:29,570 Jis neturi pagrindinės funkcijos. 1900 01:36:29,570 --> 01:36:32,230 Tai tiesiog dvejetainiai krūva kad jūs galite naudoti. 1901 01:36:32,230 --> 01:36:41,730 Taigi susiejimas, kaip mes suburti visus Šių skirtingų dvejetainių failų 1902 01:36:41,730 --> 01:36:43,110 į faktinę vykdomąjį. 1903 01:36:43,110 --> 01:36:45,900 Vienas, kad galite įvesti dot slash dot iš. 1904 01:36:45,900 --> 01:36:51,660 >> Taigi, tai yra kaip failas, kuris jus rašė: - kokia jūsų programa is-- 1905 01:36:51,660 --> 01:36:53,620 Ceaser taškas c. 1906 01:36:53,620 --> 01:36:55,100 Bet dabar ji buvo sudaryta iki dvejetainis. 1907 01:36:55,100 --> 01:36:56,480 Taigi Ceaser dot o. 1908 01:36:56,480 --> 01:36:59,620 Ir tai yra mūsų CS50 bibliotekos dvejetainis. 1909 01:36:59,620 --> 01:37:02,284 Ir jie yra sujungti į vieną vykdomąjį. 1910 01:37:02,284 --> 01:37:02,758 Taip? 1911 01:37:02,758 --> 01:37:04,008 >> PUBLIKA: [nesigirdi]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> ROB: Taigi, pirmiausia apima, atminkite, maišos yra iš tikrųjų 1914 01:37:12,710 --> 01:37:13,810 anksto procesorius žingsnis. 1915 01:37:13,810 --> 01:37:14,750 Bet tai atskira. 1916 01:37:14,750 --> 01:37:20,730 Jei nenaudojate funkcijas, yra ne jūsų vieno failo tada, 1917 01:37:20,730 --> 01:37:26,100 Ne, jums nereikia susieti nieko nes jūs turite viską. 1918 01:37:26,100 --> 01:37:30,310 >> Tai sakė, printf yra susieti. 1919 01:37:30,310 --> 01:37:32,820 Jei jūs kada nors naudoti printf, kad kažkas kad turi būti susietos 1920 01:37:32,820 --> 01:37:35,740 nes tu negali rašyti, kad. 1921 01:37:35,740 --> 01:37:39,530 Ir, tiesą sakant, printf yra automatiškai susieti. 1922 01:37:39,530 --> 01:37:42,760 Jūs žinote, kaip komandų eilutėje arba kai Jūs rašote, kad jūs matote, kad turi 1923 01:37:42,760 --> 01:37:46,690 brūkšnys l CS50, kuris turi nuorodą į CS50 bibliotekoje? 1924 01:37:46,690 --> 01:37:49,070 Printf ir stuff like that, vyksta būti susieta automatiškai. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Visi kiti klausimai dėl nieko? 1927 01:37:53,930 --> 01:37:56,280 >> PUBLIKA: [nesigirdi]? 1928 01:37:56,280 --> 01:37:58,300 >> ROB: susiejimas? 1929 01:37:58,300 --> 01:38:03,450 Turime visa krūva skirtingų dvejetainių failų. 1930 01:38:03,450 --> 01:38:06,410 Tai kanoninis pavyzdys kad mes naudojame yra CS50 biblioteka. 1931 01:38:06,410 --> 01:38:09,960 Mes surinkome ir jums duota dėl dvejetainę šio CS50 bibliotekoje. 1932 01:38:09,960 --> 01:38:12,410 >> Jūs norite naudoti GetString į savo programą. 1933 01:38:12,410 --> 01:38:14,750 Taigi jūs einate ir naudoti GetString. 1934 01:38:14,750 --> 01:38:19,700 Bet be mano dvejetainėje kodą GetString, kai jūs surinkti kodą 1935 01:38:19,700 --> 01:38:23,140 žemyn, jūs negalite iš tikrųjų paleisti programa, nes GetString Styginių yra 1936 01:38:23,140 --> 01:38:25,080 nėra iki galo apibrėžta. 1937 01:38:25,080 --> 01:38:29,220 >> Tai tik tada, kai jums nuorodą į mano dvejetainis kad yra GetString kad dabar visi 1938 01:38:29,220 --> 01:38:31,130 Gerai, aš iš tikrųjų galite vykdyti GetString. 1939 01:38:31,130 --> 01:38:32,330 Mano byla yra baigta. 1940 01:38:32,330 --> 01:38:34,208 Ir aš galiu paleisti tai. 1941 01:38:34,208 --> 01:38:34,697 Taip? 1942 01:38:34,697 --> 01:38:37,631 >> PUBLIKA: Ar susiejimas konvertuoti dvejetainis į vykdomąjį? 1943 01:38:37,631 --> 01:38:42,032 Taigi, net jei jūs neturite kitos bibliotekos, nebūtų jis vis tiek bus 1944 01:38:42,032 --> 01:38:44,477 reikia išversti [nesigirdi]? 1945 01:38:44,477 --> 01:38:48,640 >> ROB: Taigi vykdomąjį vis dar yra dvejetainis. 1946 01:38:48,640 --> 01:38:51,750 Tai tiesiog derinant vieną visumą krūva binaries. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> PUBLIKA: Labai ačiū. 1949 01:38:56,591 --> 01:38:58,560 >> ROB: Jokių problemų. 1950 01:38:58,560 --> 01:38:59,540 Visi kiti klausimai? 1951 01:38:59,540 --> 01:39:02,001 Priešingu atveju, mes visi nustatyti. 1952 01:39:02,001 --> 01:39:02,690 Viskas gerai. 1953 01:39:02,690 --> 01:39:02,990 Ačiū. 1954 01:39:02,990 --> 01:39:03,590 >> [Plojimai] 1955 01:39:03,590 --> 01:39:04,490 >> PUBLIKA: Ačiū. 1956 01:39:04,490 --> 01:39:05,740 >> ROB: Taip. 1957 01:39:05,740 --> 01:39:06,582