1 00:00:00,000 --> 00:00:01,110 >> [Muzikos grojimo] 2 00:00:01,110 --> 00:00:10,567 3 00:00:10,567 --> 00:00:11,650 David J. Malan: Gerai. 4 00:00:11,650 --> 00:00:15,610 Tai CS50, ir tai yra Savaitės ketvertą pabaigos. 5 00:00:15,610 --> 00:00:19,420 Ir viena iš temų šiandien yra ta, kad skaitmeninės ekspertizės, 6 00:00:19,420 --> 00:00:20,989 atgauti informaciją menas. 7 00:00:20,989 --> 00:00:22,780 Ir iš tiesų, nors esate viduryje 8 00:00:22,780 --> 00:00:25,070 dabar taikos trimis ir Breakout, kitą savaitę, 9 00:00:25,070 --> 00:00:27,880 Daugiausia dėmesio bus skiriama Būtent šioje srityje. 10 00:00:27,880 --> 00:00:30,686 >> Taigi vienas iš super darbo aš kada nors turėjo grįžo į aukštosios mokyklos, 11 00:00:30,686 --> 00:00:33,560 kai dirbau vietos Middlesex County apygardos prokuroro s 12 00:00:33,560 --> 00:00:34,950 biuro, daro ekspertizės dirbti. 13 00:00:34,950 --> 00:00:37,450 Taigi, iš esmės, Masačusetsas Valstybinės policijos, kartais, 14 00:00:37,450 --> 00:00:40,100 Dirbdami atvejais būtų kad dalykų, pavyzdžiui, standžiųjų diskų 15 00:00:40,100 --> 00:00:42,185 ir diskeliai ir atminties kortelės ir pan. 16 00:00:42,185 --> 00:00:44,060 Ir jie būtų perduoti juos man ir mano mentorius, 17 00:00:44,060 --> 00:00:48,070 ir mūsų tikslas buvo rasti įrodymų, jei ten buvo bet, šių laikmenų. 18 00:00:48,070 --> 00:00:50,700 Dabar, jums gali mačiau žvilgsniai Šio ekspertizės pasaulyje 19 00:00:50,700 --> 00:00:53,000 žiniasklaidos, TV ir filmus. 20 00:00:53,000 --> 00:00:55,730 Bet darbas man teko, ir Manyti, kad pasaulis, 21 00:00:55,730 --> 00:00:57,550 yra ne visai kaip galėtumėte jį peržiūrėti. 22 00:00:57,550 --> 00:01:00,794 Leiskite pažvelgti, kas jūs tikriausiai matė. 23 00:01:00,794 --> 00:01:01,460 [VIDEO PLAYBACK] 24 00:01:01,460 --> 00:01:02,930 Ok. 25 00:01:02,930 --> 00:01:05,380 Dabar galime gauti gerą pažvelgti jums. 26 00:01:05,380 --> 00:01:06,850 >> [Muzikos grojimo] 27 00:01:06,850 --> 00:01:12,260 28 00:01:12,260 --> 00:01:12,932 >> -Hold Jį. 29 00:01:12,932 --> 00:01:13,657 Paleiskite tą nugarą. 30 00:01:13,657 --> 00:01:14,733 >> -Palauk Minutę. 31 00:01:14,733 --> 00:01:15,233 Eiti į dešinę. 32 00:01:15,233 --> 00:01:16,371 33 00:01:16,371 --> 00:01:16,870 -Yra. 34 00:01:16,870 --> 00:01:17,369 Freeze kad. 35 00:01:17,369 --> 00:01:17,930 Pilno ekrano. 36 00:01:17,930 --> 00:01:18,376 >> Ok. 37 00:01:18,376 --> 00:01:18,875 Freeze kad. 38 00:01:18,875 --> 00:01:20,160 Sugriežtinti ant, kad jūs? 39 00:01:20,160 --> 00:01:22,126 >> -Vector Į apie tai vaikinas iš galinio rato. 40 00:01:22,126 --> 00:01:24,435 >> -Zoom Į čia šioje vietoje. 41 00:01:24,435 --> 00:01:28,580 >> -Daugiausia Tinkamą įrangą, Vaizdas gali būti išplėsta ir galąsti. 42 00:01:28,580 --> 00:01:29,330 >> -Kas Kad? 43 00:01:29,330 --> 00:01:30,780 >> -Tai Didinimo programa. 44 00:01:30,780 --> 00:01:32,170 >> -Ar Jums aišku, kad iki tokių yra? 45 00:01:32,170 --> 00:01:33,070 >> -Aš Nežinau. 46 00:01:33,070 --> 00:01:34,150 Leiskite jį pagerinti. 47 00:01:34,150 --> 00:01:35,440 >> -Enhance A6 skyrius. 48 00:01:35,440 --> 00:01:36,570 49 00:01:36,570 --> 00:01:38,562 Aš sustiprino detales, and-- 50 00:01:38,562 --> 00:01:40,020 -Aš Manau, kad yra pakankamai padidinti. 51 00:01:40,020 --> 00:01:40,976 Atleiskite, kad mano ekrano. 52 00:01:40,976 --> 00:01:42,559 >> -Aš Sustiprino į jos akis atspindys. 53 00:01:42,559 --> 00:01:44,322 -ėlis Manimi paleisti tai per vaizdo didinimas. 54 00:01:44,322 --> 00:01:45,210 >> -Edgar, Galite padidinti tai? 55 00:01:45,210 --> 00:01:45,710 >> -Hang Ant. 56 00:01:45,710 --> 00:01:47,570 57 00:01:47,570 --> 00:01:49,458 >> -I've Dirbu šį atspindys. 58 00:01:49,458 --> 00:01:50,402 >> -Yra Savo kažkieno atspindys. 59 00:01:50,402 --> 00:01:50,902 >> -Reflection. 60 00:01:50,902 --> 00:01:52,870 -Yra Yra iš žmogaus veido atspindys. 61 00:01:52,870 --> 00:01:53,694 >> -The Atspindys! 62 00:01:53,694 --> 00:01:54,610 -Yra Yra atspindys. 63 00:01:54,610 --> 00:01:55,880 -Zoom Į ant veidrodžio. 64 00:01:55,880 --> 00:01:57,860 Jūs galite pamatyti atspindys. 65 00:01:57,860 --> 00:01:59,630 >> -Gali Jums padidinti atvaizdą iš čia? 66 00:01:59,630 --> 00:02:00,377 67 00:02:00,377 --> 00:02:01,210 -Gali Jūs jį pagerinti? 68 00:02:01,210 --> 00:02:02,190 -Gali Jūs jį pagerinti? 69 00:02:02,190 --> 00:02:03,066 -Gali Mes padidinti tai? 70 00:02:03,066 --> 00:02:03,898 -Gali Jūs jį pagerinti? 71 00:02:03,898 --> 00:02:04,740 -Hold Sekundėlę. 72 00:02:04,740 --> 00:02:05,281 Aš padidinti. 73 00:02:05,281 --> 00:02:06,470 -Zoom Į ant durų. 74 00:02:06,470 --> 00:02:06,970 -Times 10. 75 00:02:06,970 --> 00:02:08,009 -Zoom. 76 00:02:08,009 --> 00:02:08,509 -Move Į. 77 00:02:08,509 --> 00:02:09,340 -Daugiau. 78 00:02:09,340 --> 00:02:10,094 -Palauk, Sustoti. 79 00:02:10,094 --> 00:02:10,750 Stop. 80 00:02:10,750 --> 00:02:11,250 -Pause Jį. 81 00:02:11,250 --> 00:02:13,542 -Rotate Mums 75 laipsnių aplink vertikalios, prašom. 82 00:02:13,542 --> 00:02:14,750 83 00:02:14,750 --> 00:02:16,127 >> Stop. 84 00:02:16,127 --> 00:02:19,330 Grįžti į dalis apie duris vėl. 85 00:02:19,330 --> 00:02:21,420 >> -Priimta Vaizdo stipriklis, kuris gali Bitmap? 86 00:02:21,420 --> 00:02:24,420 >> -Maybe Mes galime naudoti Pradeep Singh būdas pamatyti į langus. 87 00:02:24,420 --> 00:02:25,902 >> -The Programinė įranga yra moderniausias. 88 00:02:25,902 --> 00:02:26,866 >> -The Tikrinių reikšmių yra išjungtas. 89 00:02:26,866 --> 00:02:29,758 >> -Daugiausia Dešinę kombinacija algorithms-- 90 00:02:29,758 --> 00:02:32,168 >> -Jis Imtasi apšvietimas algoritmai į kitą lygį, 91 00:02:32,168 --> 00:02:34,110 ir aš galiu naudoti juos sustiprinti šį nuotrauka. 92 00:02:34,110 --> 00:02:36,840 >> -Lock Ant ir padidinti z ašį. 93 00:02:36,840 --> 00:02:37,351 >> -Enhance. 94 00:02:37,351 --> 00:02:37,850 Didinti. 95 00:02:37,850 --> 00:02:38,720 -Enhance. 96 00:02:38,720 --> 00:02:40,070 -Freeze Ir stiprinti. 97 00:02:40,070 --> 00:02:43,420 [END VIDEO PLAYBACK] 98 00:02:43,420 --> 00:02:45,830 David J. Malan: Taigi tie, kurie visi žodžiai, tačiau jie ne 99 00:02:45,830 --> 00:02:47,870 naudojama sakinių teisingai. 100 00:02:47,870 --> 00:02:52,370 Ir iš tiesų ateityje, bet kuriuo metu, Prašome, išgirsite ką nors pasakyti žodį, 101 00:02:52,370 --> 00:02:54,250 "Sustiprinti" kudakuoti tik truputį. 102 00:02:54,250 --> 00:02:57,190 Nes kai bandote padidinti, Pavyzdžiui, tai, kas vyksta. 103 00:02:57,190 --> 00:02:58,580 >> Taigi čia yra spalvingas nuotrauka. 104 00:02:58,580 --> 00:02:59,720 Tai CS50 savo Daven. 105 00:02:59,720 --> 00:03:03,740 Ir manau, kad mes norėjome sutelkti dėmesį į MiG jo akių, 106 00:03:03,740 --> 00:03:05,870 ar atspindys blogas vaikinas, kad buvo aiškiai 107 00:03:05,870 --> 00:03:07,820 užfiksuotas saugumo kameros. 108 00:03:07,820 --> 00:03:10,330 Tai, kas atsitinka, kai jūs priartinti vaizdą, kad 109 00:03:10,330 --> 00:03:14,060 turi tik baigtinį skaičių Bitų, susijusių su juo. 110 00:03:14,060 --> 00:03:15,420 >> Tai yra tai, ką jūs galėtumėte gauti. 111 00:03:15,420 --> 00:03:19,190 Ir iš tiesų, Daven akis yra bet keturis, gal šešis pikselių 112 00:03:19,190 --> 00:03:22,110 kad komponuoti, ką buvo Płomykowy ten. 113 00:03:22,110 --> 00:03:25,890 Taigi Problema Nustatyti Keturi galiausiai turės jums ištirti šį pasaulį, ypač 114 00:03:25,890 --> 00:03:28,090 gamta kažką mes vadiname failą I / O, kurioje 115 00:03:28,090 --> 00:03:31,000 I / O yra tik išgalvotas būdas sakydamas įvestį ir išvestį. 116 00:03:31,000 --> 00:03:34,280 >> Taigi iki šiol, visi sąveikos mes jau su kompiuteriu 117 00:03:34,280 --> 00:03:36,770 buvo daugiausia susijusios su jūsų klaviatūra ir ekranas, 118 00:03:36,770 --> 00:03:40,770 bet ne tiek daug su kietajame diske, arba taupymo failų už tuos, kuriuos 119 00:03:40,770 --> 00:03:41,620 sau rašyti. 120 00:03:41,620 --> 00:03:44,570 Jūsų programos iki šiol turi nebuvo sukurti ir išsaugoti, 121 00:03:44,570 --> 00:03:46,270 ir atnaujinti savo failus. 122 00:03:46,270 --> 00:03:47,150 >> Na, kas byla? 123 00:03:47,150 --> 00:03:48,105 Na, kažkas panašaus į JPEG. 124 00:03:48,105 --> 00:03:50,520 Tai paveikslėlis jums gali turėti arba įkelti į "Facebook", 125 00:03:50,520 --> 00:03:51,690 ar pamatyti bet kur internete. 126 00:03:51,690 --> 00:03:54,460 Iš tiesų, tai nuotrauka, mes tiesiog pjūklas iš Daven buvo JPEG. 127 00:03:54,460 --> 00:03:57,570 Ir kas įdomu apie failus kaip JPEG 128 00:03:57,570 --> 00:04:02,170 yra tai, kad jie gali būti identifikuoti, paprastai, tam tikrų modelių bitai. 129 00:04:02,170 --> 00:04:05,200 >> Kitaip tariant, tai, kas jį, kad išskiria JPEG iš GIF 130 00:04:05,200 --> 00:04:08,109 iš iš Word PING dokumentas iš Excel failo? 131 00:04:08,109 --> 00:04:09,900 Na, tai tiesiog skirtingi modeliai bitai. 132 00:04:09,900 --> 00:04:12,820 Ir tie skirtingi modeliai paprastai šių failų pradžios. 133 00:04:12,820 --> 00:04:18,200 >> Taigi, kad kai jūsų kompiuteris atidaro Word doc, arba kai kompiuteris atidaro JPEG, 134 00:04:18,200 --> 00:04:20,940 atrodo paprastai ne Pirmieji keli bitai failo. 135 00:04:20,940 --> 00:04:24,059 Ir jei ji pripažįsta, modelį, ji sako, oi, tai yra paveikslėlis. 136 00:04:24,059 --> 00:04:25,850 Leiskite parodyti jį vartotojas kaip grafinis vaizdas. 137 00:04:25,850 --> 00:04:27,870 Arba, oh, tai atrodo Word doc. 138 00:04:27,870 --> 00:04:30,480 Leiskite parodyti naudotojui, kaip esė. 139 00:04:30,480 --> 00:04:33,020 >> Taigi, pavyzdžiui, JPEG, it turns out, yra 140 00:04:33,020 --> 00:04:35,460 gana sudėtingas po gaubtu. 141 00:04:35,460 --> 00:04:40,140 Tačiau pirmieji trys baitų dauguma kas JPEG pradėti su šiomis trimis skaičiais. 142 00:04:40,140 --> 00:04:44,680 Taigi baitų nulis, vienas, o du yra iš dauguma kas JPEG, 255, tada skaičius 143 00:04:44,680 --> 00:04:46,675 216, tada skaičius 255. 144 00:04:46,675 --> 00:04:48,990 >> Ir ką jūs galėsite pradėti daryti kitą savaitę 145 00:04:48,990 --> 00:04:52,920 iš tikrųjų išnyra po failų gaubtas kaip JPEG 146 00:04:52,920 --> 00:04:57,210 ir kaip bitmap failus, ir pamatyti kas visada buvo ten, kol 147 00:04:57,210 --> 00:04:58,650 kaip jūs buvote naudojant kompiuterį. 148 00:04:58,650 --> 00:05:01,860 >> Bet kas yra paprastai nėra parašyta kaip dešimtųjų kaip šis. 149 00:05:01,860 --> 00:05:04,620 Kompiuterių mokslininkai ne linkę kalbėti po kablelio. 150 00:05:04,620 --> 00:05:06,139 Jie tikrai ne kalbėti dvejetainis. 151 00:05:06,139 --> 00:05:07,930 Paprastai, kai mes norime išreikšti numerius, 152 00:05:07,930 --> 00:05:10,710 mes iš tikrųjų naudoti šešioliktainis, kurį gali prisiminti 153 00:05:10,710 --> 00:05:13,027 nuo, tarkim, problemą, Vienas, kuris ginčijo 154 00:05:13,027 --> 00:05:14,610 jums galvoti apie kitą sistemą. 155 00:05:14,610 --> 00:05:17,170 >> Mes, žinoma, esame susipažinę su dešimtosios nulio per devynių. 156 00:05:17,170 --> 00:05:18,215 Mes kalbėjome apie dvejetainę. 157 00:05:18,215 --> 00:05:20,710 Ir mes iš tikrųjų neturime naudoti, kad daug čia 158 00:05:20,710 --> 00:05:22,470 laukan, nes kompiuteriai naudoti, kad. 159 00:05:22,470 --> 00:05:24,900 Bet programuotojai bus labai dažnai, bet ne visada, 160 00:05:24,900 --> 00:05:29,360 naudoti šešioliktainis, kuris tiesiog reiškia, jūs turite 16 raides savo abėcėlės, 161 00:05:29,360 --> 00:05:31,330 , palyginti su dviejų ar 10. 162 00:05:31,330 --> 00:05:34,530 >> Taigi, kaip jums suskaičiuoti iki didesnės nei devynių šešioliktainis? 163 00:05:34,530 --> 00:05:41,120 Nueini 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, tik pagal susitarimą. 164 00:05:41,120 --> 00:05:43,540 Bet kas svarbiausia yra, kad kiekvienas iš jų yra vieno simbolio. 165 00:05:43,540 --> 00:05:44,340 Nėra 10. 166 00:05:44,340 --> 00:05:48,400 Nėra 11 per se, nes kiekvienas Jūsų skaitmenų, tiesiog patinka dešimtosios 167 00:05:48,400 --> 00:05:51,940 ir kaip dvejetainiu, turėtų tik būti vienas simbolis, pagal susitarimą. 168 00:05:51,940 --> 00:05:55,280 >> Taigi, kad tada yra abėcėlė turime mūsų žinioje Šešioliktainiai. 169 00:05:55,280 --> 00:05:58,600 Taigi, ką JPEG atrodyti, jei jums buvo surašyti tuos pirmuosius tris 170 00:05:58,600 --> 00:06:01,980 baitų ne kaip dešimtosios tačiau, Pavyzdžiui, kaip šešioliktainis? 171 00:06:01,980 --> 00:06:03,640 Ir kodėl hex net visa tai naudinga? 172 00:06:03,640 --> 00:06:05,290 >> Na, greitai pažvelgti pavyzdys. 173 00:06:05,290 --> 00:06:09,030 Taigi, jei aš rašau iš bitai, kad atstovauti šias dešimtainį numbers-- 174 00:06:09,030 --> 00:06:12,450 tai gali būti šiek tiek aprūdijęs dabar nuo kelių savaičių atgal, 175 00:06:12,450 --> 00:06:14,820 bet kairysis ir teisingas yra gana lengva. 176 00:06:14,820 --> 00:06:17,990 255 buvo didžiausias skaičius mes gali atstovauti aštuonis bitus. 177 00:06:17,990 --> 00:06:18,820 Tai buvo visi tie. 178 00:06:18,820 --> 00:06:21,320 Taigi tik vienas, kad yra šiek tiek Įdomu tai, viduriniosios vienas. 179 00:06:21,320 --> 00:06:24,700 Ir jei jūs rūšies daryti iš matematikos, jūs padaryti išvadą, kad, iš tiesų, 180 00:06:24,700 --> 00:06:27,949 kad vieno modelio ir nuliai yra 216. 181 00:06:27,949 --> 00:06:30,240 Taigi tegul tiesiog nustatyti už dabar, kad tai yra teisinga. 182 00:06:30,240 --> 00:06:31,730 Bet kodėl tai yra įdomu? 183 00:06:31,730 --> 00:06:33,970 >> Na, baitų, žinoma, yra aštuonis bitus. 184 00:06:33,970 --> 00:06:38,980 Ir paaiškėja, kad, jei jūs manote iš baitas kaip du gabaliukus keturis bitus, 185 00:06:38,980 --> 00:06:39,500 kaip šis. 186 00:06:39,500 --> 00:06:41,000 Leiskite pridėti šiek tiek erdvės. 187 00:06:41,000 --> 00:06:42,550 Taigi, prieš, po. 188 00:06:42,550 --> 00:06:46,520 Aš ką tik įdėjote šiek tiek baltos vietos vizualizavimo dėlei čia. 189 00:06:46,520 --> 00:06:51,840 Kaip gali dabar mes atstovaujame, tarkim, šešioliktainis kiekvienas bitai quad, 190 00:06:51,840 --> 00:06:52,880 kiekvienas iš keturių bitų rinkinys? 191 00:06:52,880 --> 00:06:56,420 >> Taigi, pavyzdžiui, kairėje dabar mes turime 1111 dvejetainiu. 192 00:06:56,420 --> 00:07:00,420 Kas yra tai, kad po dešimtainio skaičius, jei jūs iš matematikos? 193 00:07:00,420 --> 00:07:03,780 Turite tie vietą, poromis vieta, Fours vieta, ir aštuonias vieta. 194 00:07:03,780 --> 00:07:04,341 >> PUBLIKA: 15. 195 00:07:04,341 --> 00:07:05,340 David J. Malan: Tai 15. 196 00:07:05,340 --> 00:07:08,340 Taigi, jei mes darome aštuonių plius keturi plius du plius viena, mes gauname 15. 197 00:07:08,340 --> 00:07:11,790 Taigi galėjau užrašyti 15 Toliau 1111, bet čia visa esmė 198 00:07:11,790 --> 00:07:13,190 yra šešioliktainis ne dešimtainį. 199 00:07:13,190 --> 00:07:17,310 Taigi vietoj užrašyti 15, 1-5, Aš ruošiuosi rašyti, kad hex, 200 00:07:17,310 --> 00:07:22,311 kuris, jei jūs manote, kad atgal, jei turite nulis per f, kas 15 bus? 201 00:07:22,311 --> 00:07:22,810 PUBLIKA: f. 202 00:07:22,810 --> 00:07:24,434 David J. Malan: Taigi pasirodo, tai f. 203 00:07:24,434 --> 00:07:29,140 Ir jūs galite dirbti, kad iš sakydamas, gerai, jei yra 10, tada spustelėkite Gerai, f 15. 204 00:07:29,140 --> 00:07:33,250 Taigi iš tiesų, mes galime perrašyti tai tas pats rinkinys numerius kaip f f. 205 00:07:33,250 --> 00:07:35,750 Ir tada, jei mes padaryti šiek tiek matematikos, mes padaryti išvadą, kad tai yra d. 206 00:07:35,750 --> 00:07:38,650 Aštuoni yra gana lengva, nes mes turėti vieną į aštuonias vietoje. 207 00:07:38,650 --> 00:07:40,620 Ir tada, mes turime pora daugiau f f-aisiais. 208 00:07:40,620 --> 00:07:44,669 >> Taigi, ką žmonės linkę daryti pagal susitarimą kai jie naudoja šešioliktainis yra, jie tiesiog 209 00:07:44,669 --> 00:07:47,710 rašau tai šiek tiek daugiau glaustai, atsikratyti dauguma tos baltos vietos. 210 00:07:47,710 --> 00:07:50,890 Ir tik super aišku, skaitytojai, kad tai yra šešioliktainis, 211 00:07:50,890 --> 00:07:54,670 paprastas konvencija tarp žmonės yra rašote nulį 212 00:07:54,670 --> 00:07:58,000 x, kuris neturi prasmės kitą kaip vizualiai identifikatorius, 213 00:07:58,000 --> 00:07:59,590 čia ateina šešioliktainis skaičius. 214 00:07:59,590 --> 00:08:04,210 >> Ir tada jūs įdėti du skaitmenys, f f šiuo atveju, tada d, tada f f. 215 00:08:04,210 --> 00:08:06,700 Taigi ilga istorija trumpa, šešioliktainis tiesiog linkęs 216 00:08:06,700 --> 00:08:11,990 būtų naudinga, nes kiekvienas jo skaitmenys, nulis per f, puikiai linijos 217 00:08:11,990 --> 00:08:13,880 su keturių bitų modelis. 218 00:08:13,880 --> 00:08:18,080 >> Taigi, jei turite dvi šešioliktainius skaitmenis, nulis per F, vėl ir vėl, 219 00:08:18,080 --> 00:08:20,256 kuri suteikia jums puikiai Aštuoni bitai arba vienas baitas. 220 00:08:20,256 --> 00:08:22,380 Štai kodėl jis yra linkęs būti tradiciškai naudinga. 221 00:08:22,380 --> 00:08:24,990 Nėra intelektinės turinys tikrai už, kad, 222 00:08:24,990 --> 00:08:27,010 išskyrus faktinio naudingumas. 223 00:08:27,010 --> 00:08:29,310 >> Dabar JPEG yra ne tik Failų formatai grafikos. 224 00:08:29,310 --> 00:08:33,230 Galbūt jūs žinote, kad yra bylos, kaip šio pasaulio, 225 00:08:33,230 --> 00:08:34,830 bent iš keletą metų atgal. 226 00:08:34,830 --> 00:08:37,580 >> Taigi tai buvo iš tikrųjų įdiegta "Windows XP" 227 00:08:37,580 --> 00:08:39,960 milijonuose kompiuterių visame pasaulyje. 228 00:08:39,960 --> 00:08:43,000 Ir tai buvo Bitmap failas, BMP. 229 00:08:43,000 --> 00:08:47,690 Ir Bitmap failas, kaip pamatysite šalia savaitę, tiesiog reiškia taškelių raštas, 230 00:08:47,690 --> 00:08:51,710 pikselių, kaip jie vadinami, map ant bitai, tikrai. 231 00:08:51,710 --> 00:08:55,160 >> Taigi, kas yra įdomu, nors, apie šį failo formatą, BMP, yra 232 00:08:55,160 --> 00:08:58,590 kad po gaubtu, ją turi daugiau nei vien trijų baitų 233 00:08:58,590 --> 00:09:01,020 kad kurti savo galva, todėl kalbėti, pirmuosius keletą įkandimų. 234 00:09:01,020 --> 00:09:03,330 Jis tikrai atrodo šiek tiek sudėtinga iš pirmo žvilgsnio. 235 00:09:03,330 --> 00:09:04,704 Ir jūs pamatysite tai P rinkinys. 236 00:09:04,704 --> 00:09:06,810 Ir gauti kažką ypač iš šio dabar 237 00:09:06,810 --> 00:09:10,720 nėra taip svarbu, kaip tik dėl to, kad kiekvieno bitmap pradžioje 238 00:09:10,720 --> 00:09:13,823 failas, grafinis formatas, ten visa krūva skaičių. 239 00:09:13,823 --> 00:09:14,980 240 00:09:14,980 --> 00:09:16,720 >> Dabar "Microsoft", autorius šiuo formatu, 241 00:09:16,720 --> 00:09:18,820 linkęs šaukti dalykų, ne ints ir simbolių 242 00:09:18,820 --> 00:09:22,259 ir plūdės bet žodžiai ir d žodžiai ir ilgisi ir baitai. 243 00:09:22,259 --> 00:09:23,800 Taigi jie tiesiog skirtingi duomenų tipai. 244 00:09:23,800 --> 00:09:25,170 Jie skirtingus pavadinimus už tą patį dalyką. 245 00:09:25,170 --> 00:09:26,740 Bet jūs pamatysite, kad P Nustatyti keturi. 246 00:09:26,740 --> 00:09:31,450 >> Bet tai tik pasakyti, kad jei žmogus dukart spusteli kai bmp failą jo 247 00:09:31,450 --> 00:09:35,015 ar jos kietąjį diską, ir langas parodančios jam ar jai, kad vaizdo, 248 00:09:35,015 --> 00:09:38,500 kad atsitiko todėl, kad veiklos sistema turbūt pastebėjo ne tik 249 00:09:38,500 --> 00:09:41,460 bmp failo plėtinys failo pavadinimą, 250 00:09:41,460 --> 00:09:45,010 bet ir tai, kad yra keletas konvencija, ir bitų modelis 251 00:09:45,010 --> 00:09:47,490 pačioje pradžioje tos bitmap failo. 252 00:09:47,490 --> 00:09:50,270 >> Bet tegul dabar savo dėmesį į toks sudėtingas failas, 253 00:09:50,270 --> 00:09:52,120 bet vietoj to kažką panašaus į tai. 254 00:09:52,120 --> 00:09:55,190 Tarkime čia gedit, aš tiesiog turi pradžią 255 00:09:55,190 --> 00:09:57,070 iš programos, tai gana paprasta. 256 00:09:57,070 --> 00:09:58,860 Aš turiu kai yra iki viršaus. 257 00:09:58,860 --> 00:10:02,120 Dabar aš turiu Include "structs.h", tačiau Grįšiu į tą, kuris yra šiuo metu. 258 00:10:02,120 --> 00:10:03,974 Bet tai yra naudinga dabar. 259 00:10:03,974 --> 00:10:05,890 Taigi, tai yra programa, kad ketina įgyvendinti 260 00:10:05,890 --> 00:10:07,335 kaip registratoriaus duomenų bazę. 261 00:10:07,335 --> 00:10:09,710 Taigi studentų duomenų bazė, ir kiekvienas studentas pasaulyje 262 00:10:09,710 --> 00:10:13,190 turi pavadinimą ir namą ir tikriausiai kai kiti dalykai, bet mes laikyti jį paprasta. 263 00:10:13,190 --> 00:10:15,140 Kiekvienas studentas turi savo vardą ir namą. 264 00:10:15,140 --> 00:10:17,700 >> Taigi, jei aš norėjau parašyti programa, kurios tikslas gyvenime 265 00:10:17,700 --> 00:10:19,860 buvo tik pakartoti iš nulio iki trijų, 266 00:10:19,860 --> 00:10:22,070 jei ten tris studentus Harvardo universitete. 267 00:10:22,070 --> 00:10:25,350 Ir aš tik noriu gauti naudojant GetString, kiekvieno studento vardas ir namo, 268 00:10:25,350 --> 00:10:26,600 ir tada tiesiog atsispausdinti tiems iš. 269 00:10:26,600 --> 00:10:28,630 >> Tai tarsi kaip savaitės Vienas, Savaitė Dvi stuff dabar 270 00:10:28,630 --> 00:10:30,810 kur tik noriu už kilpa ar kažkas panašaus. 271 00:10:30,810 --> 00:10:34,500 Ir aš noriu paskambinti GetString nedaugelis kartų, ir tada spausdinti f kelis kartus. 272 00:10:34,500 --> 00:10:37,340 Taigi, kaip aš galiu tai padaryti, nors, kai abu pavadinimas ir namai 273 00:10:37,340 --> 00:10:39,070 dalyvauja kiekvienam studentui? 274 00:10:39,070 --> 00:10:42,830 >> Taigi mano pirmasis instinktas might būti padaryti kažką panašaus į tai. 275 00:10:42,830 --> 00:10:49,620 Galėčiau pirmasis pasakyti, gerai, duok man, tarkim, eilučių, vadinamų pavadinimai masyvo. 276 00:10:49,620 --> 00:10:51,530 Ir aš nenoriu hardcode tris čia. 277 00:10:51,530 --> 00:10:53,064 Ką aš noriu ten įdėti? 278 00:10:53,064 --> 00:10:55,730 Taigi studentų, nes tai tik pastovus paskelbė viršuje, 279 00:10:55,730 --> 00:10:57,860 tiesiog taip aš neturiu hardcode trys keliose vietose. 280 00:10:57,860 --> 00:11:00,859 Tokiu būdu, aš galiu jį pakeisti vieną vietą, ir tai turi įtakos pokyčius visur. 281 00:11:00,859 --> 00:11:04,470 Ir tada, aš galėtų padaryti styginių namų studentams. 282 00:11:04,470 --> 00:11:10,250 >> Ir dabar, aš galėtų padaryti kažką panašaus už (int i = 0; i 00:11:14,390 Taigi aš rašyti greitai, tačiau tai tikriausiai, susipažinę sintaksė dabar. 284 00:11:14,390 --> 00:11:17,030 >> O dabar, tai buvo neseniai. 285 00:11:17,030 --> 00:11:22,890 Jei aš noriu įdėti į i-osios studento vardas, manau, kad tai padaryti. 286 00:11:22,890 --> 00:11:26,480 Ir tada, ne pavadinimai bet namai laikiklis i. 287 00:11:26,480 --> 00:11:29,930 Aš tai padaryti, GetString, ir tegul man grįžti ir išspręsti šią liniją. 288 00:11:29,930 --> 00:11:30,430 Sutinku? 289 00:11:30,430 --> 00:11:31,200 Nesutinku? 290 00:11:31,200 --> 00:11:32,366 Tai nėra labai patogus. 291 00:11:32,366 --> 00:11:33,890 Aš jos nepasakiau vartotojui, ką daryti. 292 00:11:33,890 --> 00:11:36,520 >> Bet dabar, jeigu aš taip pat norėjo vėliau, tegul 293 00:11:36,520 --> 00:11:40,060 tarkim, spausdinti šiuos dalykus out-- taip TODO vėliau. 294 00:11:40,060 --> 00:11:42,330 Aš ruošiuosi padaryti daugiau su this-- tai, be abejo, tai yra 295 00:11:42,330 --> 00:11:45,970 teisingas įgyvendinimas gauti vardus ir namus, tris 296 00:11:45,970 --> 00:11:48,870 iš jų iš viso kiekvienas iš vartotojo. 297 00:11:48,870 --> 00:11:51,280 >> Bet tai nėra labai geras dizainas, tiesa? 298 00:11:51,280 --> 00:11:55,220 Ką daryti, jei studentas turi ne tik pavadinimą ir namas, bet ir ID numeris, 299 00:11:55,220 --> 00:11:57,770 ir telefono numeris, ir elektroninio pašto adresas, 300 00:11:57,770 --> 00:12:00,280 o gal namų puslapiu ir gal Twitter rankena, 301 00:12:00,280 --> 00:12:03,730 ir bet koks kitas detales numeris susijęs su studento ar asmens, 302 00:12:03,730 --> 00:12:04,610 apskritai. 303 00:12:04,610 --> 00:12:07,720 Kaip mes pradėsime pridėti funkcionalumas šią programą? 304 00:12:07,720 --> 00:12:14,080 >> Na, aš jaučiu, kaip paprasčiausiu būdu might būti padaryti kažką panašaus, tarkim, 305 00:12:14,080 --> 00:12:16,490 int IDS studentų. 306 00:12:16,490 --> 00:12:18,380 Taigi aš galiu įdėti visus savo ID ten. 307 00:12:18,380 --> 00:12:22,240 Ir tada, nors kaip telefono numerius, 308 00:12:22,240 --> 00:12:24,400 Nesu tikras, kaip atstovauti, kad tik dar. 309 00:12:24,400 --> 00:12:30,280 Taigi eikime į priekį ir tik skambutis tai twitters studentų, kurie 310 00:12:30,280 --> 00:12:33,550 yra šiek tiek keista, but-- ir krūva daugiau laukų. 311 00:12:33,550 --> 00:12:36,360 >> Aš pradėjau efektyviai nukopijuokite ir įklijuokite čia. 312 00:12:36,360 --> 00:12:39,416 Ir tai augs gana griozdiškas gana greitai, tiesa? 313 00:12:39,416 --> 00:12:42,290 Ar nebūtų puiku, jei ten buvo pasaulyje žinomas duomenų struktūra 314 00:12:42,290 --> 00:12:45,600 ne kaip int ar eilutę, bet kažkas aukštesnio lygio, abstrakcija, todėl 315 00:12:45,600 --> 00:12:47,570 kalbėti, žinoma kaip studentas? 316 00:12:47,570 --> 00:12:50,220 C neatėjo su built-in funkcionalumas studentams, 317 00:12:50,220 --> 00:12:52,260 bet ką daryti, jei aš norėjau, kad tai toks? 318 00:12:52,260 --> 00:12:55,640 >> Na, it turns out, aš ruošiuosi atidaryti failą, pavadintą structs.h čia 319 00:12:55,640 --> 00:12:57,090 ir jūs galite padaryti būtent tai. 320 00:12:57,090 --> 00:12:58,290 Ir mes ketiname pradėti tai daryti dabar. 321 00:12:58,290 --> 00:13:01,490 Ir prispaudžia P nustatė tris gaubtu, jūs jau daro tai dabar. 322 00:13:01,490 --> 00:13:05,920 Nėra tokio dalyko, kaip g liu arba g ovalo programavimo kalbos C 323 00:13:05,920 --> 00:13:10,570 >> Žmonės Stanfordo įgyvendinti tuos duomenų tipai, naudojant šį metodą čia, 324 00:13:10,570 --> 00:13:13,900 skelbiantis savo naują duomenis tipų, naudojant naują raktinį žodį 325 00:13:13,900 --> 00:13:16,744 vadinamas konstrukto ir kita vienas vadinamas Typedef. 326 00:13:16,744 --> 00:13:19,660 Ir iš tiesų, nors sintaksė atrodo šiek tiek skiriasi nuo dalykų, 327 00:13:19,660 --> 00:13:23,550 mes matėme anksčiau, principas, tai super paprasta. 328 00:13:23,550 --> 00:13:25,297 >> Tai tiesiog reiškia "apibrėžti tipą." 329 00:13:25,297 --> 00:13:27,255 Tai ketina būti struktūra ir struktūra 330 00:13:27,255 --> 00:13:29,400 yra tik kaip į konteinerį kelių dalykų. 331 00:13:29,400 --> 00:13:31,780 Ir tai struktūra vyksta turėti eilutę, vadinamą vardas, 332 00:13:31,780 --> 00:13:33,210 ir styginių vadinamas namas. 333 00:13:33,210 --> 00:13:37,520 Ir tegul vadina, tiesiog, kad būtų patogiau, visa ši duomenų struktūra studentas. 334 00:13:37,520 --> 00:13:40,320 >> Taigi momentas jums kabliataškis, turite dabar 335 00:13:40,320 --> 00:13:43,280 sukurta savo duomenis tipas vadinamas studentas 336 00:13:43,280 --> 00:13:46,420 kad dabar stovi šalia int, ir flotacinio ir char ir string, 337 00:13:46,420 --> 00:13:50,270 ir g rect ir g ovalios, ir bet koks skaičius kitų dalykų, žmonės išrado. 338 00:13:50,270 --> 00:13:53,340 >> Taigi, kas yra naudinga apie tai dabar yra tai, kad jei aš einu atgal 339 00:13:53,340 --> 00:13:57,430 į turizmo infrastruktūrą 0 ir baigti tai įgyvendinimas, kurį aš parašė 340 00:13:57,430 --> 00:14:02,080 iš anksto čia, pastebėsite, kad visi neišvengiamą Bałaganienie kad 341 00:14:02,080 --> 00:14:05,490 buvo apie pradėti vyksta kaip aš pridėjo telefono numerius ir twitters ir visi 342 00:14:05,490 --> 00:14:07,370 šie kitų dalykų studento apibrėžimas, 343 00:14:07,370 --> 00:14:11,810 dabar jis glaustai apibendrinti kaip tik vienas masyvas studentams. 344 00:14:11,810 --> 00:14:15,500 >> Ir kiekvienas iš tų studentų, dabar turi kelis dalykus viduje. 345 00:14:15,500 --> 00:14:16,930 Taigi, kad tik palieka vieną klausimą. 346 00:14:16,930 --> 00:14:19,700 Kaip jums tuo pavadinimu, ir namas, ir ID, 347 00:14:19,700 --> 00:14:21,640 ir kokios dar yra viduje studentui? 348 00:14:21,640 --> 00:14:22,930 Super paprasta, kaip gerai. 349 00:14:22,930 --> 00:14:25,730 Naujas sintaksė, bet paprasta idėja. 350 00:14:25,730 --> 00:14:29,239 >> Jūs galite tiesiog indeksas į masyvą, kaip mes padarėme praeitą savaitę, ir tai. 351 00:14:29,239 --> 00:14:31,030 Ir kas aiškiai nauja gabalas sintaksė? 352 00:14:31,030 --> 00:14:32,590 353 00:14:32,590 --> 00:14:35,880 Tiesiog., Kuris reiškia "eiti į vidų struktūra ir gauti laukas vadinamas 354 00:14:35,880 --> 00:14:39,030 vardas, gauti lauką, vadinamą namas, gauti lauką, vadinamą studentas. " 355 00:14:39,030 --> 00:14:41,940 >> Taigi P nustatė tris, jei esate vis dar dirba, kad 356 00:14:41,940 --> 00:14:44,020 ir dauguma žmonių vis dar yra, reikia suprasti, kad, kaip jūs 357 00:14:44,020 --> 00:14:46,130 pradėti naudoti dalykų, pavyzdžiui, g rects ir g ovalai 358 00:14:46,130 --> 00:14:50,201 ir kitų dalykų, kad neatrodo, kad iš savaitės nulis, vienas arba du, 359 00:14:50,201 --> 00:14:52,950 suprasti, kad tai todėl, kad Stanfordo paskelbė keletą naujų duomenų tipus. 360 00:14:52,950 --> 00:14:56,160 >> Ir iš tiesų, tai būtent tai, ką mes padaryti, taip pat, į P nustatytos keturios, kai 361 00:14:56,160 --> 00:14:59,880 mes pradedame kovoti su dalykų kaip vaizdus, ​​rastrai, ir dar daugiau. 362 00:14:59,880 --> 00:15:02,882 Taigi tai tiesiog erzina ir psichikos modelis, kas turi ateiti. 363 00:15:02,882 --> 00:15:04,590 Dabar, aš delsė tiek šį rytą. 364 00:15:04,590 --> 00:15:09,560 Buvau rūšies įdomu pamatyti, ką "Microsoft" ekrano užsklanda iš tikrųjų 365 00:15:09,560 --> 00:15:10,310 atrodo šiandien. 366 00:15:10,310 --> 00:15:15,200 Ir it turns out kažkas 2006 iš tikrųjų išvyko į beveik tiksliai 367 00:15:15,200 --> 00:15:19,210 pačioje vietoje fotografuoti iš tikrųjų kas atrodo, kad šių dienų. 368 00:15:19,210 --> 00:15:21,380 Laukas yra dabar šiek tiek apaugusi. 369 00:15:21,380 --> 00:15:24,850 >> Taigi kalbant dabar vaizdų, tegul sugrąžinti Daven čia 370 00:15:24,850 --> 00:15:26,890 ekrane ir Mikalojaus ir tiesiog priminti jums 371 00:15:26,890 --> 00:15:30,540 kad, jei norite prisijungti prie mūsų pietų šį penktadienį, galva mūsų įprasta URL 372 00:15:30,540 --> 00:15:31,440 čia. 373 00:15:31,440 --> 00:15:33,530 >> Taigi, kur gi mes palikti ne pirmadienį? 374 00:15:33,530 --> 00:15:35,140 Mes pristatėme šią problemą, tiesa? 375 00:15:35,140 --> 00:15:37,610 Tai buvo, atrodytų teisinga įgyvendinimas apsikeitimo sandorio poziciją, 376 00:15:37,610 --> 00:15:40,460 , kai vartojate du int, vienas vadinamas, vienas vadinamas b 377 00:15:40,460 --> 00:15:44,130 apsikeitimo juos, kaip ir Laura padarė čia Scenoje su pienu ir vandeniu, 378 00:15:44,130 --> 00:15:46,820 naudojant laikinas kintamasis arba tuščias puodelis, 379 00:15:46,820 --> 00:15:50,540 kad galėtume įdėti b į ir A kategoriją b nedarant dalykų netvarka. 380 00:15:50,540 --> 00:15:51,560 Mes naudojome kintamąjį. 381 00:15:51,560 --> 00:15:52,870 Tai vadinama temp. 382 00:15:52,870 --> 00:15:55,520 >> Bet tai, kas buvo svarbiausia problema su šiuo kodu pirmadienį? 383 00:15:55,520 --> 00:15:57,700 384 00:15:57,700 --> 00:15:58,870 Kokia buvo problema čia? 385 00:15:58,870 --> 00:16:00,106 386 00:16:00,106 --> 00:16:00,605 Taip. 387 00:16:00,605 --> 00:16:01,970 >> PUBLIKA: Jis užima daugiau vietos. 388 00:16:01,970 --> 00:16:04,719 >> David J. Malan: Užima daugiau erdvė, nes aš naudoju kintamąjį, 389 00:16:04,719 --> 00:16:05,400 ir kad viskas OK. 390 00:16:05,400 --> 00:16:07,300 Tai tiesa, bet aš tikiu, ketinate pasakyti, kad viskas OK. 391 00:16:07,300 --> 00:16:10,030 Tai tik 32 bitai grand schema dalykų, todėl ne big deal. 392 00:16:10,030 --> 00:16:10,655 Kitos mintys? 393 00:16:10,655 --> 00:16:12,572 PUBLIKA: Tai tik apsikeitimo kintamieji lokaliai. 394 00:16:12,572 --> 00:16:13,571 David J. Malan: Būtent. 395 00:16:13,571 --> 00:16:15,090 Jis tik apsikeitimo kintamuosius vietoje. 396 00:16:15,090 --> 00:16:18,173 Kadangi bet kuriuo metu galite skambinti function-- kai turėjau dėklus iš Annenberg 397 00:16:18,173 --> 00:16:19,840 Paskutinį kartą, turite pagrindinis apačioje. 398 00:16:19,840 --> 00:16:23,560 Kai skambinate funkcija vadinama apsikeitimo sandoris, apsikeitimo sandoris neturi gauti X ir Y 399 00:16:23,560 --> 00:16:24,400 pradines reikšmes. 400 00:16:24,400 --> 00:16:26,392 Ką apsikeitimo get, tai mes reikalauti? 401 00:16:26,392 --> 00:16:27,100 Auditorija: kopijų. 402 00:16:27,100 --> 00:16:28,090 David J. Malan: Taigi jų kopijas. 403 00:16:28,090 --> 00:16:31,120 Taigi jis pasireiškia vienas ir du, jei Jums priminti pavyzdį iš paskutinį kartą, 404 00:16:31,120 --> 00:16:34,730 bet vieno ir dviejų kopija kad sėkmingai pavertė. 405 00:16:34,730 --> 00:16:38,550 Bet, deja, galų gale, tos vertės yra vis dar tas pats. 406 00:16:38,550 --> 00:16:41,880 Taigi, mes galime pamatyti, tai su mūsų naujas draugas, tikiuosi GDB, 407 00:16:41,880 --> 00:16:45,180 kad jūs arba TFS ir CA turi buvo nukreips jus link taip. 408 00:16:45,180 --> 00:16:51,210 >> Taigi ne apsikeitimo priminti atrodo like-- tegul atverti this-- atrodo taip. 409 00:16:51,210 --> 00:16:54,160 Mes inicializuoti x į vieną, y dvi dalis. 410 00:16:54,160 --> 00:16:55,620 Turėjo spausdinimo f s krūva. 411 00:16:55,620 --> 00:16:58,080 Bet tada, raktas skambutis čia buvo sukeisti, kuris 412 00:16:58,080 --> 00:17:00,260 yra būtent mus kodas tik pamačiau prieš akimirką. 413 00:17:00,260 --> 00:17:03,180 Kuris yra teisinga pirmoji žvilgsnis, bet funkciniu, 414 00:17:03,180 --> 00:17:06,800 ši programa neveikia, nes ji neturi nuolat apsikeitimo X ir Y. 415 00:17:06,800 --> 00:17:10,190 >> Taigi pažiūrėkime, tai, greitas šiltas čia su GDB, kad ./noswap. 416 00:17:10,190 --> 00:17:11,867 417 00:17:11,867 --> 00:17:15,200 Iš didžiulio informacijos krūva, kad Aš atsikratyti su kontrolės L dabar. 418 00:17:15,200 --> 00:17:17,516 Ir dabar, aš ruošiuosi eiti į priekį ir paleisti jį. 419 00:17:17,516 --> 00:17:19,349 Ir, deja, kad buvo ne tai, kad naudinga. 420 00:17:19,349 --> 00:17:22,355 Jis bėgo programą viduje tai programa, vadinama GDB, debugerem, 421 00:17:22,355 --> 00:17:23,730 bet jis neleido man baksnoti aplink. 422 00:17:23,730 --> 00:17:26,229 >> Taigi, kaip aš iš tikrųjų gali sustabdyti vykdymas viduje šią programą? 423 00:17:26,229 --> 00:17:27,410 424 00:17:27,410 --> 00:17:28,329 Taigi pertrauka. 425 00:17:28,329 --> 00:17:32,340 Ir aš galėtų nutraukti dėl bet eilutės numeris vienas, 10, 15. 426 00:17:32,340 --> 00:17:35,530 Bet aš taip pat galite sulaužyti simboliškai sakydamas pertraukos Main. 427 00:17:35,530 --> 00:17:38,980 Ir tai vyksta nustatyti pertraukos taškas, matyt, 16 pagrindinė linija. 428 00:17:38,980 --> 00:17:40,050 Ir kur yra linija, 16? 429 00:17:40,050 --> 00:17:42,960 Vykime iki kodas ir eiti į noswap. 430 00:17:42,960 --> 00:17:46,930 Ir iš tiesų, linija 16 yra Pats pirmas programoje. 431 00:17:46,930 --> 00:17:52,130 >> Taigi dabar, jei aš einu į priekį ir tipas paleisti šį kartą, "Enter", jis stabtelėjo. 432 00:17:52,130 --> 00:17:53,080 Taigi leiskite baksnoti aplink. 433 00:17:53,080 --> 00:17:55,716 Spausdinti būdai, ar kodėl x nulis? 434 00:17:55,716 --> 00:17:56,705 435 00:17:56,705 --> 00:17:57,830 Ir ignoruoti dolerio ženklas. 436 00:17:57,830 --> 00:17:59,725 Štai tik mėgėjas naudojimas programoje. 437 00:17:59,725 --> 00:18:00,780 438 00:18:00,780 --> 00:18:03,140 Kodėl x nulinis šiuo metu? 439 00:18:03,140 --> 00:18:03,640 Taip. 440 00:18:03,640 --> 00:18:07,061 >> PUBLIKA: Tai stabtelėjo tiesiai prieš linija 16, o ne iš tikrųjų on line 16 d. 441 00:18:07,061 --> 00:18:08,060 David J. Malan: Būtent. 442 00:18:08,060 --> 00:18:11,630 GDB, pagal nutylėjimą, buvo pristabdytas vykdymas prieš line 16 d. 443 00:18:11,630 --> 00:18:14,820 Taigi ji nebuvo įvykdyta, o tai tai x yra kai nežinoma vertę. 444 00:18:14,820 --> 00:18:17,150 Ir mes pasisekė, kad tai kažkas švarus kaip nulis. 445 00:18:17,150 --> 00:18:20,310 Taigi dabar, jei aš tipo šalia, dabar jis vykdomas 16. 446 00:18:20,310 --> 00:18:22,000 Jis manęs laukia vykdyti 17. 447 00:18:22,000 --> 00:18:23,400 Leiskite man eiti į priekį ir spausdinti x. 448 00:18:23,400 --> 00:18:24,094 Tai viena. 449 00:18:24,094 --> 00:18:25,260 Leiskite man eiti į priekį ir spausdinimo m. 450 00:18:25,260 --> 00:18:26,176 Ką turėčiau pamatyti dabar? 451 00:18:26,176 --> 00:18:27,660 452 00:18:27,660 --> 00:18:28,560 >> PUBLIKA: [nesigirdi] 453 00:18:28,560 --> 00:18:29,165 >> David J. Malan: tiek garsiau. 454 00:18:29,165 --> 00:18:30,040 >> PUBLIKA: [nesigirdi] 455 00:18:30,040 --> 00:18:30,537 456 00:18:30,537 --> 00:18:32,120 David J. Malan: Ne visai sutarimas. 457 00:18:32,120 --> 00:18:34,760 Taip taip, mes matome tam tikrą šiukšlių vertę. 458 00:18:34,760 --> 00:18:37,862 Dabar, y 134514064 nėra. 459 00:18:37,862 --> 00:18:39,320 Na, tai tik keletas šiukšlių vertė. 460 00:18:39,320 --> 00:18:41,350 Mano programa naudoja RAM skirtingiems tikslams. 461 00:18:41,350 --> 00:18:42,350 Yra kitas funkcijas. 462 00:18:42,350 --> 00:18:44,040 Kiti žmonės rašė viduje mano kompiuteryje. 463 00:18:44,040 --> 00:18:46,789 Taigi tie bitai buvo naudojami kitas vertybes, ir ką aš matau 464 00:18:46,789 --> 00:18:49,470 yra kai kurių likučiai prieš naudojimą toje atmintyje. 465 00:18:49,470 --> 00:18:53,350 >> Taigi ne big deal, nes kuo greičiau kaip aš tipo šalia ir tada spausdinti y, 466 00:18:53,350 --> 00:18:55,640 tai inicializuoti vertė, kad aš noriu. 467 00:18:55,640 --> 00:18:57,400 Taigi dabar eikime į priekį šiek tiek greičiau. 468 00:18:57,400 --> 00:18:58,540 N šalia. 469 00:18:58,540 --> 00:18:59,570 Darom vėl. 470 00:18:59,570 --> 00:19:00,530 Darom vėl. 471 00:19:00,530 --> 00:19:02,404 Bet aš nenoriu, kad pasiektų tai čia, nes jei I 472 00:19:02,404 --> 00:19:05,110 norite pamatyti, kas vyksta viduje apsikeitimo, kas komanda? 473 00:19:05,110 --> 00:19:05,520 >> PUBLIKA: žingsniai. 474 00:19:05,520 --> 00:19:06,436 >> David J. Malan: žingsniai. 475 00:19:06,436 --> 00:19:09,800 Taigi, tai žingsniai mane į funkcija, o ne per jį. 476 00:19:09,800 --> 00:19:12,270 O dabar, tai šiek tiek paslaptingas sąžiningai, bet tai tik 477 00:19:12,270 --> 00:19:14,581 pasakojo, aš 33 eilutėje dabar. 478 00:19:14,581 --> 00:19:15,580 Ir tegul tai padaryti dar kartą. 479 00:19:15,580 --> 00:19:16,080 Spausdinti temp. 480 00:19:16,080 --> 00:19:17,129 481 00:19:17,129 --> 00:19:20,170 Šiukšlių vertė neigiama šį kartą, bet tai tik dar šiukšlių vertė. 482 00:19:20,170 --> 00:19:22,810 Taigi darykime kitą, spausdinimo temp. 483 00:19:22,810 --> 00:19:27,130 Tai inicializuoti 1, kuris buvo x reikšmė, taip pat žinomas kaip. 484 00:19:27,130 --> 00:19:29,110 >> Dabar, kur yra mūsų ir X tiekiamos iš? 485 00:19:29,110 --> 00:19:32,510 Na, pranešimas pagrindinis, mes vadinamas šių vertybių x ir y. 486 00:19:32,510 --> 00:19:34,740 Mes tada praėjo juos sukeisti taip. 487 00:19:34,740 --> 00:19:37,010 X atėjo pirmas, kablelis m. 488 00:19:37,010 --> 00:19:40,020 Ir tada, apsikeitimo galėtų juos vadinti x ir y. 489 00:19:40,020 --> 00:19:42,630 Tačiau dėl aiškumo, tai vadindamas juos ir b. 490 00:19:42,630 --> 00:19:45,970 Tačiau a ir b yra dabar bus kopijos X ir Y atitinkamai. 491 00:19:45,970 --> 00:19:50,660 >> Taigi, jei aš einu atgal į GDB temp dabar yra viena ir dabar yra viena. 492 00:19:50,660 --> 00:19:56,130 Bet jei man daryti toliau, o dabar tai padaryti spausdinti , jau persikėlė per. 493 00:19:56,130 --> 00:20:00,030 Pienas buvo pilamas į buvusio Apelsinų sultys yra stiklas, arba atvirkščiai. 494 00:20:00,030 --> 00:20:04,750 >> Ir jei man daryti toliau vėl, ir dabar jei aš atsispausdinti kaip normalumas patikrinti, 495 00:20:04,750 --> 00:20:07,687 yra dar du, o b yra dabar vienas. 496 00:20:07,687 --> 00:20:08,770 Atvirai kalbant, jis vis dar ten. 497 00:20:08,770 --> 00:20:10,670 Man nerūpi, ką temperatūra yra. 498 00:20:10,670 --> 00:20:16,850 Bet kaip tik dabar aš tipo, tarkim, toliau grįžti, dabar aš pabaigoje 499 00:20:16,850 --> 00:20:17,480 programa. 500 00:20:17,480 --> 00:20:20,730 Ir, deja, čia x yra dar viena ir y yra dar du. 501 00:20:20,730 --> 00:20:22,272 >> Taigi, kas buvo iš GDB ten įrankis? 502 00:20:22,272 --> 00:20:23,980 Tai nepadėjo man nustatyti problema per se, 503 00:20:23,980 --> 00:20:26,265 tačiau tikiuosi man padėti jį suprasti suvokiant 504 00:20:26,265 --> 00:20:30,000 kad taip, mano logika yra teisinga, tačiau mano kodas nėra galiausiai 505 00:20:30,000 --> 00:20:31,450 nuolatinis poveikis. 506 00:20:31,450 --> 00:20:34,570 Štai problema mes vyksta dabar išspręsti šiandien. 507 00:20:34,570 --> 00:20:37,870 >> Bet tegul ten būdu tai. 508 00:20:37,870 --> 00:20:39,230 Styginių yra melas. 509 00:20:39,230 --> 00:20:41,860 Ji taip pat nėra duomenų tipas kad egzistuoja C. Tai 510 00:20:41,860 --> 00:20:44,750 buvo kai sinonimas laikas kažkas, 511 00:20:44,750 --> 00:20:47,300 ir mes galime matyti, kad taip. 512 00:20:47,300 --> 00:20:53,282 >> Leiskite man eiti į priekį ir atverti Programa vadinama palyginti-0. 513 00:20:53,282 --> 00:20:56,240 Ir užuot įveskite šį vieną iš, mes pradėsime vaikščioti per kodą 514 00:20:56,240 --> 00:20:58,040 Aš jau rašė, bet tai tik keletas eilučių. 515 00:20:58,040 --> 00:20:59,570 Taigi tai yra palyginti-0. 516 00:20:59,570 --> 00:21:02,380 Ir aš pirmas dalykas, darau yra gauti teksto eilutę. 517 00:21:02,380 --> 00:21:05,610 >> Tačiau pastebėti, ką aš daro pirmą kartą. 518 00:21:05,610 --> 00:21:07,910 Kuo skiriasi aiškiai apie linijos 21? 519 00:21:07,910 --> 00:21:10,020 520 00:21:10,020 --> 00:21:11,402 Tiesą sakant, palauk. 521 00:21:11,402 --> 00:21:12,110 Tai kopija du. 522 00:21:12,110 --> 00:21:13,568 Tai net ne teisę programa. 523 00:21:13,568 --> 00:21:14,780 Gerai, spoileris perspėjimas. 524 00:21:14,780 --> 00:21:16,890 Gerai, kad tai nesvarbu. 525 00:21:16,890 --> 00:21:18,520 Štai į būsimą klausimą. 526 00:21:18,520 --> 00:21:21,450 >> Čia yra palyginti-0, ir aš apie gauti teksto eilutę. 527 00:21:21,450 --> 00:21:22,435 Programos daug paprastesnis. 528 00:21:22,435 --> 00:21:23,560 Taigi, tai yra paprasta. 529 00:21:23,560 --> 00:21:28,070 Tai lyg Savaitės One Savaitės Dviejų dalykų metu. STRING s = GetString. 530 00:21:28,070 --> 00:21:29,700 Dabar, aš pasakyti, kad tai vėl žemyn čia. 531 00:21:29,700 --> 00:21:31,830 styginių t = GetString. 532 00:21:31,830 --> 00:21:35,300 Ir tada, paskutinis dalykas šiame programa, kaip rodo jos pavadinimas, 533 00:21:35,300 --> 00:21:37,090 yra aš ruošiuosi pabandyti juos palyginti. 534 00:21:37,090 --> 00:21:40,709 >> Taigi, jei s, pirmą eilutę, lygus = T, tada aš tikiu, 535 00:21:40,709 --> 00:21:42,250 ketinate pasakyti rašote tą patį. 536 00:21:42,250 --> 00:21:44,291 Kita, aš ruošiuosi pasakyti įvedate skirtingus dalykus. 537 00:21:44,291 --> 00:21:45,880 Taigi leiskite sudaryti ir vykdyti šią programą. 538 00:21:45,880 --> 00:21:48,481 Todėl įsitikinkite, palyginti nuliui. 539 00:21:48,481 --> 00:21:48,980 Atrodo gerai. 540 00:21:48,980 --> 00:21:50,490 Nėra sudarymo klaidos. 541 00:21:50,490 --> 00:21:52,386 >> Leiskite man eiti į priekį dabar ir įveskite ./compare-0. 542 00:21:52,386 --> 00:21:55,230 543 00:21:55,230 --> 00:21:59,220 Leiskite man eiti į priekį ir ką nors pasakyti : Daven ir kažkas: Rob. 544 00:21:59,220 --> 00:22:00,450 Ir aš tipo skirtingus dalykus. 545 00:22:00,450 --> 00:22:01,250 Iki šiol taip gerai. 546 00:22:01,250 --> 00:22:02,680 Programa atrodo teisinga. 547 00:22:02,680 --> 00:22:03,880 >> Bet tegul paleisti jį dar kartą. 548 00:22:03,880 --> 00:22:05,800 Pasakyk ką nors: Gabe. 549 00:22:05,800 --> 00:22:07,140 Pasakyk ką nors: Gabe. 550 00:22:07,140 --> 00:22:08,520 551 00:22:08,520 --> 00:22:09,020 Viskas gerai. 552 00:22:09,020 --> 00:22:10,851 Gal aš paspauskite tarpo ar kažkas madingas. 553 00:22:10,851 --> 00:22:11,600 Darom vėl. 554 00:22:11,600 --> 00:22:13,020 Taigi Zamyla. 555 00:22:13,020 --> 00:22:13,970 556 00:22:13,970 --> 00:22:14,470 Zamyla. 557 00:22:14,470 --> 00:22:15,740 558 00:22:15,740 --> 00:22:17,330 Skirtingi dalykai. 559 00:22:17,330 --> 00:22:19,430 Taigi, kas vyksta? 560 00:22:19,430 --> 00:22:23,200 >> Taigi, mes turime šiuos du linijos kodas, GetString vadinamas du kartus. 561 00:22:23,200 --> 00:22:25,760 Ir tada, aš tiesiog bando lyginti s ir t. 562 00:22:25,760 --> 00:22:28,370 Bet kas iš tikrųjų tada vyksta? 563 00:22:28,370 --> 00:22:31,180 Na, mano rašysena yra apie mėsininkas šį pavyzdį šiek tiek. 564 00:22:31,180 --> 00:22:34,630 Ir tegul iš tikrųjų mesti tai sudaro daugiau nei čia, taip pat. 565 00:22:34,630 --> 00:22:37,390 566 00:22:37,390 --> 00:22:45,712 >> Taigi, mes turime tokia eilutė STRING s = GetString. 567 00:22:45,712 --> 00:22:48,295 Taigi, kad tiesiog pirmas Įdomu linija nuo šios programos. 568 00:22:48,295 --> 00:22:49,920 569 00:22:49,920 --> 00:22:52,974 Bet kas visą šį laiką buvo vyksta po gaubtu? 570 00:22:52,974 --> 00:22:55,890 Na, kairėje pusėje yra eilutė, kuris yra kai kintamojo tipas, 571 00:22:55,890 --> 00:22:56,785 ir tai vadinama s. 572 00:22:56,785 --> 00:23:00,019 Taigi aš žinau, kad tai yra naudojant atminties, arba RAM į savo kompiuterį kažkaip. 573 00:23:00,019 --> 00:23:02,060 Taigi, aš ruošiuosi abstrakčiai atkreipti, kad aikštėje. 574 00:23:02,060 --> 00:23:04,820 32 bitai, it turns out, tačiau daugiau apie tai ateityje. 575 00:23:04,820 --> 00:23:06,410 Ir tada, kas vyksta per čia? 576 00:23:06,410 --> 00:23:08,700 >> Na, GetString akivaizdžiai gauna iš naudotojo eilutę. 577 00:23:08,700 --> 00:23:11,360 Ir GetString gavo Zamyla arba Gabe arba Daven. 578 00:23:11,360 --> 00:23:14,640 Taigi leiskite pasirinkti pirmą iš tų, kurie buvo Daven. 579 00:23:14,640 --> 00:23:19,174 Taigi efektyviai, ką GetString gavo man toje pirmoje byloje buvo D--v-e-n. 580 00:23:19,174 --> 00:23:22,690 581 00:23:22,690 --> 00:23:25,045 Ir tada, ką dar darė tai duok man slapta? 582 00:23:25,045 --> 00:23:25,920 PUBLIKA: [nesigirdi] 583 00:23:25,920 --> 00:23:28,720 David J. Malan: Taip, / 0 arba NULL simbolių. 584 00:23:28,720 --> 00:23:30,550 Taigi ji veiksmingai davė man eilutę. 585 00:23:30,550 --> 00:23:34,550 Bet mes jau žinome iš ankstesnių atrodo, kad eilutė yra tik masyvas 586 00:23:34,550 --> 00:23:37,895 simbolių, ir tai nutraukta šis specialus sarginio charakterio bruožų / 0. 587 00:23:37,895 --> 00:23:39,220 588 00:23:39,220 --> 00:23:42,310 >> Bet jei tai tiesa ir tai yra kvadratinis, 589 00:23:42,310 --> 00:23:44,160 tai aiškiai daug didesni stačiakampis. 590 00:23:44,160 --> 00:23:46,830 Ir iš tiesų, tai yra, Galiu reikalauti, tik 32 bitai. 591 00:23:46,830 --> 00:23:49,500 Ir tai yra aiškiai daugiau nei 32 bitai, nes tai tikriausiai 592 00:23:49,500 --> 00:23:51,583 aštuonių plius aštuonių plius aštuonių plius aštuonių plius aštuonių, 593 00:23:51,583 --> 00:23:53,320 tik todėl, kad baitų ASCII. 594 00:23:53,320 --> 00:23:57,030 Kaip gi mes einame, kad tilptų Daven į šį mažai langelyje čia? 595 00:23:57,030 --> 00:23:59,880 >> Na, kas yra GetString tikrųjų daro? 596 00:23:59,880 --> 00:24:03,680 Na, tai tinklelis čia atstovauja mano kompiuterio atmintyje arba atminties. 597 00:24:03,680 --> 00:24:07,564 Taigi leiskite savavališkai pasakyti, kad jei kiekvienas iš jų atstovauja baitas, 598 00:24:07,564 --> 00:24:09,730 tada mes galime galvoti apie kiekvieną baitų kaip turintys adresą, 599 00:24:09,730 --> 00:24:13,830 kaip 33 Oxford Street, arba 34 Oxford Street, arba 35 Oxford Street. 600 00:24:13,830 --> 00:24:16,700 >> Taigi tiesiog kaip namų turi adresai ir pastatai turi adresus, 601 00:24:16,700 --> 00:24:19,810 taip daryti atskirus baitų atmintis turi adresus ar numerius 602 00:24:19,810 --> 00:24:21,042 kad identifikuoti juos. 603 00:24:21,042 --> 00:24:22,000 Dabar, tai yra savavališkas. 604 00:24:22,000 --> 00:24:25,370 Bet keep it simple, aš ruošiuosi naudoti šešioliktainis tik pagal susitarimą, 605 00:24:25,370 --> 00:24:28,200 bet 0x reiškia ne ką kitą, kaip "tai šešioliktainis." 606 00:24:28,200 --> 00:24:31,030 ir aš ruošiuosi teigia, kad "D" baigiasi ne Byte One atminties. 607 00:24:31,030 --> 00:24:34,210 >> Aš nieko dar vyksta į atminties, todėl Daven gavo pirmąją vietą 608 00:24:34,210 --> 00:24:35,509 ne Byte One. 609 00:24:35,509 --> 00:24:36,800 Tai, tada, tai bus 0x2. 610 00:24:36,800 --> 00:24:37,831 611 00:24:37,831 --> 00:24:38,705 Tai va 0x3. 612 00:24:38,705 --> 00:24:39,840 613 00:24:39,840 --> 00:24:41,800 Tai bus 0x4. 614 00:24:41,800 --> 00:24:43,025 Tai va 0x5. 615 00:24:43,025 --> 00:24:44,025 Tai bus 0x6. 616 00:24:44,025 --> 00:24:45,560 617 00:24:45,560 --> 00:24:48,290 >> Bet kai jums pradėti galvoti apie ką kompiuteris daro 618 00:24:48,290 --> 00:24:50,710 po gaubtu, galite pradėti daryti išvadą, 619 00:24:50,710 --> 00:24:54,960 kaip jums, prieš keletą metų, būtų įgyvendino C savaime. 620 00:24:54,960 --> 00:24:58,360 Kas yra GetString tikriausiai returning-- nes juo 621 00:24:58,360 --> 00:25:00,946 jaučiasi, kad tai nėra grįžti Daven per se, 622 00:25:00,946 --> 00:25:03,320 nes jis tikrai nesiruošia kad tilptų į šį mažai box-- 623 00:25:03,320 --> 00:25:05,090 Taigi, kas yra GetString tikriausiai grįžta? 624 00:25:05,090 --> 00:25:07,958 625 00:25:07,958 --> 00:25:08,920 >> PUBLIKA: [nesigirdi] 626 00:25:08,920 --> 00:25:10,540 >> David J. Malan: iš Daven vietą. 627 00:25:10,540 --> 00:25:12,770 Ir tai buvo tai bet kada, nes vieną savaitę. 628 00:25:12,770 --> 00:25:16,150 Kas GetString tikrai grąžinant nėra styginių per se. 629 00:25:16,150 --> 00:25:17,780 Štai vienas iš mažų baltų melo. 630 00:25:17,780 --> 00:25:22,520 Tai grąžinant adresą styginių atmintyje, unikali adresas. 631 00:25:22,520 --> 00:25:24,820 Daven gyvena 33 Oxford Street. 632 00:25:24,820 --> 00:25:29,310 Bet daugiau glaustai, Gavin gyvena ne 0x1, Adresas numeris vienas. 633 00:25:29,310 --> 00:25:32,280 >> Taigi, ką gauna įdėti į šį mažai dėžutė tada, kad būtų aišku, 634 00:25:32,280 --> 00:25:35,930 yra tik tos eilutės adresas. 635 00:25:35,930 --> 00:25:38,110 Taigi visa tai laikas, tai buvo vyksta. 636 00:25:38,110 --> 00:25:41,650 Bet ką tai užsimenama dabar yra tai, kad jei visi s 637 00:25:41,650 --> 00:25:44,710 yra viduje, skaičių, kuris yra jus sustabdyti, programuotojas, 638 00:25:44,710 --> 00:25:47,970 iš apkrautas numerį kintamosios ir tiesiog šokinėja 639 00:25:47,970 --> 00:25:49,080 tos atminties riekė? 640 00:25:49,080 --> 00:25:51,320 Ir iš tiesų, pamatysime tai grėsmė kitą kartą. 641 00:25:51,320 --> 00:25:53,500 >> Bet dabar, tai jaučiasi nepakankami. 642 00:25:53,500 --> 00:25:55,630 Jei aš sakau, get me eilutę, galite duoti man Daven. 643 00:25:55,630 --> 00:25:57,230 Bet jūs neturite iš tikrųjų man Daven. 644 00:25:57,230 --> 00:25:59,310 Viskas, ką jums duoti man yra Daven adresas. 645 00:25:59,310 --> 00:26:04,310 Kaip man tada þinotu kur Daven prasideda ir ends-- 646 00:26:04,310 --> 00:26:07,140 istorija darosi weird-- kur Daven prasideda ir baigiasi, 647 00:26:07,140 --> 00:26:10,435 ir tada kitas styginių atmintyje prasideda? 648 00:26:10,435 --> 00:26:11,520 649 00:26:11,520 --> 00:26:13,620 >> Na, jei jūs atiduodami man iš Daven pradžia 650 00:26:13,620 --> 00:26:17,230 iš esmės, kaip aš žinau, kur jo vardo pabaiga? 651 00:26:17,230 --> 00:26:20,550 Tai specialus null charakteris, kuris yra dar svarbiau dabar 652 00:26:20,550 --> 00:26:23,040 jei stygos apačioje dangtis yra tiesiog nustatyti 653 00:26:23,040 --> 00:26:25,820 unikaliai savo vietą atmintyje. 654 00:26:25,820 --> 00:26:28,130 Taigi visą laiką, tai kas jau vyksta. 655 00:26:28,130 --> 00:26:32,470 >> Taigi, kai mes žiūrime dabar kodas čia paaiškinti 656 00:26:32,470 --> 00:26:35,790 Jei norite suderinti 26 klaidą. 657 00:26:35,790 --> 00:26:39,560 Kodėl Zamyla ir Zamyla skiriasi? 658 00:26:39,560 --> 00:26:41,330 Kodėl Gabe ir Gabe skiriasi? 659 00:26:41,330 --> 00:26:42,154 Taip, iš nugaros. 660 00:26:42,154 --> 00:26:43,390 >> PUBLIKA: jie turi skirtingus adresus. 661 00:26:43,390 --> 00:26:45,931 >> David J. Malan: Tiesiog todėl, kad jie turi skirtingus adresus. 662 00:26:45,931 --> 00:26:48,820 Nes kai skambinate GetString vėl, o aš tai greitai čia 663 00:26:48,820 --> 00:26:52,870 jei tai yra antroji eilutė, styginių t, kaip aš toje programoje, 664 00:26:52,870 --> 00:26:55,030 lygi kitą skambutį GetString. 665 00:26:55,030 --> 00:26:56,370 666 00:26:56,370 --> 00:26:58,670 Kitą kartą aš vadinu GetString, aš ruošiuosi 667 00:26:58,670 --> 00:27:00,190 gauti kitą riekė atminties. 668 00:27:00,190 --> 00:27:02,220 >> GetString leidžiama paklausti operacinės 669 00:27:02,220 --> 00:27:03,800 sistema vis daugiau ir daugiau atminties. 670 00:27:03,800 --> 00:27:07,894 Jis nesiruošia pakartotinai tas pats šešių baitų kiekvieną kartą. 671 00:27:07,894 --> 00:27:09,810 Tai ketiname gauti naują riekė atminties, kuri 672 00:27:09,810 --> 00:27:12,780 tai t ketina gauti kai kurie kiti vertė čia. 673 00:27:12,780 --> 00:27:15,380 >> Taigi, kai aš s lygi = t, jūs ne lyginant 674 00:27:15,380 --> 00:27:17,880 D prieš tai ir prieš tai ir V prieš tai. 675 00:27:17,880 --> 00:27:19,588 Jūs lyginant tai prieš, o tai 676 00:27:19,588 --> 00:27:24,020 atvirai yra gana useful-- useless-- yra gana nenaudinga, nes, kas tikrai 677 00:27:24,020 --> 00:27:25,830 cares, kai stygos yra atminties? 678 00:27:25,830 --> 00:27:26,850 >> Ir iš tiesų, mes turime ne. 679 00:27:26,850 --> 00:27:28,980 Ir mes neketiname pradėti ypač rūpintis. 680 00:27:28,980 --> 00:27:34,180 Tik tiek, kad klaidų gali atsirasti ir grėsmes saugumui gali kilti valią 681 00:27:34,180 --> 00:27:36,100 mes iš tikrųjų pradėti rūpintis tai. 682 00:27:36,100 --> 00:27:37,230 Taigi leiskite išspręsti šią problemą. 683 00:27:37,230 --> 00:27:39,650 Pasirodo, ją išspręsti super tiesiog. 684 00:27:39,650 --> 00:27:42,600 >> Ir tegul iš tikrųjų, prieš I rodo, kad vėl, kas būtų 685 00:27:42,600 --> 00:27:47,170 tu darytum, jei į CS50 klasės, ir jums teko įgyvendinti 686 00:27:47,170 --> 00:27:48,600 palyginimas su dviejų eilučių. 687 00:27:48,600 --> 00:27:51,440 Jūs akivaizdžiai negali tiesiog naudokite s lygi = k. 688 00:27:51,440 --> 00:27:54,090 Bet tik logiškai, kaip jūs palyginkite šį eilutę 689 00:27:54,090 --> 00:27:56,370 prieš šią eilutę, naudojant C kodą? 690 00:27:56,370 --> 00:27:56,880 Taip. 691 00:27:56,880 --> 00:27:58,780 >> PUBLIKA: Just do for ciklas [nesigirdi] 692 00:27:58,780 --> 00:28:00,670 693 00:28:00,670 --> 00:28:01,670 David J. Malan: Perfect. 694 00:28:01,670 --> 00:28:02,900 PUBLIKA: [nesigirdi] 695 00:28:02,900 --> 00:28:03,310 David J. Malan: Taip. 696 00:28:03,310 --> 00:28:05,390 Tiesiog naudokite už linijos arba o linijos ar whatever. 697 00:28:05,390 --> 00:28:08,710 Bet tiesiog taikyti pagrindinę idėją, kad jei tai atminties ar masyvo riekė 698 00:28:08,710 --> 00:28:11,590 ir tai, pakartoti per tiek tuo pačiu metu. 699 00:28:11,590 --> 00:28:12,960 Ir tik palyginti raides. 700 00:28:12,960 --> 00:28:14,260 >> Ir jūs turite būti tiek atsargūs, nes jums 701 00:28:14,260 --> 00:28:16,247 nenoriu vieną pirštą prasiveržti pro kitas 702 00:28:16,247 --> 00:28:18,080 nes viena eilutė yra ilgiau nei kiti. 703 00:28:18,080 --> 00:28:21,380 Taigi jūs ketinate norite patikrinti šis specialus vertė pabaigoje, null. 704 00:28:21,380 --> 00:28:24,017 Bet tai tikrai yra pabaigoje, taip paprasta, kaip kad. 705 00:28:24,017 --> 00:28:26,100 Ir tiesą sakant, mums nereikia išradinėti tą ratą. 706 00:28:26,100 --> 00:28:27,960 Štai Versija Du. 707 00:28:27,960 --> 00:28:32,910 Ir tai, ką aš ruošiuosi pasakyti, kad čia yra vietoj lyginant s lygi = k, 708 00:28:32,910 --> 00:28:38,964 Aš vietoj ketinate pasakyti, jei eilutė palyginimas ai kableliais t lygi = 0. 709 00:28:38,964 --> 00:28:40,130 Dabar, kas yra eilutė palyginti? 710 00:28:40,130 --> 00:28:43,046 >> Pasirodo, tai funkcija, kuri ateina su C, kurio gyvenimo tikslas 711 00:28:43,046 --> 00:28:44,650 yra palyginti dvi eilutes. 712 00:28:44,650 --> 00:28:48,300 Ir maišykite lyginti, jei mes skaityti jos vyras puslapis ar dokumentus arba CS50 713 00:28:48,300 --> 00:28:50,630 nuoroda, jis bus tiesiog pasakyti, kad sąmyšį 714 00:28:50,630 --> 00:28:55,730 palyginti grąžą arba neigiamas numeris arba teigiamas skaičius arba nulis, 715 00:28:55,730 --> 00:28:57,660 kur nulis reiškia, kad jie lygūs. 716 00:28:57,660 --> 00:28:58,570 >> Taigi tik spėjimas. 717 00:28:58,570 --> 00:29:00,390 Ką jis galėtų reikšti, jei maišykite palyginti grąžą 718 00:29:00,390 --> 00:29:02,110 neigiama reikšmė arba teigiamas vertė? 719 00:29:02,110 --> 00:29:02,785 720 00:29:02,785 --> 00:29:04,285 PUBLIKA: Didesnis ar mažesnis nei. 721 00:29:04,285 --> 00:29:05,570 David J. Malan: Taip, didesnis ar mažesnis nei. 722 00:29:05,570 --> 00:29:08,640 Taigi, jei norite rūšiuoti visumą krūva stygos į dictionary-- 723 00:29:08,640 --> 00:29:12,975 kaip mes galų gale žemyn road-- puikus funkcija naudoti potencialiai 724 00:29:12,975 --> 00:29:15,850 , nes jis ketina daryti, kad palyginimas stygos už jus ir pasakys 725 00:29:15,850 --> 00:29:20,060 jūs tikrai yra prieš b, arba daro b ateiti prieš abėcėlę. 726 00:29:20,060 --> 00:29:21,490 Mes galime padaryti būtent tai. 727 00:29:21,490 --> 00:29:23,620 >> Ir atkreipkite dėmesį aš vienas kitą dalykas šiame pavyzdyje. 728 00:29:23,620 --> 00:29:26,870 Kas dar pasikeitė didesnis iki šios pagrindinės funkcijos? 729 00:29:26,870 --> 00:29:28,500 730 00:29:28,500 --> 00:29:29,350 Char *. 731 00:29:29,350 --> 00:29:31,150 Ir tai yra tai, kad kita balta melas. 732 00:29:31,150 --> 00:29:33,750 Visa tai laikas, kai jūs buvo raštu eilutę, 733 00:29:33,750 --> 00:29:38,350 mes buvo slapta perrašyti Styga kaip char *, kad Zaszczękać tikrųjų 734 00:29:38,350 --> 00:29:39,270 supranta jus. 735 00:29:39,270 --> 00:29:42,450 >> Kitaip tariant, CS50.h ir kaip mes galų gale pamatyti, 736 00:29:42,450 --> 00:29:45,950 mes padarė sinonimas vadinamas eilutę tai tas pats, kaip char *. 737 00:29:45,950 --> 00:29:49,910 Ir dabar, tik žinau, kad *, Šiame kontekste, bent jau 738 00:29:49,910 --> 00:29:51,286 reiškia adresą. 739 00:29:51,286 --> 00:29:52,210 >> KĄ adresas? 740 00:29:52,210 --> 00:29:56,390 Na, tai, kad aš sakiau char *, o ne int * ar plūduriuoti * 741 00:29:56,390 --> 00:30:00,820 reiškia, kad char * yra iš char adresas. 742 00:30:00,820 --> 00:30:06,770 Taigi ši maža dėžutė čia, dar žinomas kaip eilutė, tai tikrai tipo char *, 743 00:30:06,770 --> 00:30:10,490 kuris yra tiesiog išgalvotas būdas pasakyti, šiame langelyje bus eiti adresą. 744 00:30:10,490 --> 00:30:12,430 Ir ką, kad adresas kreiptis į? 745 00:30:12,430 --> 00:30:13,780 Matyt, char. 746 00:30:13,780 --> 00:30:16,410 >> Bet mes galime visiškai turi int * ir kitus dalykus. 747 00:30:16,410 --> 00:30:20,790 Bet dabar, char * yra tikrai dauguma paprastas ir vienas iš interesų. 748 00:30:20,790 --> 00:30:23,310 Taigi ši problema vyksta pakilti, nors vėl. 749 00:30:23,310 --> 00:30:24,830 >> Tarkime, aš atverti šią programą. 750 00:30:24,830 --> 00:30:27,670 Leiskite pamatyti, jei dabar mes galime prognozuoti kas yra negerai su šiuo kodu. 751 00:30:27,670 --> 00:30:31,140 Taigi šioje programoje, kopijavimo 0, aš ketina eiti į priekį ir vėl skambinti 752 00:30:31,140 --> 00:30:34,190 GetString ir saugoti s vertę. 753 00:30:34,190 --> 00:30:38,800 >> Ir tada, kodėl aš darau tai, kaip priminimą savaites praeityje? 754 00:30:38,800 --> 00:30:40,960 Mes padarėme pasakyti, kad GetString kartais grįžta null. 755 00:30:40,960 --> 00:30:42,793 Ką tai reiškia, jei GetString atkreipia null? 756 00:30:42,793 --> 00:30:45,040 757 00:30:45,040 --> 00:30:46,034 Kažkas negerai. 758 00:30:46,034 --> 00:30:48,950 Tai tikriausiai reiškia eilutė yra pernelyg didelis, kompiuterio iš atminties. 759 00:30:48,950 --> 00:30:51,724 Taip atsitinka, super, super, super retai, bet tai gali atsitikti. 760 00:30:51,724 --> 00:30:53,890 Mes norime patikrinti už jį, ir tai viskas, ką mes darome. 761 00:30:53,890 --> 00:30:57,910 >> Nes mes matome dabar, jei jūs neturite pradėti tikrinti nuolat dalykų 762 00:30:57,910 --> 00:31:00,870 kaip nulis, jums gali realiai pradėti eiti 763 00:31:00,870 --> 00:31:03,106 į adresų atminties, kuri yra negaliojanti. 764 00:31:03,106 --> 00:31:05,980 Ir jūs ketinate pradėti paskatinti vis daugiau ir daugiau segmentavimo klaidų. 765 00:31:05,980 --> 00:31:08,360 Arba Mac arba PC, tiesiog sukelia kompiuterio pakabinti 766 00:31:08,360 --> 00:31:10,340 arba programa, skirta užšaldyti, potencialiai. 767 00:31:10,340 --> 00:31:14,930 >> Taigi dabar galiu reikalauti iš copy-0.c, kad I einu kopijuoti šiuos stygos būdu 768 00:31:14,930 --> 00:31:15,685 Laidinės 28. 769 00:31:15,685 --> 00:31:16,850 770 00:31:16,850 --> 00:31:18,750 Ir tada, aš ruošiuosi reikalauti apačioje 771 00:31:18,750 --> 00:31:21,430 čia, kad aš ruošiuosi pakeisti vieną iš jų. 772 00:31:21,430 --> 00:31:22,330 >> Taigi pastebėti tai. 773 00:31:22,330 --> 00:31:24,370 Aš paskambinę mūsų senas draugas strlen. 774 00:31:24,370 --> 00:31:28,960 Ir tik paaiškinti anglų kalba ką ši eilutė 34 daro? 775 00:31:28,960 --> 00:31:32,480 Ką t laikiklį 0 atstovauti kairėje. 776 00:31:32,480 --> 00:31:32,980 Taip. 777 00:31:32,980 --> 00:31:34,339 >> PUBLIKA: pirmasis simbolis t? 778 00:31:34,339 --> 00:31:35,880 David J. Malan: pirmasis simbolis t. 779 00:31:35,880 --> 00:31:36,379 Štai ir viskas. 780 00:31:36,379 --> 00:31:40,024 Pirmas personažas t noriu priskirti didžiąją versiją 781 00:31:40,024 --> 00:31:41,190 pirmojo simbolio t. 782 00:31:41,190 --> 00:31:43,200 Taigi, tai yra kapitalizuojant pirmoji raidė. 783 00:31:43,200 --> 00:31:46,340 Ir tada, aš labai paskutinis dalykas daryti Šioje programoje yra galiu reikalauti čia 784 00:31:46,340 --> 00:31:50,340 originalus, S, ir čia kopija, t. 785 00:31:50,340 --> 00:31:54,610 >> Tačiau remiantis istorija, mes tiesiog papasakojo apie tai, kas iš tikrųjų yra stygos, 786 00:31:54,610 --> 00:31:57,520 kas yra linija, 28 tikrai daro, ir kas yra 787 00:31:57,520 --> 00:31:59,405 todėl klaidų vyksta būti ekrane? 788 00:31:59,405 --> 00:32:01,300 789 00:32:01,300 --> 00:32:03,500 >> Taigi, pirmiausia, pirmasis klausimas, 28. 790 00:32:03,500 --> 00:32:09,040 Kas yra eilutė t = s tikrai darai? 791 00:32:09,040 --> 00:32:16,430 Jei mes turime kairėje rankoje pusė čia seka t = s; 792 00:32:16,430 --> 00:32:19,400 kad man suteikia vieną langelį Čia ir vienas langelis čia. 793 00:32:19,400 --> 00:32:25,530 Ir manau, kad šis adresas yra 0x, tarkim, 50 ir šį kartą, savavališkai. 794 00:32:25,530 --> 00:32:28,847 Ką styginių t = S padaryti po gaubtu? 795 00:32:28,847 --> 00:32:30,340 >> PUBLIKA: [nesigirdi] 796 00:32:30,340 --> 00:32:34,100 >> David J. Malan: Tai saugo atmintį spręsti ten, kad 0x50 eina ten. 797 00:32:34,100 --> 00:32:37,980 Taigi, jei dabar aš einu į pirmą charakteris t ir didžiąsias jį, 798 00:32:37,980 --> 00:32:39,535 ką aš efektyviai daro s? 799 00:32:39,535 --> 00:32:41,300 800 00:32:41,300 --> 00:32:43,450 Aš tikrai daro tą patį, tiesa? 801 00:32:43,450 --> 00:32:47,680 Nes jei Adresas 0x50-- ir tiesiog aš neturiu daug vietos ant lentos čia 802 00:32:47,680 --> 00:32:51,750 bet manome, kad tai yra 0x50 žemyn čia kažkur mano kompiuterio atmintyje. 803 00:32:51,750 --> 00:32:55,825 >> Ir aš, pavyzdžiui, gabe mažosiomis čia, kaip šis. 804 00:32:55,825 --> 00:32:57,120 805 00:32:57,120 --> 00:33:01,980 Ir sakiau t laikiklis 0 pasireiškia kapitalizuojamos. 806 00:33:01,980 --> 00:33:04,860 Na, t laikiklis 0 yra Pirmoji raidė t. 807 00:33:04,860 --> 00:33:07,840 Taigi mažai g ketina tapo didelis G. Bet problema 808 00:33:07,840 --> 00:33:09,410 yra, ką s taip pat rodo? 809 00:33:09,410 --> 00:33:10,300 >> PUBLIKA: tas pats. 810 00:33:10,300 --> 00:33:11,841 >> David J. Malan: lygiai tas pats dalykas. 811 00:33:11,841 --> 00:33:16,342 Taigi paprastas paaiškinimas galbūt, net jei sintaksė yra truputį keistai. 812 00:33:16,342 --> 00:33:17,050 Taigi leiskite tai padaryti. 813 00:33:17,050 --> 00:33:20,210 Padaryti kopiją-0 ir tada ./copy-0. 814 00:33:20,210 --> 00:33:21,820 815 00:33:21,820 --> 00:33:24,110 Pasakyk ką nors: Gabe. 816 00:33:24,110 --> 00:33:26,760 Ir, deja, abu jiems jau buvo kapitalizuotos, 817 00:33:26,760 --> 00:33:29,500 bet už tą pagrindinę finansinę Todėl, kad mes tiesiog 818 00:33:29,500 --> 00:33:32,350 dabar susiduriame su adresais. 819 00:33:32,350 --> 00:33:36,470 >> Taigi, kaip mes pradėti address-- ne kalambūras intended-- 820 00:33:36,470 --> 00:33:39,270 kaip mes pradėti spręsti tai ypač didelė problema? 821 00:33:39,270 --> 00:33:44,400 Na, copy1.c, viskas vyksta gauti šiek tiek sudėtingiau. 822 00:33:44,400 --> 00:33:49,310 Bet aš norėčiau teigti, konceptualiai paprastas sprendimas. 823 00:33:49,310 --> 00:33:50,852 >> Taigi sunku gauti iš pirmo žvilgsnio. 824 00:33:50,852 --> 00:33:53,560 Ne bus lengva pirmas laikas rašote jį, ko gero, 825 00:33:53,560 --> 00:33:57,440 bet jei problema yra ta, kad tiesiog daro t = S tik 826 00:33:57,440 --> 00:33:59,694 kopijos adresas, kas, dar kartą, jei aš galiu pasiimti ant jūsų, 827 00:33:59,694 --> 00:34:02,110 bus sprendimas už faktiškai kopijuoti eilutę? 828 00:34:02,110 --> 00:34:04,906 829 00:34:04,906 --> 00:34:06,770 >> PUBLIKA: mes tikriausiai vėl naudoti kilpą. 830 00:34:06,770 --> 00:34:06,890 >> David J. Malan: Taip. 831 00:34:06,890 --> 00:34:08,390 Taigi mes ketiname reikia kilpą dar kartą. 832 00:34:08,390 --> 00:34:11,800 Ir todėl, jei norime kopijuoti eilutė s į kitą eilutę, 833 00:34:11,800 --> 00:34:14,120 mes tikriausiai norite padaryti herojus pobūdžio. 834 00:34:14,120 --> 00:34:17,199 Bet problema yra, jei tai iš pradžių s 835 00:34:17,199 --> 00:34:22,159 dabar turime pradėti aiškiai skirdama t atmintį. 836 00:34:22,159 --> 00:34:24,320 >> Kitaip tariant, tegul perbraižyti šį vieną paskutinį kartą. 837 00:34:24,320 --> 00:34:28,659 Jei tai STRING s = GetString. 838 00:34:28,659 --> 00:34:30,956 839 00:34:30,956 --> 00:34:32,455 Ir tegul įdėti šią čia, taip pat. 840 00:34:32,455 --> 00:34:36,639 841 00:34:36,639 --> 00:34:37,420 Tai GetString. 842 00:34:37,420 --> 00:34:39,070 843 00:34:39,070 --> 00:34:43,860 Ir tada, nors vaizdas kaip kad bus kaip ir anksčiau, 844 00:34:43,860 --> 00:34:44,360 g-b-e / 0. 845 00:34:44,360 --> 00:34:47,294 846 00:34:47,294 --> 00:34:48,960 Tai atrodo šiek tiek kažką panašaus į tai. 847 00:34:48,960 --> 00:34:53,650 Ir ai Todėl mes vadiname tai 0x50, ir kad tai bus 51, 52. 848 00:34:53,650 --> 00:34:54,409 >> Taigi tai yra 0x50. 849 00:34:54,409 --> 00:34:55,679 850 00:34:55,679 --> 00:34:59,690 Ir tada, aš string k. 851 00:34:59,690 --> 00:35:02,450 Be atminties, kad tiesiog vyksta duok man šiek tiek aikštėje panašaus į tai. 852 00:35:02,450 --> 00:35:04,080 Taigi, kas yra svarbus žingsnis dabar? 853 00:35:04,080 --> 00:35:09,870 Jei aš noriu nukopijuoti s į t, kas tuščias mums reikia užpildyti čia? 854 00:35:09,870 --> 00:35:12,050 Arba ką turime padaryti aukšto lygio? 855 00:35:12,050 --> 00:35:14,101 856 00:35:14,101 --> 00:35:14,600 Taip? 857 00:35:14,600 --> 00:35:16,200 858 00:35:16,200 --> 00:35:17,020 Kažkas? 859 00:35:17,020 --> 00:35:17,690 Taip. 860 00:35:17,690 --> 00:35:19,214 >> PUBLIKA: Turime [nesigirdi]. 861 00:35:19,214 --> 00:35:21,380 David J. Malan: Taip, mes reikia užpildyti šią tuščią. 862 00:35:21,380 --> 00:35:24,340 Aš negaliu nukopijuoti ir tada pasinaudoti Gabe vardą 863 00:35:24,340 --> 00:35:28,120 kol aš paklausti operacinę sistemą kitos atminties riekė 864 00:35:28,120 --> 00:35:30,640 tai bent toks pat didelis kaip ir originalas. 865 00:35:30,640 --> 00:35:32,130 Taigi, kad palieka mus su klausimu. 866 00:35:32,130 --> 00:35:36,080 >> Kaip man paprašyti operacinę sistemą nėra tiesiog paprastas mažai pointer-- 867 00:35:36,080 --> 00:35:38,530 kaip tai vadinama, adresas, pointer-- ne 868 00:35:38,530 --> 00:35:40,980 paprastas mažai dėžutės kaip tai vadinama eilutę? 869 00:35:40,980 --> 00:35:44,200 Kaip man paklausti operacinės sistema didelis riekė atminties? 870 00:35:44,200 --> 00:35:48,430 Iki šiol aš tik Dotarłeś, kad nugarą netiesiogiai paskambinus GetString. 871 00:35:48,430 --> 00:35:50,740 Taigi, kaip yra GetString net gauti savo atmintį? 872 00:35:50,740 --> 00:35:53,430 >> Na, it turns out, kad yra tai kita funkcija čia 873 00:35:53,430 --> 00:35:55,160 kad dabar mes pradėsime naudotis. 874 00:35:55,160 --> 00:35:59,780 Dabar tai atrodo taip daugiau paslaptingas than-- ir aš esu tik vienas, kas gali matyti it-- 875 00:35:59,780 --> 00:36:03,150 ši eilutė atrodo taip daugiau paslaptingas tada ji turėtų iš pirmo žvilgsnio. 876 00:36:03,150 --> 00:36:04,650 Bet leiskite erzinti jį išskiria. 877 00:36:04,650 --> 00:36:07,950 >> Kairėje pusėje, turiu char * k. 878 00:36:07,950 --> 00:36:13,280 Taigi anglų kalba, pradėkime suformuluoti tinkamas bausmes techninio žargono. 879 00:36:13,280 --> 00:36:19,757 Taigi, tai yra skiriant kintamasis tipo char * vadinamas t. 880 00:36:19,757 --> 00:36:21,090 Dabar, ką tai iš tikrųjų reiškia? 881 00:36:21,090 --> 00:36:23,881 >> Na, tai reiškia, kad, ką aš ketinu įdėti į šį kintamąjį rodiklį, vadinamą t? 882 00:36:23,881 --> 00:36:24,780 883 00:36:24,780 --> 00:36:26,402 Iš char adresas. 884 00:36:26,402 --> 00:36:28,360 Taigi, kad tik būtų paprasčiau, daugiau racionalus būdas 885 00:36:28,360 --> 00:36:29,930 aprašyti kairiąją pusę. 886 00:36:29,930 --> 00:36:32,890 Taigi, kad sukuria šis langelis čia tik. 887 00:36:32,890 --> 00:36:34,760 Taigi dešinėje pusėje, matyt, vyksta 888 00:36:34,760 --> 00:36:37,170 paskirstyti, kad didesnis riekė atminty kaip? 889 00:36:37,170 --> 00:36:38,340 Taigi leiskite erzinti tai vienas nuo kito. 890 00:36:38,340 --> 00:36:41,131 >> Tai didele pirmo žvilgsnio, Bet kas vyksta viduje čia? 891 00:36:41,131 --> 00:36:43,740 Pirma, ten malloc, kuris matyt mūsų naujas draugas 892 00:36:43,740 --> 00:36:45,450 "Atminties skirti." 893 00:36:45,450 --> 00:36:49,560 Taigi tai yra argumentas buvo priimtas į jį, todėl gana didelis argumentas. 894 00:36:49,560 --> 00:36:50,970 Taigi leiskite erzinti tai vienas nuo kito. 895 00:36:50,970 --> 00:36:53,410 >> strlen iš s, žinoma, atstovauja the-- 896 00:36:53,410 --> 00:36:54,142 897 00:36:54,142 --> 00:36:55,600 PUBLIKA: simbolių skaičius. 898 00:36:55,600 --> 00:36:56,710 David J. Malan: Tiesiog simbolių skaičius s. 899 00:36:56,710 --> 00:36:59,040 Taigi s ilgis, originalus eilutė. 900 00:36:59,040 --> 00:37:00,350 Taigi G--b-e. 901 00:37:00,350 --> 00:37:02,320 Taigi, tai tikriausiai keturių šiuo atveju. 902 00:37:02,320 --> 00:37:05,485 Kodėl aš darau 1 po paskambinę strlen iš s? 903 00:37:05,485 --> 00:37:06,360 PUBLIKA: [nesigirdi] 904 00:37:06,360 --> 00:37:07,590 David J. Malan: Norėdami, kad ypatingą null simbolių. 905 00:37:07,590 --> 00:37:11,260 Jei Jūs klausiate manęs, kas iš ilgis Gabe vardas, aš ketinu pasakyti keturis. 906 00:37:11,260 --> 00:37:14,480 Priešais gaubtu, nors man reikia penktasis baitų už null pobūdžio. 907 00:37:14,480 --> 00:37:16,100 Štai kodėl aš darau, kad 1. 908 00:37:16,100 --> 00:37:21,730 >> Dabar tik tuo atveju, jei dirbate tai programa kompiuteryje, išskyrus, tarkim, 909 00:37:21,730 --> 00:37:24,610 CS50 prietaisas, kur apie char dydis 910 00:37:24,610 --> 00:37:26,350 gali būti skirtingi iš savo computer-- 911 00:37:26,350 --> 00:37:30,590 Pasirodo, kad aš galiu tai vadiname operatorius sizeof, tiesiog paprašykite kompiuterį, 912 00:37:30,590 --> 00:37:32,870 kas yra dydis char šiame kompiuteryje? 913 00:37:32,870 --> 00:37:37,400 >> Ir padauginus penkių šioje pavyzdžiui, dėl char dydį, kuris 914 00:37:37,400 --> 00:37:40,440 daugelyje kompiuterių bus tik vienas, malloc 915 00:37:40,440 --> 00:37:44,830 ketina skirti man tai didelis riekė atminties per čia dešinėje. 916 00:37:44,830 --> 00:37:47,140 Ir tai vyksta return-- tai function-- todėl 917 00:37:47,140 --> 00:37:48,265 ketina grįžti į mane, ką? 918 00:37:48,265 --> 00:37:50,914 919 00:37:50,914 --> 00:37:51,830 PUBLIKA: adresas? 920 00:37:51,830 --> 00:37:53,709 David J. Malan: What adresas? 921 00:37:53,709 --> 00:37:55,250 PUBLIKA: Iš atminties skyrė? 922 00:37:55,250 --> 00:37:56,450 David J. Malan: Iš atminties skyrė. 923 00:37:56,450 --> 00:37:59,189 Taigi, aš neįsivaizduoju, tiesą sakant, kur tai vyksta, kad galų gale. 924 00:37:59,189 --> 00:38:01,480 Aš ruošiuosi pasiūlyti, kad ji ketina baigti ne 0x88. 925 00:38:01,480 --> 00:38:02,770 926 00:38:02,770 --> 00:38:06,009 Visiškai savavališkas, tačiau kažkur išskyrus 0x50, 927 00:38:06,009 --> 00:38:08,800 nes operacinės sistemos, kas "Windows" ir "Mac OS" padaryti už mane, yra 928 00:38:08,800 --> 00:38:11,230 įsitikinkite, kad ji suteikia man skirtingi gabalai RAM. 929 00:38:11,230 --> 00:38:14,210 >> Taigi tai yra vertė, kai tai riekė atminties gali baigtis. 930 00:38:14,210 --> 00:38:16,060 Taigi, tai yra tai, kas baigiasi čia, 0x88. 931 00:38:16,060 --> 00:38:17,480 932 00:38:17,480 --> 00:38:21,570 Taigi, dabar aišku, aš galiu suprasti kad tai ne tas pats, kaip šis, 933 00:38:21,570 --> 00:38:23,960 nes jie nukreipta į skirtingi gabalai atmintyje. 934 00:38:23,960 --> 00:38:29,980 Taigi, jei aš dabar iš tikrųjų norite nukopijuoti šį į, darykime savo pasiūlytą sprendimą. 935 00:38:29,980 --> 00:38:36,870 >> Leiskite tiesiog eiti, kurti už linijos, ir padaryti t kronšteiną i gauna ai kronšteiną i. 936 00:38:36,870 --> 00:38:39,760 Nes dabar galiu naudoti tai masyvas panašūs notacija, 937 00:38:39,760 --> 00:38:43,390 nes nors malloc labai bendrai skiria man atmintį, 938 00:38:43,390 --> 00:38:45,290 atmintis tik gretimi baitai. 939 00:38:45,290 --> 00:38:47,240 Baitas, baitų, baitų, atgal atgal į nugarą. 940 00:38:47,240 --> 00:38:50,030 >> Galiu tikrai kaip programuotojas traktuoti kaip masyvą, kuris 941 00:38:50,030 --> 00:38:55,090 tai aš galiu naudoti tai pagaliau susipažinę žymėjimą tik kai kurių laužtiniuose skliaustuose. 942 00:38:55,090 --> 00:38:56,462 943 00:38:56,462 --> 00:39:00,020 >> Taigi leiskite man pristabdyti ten, nes tai daug vienu metu, net 944 00:39:00,020 --> 00:39:03,530 nors pagrindinė idėja Priminti yra tai, kad seka, visa tai laikas, 945 00:39:03,530 --> 00:39:05,550 nėra naujų duomenų tipas savaime. 946 00:39:05,550 --> 00:39:10,150 Tai tiesiog vadinamasis žymeklis, iš kurio nors požymio, adresas, 947 00:39:10,150 --> 00:39:12,650 kuris tiesiog reiškia, kad jis numeris kad žmogaus konvencijos 948 00:39:12,650 --> 00:39:15,350 mes linkę rašyti kaip 0x kažką. 949 00:39:15,350 --> 00:39:18,590 >> Bet tai tik skaičius, kaip 33 Oxford Street, 950 00:39:18,590 --> 00:39:20,530 kuris atsitinka būti CS pastato adresas. 951 00:39:20,530 --> 00:39:22,000 952 00:39:22,000 --> 00:39:23,545 Bet apie tokias detales klausimų? 953 00:39:23,545 --> 00:39:24,790 954 00:39:24,790 --> 00:39:25,289 Taip? 955 00:39:25,289 --> 00:39:28,530 >> PUBLIKA: Kodėl mes tikriname kai t yra lygi nuliui? 956 00:39:28,530 --> 00:39:30,740 >> David J. Malan: Kodėl mes patikrinti t lygi nuliui? 957 00:39:30,740 --> 00:39:33,250 Jei mes skaityti documentation-- puikus question-- už malloc, 958 00:39:33,250 --> 00:39:37,020 jis ketina pasakyti smulkiu šriftu, kartais malloc gali grįžti nuliui, 959 00:39:37,020 --> 00:39:38,080 kaip GetString. 960 00:39:38,080 --> 00:39:41,820 Ir iš tiesų, GetString atkreipia null jei, savo ruožtu, malloc grąžina NULL, 961 00:39:41,820 --> 00:39:43,130 nes GetString naudoja malloc. 962 00:39:43,130 --> 00:39:46,400 >> Ir tai gali atsitikti, jei OS "Mac OS", "Windows", kas, yra tiesiog 963 00:39:46,400 --> 00:39:48,130 iš atminties jums. 964 00:39:48,130 --> 00:39:49,820 Taigi tai, kas ten nutiko. 965 00:39:49,820 --> 00:39:52,910 >> Ir leiskite man atskleisti vieną kitą dalyką kad gali tiesiog smūgis jūsų protas 966 00:39:52,910 --> 00:39:55,100 arba visiškai būtų per toli virš linijos. 967 00:39:55,100 --> 00:39:59,770 Bet leiskite man atsigriebti pati kilpa kopijavimo, 968 00:39:59,770 --> 00:40:05,480 kuris prieš akimirką, prisiminti buvo tai. t laikiklis i gauna ai kronšteiną i. 969 00:40:05,480 --> 00:40:06,740 >> Gražus ir patogus. 970 00:40:06,740 --> 00:40:09,330 Vėl Jaučia Savaitės Dviejų. 971 00:40:09,330 --> 00:40:14,920 Tačiau ši versija gali būti iš tiesų perrašyti kaip šis, kuris atrodo sunkiai suvokiamas. 972 00:40:14,920 --> 00:40:18,280 Tai metodas, vadinamas žymeklis aritmetika, adresas aritmetinis. 973 00:40:18,280 --> 00:40:19,600 Bet kodėl tai veikia? 974 00:40:19,600 --> 00:40:22,220 >> Dabar annoyingly, autoriai C nusprendė žaisti 975 00:40:22,220 --> 00:40:25,070 * simbolis skirtingais tikslais. 976 00:40:25,070 --> 00:40:29,020 Mes matėme tai naudojamas tik vieną kartą jau char *, o tai reiškia, "duok man kintamasis 977 00:40:29,020 --> 00:40:31,210 kad ketina būti iš char adresas. " 978 00:40:31,210 --> 00:40:33,990 Taigi char * tame kontekste reiškia "duoti man kintamąjį." 979 00:40:33,990 --> 00:40:40,050 >> Deja, jei jūs naudojate * be žodis priešais jį, kaip char, 980 00:40:40,050 --> 00:40:41,905 tai dabar vadinama dereference operatorius. 981 00:40:41,905 --> 00:40:43,530 Ir mes pamatysime daugiau tai prieš ilgas. 982 00:40:43,530 --> 00:40:44,930 Bet tai tik reiškia, kad "ten". 983 00:40:44,930 --> 00:40:49,070 Tai tarsi sakydamas, jei kas nors ištiesė man ant popieriaus lapo "33 Oxford Street" 984 00:40:49,070 --> 00:40:53,830 jei aš "* 33 Oxford Street," tai reiškia, kad "Eiti keliu į CS pastatą." 985 00:40:53,830 --> 00:40:57,220 >> Taigi * tiesiog reiškia eiti ten, jei ten nė žodžio priešais jį. 986 00:40:57,220 --> 00:40:59,100 Taigi, kas yra t, kad būtų aišku? 987 00:40:59,100 --> 00:41:03,250 t yra apie riekė adresas atmintis, kuri buvo grąžinta į mane. 988 00:41:03,250 --> 00:41:06,650 s kas, kad būtų aišku, adresas, Pavyzdyje mes jau aptarti, 989 00:41:06,650 --> 00:41:07,500 mažųjų Gabe? 990 00:41:07,500 --> 00:41:08,990 991 00:41:08,990 --> 00:41:10,005 s adresas of-- 992 00:41:10,005 --> 00:41:11,585 993 00:41:11,585 --> 00:41:12,460 PUBLIKA: eilutė. 994 00:41:12,460 --> 00:41:14,126 David J. Malan: Iš Gabe originalus pavadinimas. 995 00:41:14,126 --> 00:41:16,660 Taigi tai iš adresas Šis atminties riekė. 996 00:41:16,660 --> 00:41:22,220 Taigi, jei aš sakau, t + i-- i pranešimas, yra tik mūsų senas draugas. 997 00:41:22,220 --> 00:41:24,770 Tai tiesiog rodyklė kintamasis Štai Iteracja nuo nulio iki 998 00:41:24,770 --> 00:41:26,960 į styginių s ilgio. 999 00:41:26,960 --> 00:41:30,367 Taigi jis bus lygus nuliui, tada vienas, tada du, tada tris, tada keturi. 1000 00:41:30,367 --> 00:41:33,200 Taigi leiskite surinkti šiuos naujus Scratch-kaip puzzle vienetų, jei norite, 1001 00:41:33,200 --> 00:41:36,140 nors, vėlgi, sintaksė yra daug paslaptingų nei nulio. 1002 00:41:36,140 --> 00:41:39,522 Taigi t adresas + i ketina duoti man 1003 00:41:39,522 --> 00:41:42,480 skaičius, nes visa tai yra numeriai, kad mes buvo piešimo kaip hex. 1004 00:41:42,480 --> 00:41:43,560 Bet jie tik numerius. 1005 00:41:43,560 --> 00:41:49,960 >> Taigi, jei t adresas sakėme buvo 0x88, kas 0x88 plius nulis. 1006 00:41:49,960 --> 00:41:51,564 1007 00:41:51,564 --> 00:41:53,980 Net jei nesate patenkintas su hex dar spėti. 1008 00:41:53,980 --> 00:41:54,410 >> PUBLIKA: originalus. 1009 00:41:54,410 --> 00:41:55,850 >> David J. Malan: Vis dar 0x88. 1010 00:41:55,850 --> 00:41:58,910 Taigi, ką * 0x88 reiškia? 1011 00:41:58,910 --> 00:42:02,670 Tai reiškia, kad "ten", kuris reiškia efektyviai, "Įleisk čia pirštą." 1012 00:42:02,670 --> 00:42:06,930 Ir dabar ant dešinėje pusėje Ši sąvoka, * ir tada parens, 1013 00:42:06,930 --> 00:42:11,586 s + i tai s, kuri yra spręsti čia mažojo g. 1014 00:42:11,586 --> 00:42:16,220 s + 0, žinoma, ai, ką s. 1015 00:42:16,220 --> 00:42:21,230 >> Taigi dabar * s, kurios, kaip ir * 33 Oksfordo gatvė tai eikite į adresą 1016 00:42:21,230 --> 00:42:22,010 s. 1017 00:42:22,010 --> 00:42:24,170 Taigi čia yra tai pirštu, dešinėje. 1018 00:42:24,170 --> 00:42:26,050 Taigi, ką aš ketinu kopijuoti į ką? 1019 00:42:26,050 --> 00:42:30,260 Dėl teisės dalykas, kuris yra Gabe, mažai g čia į čia. 1020 00:42:30,260 --> 00:42:32,750 >> Ir taip to poveikis pirmas iteracijos kilpos, 1021 00:42:32,750 --> 00:42:36,200 kaip jums pasiūlė, nors ji atrodo proto daug sudėtingiau nei kas nors 1022 00:42:36,200 --> 00:42:42,110 mes matėme anksčiau, tiesiog pasakyti, eikite čia ir nukopijuokite tą simbolį čia. 1023 00:42:42,110 --> 00:42:44,700 Jis suteikia jums žemėlapį į abi vietas. 1024 00:42:44,700 --> 00:42:46,130 >> Ir mes pamatysime daug daugiau apie tai. 1025 00:42:46,130 --> 00:42:50,600 Bet dabar, tikiuosi, yra tik pristatyti kai kurie iš šių pagrindinių idėjų. 1026 00:42:50,600 --> 00:42:53,550 Ir iš tiesų, pažvelkime vienas galutinę programą čia 1027 00:42:53,550 --> 00:42:57,480 ir tada pažadėjo Claymation, kuris leis viskas gerai. 1028 00:42:57,480 --> 00:42:57,980 Viskas gerai. 1029 00:42:57,980 --> 00:43:01,680 Taigi leiskite man atidaryti up-- ten mes einame. 1030 00:43:01,680 --> 00:43:02,850 1031 00:43:02,850 --> 00:43:05,440 Taigi leiskite me-- mes grįžti šį paveikslėlį prieš ilgas. 1032 00:43:05,440 --> 00:43:08,360 Leiskite atverti šį galutinį pavyzdį čia. 1033 00:43:08,360 --> 00:43:09,440 1034 00:43:09,440 --> 00:43:12,710 >> Taigi čia yra super, super programa, kuri realizuoja 1035 00:43:12,710 --> 00:43:15,050 nieko gyvenime, kad daro taip. 1036 00:43:15,050 --> 00:43:18,740 Ji pirmą kartą pareiškia du kintamuosius X ir y, kad yra ne skaičiai šį kartą, 1037 00:43:18,740 --> 00:43:19,240 savaime. 1038 00:43:19,240 --> 00:43:20,448 Jie nėra sveikasis skaičius, per se. 1039 00:43:20,448 --> 00:43:22,899 Jie, matyt, int *. 1040 00:43:22,899 --> 00:43:25,690 Taigi tiesiog bet kas, ką tai reiškia jei jūsų duomenų tipą, jūsų kintamasis, 1041 00:43:25,690 --> 00:43:26,860 yra tipo int * žvaigždė? 1042 00:43:26,860 --> 00:43:30,240 Štai iš int adresas. 1043 00:43:30,240 --> 00:43:31,990 >> Taigi aš neįsivaizduoju, kur ji yra dar. 1044 00:43:31,990 --> 00:43:35,150 Tai tiesiog reiškia "įdėti, galų gale, iš int čia adresas. " 1045 00:43:35,150 --> 00:43:38,340 0x50, 0x88, kur ji yra atmintis, adresas vyksta ten. 1046 00:43:38,340 --> 00:43:40,200 Ir tai, kas y bus, taip pat. 1047 00:43:40,200 --> 00:43:44,920 >> Jeigu aš dabar pasakyti, x = malloc (sizeof (int)), tai išgalvotas būdas pasakyti, 1048 00:43:44,920 --> 00:43:49,000 ei operacinė sistema, per malloc, duok man pakankamai atminties dydis 1049 00:43:49,000 --> 00:43:52,370 iš int, kuris tikriausiai bus 32 bitų ar keturių baitų. 1050 00:43:52,370 --> 00:43:53,680 >> Taigi, ką malloc grįžti? 1051 00:43:53,680 --> 00:43:55,250 Malloc grąžina adresą. 1052 00:43:55,250 --> 00:43:57,020 Taigi, kas ketina gauti saugomi x? 1053 00:43:57,020 --> 00:44:00,600 Apie riekė adresas atmintis, keturi baitai, kad malloc 1054 00:44:00,600 --> 00:44:03,360 man tiesiog rasti klausia operacinė sistema. 1055 00:44:03,360 --> 00:44:08,240 >> Dabar tuo tarpu, linija keturių čia * x = 42. 1056 00:44:08,240 --> 00:44:09,990 Tiesiog kad būtų aišku, Kas vyksta ten? 1057 00:44:09,990 --> 00:44:11,530 Kairėje pusėje, * x. 1058 00:44:11,530 --> 00:44:13,610 tai kaip * 33 Oxford Street. 1059 00:44:13,610 --> 00:44:15,523 Taigi * x reiškia ką? 1060 00:44:15,523 --> 00:44:16,450 >> PUBLIKA: Eiti į. 1061 00:44:16,450 --> 00:44:17,908 >> David J. Malan: Eiti į šiuo adresu. 1062 00:44:17,908 --> 00:44:20,466 Kur ta riekė atmintis, eiti į jį. 1063 00:44:20,466 --> 00:44:21,979 Ir įdėti ką ten, žinoma? 1064 00:44:21,979 --> 00:44:22,520 PUBLIKA: 42. 1065 00:44:22,520 --> 00:44:23,580 David J. Malan: 42. 1066 00:44:23,580 --> 00:44:25,650 Visos teisės * y pati idėja. 1067 00:44:25,650 --> 00:44:26,860 Nueikite į y adresą. 1068 00:44:26,860 --> 00:44:31,740 Įdėkite skaičių 13 ten, bet kas y šiuo metu? 1069 00:44:31,740 --> 00:44:33,172 1070 00:44:33,172 --> 00:44:34,630 PUBLIKA: Nėra atminties y. 1071 00:44:34,630 --> 00:44:35,710 David J. Malan: Yra nėra atminties y. 1072 00:44:35,710 --> 00:44:38,215 Taigi, ką daro y tikriausiai yra, kaip mes buvo sakydamas? 1073 00:44:38,215 --> 00:44:38,520 >> PUBLIKA: Šiukšlių. 1074 00:44:38,520 --> 00:44:39,480 >> David J. Malan: Kai šiukšlių vertė. 1075 00:44:39,480 --> 00:44:41,320 Dabar, šiukšlių vertė vis dar yra skaičius. 1076 00:44:41,320 --> 00:44:43,160 Jis vis dar gali būti klaidingai adresą. 1077 00:44:43,160 --> 00:44:45,160 Tai tarsi kažkas parašė kažką žemyn, 1078 00:44:45,160 --> 00:44:48,002 ir aš neteisingai jį taip, kai gatve pastatas. 1079 00:44:48,002 --> 00:44:50,460 Ir jei jūs tiesiog pabandykite eiti į kai pastatas jūs neturite savo, 1080 00:44:50,460 --> 00:44:53,710 arba kai atminties riekė turite ne buvo suteikta, blogi dalykai gali atsitikti. 1081 00:44:53,710 --> 00:44:57,740 Kompiuterių gali strigti, arba kai kurie kiti Nenustatyta elgesys gali atsitikti. 1082 00:44:57,740 --> 00:45:01,310 >> Taigi intro, tada, kad Binky tai. 1083 00:45:01,310 --> 00:45:04,290 Aš vis dar prisimenu, 20 kai nelyginis metų, 1084 00:45:04,290 --> 00:45:07,200 kur buvau, kai aš pagaliau Suprantama, patarimų. 1085 00:45:07,200 --> 00:45:09,520 >> Kuris yra pasakyti, jeigu jūs palikti čia tris minutes 1086 00:45:09,520 --> 00:45:12,170 ir manau, kad aš ne suprasti patarimų, suvokti 1087 00:45:12,170 --> 00:45:14,410 Aš atsimenu 20 metų dėl kokių nors kvailai priežasties 1088 00:45:14,410 --> 00:45:17,140 kada ir kodėl ji pagaliau nuskendo į, sėdi su savo mokymo 1089 00:45:17,140 --> 00:45:19,501 darbuotojas, Nishat Mehta į atgal Eliot valgykla. 1090 00:45:19,501 --> 00:45:21,250 Dabar, aš prisiminiau tai, nes tai buvo 1091 00:45:21,250 --> 00:45:23,920 viena iš temų, aš, visų pirma, kovojo su. 1092 00:45:23,920 --> 00:45:26,470 Ir tada, pagaliau paspaudėte, kaip drįstu pasakyti temų daug 1093 00:45:26,470 --> 00:45:27,460 galiausiai bus. 1094 00:45:27,460 --> 00:45:32,590 Ir dabar, kad, kad jaučiasi visi laimingesni ir labiau įtikinamai, 1095 00:45:32,590 --> 00:45:35,360 tegul priima galutinį išvaizdą mūsų paskutiniai trys minutės čia Binky, 1096 00:45:35,360 --> 00:45:37,675 iš mūsų draugų, Nick Parlante iš Stanfordo universitete. 1097 00:45:37,675 --> 00:45:38,910 1098 00:45:38,910 --> 00:45:41,580 >> [VIDEO PLAYBACK] 1099 00:45:41,580 --> 00:45:42,750 >> Ei, Binky. 1100 00:45:42,750 --> 00:45:43,500 Pabuskite! 1101 00:45:43,500 --> 00:45:45,960 Atėjo laikas rodykle įdomus. 1102 00:45:45,960 --> 00:45:47,012 >> -Kas Kad? 1103 00:45:47,012 --> 00:45:48,723 Sužinokite daugiau apie rodykles? 1104 00:45:48,723 --> 00:45:50,580 Oi, geruolis! 1105 00:45:50,580 --> 00:45:53,563 >> Na, pradėti, manau, mes ketinate reikia pora patarimų. 1106 00:45:53,563 --> 00:45:54,390 >> Ok. 1107 00:45:54,390 --> 00:45:57,930 Šis kodas skiriami du patarimų, kuris gali nurodyti sveikaisiais skaičiais. 1108 00:45:57,930 --> 00:45:58,430 Ok. 1109 00:45:58,430 --> 00:46:02,140 Na, matau dvi rodykles, tačiau jie neatrodo, kad būti nukreipta į ką nors. 1110 00:46:02,140 --> 00:46:02,980 >> -Tai Teisus. 1111 00:46:02,980 --> 00:46:05,100 Pradžioje patarimų nenukreipkite nieko. 1112 00:46:05,100 --> 00:46:08,030 Dalykų, jie atkreipia dėmesį į taip vadinamą pointees ir nustatyti juos ųjų 1113 00:46:08,030 --> 00:46:09,370 atskiras žingsnis. 1114 00:46:09,370 --> 00:46:10,220 >> -Oh, Į dešinę, į dešinę. 1115 00:46:10,220 --> 00:46:10,950 Aš žinojau, kad. 1116 00:46:10,950 --> 00:46:12,385 Į pointees yra atskira. 1117 00:46:12,385 --> 00:46:14,315 Er, taip, kaip jūs skirti pointee? 1118 00:46:14,315 --> 00:46:15,340 1119 00:46:15,340 --> 00:46:15,960 >> Ok. 1120 00:46:15,960 --> 00:46:18,970 Na, šis kodas skiria nauja sveikas pointee, 1121 00:46:18,970 --> 00:46:20,950 ir Šioje dalyje nustatomi x atkreipti į jį. 1122 00:46:20,950 --> 00:46:22,050 1123 00:46:22,050 --> 00:46:23,230 >> Ei, tai atrodo geriau. 1124 00:46:23,230 --> 00:46:25,060 Taigi, kad jis ką nors daryti. 1125 00:46:25,060 --> 00:46:25,990 >> Ok. 1126 00:46:25,990 --> 00:46:30,455 Gausit dereference rodykle x saugoti skaičių 42 į savo pointee. 1127 00:46:30,455 --> 00:46:32,830 Dėl šios triukas, man reikės mano Magic Wand Dereferencing. 1128 00:46:32,830 --> 00:46:34,130 1129 00:46:34,130 --> 00:46:36,080 >> -Tavo Magic Wand Dereferencing? 1130 00:46:36,080 --> 00:46:37,357 1131 00:46:37,357 --> 00:46:38,190 That-- tai puiku. 1132 00:46:38,190 --> 00:46:39,340 1133 00:46:39,340 --> 00:46:41,080 >> -Tai Ką kodas atrodo. 1134 00:46:41,080 --> 00:46:44,110 Aš tik įsteigė numerį ir [POP] 1135 00:46:44,110 --> 00:46:44,700 >> Ei, atrodo. 1136 00:46:44,700 --> 00:46:46,140 Ten ji eina. 1137 00:46:46,140 --> 00:46:50,980 >> -Taigi Daro dereference ant x taip rodyklė prieiti prie savo pointee. 1138 00:46:50,980 --> 00:46:53,160 Šiuo atveju, 42 parduotuvė ten. 1139 00:46:53,160 --> 00:46:57,710 Ei pabandykite jį laikyti numerį 13 pro kitą rodyklę, m. 1140 00:46:57,710 --> 00:46:58,760 >> Ok. 1141 00:46:58,760 --> 00:47:03,270 Aš tiesiog eiti per čia y, ir gauti skaičius 13 išsidėstymą aikštelėje. 1142 00:47:03,270 --> 00:47:07,930 Ir tada, imtis Wand Dereferencing ir tiesiog [BUZZ] 1143 00:47:07,930 --> 00:47:08,960 >> -Oh! 1144 00:47:08,960 --> 00:47:09,500 >> -Oh, Ei! 1145 00:47:09,500 --> 00:47:11,090 Tai nepadėjo. 1146 00:47:11,090 --> 00:47:15,630 Pasakykite, Binky, aš nemanau, kad dereferencing y yra gera idėja, nes jūs žinote, 1147 00:47:15,630 --> 00:47:17,850 steigiant pointee yra atskiras žingsnis. 1148 00:47:17,850 --> 00:47:20,450 Ir aš nemanau, kad mes kada nors padarė. 1149 00:47:20,450 --> 00:47:21,480 >> -Labas Taškas. 1150 00:47:21,480 --> 00:47:21,980 -Taip. 1151 00:47:21,980 --> 00:47:25,680 Mes skyrė rodyklė m, bet mes niekada nustatykite, kad rodytų į pointee. 1152 00:47:25,680 --> 00:47:27,190 1153 00:47:27,190 --> 00:47:28,616 >> -Labai Pastabus. 1154 00:47:28,616 --> 00:47:30,240 Ei, jūs ieško gero ten, Binky. 1155 00:47:30,240 --> 00:47:33,400 Ar galite nustatyti taip, kad y punktai tuo pačiu pointee Kadangi X? 1156 00:47:33,400 --> 00:47:34,000 >> -Sure. 1157 00:47:34,000 --> 00:47:36,780 Aš naudoju mano Magic Wand iš Pointer užduotį. 1158 00:47:36,780 --> 00:47:38,740 >> -Ar Kad bus kaip ir anksčiau problema? 1159 00:47:38,740 --> 00:47:39,240 -Ne. 1160 00:47:39,240 --> 00:47:40,660 Tai neliečia pointees. 1161 00:47:40,660 --> 00:47:44,450 Jis tiesiog keičia vieną žymiklį į atkreipti dėmesį į tą patį dalyką, kaip ir kitas. 1162 00:47:44,450 --> 00:47:45,450 >> -Oh, Matau. 1163 00:47:45,450 --> 00:47:48,200 Dabar y nurodo toje pačioje vietoje kaip ir X. 1164 00:47:48,200 --> 00:47:48,910 Taigi laukti. 1165 00:47:48,910 --> 00:47:49,950 Dabar, y yra fiksuotas. 1166 00:47:49,950 --> 00:47:51,120 Ji pointee. 1167 00:47:51,120 --> 00:47:54,510 Taigi galite pabandyti su Wand Dereferencing vėl siųsti 13 perėmimą. 1168 00:47:54,510 --> 00:47:56,510 >> -Uh, Gerai. 1169 00:47:56,510 --> 00:47:58,160 Štai jis eina. [POP] 1170 00:47:58,160 --> 00:47:59,340 >> Ei, atrodo, kad. 1171 00:47:59,340 --> 00:48:00,750 Dabar dereferencing darbus y. 1172 00:48:00,750 --> 00:48:04,991 Ir dėl to, kad rodyklės dalintis kad viena pointee, jie abu pamatyti 13. 1173 00:48:04,991 --> 00:48:05,490 -Taip. 1174 00:48:05,490 --> 00:48:06,870 Dalijimasis, nesvarbu. 1175 00:48:06,870 --> 00:48:08,820 Taigi mes ketiname pereiti vietas dabar? 1176 00:48:08,820 --> 00:48:09,440 >> Oi, atrodo. 1177 00:48:09,440 --> 00:48:10,830 Mes pavėluotai. 1178 00:48:10,830 --> 00:48:11,570 >> -But-- 1179 00:48:11,570 --> 00:48:13,530 >> -Just Prisiminti tris žymeklį taisykles. 1180 00:48:13,530 --> 00:48:16,560 Number One, pagrindinė struktūra yra tai, kad jūs turite žymeklį, 1181 00:48:16,560 --> 00:48:18,680 ir ji nurodo perkelti į pointee. 1182 00:48:18,680 --> 00:48:20,640 Bet žymeklis ir pointee yra atskiras, 1183 00:48:20,640 --> 00:48:22,610 ir bendra klaida yra įsteigti žymeklį, 1184 00:48:22,610 --> 00:48:25,000 bet pamiršti suteikti jai pointee. 1185 00:48:25,000 --> 00:48:28,170 >> Skaičius Du, žymeklis dereferencing prasideda rodyklė 1186 00:48:28,170 --> 00:48:31,050 ir taip savo rodyklę per prieiti prie savo pointee. 1187 00:48:31,050 --> 00:48:33,400 Kaip mes visi žinome, tai veikia tik tuomet, jei yra 1188 00:48:33,400 --> 00:48:36,270 pointee, kokios rūšies grįš į Darbo tvarkos taisyklių numeris vienas. 1189 00:48:36,270 --> 00:48:39,000 >> Number Three, žymeklis paskyrimas trunka vieną žymiklį 1190 00:48:39,000 --> 00:48:42,320 ir keičia ją, kad rodytų į pats pointee kaip kitą rodyklę. 1191 00:48:42,320 --> 00:48:44,160 Taigi po perleidimo, dvi rodykles 1192 00:48:44,160 --> 00:48:45,910 bus taškas į tą patį pointee. 1193 00:48:45,910 --> 00:48:47,990 Kartais, kad vadinama dalijimosi. 1194 00:48:47,990 --> 00:48:49,740 Ir kad viskas yra į jį, tikrai. 1195 00:48:49,740 --> 00:48:50,277 Bye-bye dabar. 1196 00:48:50,277 --> 00:48:51,110 [END VIDEO PLAYBACK] 1197 00:48:51,110 --> 00:48:52,568 David J. Malan: Štai jį CS50. 1198 00:48:52,568 --> 00:48:55,110 Mes jus pamatyti kitą savaitę. 1199 00:48:55,110 --> 00:48:56,064