1 00:00:00,000 --> 00:00:10,970 >> [Muzikavimo] 2 00:00:10,970 --> 00:00:12,536 >> Davidas J. Malan: Gerai. 3 00:00:12,536 --> 00:00:13,392 >> [Juokas] 4 00:00:13,392 --> 00:00:14,240 >> Sveiki sugrįžę. 5 00:00:14,240 --> 00:00:14,990 Tai CS50. 6 00:00:14,990 --> 00:00:16,890 Ir tai savaitės penkių pabaiga. 7 00:00:16,890 --> 00:00:20,020 Ir iki šiol, mes gana daug vartojate savaime suprantamu dalyku, kad 8 00:00:20,020 --> 00:00:23,480 egzistuoja šio kompiliatoriaus, žvangėti, kad jūs buvo remtis taikant šį 9 00:00:23,480 --> 00:00:27,100 kitas įrankis vadinamas Padaryti, kad kažkaip stebuklingai paverčia savo kodą 10 00:00:27,100 --> 00:00:31,350 į sukompiliuoti, kad nulių ir kad jūsų kompiuterių procesorius, centrinis 11 00:00:31,350 --> 00:00:33,410 duomenų apdorojimo blokas, iš tikrųjų supranta. 12 00:00:33,410 --> 00:00:36,770 Tačiau paaiškėja, kad tai skaičius, kuris yra vyksta po gaubtu ir 13 00:00:36,770 --> 00:00:38,690 tarp įvesties ir išvesties. 14 00:00:38,690 --> 00:00:41,800 >> Ir aš norėčiau pasiūlyti, kad mes kūnas kad šiek tiek išsamiau į iš 15 00:00:41,800 --> 00:00:45,130 šie keturi žingsniai, turi kažką vadinama išankstinio apdorojimo, kažkas 16 00:00:45,130 --> 00:00:48,300 vadinamas kompiliavimas, kurį mes matėme, kažkas vadinamas surinkimo ir 17 00:00:48,300 --> 00:00:49,420 kažkas vadinamas susiejimas. 18 00:00:49,420 --> 00:00:53,270 Taigi iki šiol, kai kurie iš mūsų programas, mes buvo aštrus yra. 19 00:00:53,270 --> 00:00:56,650 Visai neseniai mes turėjome šiek tiek aštrus apibrėžia konstantų. 20 00:00:56,650 --> 00:01:00,660 Taigi paaiškėja, kad tie dalykai, kurie priešdėliu su grotelėmis arba 21 00:01:00,660 --> 00:01:04,150 svaras simbolis yra iš anksto procesorius direktyvas. 22 00:01:04,150 --> 00:01:07,960 Tai tik išgalvotas būdas pasakyti tai kodo eilutę, kad tikrai 23 00:01:07,960 --> 00:01:12,280 virsta kažkuo kitu prieš kompiuteris net bandyti konvertuoti jūsų 24 00:01:12,280 --> 00:01:13,800 programą į nulių ir. 25 00:01:13,800 --> 00:01:19,000 >> Pavyzdžiui, aštrių apima standartą I / O. H gana daug tiesiog reiškia eiti 26 00:01:19,000 --> 00:01:24,010 į priekį, patraukti failų turinį stdio.h ir įklijuoti juos tiesiai ten. 27 00:01:24,010 --> 00:01:25,880 Taigi nėra nulių ir tuo momentu dar. 28 00:01:25,880 --> 00:01:27,470 Tai tikrai tiesiog pakeisti. 29 00:01:27,470 --> 00:01:30,790 Ir tai daroma per vadinamųjų išankstinio apdorojimo etapas, kai 30 00:01:30,790 --> 00:01:34,230 iš tikrųjų paleisti Zaszczękać arba konkrečiai Padaryti daugeliu atvejų. 31 00:01:34,230 --> 00:01:36,950 Taigi visa tai buvo daroma Pirmasis automatiškai šiol. 32 00:01:36,950 --> 00:01:38,800 >> Tada ateina rengimo žingsnis. 33 00:01:38,800 --> 00:01:40,920 Bet mes jau supaprastino rinkinys. 34 00:01:40,920 --> 00:01:45,060 Kaupti programą iš tikrųjų reiškia jį iš kažko panašaus C 35 00:01:45,060 --> 00:01:48,430 kodo mes jau raštu, žemyn į kažką vadinama surinkimas. 36 00:01:48,430 --> 00:01:52,900 Asemblerio kalba yra žemesnio lygio kalba, kuri, laimei, mes ne 37 00:01:52,900 --> 00:01:55,480 turi daug proga parašyti šį semestrą. 38 00:01:55,480 --> 00:01:59,100 Bet tai ne žemiausio lygio per jausmas, kad jūs tiesiog pradėkite rašyti 39 00:01:59,100 --> 00:02:04,270 pridėti ir atimti ir dauginti ir apkrovos iš atminties ir įrašyti į atmintį, 40 00:02:04,270 --> 00:02:08,259 labai paprastas instrukcijas, kad kompiuteris, po gaubtu, 41 00:02:08,259 --> 00:02:09,639 iš tikrųjų supranta. 42 00:02:09,639 --> 00:02:14,930 >> Galiausiai, montavimas užima tą kalbą į nulių ir kad mes buvo 43 00:02:14,930 --> 00:02:16,190 aprašyti iki šiol. 44 00:02:16,190 --> 00:02:19,270 Ir tikrai galiausiai, yra vadinamasis susiejimas etapą, kuris mes atsiųsime 45 00:02:19,270 --> 00:02:22,360 matyti tik akimirką, kuris sujungia jūsų nulių ir nuliai ir 46 00:02:22,360 --> 00:02:24,870 tie kiti žmonės prieš jūs sukūrėte. 47 00:02:24,870 --> 00:02:26,660 >> Taigi, mano, kad tai super paprasta programa. 48 00:02:26,660 --> 00:02:27,560 Jis buvo iš savaitės 1. 49 00:02:27,560 --> 00:02:29,610 Jis tiesiog pasakė, Hello World, ekrane. 50 00:02:29,610 --> 00:02:30,920 Įvyko tai per žvangėjimas. 51 00:02:30,920 --> 00:02:33,200 Arba mes bėgo per Padaryti kuris vyko žvangėjimas. 52 00:02:33,200 --> 00:02:36,170 Ir išvedamas tuo metu, kai kai nulių ir. 53 00:02:36,170 --> 00:02:38,100 Tačiau paaiškėja, nėra tarpinis žingsnis. 54 00:02:38,100 --> 00:02:40,460 Jeigu aš eiti per čia - Oi, nebuvo noriu jį pamatyti dar. 55 00:02:40,460 --> 00:02:44,800 Jei aš einu čia mano prietaiso ir aš atverti hello.c čia 56 00:02:44,800 --> 00:02:46,160 yra ta pati programa. 57 00:02:46,160 --> 00:02:48,600 Ir ką aš ruošiuosi daryti mano terminalo langas čia aš ruošiuosi 58 00:02:48,600 --> 00:02:51,430 paleisti Zaszczękać o ne padaryti, o automatizuoja apie visus keturis 59 00:02:51,430 --> 00:02:52,870 Asmenys, atsakingi už mūsų veiksmus. 60 00:02:52,870 --> 00:02:58,620 Ir aš ruošiuosi daryti Zaszczękać-S ir tada hello.c ir įveskite. 61 00:02:58,620 --> 00:03:00,590 >> Ir man mirksi greitai vėl, kas yra gera. 62 00:03:00,590 --> 00:03:05,280 O dabar šiek tiek daugiau lange, Aš einu atverti gedit čia. 63 00:03:05,280 --> 00:03:09,610 Ir aš ruošiuosi atidaryti failą, kad, Pasirodo, yra vadinamas hello.s tai 64 00:03:09,610 --> 00:03:11,870 yra ta, Asemblerio kalba Aš nurodytas anksčiau. 65 00:03:11,870 --> 00:03:15,060 Ir tai yra tai, kas vadinama surinkimas kalba, gana žemo lygio 66 00:03:15,060 --> 00:03:18,470 instrukcijos, kad jūsų "Intel" procesorius arba kokia ji yra, kad viduje 67 00:03:18,470 --> 00:03:19,350 supranta. 68 00:03:19,350 --> 00:03:24,480 Ir mov yra kelyje. pasisako už skambina, labai žemo lygio funkciją. 69 00:03:24,480 --> 00:03:26,380 pietus yra atimti. 70 00:03:26,380 --> 00:03:30,370 >> Taigi, kai jūs turite tam tikrą procesoriaus viduje kompiuterio, ką daro jį 71 00:03:30,370 --> 00:03:34,300 skirtingos, palyginti su kitų procesorių apie rinkos, yra kurie instrukcijos tai 72 00:03:34,300 --> 00:03:39,460 supranta ir dažnai, kaip efektyviai jis yra, kaip greitai jis yra vykdančiosios kai 73 00:03:39,460 --> 00:03:40,380 pirmiau minėtų nurodymų. 74 00:03:40,380 --> 00:03:45,150 Dabar daugiau apie tai, galite imtis Kitą rudenį CS61 koledže. 75 00:03:45,150 --> 00:03:48,170 Bet čia mes turime, pavyzdžiui, mažai identifikatoriai, kuriuos gali atrodyti pažįstamas. 76 00:03:48,170 --> 00:03:50,150 hello.c yra programos pavadinimas. 77 00:03:50,150 --> 00:03:51,070 >> . Tekstas - 78 00:03:51,070 --> 00:03:54,190 nėra daug interesų yra tik dabar, priminti, kad tekstas 79 00:03:54,190 --> 00:03:59,190 segmentas, kadangi pirmadienį, yra kur atminties jūsų programa faktiškai baigiasi. 80 00:03:59,190 --> 00:04:01,330 Štai bent miglotai susipažinęs ten. 81 00:04:01,330 --> 00:04:03,730 Čia, žinoma, yra paminėti Mūsų pagrindinės funkcijos. 82 00:04:03,730 --> 00:04:07,220 Pereikite, tai susiję su dalykų vadinami registrai, labai smulkus gabaliukus 83 00:04:07,220 --> 00:04:09,190 atminties viduje jūsų faktinį procesoriaus. 84 00:04:09,190 --> 00:04:12,930 Ir jei aš slinkti žemyn net Be to, matau kažkokį 85 00:04:12,930 --> 00:04:14,240 netiesioginis paminėjimas ASCII. 86 00:04:14,240 --> 00:04:17,120 Ir, žinoma, yra tai, kad eilutė, Sveiki, kablelis pasaulį. 87 00:04:17,120 --> 00:04:20,079 >> Taigi Trumpai tariant, tai buvo vyksta už jus, automatiškai 88 00:04:20,079 --> 00:04:22,140 po gaubtu visą šį laiką. 89 00:04:22,140 --> 00:04:26,450 Ir tai, kas buvo daroma tikrai yra vieną kartą jūs paleisti Zaszczękać, arba pagal 90 00:04:26,450 --> 00:04:29,150 Padaryti, kad jūs gaunate pirma, iš šaltinio kodą, 91 00:04:29,150 --> 00:04:30,700 vadinamasis Asemblerio kalba. 92 00:04:30,700 --> 00:04:35,210 Tada Zaszczękać yra konvertuoti šį surinkimas kalba iki nulių ir. 93 00:04:35,210 --> 00:04:38,340 Ir tai yra skaidrių, kad mes pradėjome mūsų diskusija savaitę 0 m - 94 00:04:38,340 --> 00:04:39,840 ir tada Savaitė 1 m. 95 00:04:39,840 --> 00:04:44,030 Ir galiausiai, tie nuliai ir tie derinami su nulių ir 96 00:04:44,030 --> 00:04:47,190 iš šių bibliotekų mes jau vartojate savaime suprantamu dalyku, kaip Standard I / O arba 97 00:04:47,190 --> 00:04:50,010 Styginių biblioteka ar net CS50 biblioteka. 98 00:04:50,010 --> 00:04:54,200 >> Taigi dažų šią nuotrauką daugiau vizualiai, mes turime hello.c. 99 00:04:54,200 --> 00:04:57,220 Ir tai, žinoma, naudoja printf veikti sakyti, hello world. 100 00:04:57,220 --> 00:05:01,810 Rengimo etapas trunka jį žemyn kad byla mes tik pamačiau hello.s, net 101 00:05:01,810 --> 00:05:04,290 nors tai paprastai ištrintas automatiškai. 102 00:05:04,290 --> 00:05:06,050 Bet tai surinkimas kodas viduryje žingsnio. 103 00:05:06,050 --> 00:05:09,750 Ir tada, kai mes surinkti surinkimas kalba, taip sakant, kad, kai jūs 104 00:05:09,750 --> 00:05:10,830 gauti tuos nulių ir. 105 00:05:10,830 --> 00:05:13,920 Taigi mes Mastelis efektyviai šiandien ką mes vartojate savaime suprantamu dalyku, 106 00:05:13,920 --> 00:05:16,430 tai vyksta kodą objekto kodo. 107 00:05:16,430 --> 00:05:18,850 >> Bet galiausiai, kad dabar pats vaizdas - tegul įgrūsti jį į 108 00:05:18,850 --> 00:05:20,020 kairėje pusėje. 109 00:05:20,020 --> 00:05:22,880 Ir atkreipkite dėmesį, kad viršuje yra Minėjau stdio.h. 110 00:05:22,880 --> 00:05:25,030 Tai byla, kad mes įtraukti beveik visi 111 00:05:25,030 --> 00:05:26,250 programos mes raštu. 112 00:05:26,250 --> 00:05:28,830 Ir tai failas, kurio turinys gauti kopiją įklijuoti, 113 00:05:28,830 --> 00:05:30,350 efektyviai ant savo kodą. 114 00:05:30,350 --> 00:05:34,170 Tačiau paaiškėja, kad kompiuteryje sistema kažkur, ten matyt 115 00:05:34,170 --> 00:05:39,150 stdio.c failą, kad kažkas rašė metų prieš, kad įgyvendina visas 116 00:05:39,150 --> 00:05:41,870 funkcijos, kurios buvo deklaruotos į stdio.h. 117 00:05:41,870 --> 00:05:45,465 >> Dabar iš tikrųjų tai turbūt ne jūsų Mac arba jūsų kompiuterio ar net 118 00:05:45,465 --> 00:05:47,660 CS50 prietaisas yra žalias C kodas. 119 00:05:47,660 --> 00:05:52,710 Kažkas jau parengė jį ir įtraukti Õ. Failą sukompiliuoti programų tekstai arba. 120 00:05:52,710 --> 00:05:56,020 failą, kuris nurodo shared library tai buvo iš anksto įdiegta ir 121 00:05:56,020 --> 00:05:57,240 iš anksto surinkti už jus. 122 00:05:57,240 --> 00:06:01,950 Bet tarkime, kad ten iš tikrųjų egzistuoja mūsų kompiuterio stdio.c lygiagrečiai 123 00:06:01,950 --> 00:06:02,650 su žvangėjimas. 124 00:06:02,650 --> 00:06:04,960 Jūsų kodas manimi buvo parengta ir surinkti. 125 00:06:04,960 --> 00:06:09,200 stdio.c s kodas yra kaupiami ir surinkti, kad tai paskutinis 126 00:06:09,200 --> 00:06:13,730 žingsnis, žemyn čia, mes turime kažkaip nuoroda, taip sakant, jūsų nulių ir 127 00:06:13,730 --> 00:06:18,430 su jo ar jos nulių ir į vieną paprasta programa, kuri galiausiai yra 128 00:06:18,430 --> 00:06:20,540 vadinamas tiesiog Sveiki. 129 00:06:20,540 --> 00:06:23,340 >> Štai visa magija, kad yra buvo daroma iki šiol. 130 00:06:23,340 --> 00:06:26,430 Ir toliau imsis šių procesai savaime suprantamu dalyku, bet suprasti 131 00:06:26,430 --> 00:06:28,750 ten sultingas detales daug vyksta po ten. 132 00:06:28,750 --> 00:06:31,920 Ir tai, ką daro jūsų kompiuteris su Intel Inside 133 00:06:31,920 --> 00:06:33,940 ypač ryškūs. 134 00:06:33,940 --> 00:06:37,020 >> Taigi dėl šio rašto, jei norite prisijunk prie mūsų pietų šį penktadienį, tai eiti 135 00:06:37,020 --> 00:06:41,570 į įprastą vietą cs50.net/rsvp, 13:15 šį penktadienį. 136 00:06:41,570 --> 00:06:43,400 O dabar keletas pranešimai. 137 00:06:43,400 --> 00:06:44,670 Taigi mes turime gerų naujienų. 138 00:06:44,670 --> 00:06:45,970 Ir mes turime blogų naujienų. 139 00:06:45,970 --> 00:06:47,260 Pradėti gerų naujienų čia. 140 00:06:47,260 --> 00:06:52,038 141 00:06:52,038 --> 00:06:54,510 >> [Dejuoja] 142 00:06:54,510 --> 00:06:54,710 >> Gerai. 143 00:06:54,710 --> 00:06:56,670 Na, tai techniškai šventė, todėl tai ne tiek daug iš mūsų dovana. 144 00:06:56,670 --> 00:06:58,030 Bet tada bloga žinia žinoma. 145 00:06:58,030 --> 00:07:00,550 146 00:07:00,550 --> 00:07:01,880 >> [Dejuoja] 147 00:07:01,880 --> 00:07:03,530 >> Aš praleido daug laiko šių animacija. 148 00:07:03,530 --> 00:07:04,690 >> [Juokas] 149 00:07:04,690 --> 00:07:07,000 >> Bus apžvalga sesija ateinantį pirmadienį. 150 00:07:07,000 --> 00:07:08,340 Tai bus 5:30 val. 151 00:07:08,340 --> 00:07:11,210 Mes jums priminti, visų šių detalių elektroniniu paštu apie aikštyno 152 00:07:11,210 --> 00:07:13,470 svetainėje vos per kelias dienas laiko pora. 153 00:07:13,470 --> 00:07:16,610 Jis bus filmuojamas ir prieinami netrukus. 154 00:07:16,610 --> 00:07:19,200 Taigi, jei jūs negalite padaryti, kad pirmadienis naktį lizdas, nesijaudinkite. 155 00:07:19,200 --> 00:07:22,270 Profiliai ateinančiais savaitę taip pat bus sutelkti dėmesį į peržiūros dėl viktorina. 156 00:07:22,270 --> 00:07:25,670 Jei jūsų skyriuje yra pirmadienį, kuris yra Iš tiesų universitetas šventė, mes 157 00:07:25,670 --> 00:07:26,920 vis dar atitinka skyriuje. 158 00:07:26,920 --> 00:07:28,890 Jei tiesiog negali padaryti, kad skyriuje, nes jūs ketinate 159 00:07:28,890 --> 00:07:29,860 žmones, kad viskas gerai. 160 00:07:29,860 --> 00:07:33,710 Dalyvauti sekmadienis arba antradienis skirsnyje arba tune-in Jasono skyriuje, kuris yra 161 00:07:33,710 --> 00:07:35,110 galima rasti internete. 162 00:07:35,110 --> 00:07:37,490 >> Taigi, daugiau blogų naujienų. 163 00:07:37,490 --> 00:07:41,960 Taigi pagal mokymo programą, mes turime paskaitą kitą penktadienį. 164 00:07:41,960 --> 00:07:43,690 Bet gera žinia - 165 00:07:43,690 --> 00:07:44,860 aiškiai, aš praleido daug laiko apie tai. 166 00:07:44,860 --> 00:07:45,280 >> [Juokas] 167 00:07:45,280 --> 00:07:47,140 >> Anulujemy kitą penktadienį paskaitų. 168 00:07:47,140 --> 00:07:50,590 Taigi, kad bus mums dovana, kad jūs tikrai gali turėti gražią atokvėpis 169 00:07:50,590 --> 00:07:52,990 nuo šios savaitės ir dviejų savaičių taigi. 170 00:07:52,990 --> 00:07:57,460 Taigi ne paskaitos kitą savaitę, tik maža mažai viktorina, už kurį turėtų būti 171 00:07:57,460 --> 00:07:59,030 vis labiau susijaudinęs. 172 00:07:59,030 --> 00:08:03,870 >> Taigi tegul dabar savo ruožtu mūsų dėmesį į kažkas, kad yra tikrai daugiau vaizdo 173 00:08:03,870 --> 00:08:06,990 ir daugiau įdomių ir nustatyti etape už tai, kas bus dėl horizonto 174 00:08:06,990 --> 00:08:08,420 vos per kelias savaites laiko pora. 175 00:08:08,420 --> 00:08:12,160 Po pirmojo viktorinos, mes savo ruožtu sutelkti mūsų problema rinkinių kitą 176 00:08:12,160 --> 00:08:16,710 Specifinė problema, kad Teismo ekspertizės ar saugumo apskritai. 177 00:08:16,710 --> 00:08:19,550 >> Tiesą sakant, su šia problema tradicija rinkinys yra man vienas iš 178 00:08:19,550 --> 00:08:24,850 mokymo bendradarbis ar CAS vaikščioti visoje Campus turėkite nuotraukas 179 00:08:24,850 --> 00:08:29,450 identifikuojamas, bet ne akivaizdus žmonės, vietų, arba ką, tada kiekvienais metais aš 180 00:08:29,450 --> 00:08:34,520 kažkaip sugeba netyčia ištrinti arba sugadinti skaitmeninį medijos kortelę 181 00:08:34,520 --> 00:08:35,720 kad viduje mūsų fotoaparato. 182 00:08:35,720 --> 00:08:36,860 Bet ne big deal. 183 00:08:36,860 --> 00:08:39,200 Aš galiu eiti į priekį ir prijunkite kad į savo kompiuterį. 184 00:08:39,200 --> 00:08:43,010 Galiu padaryti teismo įvaizdį, taigi kalbėti, kopijuojant nuliai ir 185 00:08:43,010 --> 00:08:46,830 tie išjungt tos atminties kortelės, nesvarbu, ar jo SD kortelės arba Compact Flash kortelė arba 186 00:08:46,830 --> 00:08:48,100 ką esate susipažinę su. 187 00:08:48,100 --> 00:08:49,300 Ir tada mes galime perduoti, kad iš. 188 00:08:49,300 --> 00:08:53,190 >> Ir todėl uždavinys, be kita ko, viskas jums, bus rašyti 189 00:08:53,190 --> 00:08:58,630 C kodas, kuris susitraukia visa krūva JPEG man ir atskleidė bus 190 00:08:58,630 --> 00:09:00,190 tie žmonės, vietos, ar dalykų. 191 00:09:00,190 --> 00:09:03,340 Ir mes taip pat kalbėti, kad šios problemos nustatyti ir kelių dienų ateiti, apie 192 00:09:03,340 --> 00:09:04,440 grafika apskritai. 193 00:09:04,440 --> 00:09:06,140 Mes naudojome juos, žinoma, už išeiti. 194 00:09:06,140 --> 00:09:09,080 Bet jūs tarsi savaime suprantamas dalykas egzistuoja tokie aukšto lygio sąvokos 195 00:09:09,080 --> 00:09:10,680 iš stačiakampių ir ovalų. 196 00:09:10,680 --> 00:09:12,450 Tačiau po gaubtu yra taškų. 197 00:09:12,450 --> 00:09:14,370 Ir jūs turėjo pradėti galvoju apie tuos. 198 00:09:14,370 --> 00:09:18,800 Ar jums p-rinkinys 4 galvoti apie tarp jūsų plytų spragą, kaip 199 00:09:18,800 --> 00:09:21,990 greitai jūs kamuolys juda per ekranas išeiti. 200 00:09:21,990 --> 00:09:24,830 Taigi yra tokia sąvoka taškeliai ekrane, kad yra 201 00:09:24,830 --> 00:09:26,290 ateiti į žaidimą jau. 202 00:09:26,290 --> 00:09:29,430 >> Dabar tai, ką matote, nors, yra tai, ką jūs gaunate kompiuterio ekrane. 203 00:09:29,430 --> 00:09:33,680 Jeigu jūs kada nors stebėjo tam tikros prekės arba blogas televizija, šansai yra, jie gana daug 204 00:09:33,680 --> 00:09:36,280 gydyti kaip technophobes auditoriją kas nelabai 205 00:09:36,280 --> 00:09:37,630 žinoti daug apie skaičiavimas. 206 00:09:37,630 --> 00:09:40,840 Ir todėl labai lengva policijos detektyvas pasakyti, jūs galite 207 00:09:40,840 --> 00:09:41,710 valyti, kad už mane? 208 00:09:41,710 --> 00:09:42,710 Arba padidinti, tiesa? 209 00:09:42,710 --> 00:09:45,550 Didinti yra kaip Buzz žodis dauguma bet nusikalstamumu, susijusiu šou. 210 00:09:45,550 --> 00:09:49,240 O realybė yra, jei jums imtis labai neryškus vaizdas įtariamasis daro 211 00:09:49,240 --> 00:09:51,620 kažkas blogai, jūs negalite tik pagerintų. 212 00:09:51,620 --> 00:09:53,080 Jūs negalite priartinti galo. 213 00:09:53,080 --> 00:09:56,350 Jūs negalite matyti kažkieno žibėti akių padaręs, kad 214 00:09:56,350 --> 00:09:59,860 ypač nusikaltimas, nepaisant paplitimas tai per televiziją. 215 00:09:59,860 --> 00:10:04,110 >> Ir taip su tuo galime motyvuoti, kad Artėjantis Problema rinkinys su žvilgsnis 216 00:10:04,110 --> 00:10:05,765 kai rodo, su kuria jūs gali būti susipažinę. 217 00:10:05,765 --> 00:10:06,500 >> [VIDEO PLAYBACK] 218 00:10:06,500 --> 00:10:07,835 >> -Gerai. 219 00:10:07,835 --> 00:10:09,956 Dabar galime gauti gerą pažvelgti į jus. 220 00:10:09,956 --> 00:10:17,060 221 00:10:17,060 --> 00:10:17,766 >> -Laikykite jį. 222 00:10:17,766 --> 00:10:18,658 Paleisti, kad atgal. 223 00:10:18,658 --> 00:10:19,550 >> Palaukit. 224 00:10:19,550 --> 00:10:21,580 Eiti į dešinę. 225 00:10:21,580 --> 00:10:21,800 >> -Taip. 226 00:10:21,800 --> 00:10:22,690 Šaldymo kad. 227 00:10:22,690 --> 00:10:23,692 >> -Visas ekranas. 228 00:10:23,692 --> 00:10:23,846 >> -Gerai. 229 00:10:23,846 --> 00:10:24,154 Šaldymo kad. 230 00:10:24,154 --> 00:10:25,140 >> Priveržkite ant, kad bus ya? 231 00:10:25,140 --> 00:10:27,090 >> Vektoriaus į tą vaikiną iki galinio rato. 232 00:10:27,090 --> 00:10:29,730 >> -Padidinti čia šioje vietoje. 233 00:10:29,730 --> 00:10:33,700 >> -Su teise įrangą, nufotografuota gali būti išplėsta ir aštrus. 234 00:10:33,700 --> 00:10:34,490 >> -Kas tai? 235 00:10:34,490 --> 00:10:35,870 >> -Tai didinimo programos. 236 00:10:35,870 --> 00:10:36,793 >> -Ar jums aišku, kad iki tokių yra? 237 00:10:36,793 --> 00:10:38,560 >> -Aš nežinau. 238 00:10:38,560 --> 00:10:39,090 Leiskite jį pagerinti. 239 00:10:39,090 --> 00:10:41,690 >> -Didinti skyrių-6. 240 00:10:41,690 --> 00:10:43,510 >> I sustiprino išsamiai ir - 241 00:10:43,510 --> 00:10:44,456 >> -Aš manau, kad yra pakankamai padidinti. 242 00:10:44,456 --> 00:10:45,402 Atleiskite jį į savo ekrane. 243 00:10:45,402 --> 00:10:47,300 >> -Stiprinti savo akių atspindys. 244 00:10:47,300 --> 00:10:49,330 >> -Leiskite paleisti tai per vaizdo stiprinimo. 245 00:10:49,330 --> 00:10:50,340 >> -Edgaras tu gali sustiprinti tai? 246 00:10:50,340 --> 00:10:52,320 >> -Laikykis. 247 00:10:52,320 --> 00:10:54,290 >> -I've dirbu šį atspindys. 248 00:10:54,290 --> 00:10:55,560 >> -Kažkas atspindys. 249 00:10:55,560 --> 00:10:56,440 >> -Atspindys. 250 00:10:56,440 --> 00:10:57,940 >> -Yra atspindys iš žmogaus veidą. 251 00:10:57,940 --> 00:10:58,860 >> -Atspindys. 252 00:10:58,860 --> 00:10:59,710 >> -Yra atspindys. 253 00:10:59,710 --> 00:11:00,900 >> -Priartinimas ant veidrodžio. 254 00:11:00,900 --> 00:11:03,500 >> -Jūs galite pamatyti atspindys. 255 00:11:03,500 --> 00:11:04,700 >> -Ar jums padidinti atvaizdą iš čia? 256 00:11:04,700 --> 00:11:05,700 >> -Ar jums padidinti jį čia? 257 00:11:05,700 --> 00:11:06,500 >> -Ar galite jį pagerinti? 258 00:11:06,500 --> 00:11:07,380 >> -Ar galite jį pagerinti? 259 00:11:07,380 --> 00:11:08,190 >> -Ar mes galime pagerinti tai? 260 00:11:08,190 --> 00:11:08,940 >> -Ar galite jį pagerinti? 261 00:11:08,940 --> 00:11:10,280 >> -Palauk sekundę, aš padidinti. 262 00:11:10,280 --> 00:11:11,570 >> -Padidinkite į duris. 263 00:11:11,570 --> 00:11:12,180 >> -X10. 264 00:11:12,180 --> 00:11:13,052 >> -Zoom. 265 00:11:13,052 --> 00:11:13,197 >> [Juokas] 266 00:11:13,197 --> 00:11:14,360 >> -Move in 267 00:11:14,360 --> 00:11:15,100 >> -Palauk, sustoti. 268 00:11:15,100 --> 00:11:15,740 >> -Stop. 269 00:11:15,740 --> 00:11:16,290 >> Pauzė jį. 270 00:11:16,290 --> 00:11:19,390 >> Pasukti 75 laipsnių kampu aplink vertikalus prašom. 271 00:11:19,390 --> 00:11:19,886 >> [Juokas] 272 00:11:19,886 --> 00:11:24,350 >> -Stop, ir atgal į dalis prie durų dar kartą. 273 00:11:24,350 --> 00:11:26,330 >> -Turite vaizdo stipriklis kad gali rastras? 274 00:11:26,330 --> 00:11:28,990 >> -Gal mes galime naudoti Pradeep Sen būdas pamatyti į langus. 275 00:11:28,990 --> 00:11:30,680 >> -Ši programinė įranga yra moderniausias. 276 00:11:30,680 --> 00:11:31,676 >> -Ikona vertė yra išjungtas. 277 00:11:31,676 --> 00:11:34,166 >> -Su teise derinys algoritmų. 278 00:11:34,166 --> 00:11:38,399 >> -Jis ėmėsi apšvietimo algoritmai Kitas lygis, ir aš galiu naudoti juos 279 00:11:38,399 --> 00:11:38,648 tobulinti šią nuotrauką. 280 00:11:38,648 --> 00:11:42,050 >> -Lock ir padidinti z ašiai. 281 00:11:42,050 --> 00:11:42,760 >> -Sustiprinti. 282 00:11:42,760 --> 00:11:43,060 >> -Sustiprinti. 283 00:11:43,060 --> 00:11:43,760 >> -Sustiprinti. 284 00:11:43,760 --> 00:11:45,010 >> Užšaldyti ir sustiprinti. 285 00:11:45,010 --> 00:11:47,470 286 00:11:47,470 --> 00:11:47,910 >> [PABAIGA VIDEO PLAYBACK] 287 00:11:47,910 --> 00:11:51,470 >> Davidas J. Malan: Taigi, problemą, 5 yra tai, kas laukia ten. 288 00:11:51,470 --> 00:11:55,260 Taigi, mes netrukus gauti geresnį supratimą kada ir kodėl jums gali 289 00:11:55,260 --> 00:11:57,300 ir mūsų negali padidinti tokiu būdu. 290 00:11:57,300 --> 00:12:00,090 Bet pirmiausia, galime grįžti mūsų dėmesį kai kurių statybinių blokų mes 291 00:12:00,090 --> 00:12:02,250 reikia, kad būtų galima pasakyti, kad istoriją. 292 00:12:02,250 --> 00:12:05,580 >> Taigi priminti, kad mes patraukė šį paveikslėlį Pirmadienį ir šiek tiek praėjusią savaitę. 293 00:12:05,580 --> 00:12:09,970 Ir tai apibūdina dalykų išdėstymą į kompiuterio atmintį 294 00:12:09,970 --> 00:12:11,000 veikia kai programą. 295 00:12:11,000 --> 00:12:14,310 Technologijų segmentas iki viršaus, priminti, reiškia su faktiniais nulių ir 296 00:12:14,310 --> 00:12:16,000 kad kurti savo programą. 297 00:12:16,000 --> 00:12:19,340 Yra, žemiau, kad kai kurie rengiami arba niezainicjowanego duomenų, kurie paprastai 298 00:12:19,340 --> 00:12:22,910 nurodo tokius dalykus kaip konstantų arba stygos ar globalūs kintamieji, kurie 299 00:12:22,910 --> 00:12:24,200 buvo paskelbta iš anksto. 300 00:12:24,200 --> 00:12:26,500 Yra krūva, bet mes ateis atgal į, kad šiek tiek. 301 00:12:26,500 --> 00:12:27,410 >> Ir tada ten kamino. 302 00:12:27,410 --> 00:12:30,660 Panašiai kaip dėklų krūvą kavinė, tai yra, kai atminties gauna 303 00:12:30,660 --> 00:12:33,610 sluoksniuota ir sluoksniuota, kai jūs ką daryti programoje? 304 00:12:33,610 --> 00:12:36,380 305 00:12:36,380 --> 00:12:37,730 Kas yra kamino naudoti? 306 00:12:37,730 --> 00:12:39,320 >> Taip? 307 00:12:39,320 --> 00:12:40,000 >> Call of funkcija. 308 00:12:40,000 --> 00:12:42,890 Bet kuriuo metu galite skambinti funkcija, tai skiriamas rakštis atminties ITS 309 00:12:42,890 --> 00:12:45,020 vietos kintamieji arba jo parametrai. 310 00:12:45,020 --> 00:12:48,810 Ir pavaizduotomis piktogramo, matome, kad vieni paskesnė funkcija šaukiamas, kai to 311 00:12:48,810 --> 00:12:52,520 ragina B skambučiai C ragina D, jie gauti sluoksniuotos ant kamino. 312 00:12:52,520 --> 00:12:55,630 Ir kiekvienoje iš šių skiltelės atmintis yra iš esmės unikalus apimtis 313 00:12:55,630 --> 00:12:58,590 šiai funkcijai, kuri, žinoma, yra problemiška, jei norite perduoti 314 00:12:58,590 --> 00:13:01,850 iš vienos funkcijos į kitą gabalas duomenų, kuriuos norite jį 315 00:13:01,850 --> 00:13:03,500 mutuoti arba pakeisti. 316 00:13:03,500 --> 00:13:08,060 >> Taigi, kas buvo mūsų sprendimas, leidžianti Funkcija atstovauja po vieną krūvą 317 00:13:08,060 --> 00:13:11,390 rėmo pakeisti atminties viduje kitos kamino tarpą? 318 00:13:11,390 --> 00:13:14,590 Kaip šių dviejų kalbėti vienas su kitu? 319 00:13:14,590 --> 00:13:18,510 Taigi, kaip rodykles arba adresus, kuris, vėlgi, tik aprašyti kur 320 00:13:18,510 --> 00:13:22,280 atmintis, taikant konkrečios įkandimo skaičius, ypač 321 00:13:22,280 --> 00:13:23,830 vertė gali būti nustatyta. 322 00:13:23,830 --> 00:13:26,860 Taigi prisiminti paskutinį kartą per tęsėme istorija ir pažvelgė 323 00:13:26,860 --> 00:13:28,280 gana Buggy programa. 324 00:13:28,280 --> 00:13:32,900 Ir ši programa yra Buggy už kelių priežasčių, tačiau labiausiai neramina vienas 325 00:13:32,900 --> 00:13:34,620 nes ji nesugeba patikrinti, kas? 326 00:13:34,620 --> 00:13:39,111 327 00:13:39,111 --> 00:13:40,450 >> Taip, jis nesugeba patikrinti įvestį. 328 00:13:40,450 --> 00:13:41,870 Atsiprašome? 329 00:13:41,870 --> 00:13:43,880 >> Jei tai ilgesnis nei 12 simbolių. 330 00:13:43,880 --> 00:13:47,260 Taigi labai dailiai, kai skambinama memcopy, kurios, kaip rodo pavadinimas, tiesiog 331 00:13:47,260 --> 00:13:50,630 kopijos atmintį Antru argumentu į pirmąjį argumentą. 332 00:13:50,630 --> 00:13:54,730 Trečiasis argumentas, labai dailiai, yra tikrinama siekiant įsitikinti, kad jums nereikia 333 00:13:54,730 --> 00:13:59,400 kopijuoti daugiau nei šiuo atveju, ilgis Baro, simbolių skaičius, 334 00:13:59,400 --> 00:14:03,810 į paskirties vietą, kuri yra to masyvas C. Bet problema yra ta, kad tai, ką 335 00:14:03,810 --> 00:14:07,230 jei C, tai nėra pakankamai didelis, dirbti, kad? 336 00:14:07,230 --> 00:14:09,900 Jūs ketinate kopijuoti skaičių baitų, kad jūs buvote pateikta. 337 00:14:09,900 --> 00:14:13,040 Bet ką iš tikrųjų turi daugiau baitų nei turite galimybių? 338 00:14:13,040 --> 00:14:16,770 >> Na, ši programa labai kvailai tik aklai pajamos imtis bet tai 339 00:14:16,770 --> 00:14:20,650 suteikta, labas Backslash 0 yra puiku, jei eilutė yra trumpas 340 00:14:20,650 --> 00:14:22,040 pakankamai, pavyzdžiui, penkių simbolių. 341 00:14:22,040 --> 00:14:26,470 Bet jei tai tikrai 12 ženklų arba 1200 simbolių, mes matėme paskutinį kartą 342 00:14:26,470 --> 00:14:29,380 kad jūs tik ketina visiškai perrašyti atminties, kuri 343 00:14:29,380 --> 00:14:30,470 nepriklauso jums. 344 00:14:30,470 --> 00:14:34,390 Ir blogiausiu atveju, jei jūs įrašysite, kad raudona dalis ten, kad mes vadinami 345 00:14:34,390 --> 00:14:35,380 atgalinis adresas - 346 00:14:35,380 --> 00:14:38,370 tai tik ten, kur kompiuteris automatiškai už jus, už 347 00:14:38,370 --> 00:14:43,130 scenos, Fałdowanie toli 32 bitų vertė, kad primena tai, ką ji turėtų adresas 348 00:14:43,130 --> 00:14:47,080 grįžti kai foo tai kitas funkcijas, daroma vykdant. 349 00:14:47,080 --> 00:14:49,320 Tai duonos trupiniai dvasia į kurią jis grįžta. 350 00:14:49,320 --> 00:14:52,490 Jei perrašyti, kad potencialiai jei esate blogas vaikinas, galite galėtų 351 00:14:52,490 --> 00:14:54,750 potencialiai perimti kažkieno kompiuterio. 352 00:14:54,750 --> 00:14:58,020 Ir jūs tikrai avarijos ją daugeliu atvejų. 353 00:14:58,020 --> 00:15:01,690 >> Dabar ši problema buvo tik pablogino kaip mes pradėjome kalbėti apie atminties 354 00:15:01,690 --> 00:15:03,010 valdymo apskritai. 355 00:15:03,010 --> 00:15:07,150 Ir malloc, atminties paskirstymą, yra funkcija, kad mes galime naudoti skirti 356 00:15:07,150 --> 00:15:11,260 atmintis, kai mes nežinome iš anksto kad mums gali prireikti šiek tiek. 357 00:15:11,260 --> 00:15:13,960 Taigi, pavyzdžiui, jei aš einu atgal į prietaisą čia. 358 00:15:13,960 --> 00:15:21,010 Ir aš atverti nuo paskutinio laiko hello2.c, prisiminti šią programą čia, kuris atrodė 359 00:15:21,010 --> 00:15:23,500 šiek tiek kažką panašaus į tai, tik trys linijos - 360 00:15:23,500 --> 00:15:27,940 nurodyti savo vardą, tada Styginių pavadinimas, kairėje lygus getstring. 361 00:15:27,940 --> 00:15:29,690 Ir tada mes jį atspausdinti, vartotojo vardas. 362 00:15:29,690 --> 00:15:31,170 >> Taigi, tai buvo super paprasta programa. 363 00:15:31,170 --> 00:15:34,870 Kad būtų aišku, leiskite man eiti į priekį ir padaryti hello-2. 364 00:15:34,870 --> 00:15:36,680 Aš ruošiuosi daryti dot velniop hello-2. 365 00:15:36,680 --> 00:15:37,750 Nurodykite savo vardą - 366 00:15:37,750 --> 00:15:38,140 Davidas. 367 00:15:38,140 --> 00:15:38,840 Įveskite. 368 00:15:38,840 --> 00:15:39,540 Sveiki Davidas. 369 00:15:39,540 --> 00:15:41,060 Atrodo, kad darbas Gerai. 370 00:15:41,060 --> 00:15:43,140 Bet kas iš tikrųjų vyksta po gaubtu čia? 371 00:15:43,140 --> 00:15:44,670 Pirma tegul žievelės atgal tam tikri sluoksniai. 372 00:15:44,670 --> 00:15:48,380 Styginių yra tik sinonimas mes supratau, už ką? 373 00:15:48,380 --> 00:15:49,110 Char žvaigždė. 374 00:15:49,110 --> 00:15:52,740 Taigi galime padaryti šiek tiek daugiau paslaptingų bet daugiau techniškai teisinga, kad šis 375 00:15:52,740 --> 00:15:55,570 yra char žvaigždė, tai reiškia, kad vardas, taip, yra nevienoda. 376 00:15:55,570 --> 00:15:59,920 Bet kas pavadinimas parduotuvių adresas simbolis, kuris jaučiasi šiek tiek keista 377 00:15:59,920 --> 00:16:01,050 nes aš gaunu atgal eilutę. 378 00:16:01,050 --> 00:16:03,580 Gaunu atgal kelis apdegina ne Char. 379 00:16:03,580 --> 00:16:07,400 >> Bet, žinoma, jums reikia tik pirmą kartą char adresas prisiminti, kur 380 00:16:07,400 --> 00:16:08,870 Visa eilutė, nes kodėl? 381 00:16:08,870 --> 00:16:12,700 Kaip jums išsiaiškinti, kur galas eilutė žinant pradžią? 382 00:16:12,700 --> 00:16:13,630 Backslash nuliui. 383 00:16:13,630 --> 00:16:17,260 Taigi su šių dviejų įkalčiais jums išsiaiškinti, Prieš pradžioje ir pabaigoje 384 00:16:17,260 --> 00:16:20,280 bet kokia eilutė yra tol, kol jie tinkamai sudaryta su ta null 385 00:16:20,280 --> 00:16:22,110 terminatorius, kad Backslash nuliui. 386 00:16:22,110 --> 00:16:24,520 >> Bet tai skambina getstring. 387 00:16:24,520 --> 00:16:28,020 Ir it turns out, kad getstring visą šį laiką buvo natūra 388 00:16:28,020 --> 00:16:28,820 oszukiwanie mums. 389 00:16:28,820 --> 00:16:32,460 Tai darė šį darbą, būti tikri, gauti iš vartotojo eilutę. 390 00:16:32,460 --> 00:16:34,580 Bet kur tai, kad atmintis buvo iš? 391 00:16:34,580 --> 00:16:38,440 Jei mes einame atgal į paveikslėlį čia ir taikyti šį apibrėžimą tik iš 392 00:16:38,440 --> 00:16:42,610 prieš akimirką, kad kamino kur atminties eina, kai funkcijos yra vadinamas, 393 00:16:42,610 --> 00:16:45,370 ta logika, kai skambinate getstring, ir tada aš tipo 394 00:16:45,370 --> 00:16:50,900 D-V-I-D "Enter", kur D-V-aš-D Backslash nulis saugomi, remiantis 395 00:16:50,900 --> 00:16:53,480 istorija mes papasakojo toli? 396 00:16:53,480 --> 00:16:55,190 >> Atrodytų būti kamino, tiesa? 397 00:16:55,190 --> 00:16:58,120 Kai Jūs skambinate gauti eilutę gausite mažai gabalas atmintį kamino. 398 00:16:58,120 --> 00:17:01,630 Taigi, ji stovi prie priežasties, kad D--V-aš-D Backslash nulis saugomos 399 00:17:01,630 --> 00:17:02,770 ten kamino. 400 00:17:02,770 --> 00:17:07,680 Bet palauk, getstring grąžą kad seka, taip sakant, o tai reiškia, 401 00:17:07,680 --> 00:17:11,700 tai dėklas nuo kavinėje yra nurašomas kamino. 402 00:17:11,700 --> 00:17:14,560 Ir mes sakėme paskutinį kartą, kad kuo greičiau funkcija grąžina, o jūs imtis, kad 403 00:17:14,560 --> 00:17:20,109 dėklas, taip sakant, nuo kamino, ką galite manyti apie liekanas 404 00:17:20,109 --> 00:17:21,819 kad atmintis? 405 00:17:21,819 --> 00:17:25,160 Aš tarsi redrew juos kaip klaustukais nes jie veiksmingai tapti 406 00:17:25,160 --> 00:17:26,250 Nežinoma vertės. 407 00:17:26,250 --> 00:17:29,500 Jie gali būti pakartotinai naudojamas, kai kai kurie Kitas funkcija yra vadinama. 408 00:17:29,500 --> 00:17:31,870 >> Kitaip tariant, jei mes atsitikti reikia saugoti - 409 00:17:31,870 --> 00:17:34,350 Aš atkreipti greitai paveikslėlį čia iš kamino. 410 00:17:34,350 --> 00:17:38,690 Jei atsitiktų būti piešimo dugną mano atminties segmento, ir mes pasakysime 411 00:17:38,690 --> 00:17:42,230 kad tai yra atminties vieta užima pagrindinio ir gal arg C ir 412 00:17:42,230 --> 00:17:46,790 ARG prieš ir visa kita programoje, kai getstring vadinamas, 413 00:17:46,790 --> 00:17:51,120 matyt getstring gauna atminties riekė čia. 414 00:17:51,120 --> 00:17:53,940 Ir tada D-V-aš-D kažkaip baigiasi šią funkciją. 415 00:17:53,940 --> 00:17:55,320 Ir aš ruošiuosi per daug supaprastinti. 416 00:17:55,320 --> 00:18:00,050 Bet tarkime, kad jos D-V-aš-D Backslash nuliui. 417 00:18:00,050 --> 00:18:03,500 Taigi tai daug baitai yra naudojami už getstring rėmas. 418 00:18:03,500 --> 00:18:08,270 >> Bet kaip tik getstring grąžos, mes sakė paskutinį kartą, kad ši atmintis per 419 00:18:08,270 --> 00:18:11,340 čia visa tai tampa - woops! - 420 00:18:11,340 --> 00:18:14,270 visa tai tampa efektyviai ištrinti. 421 00:18:14,270 --> 00:18:17,220 Ir mes galime galvoti apie tai dabar, kaip klausimą ženklai, nes kas žino, 422 00:18:17,220 --> 00:18:18,720 kas taps tos atminties. 423 00:18:18,720 --> 00:18:22,130 Iš tiesų, aš labai dažnai skambinti funkcijas išskyrus getstring. 424 00:18:22,130 --> 00:18:24,750 Ir kuo greičiau aš vadinu kai kurie kiti funkcija nei getstring, gal ne 425 00:18:24,750 --> 00:18:28,860 tai pirma programa, kurią mes tik pažvelgė ne, bet kai kurie kiti, be abejo, kai kurie kiti 426 00:18:28,860 --> 00:18:34,180 funkcija gali baigtis būtų suteikta tai kitą vietoje kamino. 427 00:18:34,180 --> 00:18:39,410 >> Taigi negali būti, kad getstring parduotuvės D-V-aš-D ant kamino, nes aš norėčiau 428 00:18:39,410 --> 00:18:41,040 iš karto prarasti prieigą prie jo. 429 00:18:41,040 --> 00:18:43,720 Bet mes žinome, jie getstring tik tuos, ką? 430 00:18:43,720 --> 00:18:47,220 Tai ne grįžtant į man šešis simbolius. 431 00:18:47,220 --> 00:18:51,090 Kas ji tikrai vėl buvo galime daryti išvadą, paskutinį kartą? 432 00:18:51,090 --> 00:18:52,480 Iš pirmųjų adresą. 433 00:18:52,480 --> 00:18:56,650 Taigi kažkaip, kai jūs vadinamas getstring, tai skiriant atminties riekė už 434 00:18:56,650 --> 00:18:59,620 eilutė, vartotojų tipas ir tada grįžti adresas juo. 435 00:18:59,620 --> 00:19:02,930 Ir paaiškėja, kad, kai norite veikti paskirstyti atmintį šį 436 00:19:02,930 --> 00:19:08,390 būdas ir sugrįžimo į asmenį, kuris vadinamas kad funkcija, adresas 437 00:19:08,390 --> 00:19:11,870 kad atminties riekė, jūs visiškai negali įdėti jį į steką ne 438 00:19:11,870 --> 00:19:14,750 apačioje, nes funkciškai tai tik ketina netapo tavo labai 439 00:19:14,750 --> 00:19:17,800 greitai, todėl jums greičiausiai gali atspėti, kur mes tikriausiai bus išmesti jį 440 00:19:17,800 --> 00:19:20,130 vietoj to, vadinamasis krūva. 441 00:19:20,130 --> 00:19:25,290 >> Taigi tarp jūsų atminties dugne išdėstymas ir iš jūsų atminties ųjų viršų 442 00:19:25,290 --> 00:19:26,820 išdėstymas yra visa krūva segmentuose. 443 00:19:26,820 --> 00:19:29,270 Vienas iš jų yra kamino, ir iš karto virš jo yra krūvos. 444 00:19:29,270 --> 00:19:33,680 Ir krūva yra tik skirtingi riekė atminties tai nėra naudojamas funkcijas 445 00:19:33,680 --> 00:19:34,770 kai jie vadinami. 446 00:19:34,770 --> 00:19:38,100 Ji naudojama ilgalaikę atmintį, kai norite viena funkcija patraukti kai 447 00:19:38,100 --> 00:19:42,700 atminties ir galima pakabinti ant jo neprarandant kontroliuoti jį. 448 00:19:42,700 --> 00:19:45,550 >> Dabar jūs galbūt galėtų iš karto matyti, kad tai nėra 449 00:19:45,550 --> 00:19:48,060 nebūtinai puikus dizainas. 450 00:19:48,060 --> 00:19:51,350 Kaip jūsų programa skirta atmintį kaminą, arba kaip jūs vadinate daugiau ir 451 00:19:51,350 --> 00:19:55,540 daugiau funkcijų, arba kaip jums skirti atmintis su malloc krūvos ne kaip 452 00:19:55,540 --> 00:20:00,690 getstring daro, ką aiškiai atrodo neišvengiama problema? 453 00:20:00,690 --> 00:20:00,860 >> Teisė. 454 00:20:00,860 --> 00:20:03,150 Kaip ir tai, kad šios rodyklės nukreipti vienas į kitą 455 00:20:03,150 --> 00:20:04,380 nėra Bode gerai. 456 00:20:04,380 --> 00:20:08,630 Ir iš tiesų, mes galime labai greitai katastrofos bet būdais programa. 457 00:20:08,630 --> 00:20:12,050 Tiesą sakant, manau, kad mes galime turėti tai padarė netyčia vieną kartą. 458 00:20:12,050 --> 00:20:14,020 Arba, jei ne, tegul tai padaryti sąmoningai dabar. 459 00:20:14,020 --> 00:20:21,330 Leiskite man eiti į priekį ir rašyti super greitai programa, vadinama dontdothis.c. 460 00:20:21,330 --> 00:20:26,730 O dabar aš eisiu čia ir neturi aštrių apima stdio.h. 461 00:20:26,730 --> 00:20:32,620 Leiskite pareikšti funkcija rūšys užima jokių argumentų, kurie yra 462 00:20:32,620 --> 00:20:34,040 žymimas kaip gerai negaliojančiu. 463 00:20:34,040 --> 00:20:37,830 >> Ir vienintelis dalykas, rūšys ketina padaryti, tai skambutis rūšys, kuris tikriausiai nėra 464 00:20:37,830 --> 00:20:39,100 protingiausias mintis, bet tegul bus taip. 465 00:20:39,100 --> 00:20:40,490 Ent pagrindinis negalioja. 466 00:20:40,490 --> 00:20:45,270 Dabar vienintelis dalykas, pagrindinis vyksta padaryti, tai paskambinti foo taip pat. 467 00:20:45,270 --> 00:20:51,050 Ir tik prasideda, aš ruošiuosi eiti į priekį čia ir pasakyti, printf "Labas iš 468 00:20:51,050 --> 00:20:52,340 foo ". 469 00:20:52,340 --> 00:20:52,890 >> Gerai. 470 00:20:52,890 --> 00:21:00,160 Taigi, jei aš nepadarė jokių klaidų, Padaryti dontdothis dot velniop. 471 00:21:00,160 --> 00:21:01,960 Ir tegul tai padaryti lange didesnius - 472 00:21:01,960 --> 00:21:03,210 taškas velniop, dontdothis. 473 00:21:03,210 --> 00:21:07,590 474 00:21:07,590 --> 00:21:08,840 Nagi. 475 00:21:08,840 --> 00:21:10,940 476 00:21:10,940 --> 00:21:11,890 Uh oh. 477 00:21:11,890 --> 00:21:13,100 Matyt, jūs galite tai padaryti. 478 00:21:13,100 --> 00:21:15,190 Damn it. 479 00:21:15,190 --> 00:21:16,190 Gerai. 480 00:21:16,190 --> 00:21:16,580 Palaukite. 481 00:21:16,580 --> 00:21:17,370 Budėjimo. 482 00:21:17,370 --> 00:21:18,270 Ar mes - 483 00:21:18,270 --> 00:21:20,110 Mes tikrai ją naudoti Padaryti. 484 00:21:20,110 --> 00:21:22,050 >> [Atsidūsta] 485 00:21:22,050 --> 00:21:25,110 >> Žinau, bet aš manau, kad mes tiesiog ištrynė tą. 486 00:21:25,110 --> 00:21:28,410 Uh, taip. 487 00:21:28,410 --> 00:21:30,660 Damn it. 488 00:21:30,660 --> 00:21:32,640 Išspręskite šią Rob. 489 00:21:32,640 --> 00:21:34,678 Kas? 490 00:21:34,678 --> 00:21:35,928 Tai labai paprasta. 491 00:21:35,928 --> 00:21:43,820 492 00:21:43,820 --> 00:21:47,360 Taip, mes kreipėmės optimizavimas išjungtas. 493 00:21:47,360 --> 00:21:48,970 Gerai, stovėti bye. 494 00:21:48,970 --> 00:21:49,950 Dabar jaučiuosi geriau. 495 00:21:49,950 --> 00:21:51,390 Gerai. 496 00:21:51,390 --> 00:21:51,780 Gerai. 497 00:21:51,780 --> 00:21:53,430 >> Taigi leiskite perkompiliuoti tai - 498 00:21:53,430 --> 00:21:55,880 Padaryti jums dontdothis. 499 00:21:55,880 --> 00:22:00,090 Jums gali tekti pervadinti tai dothis.c vos akimirką. 500 00:22:00,090 --> 00:22:00,710 Čia mes eiti. 501 00:22:00,710 --> 00:22:01,240 Ačiū. 502 00:22:01,240 --> 00:22:02,050 Gerai. 503 00:22:02,050 --> 00:22:05,480 Taigi faktas, kad buvau spausdinimo kažkas iš tikrųjų buvo tiesiog 504 00:22:05,480 --> 00:22:08,150 lėtina procesą, kurį mes būtų pasiektas tame taške. 505 00:22:08,150 --> 00:22:08,510 Gerai. 506 00:22:08,510 --> 00:22:08,870 Na ir na! 507 00:22:08,870 --> 00:22:11,180 >> Taigi, kas iš tikrųjų vyksta? 508 00:22:11,180 --> 00:22:14,440 Paaiškinimas, kaip panaikinti, yra ką nors, kalbant apie sąnaudų ir 509 00:22:14,440 --> 00:22:17,270 produkcija turi tendenciją būti lėtesnis, nes jūs turite rašyti simbolius 510 00:22:17,270 --> 00:22:18,600 ekranas, Ji turi slinkti. 511 00:22:18,600 --> 00:22:21,720 Taigi Trumpai tariant, aš iš tikrųjų turėjo atsitiko taip, nekantrus, mes turėtume 512 00:22:21,720 --> 00:22:23,260 mačiau tai galutinis rezultatas taip pat. 513 00:22:23,260 --> 00:22:26,220 Dabar, kad aš važiuoti į spausdinimo įmonėms, matome iš karto. 514 00:22:26,220 --> 00:22:28,410 Taigi, kodėl tai vyksta. 515 00:22:28,410 --> 00:22:31,300 Na, paprastas paaiškinimas, žinoma, yra tai, kad rūšys tikriausiai neturėtų 516 00:22:31,300 --> 00:22:32,500 būti pasivadinusi. 517 00:22:32,500 --> 00:22:34,470 >> Dabar bendrais bruožais, tai yra rekursija. 518 00:22:34,470 --> 00:22:36,970 Ir mes manome, kad porą savaičių prieš rekursywny yra gera. 519 00:22:36,970 --> 00:22:40,330 Rekursija tai magiškas būdas išreikšti save itin trumpai. 520 00:22:40,330 --> 00:22:41,400 Ir ji tiesiog veikia. 521 00:22:41,400 --> 00:22:45,060 Bet yra pagrindinis bruožas visiems Rekurentiniai programos Mes kalbėjome 522 00:22:45,060 --> 00:22:48,260 apie ir pažvelgė į iki šiol, o buvo tai, kad jie turėjo ką? 523 00:22:48,260 --> 00:22:52,610 Bazinį scenarijų, kuris buvo šiek tiek sunku kodavimo atveju tai sakė, kai kuriais atvejais 524 00:22:52,610 --> 00:22:56,210 nekeičia foo, kuri yra aiškiai ne šiuo atveju. 525 00:22:56,210 --> 00:22:58,920 >> Taigi, kas iš tikrųjų vyksta kalbant apie šią nuotrauką? 526 00:22:58,920 --> 00:23:01,790 Na, kai pagrindinis ragina foo ji gauna iš atminties gabaliuką. 527 00:23:01,790 --> 00:23:04,150 Kai foo foo ragina, jis gauna atminties gabalas. 528 00:23:04,150 --> 00:23:06,430 Kai foo foo ragina, jis gauna gabaliuką. 529 00:23:06,430 --> 00:23:07,080 Ji gauna gabaliuką. 530 00:23:07,080 --> 00:23:08,120 Ji gauna gabaliuką. 531 00:23:08,120 --> 00:23:09,460 Kadangi Foo niekada nepasikartotų. 532 00:23:09,460 --> 00:23:12,160 Mes niekada ištrinti vieną iš šių kadrų iš kamino. 533 00:23:12,160 --> 00:23:15,930 Taigi mes pučia per krūvą, o ne paminėti, kuris žino, ką dar, ir 534 00:23:15,930 --> 00:23:19,600 mes nenusižengiant mūsų ribų vadinamųjų segmentas atminties. 535 00:23:19,600 --> 00:23:21,790 Klaida eiti segmentacija neteisinga. 536 00:23:21,790 --> 00:23:24,110 >> Taigi sprendimas yra aiškiai ne tai. 537 00:23:24,110 --> 00:23:28,830 Tačiau didesnė reiškia, kad, taip, ten tikrai yra tam tikra riba, 538 00:23:28,830 --> 00:23:32,470 net jei tai nėra aiškiai apibrėžta, apie tai, kaip daug funkcijų, galite skambinti 539 00:23:32,470 --> 00:23:34,970 programa, kiek kartų funkcija gali skambinti pati. 540 00:23:34,970 --> 00:23:38,430 Taigi, nors mes padarėme skelbti rekursija nes tai potencialiai stebuklinga dalykas 541 00:23:38,430 --> 00:23:41,870 porą savaičių prieš "Sigma funkcija, ir kai mes gauti duomenis 542 00:23:41,870 --> 00:23:45,270 struktūros ir CS50, pamatysite kita paraiškos, ji ne 543 00:23:45,270 --> 00:23:46,500 nebūtinai geriausias dalykas. 544 00:23:46,500 --> 00:23:50,070 Nes jei funkcija save vadina, save vadina, net jei ten bazė 545 00:23:50,070 --> 00:23:54,860 atveju, jei jūs neturite pasiektų šį bazinį scenarijų už 1000 skambučius ar 10000 skambučius, pagal 546 00:23:54,860 --> 00:23:58,800 kad laikas jums gali tekti paleisti iš kambario savo vadinamąjį kamino ir paspauskite 547 00:23:58,800 --> 00:24:00,400 kai kurie kiti segmentai atminties. 548 00:24:00,400 --> 00:24:03,950 Taigi ji taip pat yra dizaino kompromisą tarp elegancijos ir tarp 549 00:24:03,950 --> 00:24:06,920 tvirtumas jūsų pirma įgyvendinimas. 550 00:24:06,920 --> 00:24:10,780 >> Taigi yra dar vienas trūkumas arba dar kabliuko, kad tai, ką mes 551 00:24:10,780 --> 00:24:11,720 darė iki šiol. 552 00:24:11,720 --> 00:24:12,980 Kai aš pašaukiau getstring - 553 00:24:12,980 --> 00:24:15,120 leiskite man grįžti į hello-2. 554 00:24:15,120 --> 00:24:18,170 Atkreipkite dėmesį, kad aš skambinti getstring, kuris grįžta adresą. 555 00:24:18,170 --> 00:24:20,730 Ir mes teigia, kad šiandien adresas iš krūvos. 556 00:24:20,730 --> 00:24:24,480 Ir dabar aš spausdinti seka šiuo adresu. 557 00:24:24,480 --> 00:24:27,000 Bet mes niekada vadinamas priešais getstring. 558 00:24:27,000 --> 00:24:30,850 Mes niekada turėjo calll funkciją kaip ungetstring, kur ranka atgal 559 00:24:30,850 --> 00:24:31,610 kad atmintis. 560 00:24:31,610 --> 00:24:33,250 Bet tiesą sakant, mes tikriausiai turėjo būti. 561 00:24:33,250 --> 00:24:37,390 Nes jei mes nuolat klausia kompiuterį už atmintį, kurią kaip kažkas panašaus 562 00:24:37,390 --> 00:24:40,830 getstring bet niekada duoti atgal, tikrai tai irgi sukels 563 00:24:40,830 --> 00:24:42,970 problemų, kai mes paleisti iš atminties. 564 00:24:42,970 --> 00:24:46,140 >> Ir iš tiesų, mes galime ieškoti šių problemų su nauja priemonė, kurios naudojimas 565 00:24:46,140 --> 00:24:47,640 yra šiek tiek paslaptingas tipo. 566 00:24:47,640 --> 00:24:50,960 Bet leiskite man eiti į priekį ir splash jį ant vos akimirką ekrane. 567 00:24:50,960 --> 00:24:56,940 Aš ruošiuosi eiti į priekį ir paleisti Comment parametru, kurio pirmasis įsakymas 568 00:24:56,940 --> 00:25:00,260 linija argumentas vardas tos programos hello-2. 569 00:25:00,260 --> 00:25:02,650 Ir, deja, tai produkcija yra atrociously 570 00:25:02,650 --> 00:25:04,290 sudėtinga, be rimtos priežasties. 571 00:25:04,290 --> 00:25:06,280 Taigi matome, visa tai netvarka. 572 00:25:06,280 --> 00:25:07,530 Dovydas yra nurodyti savo pavadinimą. 573 00:25:07,530 --> 00:25:09,760 Štai programa iš tikrųjų veikia. 574 00:25:09,760 --> 00:25:11,180 Ir dabar mes gauti šią produkciją. 575 00:25:11,180 --> 00:25:13,400 >> Taigi Valgrind yra panašus dvasia su GDB. 576 00:25:13,400 --> 00:25:14,950 Tai nėra savaime Debugger. 577 00:25:14,950 --> 00:25:16,270 Bet tai atmintis tikrintuvas. 578 00:25:16,270 --> 00:25:20,140 Tai programa, kuri bus paleisti programą ir pasakys, jei jūs prašėte 579 00:25:20,140 --> 00:25:23,860 kompiuteris atmintyje ir niekada perdavė jį atgal, taip tai reiškia, kad jūs turite 580 00:25:23,860 --> 00:25:24,570 Atminties nutekėjimas. 581 00:25:24,570 --> 00:25:26,240 Ir Atminties nutekėjimas linkę būti blogai. 582 00:25:26,240 --> 00:25:29,120 Ir jums yra kompiuterių naudotojai turi tikriausiai manė, kad tai, ar turite 583 00:25:29,120 --> 00:25:30,300 Mac arba PC. 584 00:25:30,300 --> 00:25:33,730 Ar jūs kada nors naudoti savo kompiuterį o ir nėra paleistas keliose 585 00:25:33,730 --> 00:25:36,820 dienų, arba jūs ką tik gavo daug programos veikia ir velniškai dalykas 586 00:25:36,820 --> 00:25:42,360 lėtina šlifavimo sustabdyti arba bent jau tai super erzina naudoti, nes 587 00:25:42,360 --> 00:25:44,350 viskas ką tik gavo super lėtai. 588 00:25:44,350 --> 00:25:46,260 >> Dabar, kad gali būti bet priežasčių. 589 00:25:46,260 --> 00:25:49,600 Tai gali būti begalinis ciklas, kirminas kažkieno kodas, arba, tiesiog, tai 590 00:25:49,600 --> 00:25:53,250 gali reikšti, kad jūs naudojate daugiau atminties, arba bando, nei jūsų 591 00:25:53,250 --> 00:25:54,920 kompiuteris iš tikrųjų yra. 592 00:25:54,920 --> 00:25:57,770 O gal ten kai programos klaida kad nuolat prašo atmintyje. 593 00:25:57,770 --> 00:26:02,480 Naršyklės metų buvo žinomi dėl tai, prašydami daugiau ir daugiau atminties 594 00:26:02,480 --> 00:26:03,870 bet niekada perduodant jį atgal. 595 00:26:03,870 --> 00:26:07,220 Žinoma, jei turite tik baigtinių atminties kiekis, jūs negalite paklausti 596 00:26:07,220 --> 00:26:09,990 galo daug kartų kai tos atminties. 597 00:26:09,990 --> 00:26:13,070 >> Ir taip, ką matote čia, nors vėl Valgrind išvestis yra 598 00:26:13,070 --> 00:26:17,490 pernelyg sudėtinga žvilgtelėti į pirma, tai yra įdomiausia dalis. 599 00:26:17,490 --> 00:26:18,890 Heap - 600 00:26:18,890 --> 00:26:20,060 naudojamas ne išeiti. 601 00:26:20,060 --> 00:26:22,810 Taigi čia kiek atmintis naudojami krūvos ne 602 00:26:22,810 --> 00:26:24,300 laikas mano programa išėjo - 603 00:26:24,300 --> 00:26:27,280 matyt šešių baitų vieno bloko. 604 00:26:27,280 --> 00:26:28,710 Taigi, aš ruošiuosi pakylės savo rankas kokia blokas. 605 00:26:28,710 --> 00:26:31,270 Pagalvokite apie tai tik gabalas, daugiau techninė žodis riekė. 606 00:26:31,270 --> 00:26:33,140 Tačiau šešių baitų - 607 00:26:33,140 --> 00:26:36,870 kas yra šešių baitų buvo vis dar naudojami? 608 00:26:36,870 --> 00:26:37,390 >> Būtent. 609 00:26:37,390 --> 00:26:41,520 D-V-aš-D Backslash nulis, penkių laišką Vardas plius null terminatorius. 610 00:26:41,520 --> 00:26:46,350 Taigi ši programa Valgrind pastebėjau, kad aš paprašė šešių baitų, matyt, pagal 611 00:26:46,350 --> 00:26:48,950 būdas getstring, bet niekada davė jiems atgal. 612 00:26:48,950 --> 00:26:52,030 Ir iš tiesų, tai gali būti ne taip akivaizdus, ​​jei mano programa nėra trijų 613 00:26:52,030 --> 00:26:53,590 linijos, bet tai 300 linijos. 614 00:26:53,590 --> 00:26:56,920 Taigi, mes galime iš tikrųjų duoti kita komanda linija argumentas Comment į 615 00:26:56,920 --> 00:26:58,290 kad jis taptų išsami. 616 00:26:58,290 --> 00:26:59,760 Tai šiek tiek erzina, kad prisiminti. 617 00:26:59,760 --> 00:27:01,580 Bet jei aš tai padaryti - 618 00:27:01,580 --> 00:27:01,930 pažiūrėkime. 619 00:27:01,930 --> 00:27:03,540 Nuotėkio - 620 00:27:03,540 --> 00:27:05,030 Ji buvo ištekėti - 621 00:27:05,030 --> 00:27:07,580 net nepamenu kas tai yra ne ranka. 622 00:27:07,580 --> 00:27:08,550 >> - Nuotėkio tikrinimas lygus pilna. 623 00:27:08,550 --> 00:27:10,180 Taip, ačiū. 624 00:27:10,180 --> 00:27:12,520 - Nuotėkio tikrinimas lygus pilna. 625 00:27:12,520 --> 00:27:13,800 Įveskite. 626 00:27:13,800 --> 00:27:14,940 Tas programa veikia. 627 00:27:14,940 --> 00:27:16,180 Įveskite Dovydo dar kartą. 628 00:27:16,180 --> 00:27:17,660 Dabar matau tiek išsamiau. 629 00:27:17,660 --> 00:27:20,890 Bet žemiau krūvos santrauka, kuri sutampa su keturių - Ah, 630 00:27:20,890 --> 00:27:22,120 tai tipo gražus. 631 00:27:22,120 --> 00:27:25,460 Dabar Valgrind iš tikrųjų ieškote tiek sunkiau savo kodą. 632 00:27:25,460 --> 00:27:29,580 Ir tai suprantama, kad, matyt, malloc eilutėje - 633 00:27:29,580 --> 00:27:30,580 mes nutolinti. 634 00:27:30,580 --> 00:27:31,980 Tuo linija - 635 00:27:31,980 --> 00:27:32,930 mes nematote, ką linija yra. 636 00:27:32,930 --> 00:27:35,110 Bet malloc yra pirmoji kaltininkas. 637 00:27:35,110 --> 00:27:38,630 Yra ir malloc dienoraštis. 638 00:27:38,630 --> 00:27:39,810 >> Viskas gerai? 639 00:27:39,810 --> 00:27:40,450 Gerai, Nr. 640 00:27:40,450 --> 00:27:40,940 Teisė? 641 00:27:40,940 --> 00:27:42,520 Aš pašaukiau getstring. 642 00:27:42,520 --> 00:27:44,460 getstring matyt ragina malloc. 643 00:27:44,460 --> 00:27:47,800 Taigi, kas eilutėje kodas yra akivaizdžiai kaltas už tai, 644 00:27:47,800 --> 00:27:49,050 skiriamos šios atminties? 645 00:27:49,050 --> 00:27:51,560 646 00:27:51,560 --> 00:27:55,540 Tarkime, kad tas, kas rašė malloc gyvuoja pakankamai ilgai, kad tai 647 00:27:55,540 --> 00:27:56,390 ne jų kaltė. 648 00:27:56,390 --> 00:27:57,520 Taigi, tai tikriausiai mano. 649 00:27:57,520 --> 00:28:02,000 getstring į cs50.c - todėl tai failą kažkur kompiuteryje - 650 00:28:02,000 --> 00:28:05,210 atitinka 286 Atrodo, kad kaltininkas. 651 00:28:05,210 --> 00:28:08,140 Dabar įsivaizduokime, kad CS50 buvo maždaug už padoraus dydžio laiką, todėl 652 00:28:08,140 --> 00:28:09,720 mes taip pat yra neklystantis. 653 00:28:09,720 --> 00:28:14,080 Ir todėl tikriausiai ne getstring kad triktį yra, bet veikiau 654 00:28:14,080 --> 00:28:17,810 hello-2.c eilutė 18. 655 00:28:17,810 --> 00:28:20,670 >> Taigi galime pažvelgti kas tai eilutė 18 buvo. 656 00:28:20,670 --> 00:28:21,130 Oh. 657 00:28:21,130 --> 00:28:27,130 Kažkodėl ši eilutė nebūtinai Buggy per se, tačiau tai priežastis 658 00:28:27,130 --> 00:28:28,630 už tos Atminties nutekėjimas. 659 00:28:28,630 --> 00:28:32,140 Taigi super tiesiog, ką intuityviai būti sprendimas čia? 660 00:28:32,140 --> 00:28:34,710 Jei mes prašome atminties, niekada nebuvo suteikiant jai atgal, ir kad, atrodo, 661 00:28:34,710 --> 00:28:37,940 problema, nes laikui bėgant mano kompiuterio gali pritrūkti atminties, gali sulėtėti 662 00:28:37,940 --> 00:28:42,110 žemyn, blogi dalykai gali įvykti, gerai, kas paprastas intuityvus sprendimas? 663 00:28:42,110 --> 00:28:43,140 Tiesiog suteikti jai atgal. 664 00:28:43,140 --> 00:28:44,770 >> Kaip jūs atlaisvinti atminties, kad? 665 00:28:44,770 --> 00:28:49,970 Na, laimei, tai gana paprasta tiesiog pasakyti nemokamą pavadinimą. 666 00:28:49,970 --> 00:28:51,260 Ir mes niekada tai padarė anksčiau. 667 00:28:51,260 --> 00:28:55,890 Bet jūs galite iš esmės galvoti apie nemokamai kaip malloc priešingai. 668 00:28:55,890 --> 00:28:58,030 nemokamai yra priešinga paskirstymo atminties. 669 00:28:58,030 --> 00:28:59,540 Taigi dabar leiskite man perkompiliuoti tai. 670 00:28:59,540 --> 00:29:02,050 Padaryti hello-2. 671 00:29:02,050 --> 00:29:04,620 Leiskite man paleisti jį dar kartą. hello-2 Dovydas. 672 00:29:04,620 --> 00:29:07,290 Taigi, atrodo, kad dirbti lygiai taip pat. 673 00:29:07,290 --> 00:29:11,180 Bet jei aš einu atgal į Comment ir iš naujo paleisti tą pačią komandą mano naujai 674 00:29:11,180 --> 00:29:14,720 parengta programa, spausdinimo mano vardu, kaip ir anksčiau - 675 00:29:14,720 --> 00:29:15,370 nice. 676 00:29:15,370 --> 00:29:16,760 Heap santrauka - 677 00:29:16,760 --> 00:29:17,740 naudojimo at Exit - 678 00:29:17,740 --> 00:29:19,370 nulis baitų nulinės blokų. 679 00:29:19,370 --> 00:29:21,840 Ir tai yra super gražus, visi krūvos blokai buvo išlaisvinti. 680 00:29:21,840 --> 00:29:23,480 Nėra nuotėkis. 681 00:29:23,480 --> 00:29:27,200 >> Taigi artėja, o ne problemą, 4, bet problemą, 5 dalimi, ekspertizės 682 00:29:27,200 --> 00:29:30,740 ir toliau, tai taip pat taps priemonė savo teisingumą 683 00:29:30,740 --> 00:29:33,630 programa, ar turite ar neturite Atminties nutekėjimas. 684 00:29:33,630 --> 00:29:36,900 Bet, laimei, ne tik jūs galite pagrįsti per juos intuityviai, kuris 685 00:29:36,900 --> 00:29:40,430 yra, be abejo, lengva mažas programas bet sunkiau didesnių programų atveju 686 00:29:40,430 --> 00:29:43,860 Comment, tiems didesnių programų atveju gali padėti jums nustatyti 687 00:29:43,860 --> 00:29:45,360 pirma problema. 688 00:29:45,360 --> 00:29:47,500 >> Tačiau yra dar viena problema kad gali kilti. 689 00:29:47,500 --> 00:29:51,245 Leiskite man atverti šį failą čia, o tai, vėl šiek tiek paprastas pavyzdys. 690 00:29:51,245 --> 00:29:53,760 Bet tegul sutelkti dėmesį į ką ši programa veikia. 691 00:29:53,760 --> 00:29:55,190 Tai vadinama memory.c. 692 00:29:55,190 --> 00:29:58,380 Mes rašyti tai vėliau šiandien pašto šiandienos kodą. 693 00:29:58,380 --> 00:30:01,610 Ir pastebėsite, kad turiu funkcija vadinama f, kad nesiima jokių argumentų ir 694 00:30:01,610 --> 00:30:02,800 grįžta nieko. 695 00:30:02,800 --> 00:30:07,240 Atsižvelgiant į 20, aš, matyt, skelbiantis rodyklė int ir pavadino jį x. 696 00:30:07,240 --> 00:30:09,570 Aš priskiriant yra grąža vertė malloc. 697 00:30:09,570 --> 00:30:14,590 Ir tiesiog, kad būtų aišku, kiek baitų am Aš tikriausiai gauti atgal iš malloc 698 00:30:14,590 --> 00:30:17,080 šioje situacijoje? 699 00:30:17,080 --> 00:30:18,040 >> Tikriausiai 40. 700 00:30:18,040 --> 00:30:18,840 Kur jūs gaunate, kad nuo? 701 00:30:18,840 --> 00:30:22,410 Na, jei prisiminti, kad int dažnai 4 baitai, bent jau ji yra 702 00:30:22,410 --> 00:30:25,110 prietaisas, 10 kartų 4 akivaizdžiai 40. 703 00:30:25,110 --> 00:30:28,920 Taigi malloc yra grįžimas adresą atminties riekė ir saugoti, kad 704 00:30:28,920 --> 00:30:30,800 spręsti galiausiai x. 705 00:30:30,800 --> 00:30:32,570 Taigi turi būti aišku, ką tada vyksta? 706 00:30:32,570 --> 00:30:34,990 Na, leiskite man pereiti atgal mūsų nuotrauką čia. 707 00:30:34,990 --> 00:30:38,150 Leiskite man ne tik atkreipti mano apačioje kompiuterio atminties, leiskite man eiti į priekį ir 708 00:30:38,150 --> 00:30:42,990 parengti visą stačiakampį tai visi mano RAM. 709 00:30:42,990 --> 00:30:44,790 >> Mes sakome, kad kamino yra ant dugno. 710 00:30:44,790 --> 00:30:47,010 Ir ten teksto segmentas kad niezainicjowanego duomenys. 711 00:30:47,010 --> 00:30:49,880 Bet aš tik ketina abstraktus tiems kitų dalykų toli kaip taškas, taškas taškas. 712 00:30:49,880 --> 00:30:53,470 Aš tik ketina kreiptis į šį kaip viršuje krūvą. 713 00:30:53,470 --> 00:30:57,070 Ir tada šią nuotrauką apačioje atstovauti pagrindinis, aš ruošiuosi 714 00:30:57,070 --> 00:30:59,880 suteikti jai skiltelės atmintį ant kamino. 715 00:30:59,880 --> 00:31:03,150 Dėl f, aš suteikti jai gabaliuką atminties į steką. 716 00:31:03,150 --> 00:31:05,140 Dabar, aš konsultuotis MY kodą dar kartą. 717 00:31:05,140 --> 00:31:07,170 Kas yra vietos kintamieji pagrindinis? 718 00:31:07,170 --> 00:31:10,710 Matyt nieko, kad gabalas yra efektyviai tuščias arba net kaip didelis 719 00:31:10,710 --> 00:31:11,600 kaip aš jį parengti. 720 00:31:11,600 --> 00:31:15,730 Bet f, turiu vietos kintamąjį, kuris yra vadinamas x. 721 00:31:15,730 --> 00:31:20,410 Taigi, aš ruošiuosi eiti į priekį ir suteikti f atminties riekė, vadindami jį x. 722 00:31:20,410 --> 00:31:24,680 >> Ir dabar malloc 10 kartų 4 Taigi malloc 40, Kur, kad 723 00:31:24,680 --> 00:31:25,430 atminties ateina? 724 00:31:25,430 --> 00:31:27,530 Mes neišdarinėtos paveikslėlį kaip anksčiau. 725 00:31:27,530 --> 00:31:31,140 Bet tarkime, kad jis efektyviai tiekiamos iš čia, todėl vienas, 726 00:31:31,140 --> 00:31:33,170 du, trys, keturi, penki. 727 00:31:33,170 --> 00:31:34,680 Ir dabar man reikia 40 iš jų. 728 00:31:34,680 --> 00:31:37,540 Taigi, aš tiesiog padaryti dot, dot, dot pasiūlyti kad ten net daugiau atminties 729 00:31:37,540 --> 00:31:39,350 grįžta iš krūvos. 730 00:31:39,350 --> 00:31:40,710 Dabar kas adresas? 731 00:31:40,710 --> 00:31:42,620 Leiskite pasirinkti mūsų savavališkai spręsti kaip visada - 732 00:31:42,620 --> 00:31:46,310 Ox123, nors tai tikriausiai vyksta būti kažkas visiškai kitoks. 733 00:31:46,310 --> 00:31:50,420 Štai pirmojo baito adresas atminties, kad aš prašau malloc už. 734 00:31:50,420 --> 00:31:53,630 >> Taigi, trumpai tariant, vieną kartą 20 eilutėje vykdo, kas yra tiesiog 735 00:31:53,630 --> 00:31:57,170 saugomi viduje x čia? 736 00:31:57,170 --> 00:31:58,730 Ox123. 737 00:31:58,730 --> 00:32:00,370 Ox123. 738 00:32:00,370 --> 00:32:01,550 Ir Jautis neįdomu. 739 00:32:01,550 --> 00:32:03,200 Tai tiesiog reiškia čia šešioliktainis skaičius. 740 00:32:03,200 --> 00:32:06,490 Bet kas svarbiausia yra tai, ką aš parduotuvėje in x, kuris yra vietos kintamąjį. 741 00:32:06,490 --> 00:32:10,260 Bet jo duomenų tipas, vėlgi, yra iš int adresą. 742 00:32:10,260 --> 00:32:12,710 Na, aš ruošiuosi laikyti Ox123. 743 00:32:12,710 --> 00:32:16,610 Bet vėl, jei tai šiek tiek per daug sudėtinga be reikalo, jei aš slinkti 744 00:32:16,610 --> 00:32:21,490 atgal, mes galime abstraktus tai toli gana pagrįstai ir tiesiog pasakyti, kad x yra 745 00:32:21,490 --> 00:32:23,910 rodyklė į tą atminties riekė. 746 00:32:23,910 --> 00:32:24,070 >> Gerai. 747 00:32:24,070 --> 00:32:26,230 Dabar po ranka klausimas yra taip - 748 00:32:26,230 --> 00:32:29,910 linija 21, it turns out, yra klaidų. 749 00:32:29,910 --> 00:32:31,160 Kodėl? 750 00:32:31,160 --> 00:32:34,890 751 00:32:34,890 --> 00:32:36,930 >> Atsiprašome? 752 00:32:36,930 --> 00:32:38,640 Ji neturi - 753 00:32:38,640 --> 00:32:40,390 pasakyti, kad dar kartą. 754 00:32:40,390 --> 00:32:41,240 Na, ji nėra nemokama. 755 00:32:41,240 --> 00:32:42,350 Štai antra bet. 756 00:32:42,350 --> 00:32:45,000 Taigi vienas kitą, bet konkrečiai at line 21. 757 00:32:45,000 --> 00:32:49,480 758 00:32:49,480 --> 00:32:50,040 >> Būtent. 759 00:32:50,040 --> 00:32:54,980 Šis paprastas eilutėje kodas yra tik buferio, buferio. 760 00:32:54,980 --> 00:32:57,050 Buferis tiesiog reiškia atminties riekė. 761 00:32:57,050 --> 00:33:01,520 Bet atminties riekė yra dydžio 10, 10 sveikieji skaičiai, tai reiškia, jei mes 762 00:33:01,520 --> 00:33:05,350 rodyklė į jį naudojant sintaksės cukraus Masyvo žymėjimą, kvadratas 763 00:33:05,350 --> 00:33:09,220 skliausteliuose, jūs turite prieigą prie x laikiklis 0 x laikiklis 1 x 764 00:33:09,220 --> 00:33:10,390 laikiklis taškas, taškas, taškas. 765 00:33:10,390 --> 00:33:13,270 x laikiklis 9 yra didžiausias. 766 00:33:13,270 --> 00:33:17,680 Taigi, jei aš x laikiklis 10, kur Aš iš tiesų vyksta atminties? 767 00:33:17,680 --> 00:33:19,120 >> Na, jei aš turiu 10 int - 768 00:33:19,120 --> 00:33:21,070 tegul faktiškai visus patrauksiu Šių čia. 769 00:33:21,070 --> 00:33:22,700 Taigi, tai buvo pirmas penki. 770 00:33:22,700 --> 00:33:24,660 Štai Kitos penkios ints. 771 00:33:24,660 --> 00:33:29,580 Taigi x laikiklis 0 yra čia. x laikiklis 1 čia. x laikiklis 9 yra čia. x laikiklis 772 00:33:29,580 --> 00:33:37,960 10 yra čia, o tai reiškia, aš sakau, atitinka 21, kompiuteris įdėti 773 00:33:37,960 --> 00:33:39,400 skaičius, kur? 774 00:33:39,400 --> 00:33:42,010 Skaičius 0, kur? 775 00:33:42,010 --> 00:33:43,380 Na, tai 0, taip. 776 00:33:43,380 --> 00:33:45,460 Bet tik tai, kad jo 0 rūšies sutapimas. 777 00:33:45,460 --> 00:33:47,140 Tai gali būti skaičius 50, visiems mums rūpi. 778 00:33:47,140 --> 00:33:50,480 Bet mes stengiamės įdėti jį x laikiklis 10, kur yra šis 779 00:33:50,480 --> 00:33:53,700 klaustukas išdarinėtos, kuris nėra geras dalykas. 780 00:33:53,700 --> 00:33:57,070 Ši programa gali labai gerai katastrofos, kaip rezultatas. 781 00:33:57,070 --> 00:33:59,400 >> Dabar galime eiti į priekį ir pamatyti, jei tai yra, tiesą sakant, kas atsitiks. 782 00:33:59,400 --> 00:34:02,600 Padaryti atmintį, kadangi byla vadinamas memory.c. 783 00:34:02,600 --> 00:34:05,950 Eikime į priekį ir paleisti programos atminties. 784 00:34:05,950 --> 00:34:08,239 Taigi, mes pasisekė, iš tikrųjų, atrodo. 785 00:34:08,239 --> 00:34:09,340 Mes pasisekė. 786 00:34:09,340 --> 00:34:11,060 Bet pažiūrėkime, jei mes dabar paleisti Valgrind. 787 00:34:11,060 --> 00:34:14,170 Iš pirmo žvilgsnio, mano programa galėtų atrodo puikiai teisinga. 788 00:34:14,170 --> 00:34:18,010 Bet leiskite man paleisti Comment su - Nuotėkio tikrinimas lygus pilnas atminties. 789 00:34:18,010 --> 00:34:20,110 >> Ir dabar, kai aš paleisti šį - 790 00:34:20,110 --> 00:34:21,030 įdomu. 791 00:34:21,030 --> 00:34:26,800 Neteisingas rašyti dydžio 4 d iš memory.c 21 eilutę. 792 00:34:26,800 --> 00:34:29,284 Iš memory.c 21 eilutė, kuris iš jų? 793 00:34:29,284 --> 00:34:30,340 O, įdomu. 794 00:34:30,340 --> 00:34:31,080 Bet palaukit. 795 00:34:31,080 --> 00:34:32,389 Dydis 4, kas tai omenyje? 796 00:34:32,389 --> 00:34:34,969 Aš tik padarė vieną rašyti, bet tai dydžio 4. 797 00:34:34,969 --> 00:34:36,889 Kodėl tai 4? 798 00:34:36,889 --> 00:34:39,280 Tai, nes jis int, kuris irgi yra keturi baitai. 799 00:34:39,280 --> 00:34:42,510 Taigi Comment Radau klaidą, kad aš, žvelgdamas į mano kodas, to nepadarė. 800 00:34:42,510 --> 00:34:45,040 O gal jūsų TF būtų ar nebūtų. 801 00:34:45,040 --> 00:34:48,469 Kas Tačiau Comment tikrai nustatyta, kad mes padarė klaidą ten, net 802 00:34:48,469 --> 00:34:52,719 nors mes pasisekė ir kompiuteris nusprendė, eh, aš nesiruošia į avariją 803 00:34:52,719 --> 00:34:57,470 tik todėl, kad palietė vieną baitą, vienas Int verta atminties, kad tu ne 804 00:34:57,470 --> 00:34:58,550 iš tikrųjų patys. 805 00:34:58,550 --> 00:35:00,380 >> Na, ką dar Buggy čia. 806 00:35:00,380 --> 00:35:01,180 Adresas - 807 00:35:01,180 --> 00:35:03,190 tai kvailai ieško adresas šešioliktainis. 808 00:35:03,190 --> 00:35:06,890 Tai tiesiog reiškia, kažkur krūvos yra nulis baitų po 40 dydžio bloko 809 00:35:06,890 --> 00:35:07,620 skiriama. 810 00:35:07,620 --> 00:35:10,610 Leiskite nutolinti čia ir pamatyti, jei tai yra šiek tiek daugiau naudinga. 811 00:35:10,610 --> 00:35:11,410 Įdomu. 812 00:35:11,410 --> 00:35:15,600 40 baitai tikrai neteko nuostolių įrašo 1 iš 1. 813 00:35:15,600 --> 00:35:17,840 Vėlgi, daugiau žodžių, nei yra naudinga čia. 814 00:35:17,840 --> 00:35:21,350 Tačiau remiantis paryškinti linijas, kur turėčiau tikriausiai sutelkti savo 815 00:35:21,350 --> 00:35:24,070 dėmesys kitam klaidą? 816 00:35:24,070 --> 00:35:26,570 Atrodo, 20 eilutėje iš memory.c. 817 00:35:26,570 --> 00:35:30,990 >> Taigi, jei mes einame atgal į 20 eilutėje, tai vienas, kad jums nustatyta anksčiau. 818 00:35:30,990 --> 00:35:33,030 Ir tai nebūtinai Buggy. 819 00:35:33,030 --> 00:35:35,160 Bet mes tai pasikeitė jos poveikį. 820 00:35:35,160 --> 00:35:38,790 Taigi, kaip man ištaisyti bent vienas iš tų klaidų? 821 00:35:38,790 --> 00:35:42,240 Ką galėčiau daryti, kai atitinka 21? 822 00:35:42,240 --> 00:35:47,110 Galėčiau padaryti be x, todėl yra duoti atgal, kad atmintį. 823 00:35:47,110 --> 00:35:49,230 Ir kaip aš galiu išspręsti šią klaidą? 824 00:35:49,230 --> 00:35:52,120 Aš tikrai turėtų eiti ne toliau kaip 0. 825 00:35:52,120 --> 00:35:53,670 Taigi leiskite man pabandyti ir iš naujo paleisti. 826 00:35:53,670 --> 00:35:56,080 Atsiprašome, tikrai eiti ne toliau kaip 9. 827 00:35:56,080 --> 00:35:57,510 Padaryti atmintį. 828 00:35:57,510 --> 00:36:00,650 Leiskite pakartotas Comment daugiau lange. 829 00:36:00,650 --> 00:36:01,580 Ir dabar atrodo. 830 00:36:01,580 --> 00:36:02,250 Nice. 831 00:36:02,250 --> 00:36:03,270 Visi krūvos blokai buvo išlaisvinti. 832 00:36:03,270 --> 00:36:04,270 Nėra nuotėkis. 833 00:36:04,270 --> 00:36:07,520 Ir virš čia nėra paminėti bet koks neteisingas teisę daugiau. 834 00:36:07,520 --> 00:36:09,820 >> Tiesiog gauti gobšus, ir tegul pamatyti, jei vienas pavyzdys 835 00:36:09,820 --> 00:36:11,050 neviršijama pagal paskirtį - 836 00:36:11,050 --> 00:36:12,560 Aš gauti pasisekė prieš akimirką. 837 00:36:12,560 --> 00:36:15,530 Ir tai, kad tai 0 yra galbūt be reikalo klaidinantis. 838 00:36:15,530 --> 00:36:20,650 Tegul tik tai 50, šiek tiek savavališkas skaičius, kad atminties dot velniop atmintį - 839 00:36:20,650 --> 00:36:21,410 vis dar galite gauti pasisekė. 840 00:36:21,410 --> 00:36:22,510 Nieko kritimo. 841 00:36:22,510 --> 00:36:26,150 Tarkime, aš tiesiog padaryti kažką tikrai kvaila, ir aš 100. 842 00:36:26,150 --> 00:36:30,360 Leiskite man perdaryti atminties, taškas velniop atmintis - 843 00:36:30,360 --> 00:36:31,075 pasisekė dar kartą. 844 00:36:31,075 --> 00:36:32,800 Kaip apie 1000? 845 00:36:32,800 --> 00:36:35,370 ints už jos ribų, maždaug, kur aš turėtų būti? 846 00:36:35,370 --> 00:36:37,410 Padaryti atmintį - 847 00:36:37,410 --> 00:36:38,570 damn it. 848 00:36:38,570 --> 00:36:39,920 >> [Juokas] 849 00:36:39,920 --> 00:36:41,270 >> Gerai. 850 00:36:41,270 --> 00:36:43,920 Tegul ne pažaisti nebėra. 851 00:36:43,920 --> 00:36:45,120 Pakartotinas atmintį. 852 00:36:45,120 --> 00:36:45,840 Čia mes eiti. 853 00:36:45,840 --> 00:36:46,410 Gerai. 854 00:36:46,410 --> 00:36:52,500 Taigi, matyt, jūs indekso 100000 Ints nei kur turėjo būti 855 00:36:52,500 --> 00:36:54,410 atmintis, blogų dalykų atsitikti. 856 00:36:54,410 --> 00:36:56,430 Taigi tai, žinoma, nėra sunku, greitai taisyklė. 857 00:36:56,430 --> 00:36:58,190 Buvau rūšies naudojant bandymus ir klaidų ten patekti. 858 00:36:58,190 --> 00:37:02,230 Bet taip yra todėl, ilga istorija trumpa, jūsų kompiuterio atminties taip pat skirstomi 859 00:37:02,230 --> 00:37:03,580 į šiuos dalykus vadinama segmentų. 860 00:37:03,580 --> 00:37:07,260 Ir kartais, kompiuteris faktiškai davė jums šiek tiek daugiau atminties 861 00:37:07,260 --> 00:37:08,400 kaip jūs paprašykite. 862 00:37:08,400 --> 00:37:12,170 Tačiau veiksmingumo, tai tik lengviau gauti daugiau atminties, bet tik pasakyti, 863 00:37:12,170 --> 00:37:13,780 kad jūs gaunate jo dalį. 864 00:37:13,780 --> 00:37:16,370 >> Ir jei jūs gauti pasisekė kartais, Todėl, jums gali būti suteikta galimybė prisiliesti 865 00:37:16,370 --> 00:37:17,795 atminties, kuri nepriklauso jums. 866 00:37:17,795 --> 00:37:21,860 Jūs neturite garantijos, kad tai, kas vertė jūs įdėti ten liks ten, nes 867 00:37:21,860 --> 00:37:25,080 kompiuteris vis dar mano, kad tai ne tavo, bet tai nebūtinai vyksta 868 00:37:25,080 --> 00:37:29,910 , kad pasiektų kitą atminties segmentą kompiuteris ir sukelti klaidą, pavyzdžiui, 869 00:37:29,910 --> 00:37:31,710 tai vienas čia. 870 00:37:31,710 --> 00:37:32,060 Gerai. 871 00:37:32,060 --> 00:37:37,240 Turite klausimų tada atmintis? 872 00:37:37,240 --> 00:37:37,590 >> Gerai. 873 00:37:37,590 --> 00:37:40,610 Leiskite pažvelgti čia, tada, bent ką mes jau vartojate 874 00:37:40,610 --> 00:37:48,361 suteikta gana ilgą laiką, kuris yra šio failo pavadinimą cs50.h. 875 00:37:48,361 --> 00:37:49,420 Taigi tai yra byla. 876 00:37:49,420 --> 00:37:51,130 Tai yra tiesiog visa krūva KOMENTARŲ iki viršaus. 877 00:37:51,130 --> 00:37:53,900 Ir tu gali pažvelgė į tai, jei jūs baksnodavo aplink prietaisą. 878 00:37:53,900 --> 00:37:57,000 Tačiau paaiškėja, kad visą laiką, kai mes jį naudoti eilutę kaip 879 00:37:57,000 --> 00:38:01,130 sinonimas, priemonės, kuriomis mes paskelbėme kad sinonimas buvo su tai 880 00:38:01,130 --> 00:38:03,990 raktažodis Typedef, tipo apibrėžimą. 881 00:38:03,990 --> 00:38:07,500 Ir mes iš esmės sakydamas, kad string už char žvaigždė sinonimas. 882 00:38:07,500 --> 00:38:11,190 Tai priemonės, kuriomis kamino sukūrė šias mokymo ratus žinomas kaip 883 00:38:11,190 --> 00:38:12,040 eilutę. 884 00:38:12,040 --> 00:38:14,830 >> Dabar čia tik prototipas už getchar. 885 00:38:14,830 --> 00:38:17,350 Mes galime mačiau jį anksčiau, bet tai Iš tiesų, ką ji daro. getchar 886 00:38:17,350 --> 00:38:19,070 nesiima jokių argumentų, gražina Char. 887 00:38:19,070 --> 00:38:21,340 getdouble nesiima jokių argumentų, grąžina dvigubai. 888 00:38:21,340 --> 00:38:24,440 getfloat trunka jokių argumentų, grąžą plūdė, ir kt. 889 00:38:24,440 --> 00:38:27,270 getint yra čia. getlonglong yra čia. 890 00:38:27,270 --> 00:38:28,820 Ir getstring yra čia. 891 00:38:28,820 --> 00:38:29,420 Štai ir viskas. 892 00:38:29,420 --> 00:38:33,080 Ši raudonos linijos yra dar Preprocessor direktyva dėl 893 00:38:33,080 --> 00:38:35,550 hashtag ne jo pradžioje. 894 00:38:35,550 --> 00:38:35,870 >> Gerai. 895 00:38:35,870 --> 00:38:38,380 Taigi dabar leiskite man eiti į cs50.c. 896 00:38:38,380 --> 00:38:40,400 Ir mes kalbame ne per ilgai apie tai. 897 00:38:40,400 --> 00:38:43,280 Bet duoti jums tai, kas žvilgsnis jau vyksta visa tai 898 00:38:43,280 --> 00:38:46,434 laikas, leiskite man eiti - 899 00:38:46,434 --> 00:38:48,250 darykime getchar. 900 00:38:48,250 --> 00:38:51,050 Taigi getchar dažniausiai komentarai. 901 00:38:51,050 --> 00:38:52,060 Bet atrodo, kad tai. 902 00:38:52,060 --> 00:38:54,800 Taigi tai yra tikroji funkcija getchar, kad mes jau 903 00:38:54,800 --> 00:38:56,055 Pripažindami egzistuoja. 904 00:38:56,055 --> 00:38:59,370 Ir nors mes ne naudoti šį vieną kad dažnai, jei kada nors, tai bent 905 00:38:59,370 --> 00:39:00,470 gana paprasta. 906 00:39:00,470 --> 00:39:02,580 Taigi, tai verta Žvilgsnis čia. 907 00:39:02,580 --> 00:39:06,540 >> Taigi getchar turi begalinį ciklą, sąmoningai taip akivaizdžiai. 908 00:39:06,540 --> 00:39:10,050 Tada jis prašo - ir tai yra rūšies gražus pakartotinis kodo mes patys parašė. 909 00:39:10,050 --> 00:39:11,220 Ji ragina getstring. 910 00:39:11,220 --> 00:39:12,460 Nes tai, ką daro reiškia gauti char? 911 00:39:12,460 --> 00:39:14,730 Na, galite taip pat pabandyti gauti visa teksto eilutė iš vartotojo ir 912 00:39:14,730 --> 00:39:16,940 tada tiesiog pažvelgti į vieną Šių simbolių. 913 00:39:16,940 --> 00:39:19,170 Atsižvelgiant į 60, čia yra šiek tiek tiek normalumas patikrinti. 914 00:39:19,170 --> 00:39:21,610 Jei getstring grįžo NULL, tegul ne tęsti. 915 00:39:21,610 --> 00:39:22,820 Kažkas nutiko. 916 00:39:22,820 --> 00:39:28,120 >> Dabar tai šiek tiek erzina, bet Įprastinių in C. char max tikriausiai 917 00:39:28,120 --> 00:39:29,960 parodo, ką tik remiantis jo pavadinimo? 918 00:39:29,960 --> 00:39:31,670 Tai pastovus. 919 00:39:31,670 --> 00:39:36,040 Tai kaip skaitinė vertė Didžiausias char galite reprezentuojate 920 00:39:36,040 --> 00:39:40,370 viena Užkandote, kuris yra tikriausiai skaičius 255, kuris yra didžiausias skaičius, kurį 921 00:39:40,370 --> 00:39:42,720 sudaro aštuonis bitus, pradedant nuo nulio. 922 00:39:42,720 --> 00:39:47,460 Taigi, aš naudoti šią, šią funkciją, kai rašau šį kodą tik todėl, kad 923 00:39:47,460 --> 00:39:51,753 jei kas nors negerai, bet getchar jo gyvenimo tikslas yra grįžti 924 00:39:51,753 --> 00:39:54,830 char, jums reikia kažkaip sugebėti parodyti vartotojui, kad 925 00:39:54,830 --> 00:39:55,840 kažkas negerai. 926 00:39:55,840 --> 00:39:56,970 Mes negalime grįžti null. 927 00:39:56,970 --> 00:39:58,480 Pasirodo, kad niekinis yra žymeklis. 928 00:39:58,480 --> 00:40:01,030 Ir vėl getchar turi grįžti Char. 929 00:40:01,030 --> 00:40:04,760 >> Taigi konvencija, jei kas nors negerai, tai jūs, programuotojas, arba 930 00:40:04,760 --> 00:40:08,160 šiuo atveju, man su biblioteka, turėjau tiesiog nuspręsti savavališkai, jei 931 00:40:08,160 --> 00:40:12,230 kažkas negerai, aš ruošiuosi grįžti skaičių 255, kuris yra tikrai 932 00:40:12,230 --> 00:40:17,240 reiškia, kad mes negalime, vartotojas negali įvesti simbolis atstovauja 933 00:40:17,240 --> 00:40:21,410 skaičius 255, nes mes turėjome pavogti kaip vadinamųjų sarginio vertę 934 00:40:21,410 --> 00:40:23,410 yra problema. 935 00:40:23,410 --> 00:40:27,010 Dabar paaiškėja, kad personažas 255 nėra kažkas, galite įvesti į 936 00:40:27,010 --> 00:40:28,380 klaviatūra, todėl ne big deal. 937 00:40:28,380 --> 00:40:30,910 Vartotojas neturi pastebėti, kad Aš pavogtas šį simbolį. 938 00:40:30,910 --> 00:40:34,620 Bet jei jūs kada nors pamatyti žmoguje puslapių kompiuterinė sistema kai nuoroda į 939 00:40:34,620 --> 00:40:38,560 visi pastovus, kaip tai kepurės, kad sako, tais atvejais, kai klaidos ši konstanta gali 940 00:40:38,560 --> 00:40:42,720 būti grąžinami, kad viskas kai žmogaus padarė metų buvo savavališkai nusprendė 941 00:40:42,720 --> 00:40:45,680 grąžinti šį ypatingą vertę ir tai vadinu atveju nuolatinis 942 00:40:45,680 --> 00:40:46,840 kažkas negerai. 943 00:40:46,840 --> 00:40:48,580 >> Dabar magija atsitiks čia. 944 00:40:48,580 --> 00:40:52,600 Pirma, aš skelbiantis atitinka 67 du simboliai, C1 ir C2. 945 00:40:52,600 --> 00:40:57,080 Ir tada atitinka 68, ten tikrai kodo eilutę tai primena 946 00:40:57,080 --> 00:41:01,140 mūsų draugas printf turint omenyje, kad tikrai turi procentų Cs kabučių. 947 00:41:01,140 --> 00:41:06,490 Tačiau pastebėti, kas vyksta čia. sscanf reiškia eilutės skenavimas - 948 00:41:06,490 --> 00:41:11,690 reiškia nuskaityti suformatuotas eilutę, vadinasi sscanf. 949 00:41:11,690 --> 00:41:12,590 Ką tai reiškia? 950 00:41:12,590 --> 00:41:16,310 Tai reiškia, kad pereiti į sscanf eilutę. 951 00:41:16,310 --> 00:41:18,420 Ir linija yra kas vartotojas įveda in 952 00:41:18,420 --> 00:41:23,520 Jūs pereiti į sscanf formatas eilutę kaip tai, kad pasakoja scanf kas yra 953 00:41:23,520 --> 00:41:25,870 Jūs tikisi vartotojas įvedėte in 954 00:41:25,870 --> 00:41:29,730 Tada praeiti-tai yra du adresai gabaliukus atminties, šiuo atveju, 955 00:41:29,730 --> 00:41:31,150 nes turiu du vietos rezervavimo ženklus. 956 00:41:31,150 --> 00:41:34,610 Taigi, aš norėčiau duoti jai adresą C1 ir C2 adresą. 957 00:41:34,610 --> 00:41:37,700 >> Ir prisiminti, kad jūs suteikiate yra funkcija adresas tikrą kintamąjį, kas 958 00:41:37,700 --> 00:41:38,950 potekstė? 959 00:41:38,950 --> 00:41:41,400 960 00:41:41,400 --> 00:41:45,050 Kas tai gali padaryti funkcija kaip rezultatas iš suteikdama jai adresą 961 00:41:45,050 --> 00:41:48,170 kintamasis, o ne kintamasis pati? 962 00:41:48,170 --> 00:41:49,450 Tai galite pakeisti jį, tiesa? 963 00:41:49,450 --> 00:41:53,250 Jei jums teko ką nors žemėlapį, kad fizinis adresas, jie gali eiti ten ir daryti 964 00:41:53,250 --> 00:41:54,750 ką jie nori šiuo adresu. 965 00:41:54,750 --> 00:41:55,800 Pati idėja čia. 966 00:41:55,800 --> 00:41:59,950 Jei mes pereiti į sscanf, dviejų adresas gabaliukus atminties, net šių mažų 967 00:41:59,950 --> 00:42:03,585 mažai gabaliukus atminties, C1 ir C2, bet mes pasakyti jai apie juos adresą, 968 00:42:03,585 --> 00:42:05,170 sscanf galite pakeisti jį. 969 00:42:05,170 --> 00:42:08,530 >> Taigi sscanf gyvenimo tikslas, jei mes skaitome vyras puslapis yra perskaityti, ką 970 00:42:08,530 --> 00:42:13,420 vartotojas turi įvesti, tikiuosi, kad vartotojas, turintis įvedėte simbolį, o gal 971 00:42:13,420 --> 00:42:16,470 kitas personažas ir koks vartotojas parašomas pirmas simbolis eina 972 00:42:16,470 --> 00:42:19,310 čia Antroji raidė eina čia. 973 00:42:19,310 --> 00:42:22,470 Dabar, kaip ir žemę, tai ir jums, tik žinau, tai iš dokumentų, 974 00:42:22,470 --> 00:42:25,570 Tai, kad aš įdėti tuščią vietą ten tiesiog reiškia, kad man nerūpi, jei 975 00:42:25,570 --> 00:42:28,440 naudotojas paspaus tarpo kelias kartus, kol jis arba ji mano 976 00:42:28,440 --> 00:42:30,400 pobūdis, aš ignoruoti bet tarpas. 977 00:42:30,400 --> 00:42:32,510 Taigi, kad aš žinau, iš dokumentai. 978 00:42:32,510 --> 00:42:36,570 >> Faktas, kad yra antra% C po tarpais iš tikrųjų 979 00:42:36,570 --> 00:42:37,410 sąmoningas. 980 00:42:37,410 --> 00:42:41,190 Noriu, kad būtų galima nustatyti, ar vartotojo įsukus arba nebendradarbiavo. 981 00:42:41,190 --> 00:42:45,630 Taigi, aš tikiuosi, kad vartotojas tik atspausdinti vienoje pobūdžio, todėl aš tikiuosi, 982 00:42:45,630 --> 00:42:50,640 kad sscanf yra tik ketina grįžti vertė 1, nes vėl, jei aš perskaičiau 983 00:42:50,640 --> 00:42:55,400 dokumentus, sscanf tikslas į gyvenimas yra grįžti į skaičius 984 00:42:55,400 --> 00:42:59,170 kintamieji, kurie buvo užpildyti su naudotojo įvesties. 985 00:42:59,170 --> 00:43:02,270 >> Aš išlaikė dviejų kintamųjų adresai, C1 ir C2. 986 00:43:02,270 --> 00:43:06,420 Aš tikiuosi, nors, kad tik vienas iš jie žūsta, nes jei sscanf 987 00:43:06,420 --> 00:43:11,130 grąžina 2, kas turbūt POVEIKIS logiškai? 988 00:43:11,130 --> 00:43:14,600 Kad vartotojas nebuvo tik duok man vieną simbolis, kaip aš pasakiau jam ar jai. 989 00:43:14,600 --> 00:43:17,860 Jie tikriausiai įvedėte ne mažiausiai du simboliai. 990 00:43:17,860 --> 00:43:22,430 Taigi, jei aš vietoj neturėjo antra % C, aš tiesiog turėjo vieną, kuris 991 00:43:22,430 --> 00:43:25,370 atvirai būtų paprastesnis požiūris, manau, iš pirmo žvilgsnio, 992 00:43:25,370 --> 00:43:30,220 jūs nesiruošia galėtų aptikti jei vartotojas buvo suteikti jums daugiau 993 00:43:30,220 --> 00:43:31,780 įėjimas nei jūs iš tikrųjų norėjo. 994 00:43:31,780 --> 00:43:34,100 Taigi tai yra numanomas forma Klaidų tikrinimo. 995 00:43:34,100 --> 00:43:35,640 >> Tačiau pastebėti tai, ką darau čia. 996 00:43:35,640 --> 00:43:39,970 Kai aš tikiu, kad vartotojo davė man vieną simbolis, aš išlaisvinti liniją, daro 997 00:43:39,970 --> 00:43:44,450 iš getstring atvirkščiai, o tai savo ruožtu naudoja malloc, ir tada aš grįžti 998 00:43:44,450 --> 00:43:51,030 C1 pobūdžio, kad aš tikėjosi vartotojas nepateikė ir tik jei. 999 00:43:51,030 --> 00:43:54,680 Taigi greitai prabėgomis tik, bet bet kokie getchar klausimų? 1000 00:43:54,680 --> 00:43:57,450 1001 00:43:57,450 --> 00:43:59,590 Mes grįžti prie kai kurių kitų. 1002 00:43:59,590 --> 00:44:03,770 >> Na, leiskite man eiti į priekį ir tai padaryti - Tarkime dabar, tiesiog motyvuoti mūsų 1003 00:44:03,770 --> 00:44:08,910 diskusija per savaitę plius laiko, tai yra failas, vadinamas structs.h. 1004 00:44:08,910 --> 00:44:11,440 Ir vėl, tai tik skonio kažką, kad laukia. 1005 00:44:11,440 --> 00:44:13,090 Tačiau atkreipkite dėmesį, kad daug tai yra komentarai. 1006 00:44:13,090 --> 00:44:17,440 Taigi leiskite man pabrėžti tik Įdomu dabar. 1007 00:44:17,440 --> 00:44:18,020 Typedef - 1008 00:44:18,020 --> 00:44:19,700 ten tas pats raktažodis dar kartą. 1009 00:44:19,700 --> 00:44:23,100 Typedef mes naudojame paskelbti eilutę kaip speciali duomenų tipo. 1010 00:44:23,100 --> 00:44:27,490 Galite naudoti Typedef sukurti visiškai naujas duomenų tipai, kurių nebuvo, kai 1011 00:44:27,490 --> 00:44:28,570 C buvo išrastas. 1012 00:44:28,570 --> 00:44:32,520 Pavyzdžiui, int ateina su C. char ateina su C. dukart ateina su C. Tačiau 1013 00:44:32,520 --> 00:44:34,000 nėra jokių studento sąvoka. 1014 00:44:34,000 --> 00:44:37,230 Ir dar būtų labai naudinga turėti galima parašyti programą, kuri saugo 1015 00:44:37,230 --> 00:44:40,440 į kintamąjį, studento ID numerį, savo vardą, pavardę ir savo namuose. 1016 00:44:40,440 --> 00:44:42,890 Kitaip tariant, trijų dalių duomenis, kaip int ir 1017 00:44:42,890 --> 00:44:44,420 styginių ir kitą eilutę. 1018 00:44:44,420 --> 00:44:48,220 >> Su Typedef, kas gana galingas apie tai ir raktažodžių sturct už 1019 00:44:48,220 --> 00:44:53,660 struktūra, tu, 2013 m programuotojas, iš tikrųjų galite nustatyti savo 1020 00:44:53,660 --> 00:44:57,530 duomenų tipai, kurių nebuvo metų prieš bet tiktų jūsų tikslams. 1021 00:44:57,530 --> 00:45:01,910 Ir taip čia, per 13 iš 19 eilučių, mes skelbiantis naują duomenų tipą, pavyzdžiui, 1022 00:45:01,910 --> 00:45:04,320 int, bet vadiname tai studentas. 1023 00:45:04,320 --> 00:45:09,310 Ir viduje šio kintamojo ketina Trys dalykai - int, string, 1024 00:45:09,310 --> 00:45:09,930 ir eilutę. 1025 00:45:09,930 --> 00:45:13,040 Taigi, jūs galite galvoti apie tai, kas tikrai čia nutiko, nors tai 1026 00:45:13,040 --> 00:45:17,160 tiek paprastėja, šiandien, studentas yra iš esmės vyksta 1027 00:45:17,160 --> 00:45:19,450 atrodyti tai. 1028 00:45:19,450 --> 00:45:22,580 Jos bus riekė atminties su ID, pavadinimas 1029 00:45:22,580 --> 00:45:25,580 lauko ir namo laukas. 1030 00:45:25,580 --> 00:45:30,670 Ir mes galėsime naudoti tuos gabaliukus atminties ir pasiekite juos taip. 1031 00:45:30,670 --> 00:45:38,870 >> Jei aš einu į struct0.c, čia yra gana ilgai, bet po 1032 00:45:38,870 --> 00:45:42,630 modelis, kodo, kad naudoja šią naują triuką. 1033 00:45:42,630 --> 00:45:45,790 Taigi, pirma, leiskite man atkreipti jūsų dėmesį į įdomiausių dalių iki viršaus. 1034 00:45:45,790 --> 00:45:49,670 Sharp apibrėžia studentams 3 deklaruoja, nuolat vadinami studentai ir įgaliotiniai 1035 00:45:49,670 --> 00:45:53,450 tai savavališkai skaičius 3, tiesiog taip, aš turiu tris studentus, naudojant 1036 00:45:53,450 --> 00:45:54,830 tai dabar programa. 1037 00:45:54,830 --> 00:45:55,960 Čia ateina Maino. 1038 00:45:55,960 --> 00:45:58,860 Ir pastebėkite, kaip man deklaruoti Studentų masyvas? 1039 00:45:58,860 --> 00:46:00,480 Na, aš tiesiog naudokite tokią pačią sintaksę. 1040 00:46:00,480 --> 00:46:02,110 Žodis studentas yra akivaizdžiai nauji. 1041 00:46:02,110 --> 00:46:04,790 Tačiau studentų, klasės, laikiklis studentams. 1042 00:46:04,790 --> 00:46:06,720 >> Taigi, deja, yra daug pakartotinio naudojimo terminų čia. 1043 00:46:06,720 --> 00:46:07,660 Tai tik skaičius. 1044 00:46:07,660 --> 00:46:09,040 Taigi tai tarsi sakydamas tris. 1045 00:46:09,040 --> 00:46:11,430 Klasė yra tai, ką noriu skambinti kintamąjį. 1046 00:46:11,430 --> 00:46:12,840 Galėčiau jį vadiname studentams. 1047 00:46:12,840 --> 00:46:15,880 Bet klasės, tai nėra į klasę Objektinis Java rūšies būdas. 1048 00:46:15,880 --> 00:46:17,220 Tai tik mokinių klasė. 1049 00:46:17,220 --> 00:46:20,590 Ir duomenų tipas kiekvieno elemento masyvo, yra studentas. 1050 00:46:20,590 --> 00:46:23,040 Taigi tai yra šiek tiek kitoks ir nuo sakydamas kažką 1051 00:46:23,040 --> 00:46:25,250 kaip šis, tai tik - 1052 00:46:25,250 --> 00:46:29,500 Aš sakau man tris studentus ir skambinti, kad masyvo klasę. 1053 00:46:29,500 --> 00:46:29,800 >> Gerai. 1054 00:46:29,800 --> 00:46:30,680 Dabar čia yra keturi linijos. 1055 00:46:30,680 --> 00:46:33,480 Šis vaikinas žino - Iterate nuo nulio iki trijų. 1056 00:46:33,480 --> 00:46:35,160 Ir štai naujasis kūrinys sintaksė. 1057 00:46:35,160 --> 00:46:37,710 Programa vyksta greitai man, žmonių, suteikti jam studento 1058 00:46:37,710 --> 00:46:39,200 ID numeris, kuris yra int. 1059 00:46:39,200 --> 00:46:44,650 Ir štai sintaksė, su kuria jūs galite laikyti kažką ID srityje ne 1060 00:46:44,650 --> 00:46:48,630 vieta klasė laikiklis I. Taigi šį sintaksė nėra nauja. 1061 00:46:48,630 --> 00:46:51,450 Tai tiesiog reiškia, kad man aštunta studentas klasėje. 1062 00:46:51,450 --> 00:46:52,940 Tačiau šis simbolis yra nauja. 1063 00:46:52,940 --> 00:46:56,320 Iki šiol, mes negali naudojamas taškas, bent jau kodas, kaip šis. 1064 00:46:56,320 --> 00:47:01,490 Tai reiškia eiti į struct žinomas kaip studentas ir įdėti kažką ten. 1065 00:47:01,490 --> 00:47:05,670 Be to, šioje kitą eilutę, 31, eiti į priekį ir įdėti ką vartotojas įveda 1066 00:47:05,670 --> 00:47:10,530 , pavadinimas čia ir ką jie daro namas, tas pats, eiti į priekį ir 1067 00:47:10,530 --> 00:47:13,230 įdėti ją. namuose. 1068 00:47:13,230 --> 00:47:15,955 >> Taigi, ką ši programa galiausiai daryti? 1069 00:47:15,955 --> 00:47:17,220 Jūs galite pamatyti tiek erzina ten. 1070 00:47:17,220 --> 00:47:24,780 Leiskite man eiti į priekį ir padarysiu structs 0 taškas velniop konstrukto 0, studento ID 1, 1071 00:47:24,780 --> 00:47:28,250 sako David Mather, studentas ID 2. 1072 00:47:28,250 --> 00:47:32,070 Robas Kirkland, studento pažymėjimas 3. 1073 00:47:32,070 --> 00:47:35,010 Lauren Leverit - 1074 00:47:35,010 --> 00:47:38,380 ir vienintelis dalykas, ši programa padarė, kuris yra tik visiškai savavališkas, yra 1075 00:47:38,380 --> 00:47:40,980 Norėjau kažką daryti su šiais duomenimis, dabar, kad aš mokė mus, kaip 1076 00:47:40,980 --> 00:47:43,450 naudoti structs, tai aš tiesiog turėjo ši papildoma kilpa čia. 1077 00:47:43,450 --> 00:47:45,260 Aš pakartoti per studentų masyvo. 1078 00:47:45,260 --> 00:47:49,170 Aš savo, galbūt dabar pažįstamas draugas, styginių lyginti, stircomp į 1079 00:47:49,170 --> 00:47:53,780 patikrinimas yra 8th studento namai lygios Mather? 1080 00:47:53,780 --> 00:47:56,760 Ir jei taip, tiesiog atsispausdinti kažką savavališkai patinka, taip, ji yra. 1081 00:47:56,760 --> 00:47:59,430 Bet vėl, kad suteikėte man galimybę naudoti ir pakartotinai naudoti ir 1082 00:47:59,430 --> 00:48:02,270 pakartotinai naudoti šią naują dot žymėjimą. 1083 00:48:02,270 --> 00:48:03,250 >> Taigi, who cares, tiesa? 1084 00:48:03,250 --> 00:48:06,270 Netrukus su studento programos šiek tiek savavališkas, bet it turns out 1085 00:48:06,270 --> 00:48:09,800 kad mes galime padaryti naudingų dalykų su tai, pavyzdžiui, kaip nurodyta toliau. 1086 00:48:09,800 --> 00:48:14,600 Tai daug sudėtingesnis konstrukto į C. Jis gavo keliolika ar daugiau sričių, 1087 00:48:14,600 --> 00:48:15,880 šiek tiek cryptically pavadintas. 1088 00:48:15,880 --> 00:48:20,110 Bet jei jūs kada nors girdėjote apie grafika failo formatas vadinamas rastras, BMP, jis 1089 00:48:20,110 --> 00:48:22,830 Pasirodo, kad Bitmap formatas gana daug atrodo, kad tai. 1090 00:48:22,830 --> 00:48:24,200 Tai kvailas mažai smiley veido. 1091 00:48:24,200 --> 00:48:27,840 Tai mažas vaizdas, kad aš Mastelis dėl gana didelis, kad galėčiau matyti vienas 1092 00:48:27,840 --> 00:48:30,410 atskirų taškų ar taškų. 1093 00:48:30,410 --> 00:48:33,800 Dabar paaiškėja, mes galime atstovauti juodas taškas, tarkim, skaičių 0. 1094 00:48:33,800 --> 00:48:35,520 Ir baltas taškas su skaičiumi 1. 1095 00:48:35,520 --> 00:48:39,140 >> Taigi, kitaip tariant, jei jūs norite atkreipti Smiley veido ir išsaugoti tą įvaizdį 1096 00:48:39,140 --> 00:48:42,680 kompiuteris, pakanka laikyti nulių ir tie, kurie atrodo taip, kur 1097 00:48:42,680 --> 00:48:45,250 vėl tie balti ir nuliai yra juoda. 1098 00:48:45,250 --> 00:48:48,290 Ir kartu, jei jums efektyviai turi prisisekite ir nulių, turite 1099 00:48:48,290 --> 00:48:51,030 tinklelį taškų, ir jei jums nustatyti juos, jūs turite mielas 1100 00:48:51,030 --> 00:48:52,560 mažai smiley veido. 1101 00:48:52,560 --> 00:48:58,150 Dabar Bitmap formatas, BMP yra efektyviai, kad po gaubtu, 1102 00:48:58,150 --> 00:49:00,970 bet su daugiau taškų Sot, kad jūs iš tikrųjų gali atstovauti spalvų. 1103 00:49:00,970 --> 00:49:05,170 >> Bet kai turite daugiau sudėtingas failų formatus, pavyzdžiui, BMP ir JPEG ir GIF 1104 00:49:05,170 --> 00:49:09,360 su kuria jūs galite būti susipažinę tie, failus diske paprastai yra ne tik 1105 00:49:09,360 --> 00:49:13,760 turi nulių ir už taškų, tačiau jie turi tam tikrų metaduomenų, taip pat - 1106 00:49:13,760 --> 00:49:16,960 meta ta prasme, kad yra tikrai ne duomenų, tačiau tai naudinga turėti. 1107 00:49:16,960 --> 00:49:21,370 Taigi šie laukai čia yra numatantys, ir mes matome tai išsamiau P-rinkinys 1108 00:49:21,370 --> 00:49:25,810 5, kad prieš nuliai ir tie, kurie atstovauti vaizde taškų, 1109 00:49:25,810 --> 00:49:29,110 ten metaduomenų krūva kaip koks paveikslo dydis ir 1110 00:49:29,110 --> 00:49:30,250 plotis vaizdą. 1111 00:49:30,250 --> 00:49:32,910 Ir pastebėsite, aš skynimas ne kai savavališkai dalykų čia - 1112 00:49:32,910 --> 00:49:34,260 plotis ir aukštis. 1113 00:49:34,260 --> 00:49:36,160 Truputi skaičius ir kai kurių kitų dalykų. 1114 00:49:36,160 --> 00:49:37,840 Taigi, čia yra keletas iš failo metaduomenis. 1115 00:49:37,840 --> 00:49:41,470 >> Bet suprasti, kaip failai yra nustatyta atlikti šiuo būdu, jūs iš tikrųjų galite 1116 00:49:41,470 --> 00:49:45,890 tada manipuliuoti vaizdus, ​​atkurti vaizdus iš disko, keisti dydį vaizdus. 1117 00:49:45,890 --> 00:49:47,560 Bet jūs galite nebūtinai padidinti juos. 1118 00:49:47,560 --> 00:49:48,480 Man reikia nuotrauką. 1119 00:49:48,480 --> 00:49:52,840 Taigi, aš grįžau į RJ čia kas matėte ekrane gana seniai. 1120 00:49:52,840 --> 00:49:57,160 Ir jei aš atverti Keynote čia, tai kas atsitiks, jei jūs bandote padidinti ir 1121 00:49:57,160 --> 00:49:59,380 padidinti RJ. 1122 00:49:59,380 --> 00:50:01,480 Jis nėra gauti bet geriau tikrai. 1123 00:50:01,480 --> 00:50:06,240 Dabar Keynote "yra natūra nyksta tai šiek tiek, tik Koloryzować 1124 00:50:06,240 --> 00:50:11,040 Faktas, kad RJ negauna ypač sustiprintas, kai jūs priartinti 1125 00:50:11,040 --> 00:50:13,310 Ir jei tai padaryti tokiu būdu, pamatyti kvadratų? 1126 00:50:13,310 --> 00:50:15,490 Taip, galite tikrai pamatyti esančias projektorius kvadratų. 1127 00:50:15,490 --> 00:50:17,690 >> Štai ką jūs gaunate, kai jums padidinti. 1128 00:50:17,690 --> 00:50:22,570 Bet suprasti, kaip mūsų RJ arba Smiley veido įgyvendinti leis mums 1129 00:50:22,570 --> 00:50:24,950 iš tikrųjų rašyti kodą, kuris manipuliuoja šie dalykai. 1130 00:50:24,950 --> 00:50:29,970 Ir aš maniau aš baigiasi šią pastabą, su 55 sekundžių sustiprinti tai, 1131 00:50:29,970 --> 00:50:31,230 Drįstu, tarkim, o klaidinantis. 1132 00:50:31,230 --> 00:50:32,990 >> [VIDEO PLAYBACK] 1133 00:50:32,990 --> 00:50:34,790 >> -Jis meluoja. 1134 00:50:34,790 --> 00:50:38,310 Apie ką, aš nežinau. 1135 00:50:38,310 --> 00:50:41,200 >> -Taigi, ką mes žinome? 1136 00:50:41,200 --> 00:50:45,280 >> -Tai 9:15 Ray Santoya buvo ATM. 1137 00:50:45,280 --> 00:50:47,830 >> -Taigi, klausimas yra tai, ką buvo jis daro 9:16? 1138 00:50:47,830 --> 00:50:50,750 >> Fotografavimas devynių milimetrų bent kažką. 1139 00:50:50,750 --> 00:50:52,615 Gal jis pamatė snaiperis. 1140 00:50:52,615 --> 00:50:54,760 >> -Arba dirbo su juo. 1141 00:50:54,760 --> 00:50:56,120 >> Palauk. 1142 00:50:56,120 --> 00:50:57,450 Grįžti atgal vieną. 1143 00:50:57,450 --> 00:50:58,700 >> -Ką tu matai? 1144 00:50:58,700 --> 00:51:05,530 1145 00:51:05,530 --> 00:51:09,490 >> -Suderinti savo veidą aukštyn, per visą ekraną. 1146 00:51:09,490 --> 00:51:09,790 >> -Jo akiniai. 1147 00:51:09,790 --> 00:51:11,040 >> -Yra atspindys. 1148 00:51:11,040 --> 00:51:21,790 1149 00:51:21,790 --> 00:51:23,520 >> -Tai Neuvitas beisbolo komandos. 1150 00:51:23,520 --> 00:51:24,530 Štai jų logotipas. 1151 00:51:24,530 --> 00:51:27,040 >> -Ir jis kalbėti kas yra dėvėti, kad striukė. 1152 00:51:27,040 --> 00:51:27,530 >> [PABAIGA VIDEO PLAYBACK] 1153 00:51:27,530 --> 00:51:29,180 >> Davidas J. Malan: Tai bus būti problemą, 5. 1154 00:51:29,180 --> 00:51:30,720 We will see you kitą savaitę. 1155 00:51:30,720 --> 00:51:32,330 >> VYRŲ GARSIAKALBIS: Kitame CS50. 1156 00:51:32,330 --> 00:51:39,240 >> [Svirplių čiulbėjimo] 1157 00:51:39,240 --> 00:51:41,270 >> [Muzikavimo]