1 00:00:00,000 --> 00:00:03,395 >> [TÓNLIST spila] 2 00:00:03,395 --> 00:00:11,031 3 00:00:11,031 --> 00:00:13,280 DAVID J. Malan: Þetta er eins og freshman málstofa í dag. 4 00:00:13,280 --> 00:00:14,060 OK. 5 00:00:14,060 --> 00:00:15,024 Svo mjög rigning út. 6 00:00:15,024 --> 00:00:17,690 Þetta hefur tilhneigingu til að gerast á miðvikudögum, en allt meira tækifæri 7 00:00:17,690 --> 00:00:18,700 fyrir spurningar í dag. 8 00:00:18,700 --> 00:00:22,210 Svo skulum byrja á í raun með myndinni í aðeins augnablik. 9 00:00:22,210 --> 00:00:24,560 En við munum byrja grandly eins og alltaf. 10 00:00:24,560 --> 00:00:28,000 >> Þetta er CS50, og þetta er endir 4. viku. 11 00:00:28,000 --> 00:00:30,820 Þannig að ef þú hefur einhvern tíma horft TV eða bíómynd þar 12 00:00:30,820 --> 00:00:34,690 það er sumir tölva sérfræðingar og lögreglu, eða FBI, eða einhver stofnun 13 00:00:34,690 --> 00:00:36,930 er að reyna að ná einhverjum Óvinur, vel, þú hefur 14 00:00:36,930 --> 00:00:40,850 líklega heyrt hugtakið "auka" þar sem tæknimaður einhvern veginn 15 00:00:40,850 --> 00:00:44,750 dularfullur dregur það inn óendanlega langt til að sjá glæpamenn 16 00:00:44,750 --> 00:00:48,640 sjálfsmynd eða leyfisveitandi diskur númer í jafnvel shimmer spegil 17 00:00:48,640 --> 00:00:50,390 eða Glint auga einhvers. 18 00:00:50,390 --> 00:00:55,196 Svo reyndar, við skulum taka a líta á nokkur slík atriði úr Hollywood. 19 00:00:55,196 --> 00:00:55,862 [Vídeó spilun] 20 00:00:55,862 --> 00:00:59,243 -OK, Nú skulum fá góða líta á þig. 21 00:00:59,243 --> 00:01:06,488 22 00:01:06,488 --> 00:01:07,415 >> -Hold Það. 23 00:01:07,415 --> 00:01:08,267 Hlaupa að baka. 24 00:01:08,267 --> 00:01:09,121 >> -Bíddu aðeins. 25 00:01:09,121 --> 00:01:11,300 Fara rétt. 26 00:01:11,300 --> 00:01:12,209 >> -Það, Frysta það. 27 00:01:12,209 --> 00:01:12,750 -Full Skjár. 28 00:01:12,750 --> 00:01:13,558 -OK, Frysta það. 29 00:01:13,558 --> 00:01:14,820 -Tighten Upp á það, munt þú? 30 00:01:14,820 --> 00:01:16,530 -Vector Í á sem strákur að baka hjól. 31 00:01:16,530 --> 00:01:19,400 -Zoom Í hérna á þessum stað. 32 00:01:19,400 --> 00:01:22,846 -Með Réttum tækjum, myndin gæti verið stækkað og skerpt. 33 00:01:22,846 --> 00:01:24,065 -Hvað er þetta? 34 00:01:24,065 --> 00:01:25,600 -Það Er aukahlutur program. 35 00:01:25,600 --> 00:01:26,860 -Má Þú ljóst að upp eitthvað? 36 00:01:26,860 --> 00:01:27,890 -Ég veit það ekki. 37 00:01:27,890 --> 00:01:29,050 Skulum auka það. 38 00:01:29,050 --> 00:01:31,575 >> -Enhance Kafla A6. 39 00:01:31,575 --> 00:01:33,642 >> -Ég Auka smáatriði, and-- Ég held að það er 40 00:01:33,642 --> 00:01:35,433 nóg til að auka, gefa hana út skjánum mínum. 41 00:01:35,433 --> 00:01:37,080 -Ég Auka speglun í auga hennar. 42 00:01:37,080 --> 00:01:38,830 >> -Let Er keyrt þetta í gegnum vídeó aukahluti. 43 00:01:38,830 --> 00:01:40,100 -Edgar, Getur þú aukið þetta? 44 00:01:40,100 --> 00:01:41,875 >> -Bíddu. 45 00:01:41,875 --> 00:01:44,010 >> -Ég Verið að vinna á þessum íhugunar. 46 00:01:44,010 --> 00:01:44,995 >> Spegilmynd -Someone er. 47 00:01:44,995 --> 00:01:45,495 -Reflection. 48 00:01:45,495 --> 00:01:47,399 -Það Er spegilmynd af andliti mannsins. 49 00:01:47,399 --> 00:01:48,065 -The Spegilmynd. 50 00:01:48,065 --> 00:01:48,981 -Það Er spegilmynd. 51 00:01:48,981 --> 00:01:50,600 -Zoom Í á spegil. 52 00:01:50,600 --> 00:01:52,712 -Þú Getur séð spegilmynd. 53 00:01:52,712 --> 00:01:54,350 -Get Þú bæta ímynd hér? 54 00:01:54,350 --> 00:01:55,370 -Get Þú auka hann hérna? 55 00:01:55,370 --> 00:01:56,210 -Get Þú auka það? 56 00:01:56,210 --> 00:01:56,900 Hægt að auka það? 57 00:01:56,900 --> 00:01:57,870 >> -Get Við auka þetta? 58 00:01:57,870 --> 00:01:58,717 >> -Get Þú auka það? 59 00:01:58,717 --> 00:02:00,050 -Hold Á sekúndu, ég auka. 60 00:02:00,050 --> 00:02:00,924 -Zoom Í á dyrnar. 61 00:02:00,924 --> 00:02:01,700 -Times 10. 62 00:02:01,700 --> 00:02:02,586 -Zoom. 63 00:02:02,586 --> 00:02:03,490 -Flytja inn. 64 00:02:03,490 --> 00:02:03,990 -Meira. 65 00:02:03,990 --> 00:02:04,690 -Wait, Hætta. 66 00:02:04,690 --> 00:02:05,190 -Stop. 67 00:02:05,190 --> 00:02:05,970 -Pause Það. 68 00:02:05,970 --> 00:02:09,460 -Rotate Okkur 75 gráður um lóðrétta, vinsamlegast. 69 00:02:09,460 --> 00:02:10,962 -Stop. 70 00:02:10,962 --> 00:02:14,040 Fara aftur í hluta um dyrnar, aftur. 71 00:02:14,040 --> 00:02:15,860 >> -Got Til mynd eyki sem punktamynd? 72 00:02:15,860 --> 00:02:18,776 >> -Hey, Kannski við getum notað Pradeep Sen aðferð til að sjá inn um glugga. 73 00:02:18,776 --> 00:02:20,372 -Þetta Hugbúnaður er ástand af the list. 74 00:02:20,372 --> 00:02:21,845 >> -The Eigingildið sé slökkt. 75 00:02:21,845 --> 00:02:24,300 >> -Með Hægri Sambland af algorithm-- 76 00:02:24,300 --> 00:02:26,755 >> Tekið brotthvarf -Hann er reiknirit til næsta stig, 77 00:02:26,755 --> 00:02:28,730 og ég get notað þá til að auka þessa mynd. 78 00:02:28,730 --> 00:02:31,286 >> -Lock Á og stækka z-ásinn. 79 00:02:31,286 --> 00:02:32,560 >> -Enhance. 80 00:02:32,560 --> 00:02:33,100 >> -Enhance. 81 00:02:33,100 --> 00:02:33,600 >> -Enhance. 82 00:02:33,600 --> 00:02:34,960 -Freeze Og auka. 83 00:02:34,960 --> 00:02:37,180 >> [END spilun] 84 00:02:37,180 --> 00:02:41,160 >> DAVID J. Malan: Allt í lagi, svo Allir sem eru í raun orð. 85 00:02:41,160 --> 00:02:44,450 Þeir eru bara spenntur saman í leið sem er í raun ekki skynsamlegt. 86 00:02:44,450 --> 00:02:48,400 Og í raun, CS50 og námskeið like it hefur tilhneigingu til að eyðileggja mikið af sjónvarpi og kvikmyndum 87 00:02:48,400 --> 00:02:48,900 fyrir þig. 88 00:02:48,900 --> 00:02:52,330 Vegna þess að þegar þessir tölva sérfræðingur eru rattling burt skilmála og segja 89 00:02:52,330 --> 00:02:56,860 ímynda hluti eins eiginvigrar, og z-ás, 90 00:02:56,860 --> 00:02:59,572 og fjölda annarra reyndar meira tæknileg hugtök, 91 00:02:59,572 --> 00:03:02,030 þeir eru í raun bara stringing orð saman allt of oft. 92 00:03:02,030 --> 00:03:05,020 Er að einn af von okkar er að sem aukaverkun af námskeiðum 93 00:03:05,020 --> 00:03:08,245 eins og þetta, mun fleiri sem eru í heimurinn raunverulega vera fær til vega í 94 00:03:08,245 --> 00:03:12,040 og bara alltaf svo lítið haft áhrif á gæði og nákvæmni þessara kvikmynda? 95 00:03:12,040 --> 00:03:14,350 >> Í raun, við skulum taka a líta á veruleika. 96 00:03:14,350 --> 00:03:18,070 Svo er hér starfsfólk mynd af Mary, einn af félögum kennslu okkar. 97 00:03:18,070 --> 00:03:20,050 Og ætla að hún er grunur um eitthvað. 98 00:03:20,050 --> 00:03:23,730 Og enn, það er Glimmer sumir stykki af sönnunargagn í auga hennar, 99 00:03:23,730 --> 00:03:25,480 eða í spegilmynd af eyeglasses hennar. 100 00:03:25,480 --> 00:03:30,760 Jæja, ef við gerum nákvæmlega eins og kvikmyndir leggja, þar við zoom og "auka", 101 00:03:30,760 --> 00:03:34,080 þetta er hversu miklar upplýsingar er í andlit Maríu 102 00:03:34,080 --> 00:03:36,795 þegar þú tekur mynd með því upprunalegu upplausn. 103 00:03:36,795 --> 00:03:39,120 >> Og í raun er hægt að sjá þessar punkta. 104 00:03:39,120 --> 00:03:41,900 Og þetta er það sem er kallast punktar, P-I-X-E-L-S, 105 00:03:41,900 --> 00:03:45,740 sem er bara ferningur oftast það er punktur sem semur mynd. 106 00:03:45,740 --> 00:03:49,200 Og aftur í dag, og í raun jafnvel í dag með nokkrum af LED TVs dag 107 00:03:49,200 --> 00:03:51,950 eða LCD TVs, ef þú hefur fengið einn í herbergi eða heima, 108 00:03:51,950 --> 00:03:55,100 ef þú ferð upp frábær nálægt því, og sérstaklega ef það er nokkuð eldri TV, 109 00:03:55,100 --> 00:03:58,760 þú getur sennilega jafnvel sjá þessar punkta og það er það sem semja mynd. 110 00:03:58,760 --> 00:04:00,980 >> Og það er ekkert meira upplýsingar en þetta. 111 00:04:00,980 --> 00:04:05,400 Við gæti "auka", í þeim skilningi að jafna hlutina aftur og svoleiðis 112 00:04:05,400 --> 00:04:09,040 inferring konar, tegund af því litur ætti að vera við hliðina á auga Maríu 113 00:04:09,040 --> 00:04:10,910 þannig að það er í raun ekki svo Pixelated. 114 00:04:10,910 --> 00:04:14,510 En ef ég halda zooming í, þar er slæmur strákur í auga hennar. 115 00:04:14,510 --> 00:04:16,600 Svona er allt upplýsingar sem við höfum. 116 00:04:16,600 --> 00:04:18,920 Þú getur ekki búið til upplýsingar út af engu. 117 00:04:18,920 --> 00:04:20,790 Það er bara tímabundið fjölda bita þar. 118 00:04:20,790 --> 00:04:22,873 >> Svo í vanda sett 4, þar þú hefur tækifæri 119 00:04:22,873 --> 00:04:24,580 að spila með þessa tegund af heiminum. 120 00:04:24,580 --> 00:04:27,610 Í Heimadæmi 4, munt þú kanna heimur grafík og réttar, 121 00:04:27,610 --> 00:04:30,870 og í raun að skrifa kóðann að batna glataður myndir. 122 00:04:30,870 --> 00:04:33,510 Þú munt skrifa kóða sem vinnur núverandi myndir 123 00:04:33,510 --> 00:04:36,120 og að lokum skilja hvað er fara á undir hetta. 124 00:04:36,120 --> 00:04:38,540 >> Og það kemur í ljós, það er í raun ekki allt sem flókið. 125 00:04:38,540 --> 00:04:41,320 Til dæmis, ef við vildum tákna bros andlit hvar 126 00:04:41,320 --> 00:04:44,160 með þessum svörtu dílar, eða þessi svarta punkta, 127 00:04:44,160 --> 00:04:47,230 vel, gætum við einfaldlega tákna þá sem sannarlega punktamynd. 128 00:04:47,230 --> 00:04:50,040 Og ef þú hefðir einhvern tímann heyrt að tjáning punktamynd, kannski 129 00:04:50,040 --> 00:04:52,330 það byrjar nú að gera lítið meira vit í dag. 130 00:04:52,330 --> 00:04:53,580 >> Við vitum nú þegar hvað dálítið er. 131 00:04:53,580 --> 00:04:54,160 Það er 0 eða 1. 132 00:04:54,160 --> 00:04:56,201 Og kort er bara eitthvað eins og a stykki af pappír 133 00:04:56,201 --> 00:04:59,180 sem gefur þér leiðbeiningar og hefur kannski rist af x- og y-hnit. 134 00:04:59,180 --> 00:05:00,540 Svo hér er punktamynd. 135 00:05:00,540 --> 00:05:03,680 Það er kort af bitum þar a 1 er greinilega 136 00:05:03,680 --> 00:05:07,857 fara til að tákna hvítan pixla og 0 er að fara til að tákna svartan pixla. 137 00:05:07,857 --> 00:05:09,440 En við gátum vissulega Flip það í kring. 138 00:05:09,440 --> 00:05:11,648 Það skiptir ekki máli svo lengi sem við erum í samræmi. 139 00:05:11,648 --> 00:05:15,570 Og hér er hvernig, í binary-- inni af minni tölvu, eða jafnvel inni 140 00:05:15,570 --> 00:05:18,160 á skrá á harða þinn drive-- gastu geyma 141 00:05:18,160 --> 00:05:20,240 einföldustu broskalla andlit myndum. 142 00:05:20,240 --> 00:05:23,990 En hvað erum við, að sjálfsögðu, vantar í þessari mynd? 143 00:05:23,990 --> 00:05:24,610 Lit, ekki satt? 144 00:05:24,610 --> 00:05:28,220 Það er augljóst næsta skref eða aukahlutur til að bæta þetta með litinn. 145 00:05:28,220 --> 00:05:32,230 Svo því miður með bara einn bita, 0 eða 1, gætum við tákna litinn. 146 00:05:32,230 --> 00:05:36,100 Það gæti verið rauður eða blár, eða svartur eða hvítur eða grænn eða bleikur, 147 00:05:36,100 --> 00:05:37,420 eða einhverjar pör af litum. 148 00:05:37,420 --> 00:05:40,860 En fyrir sakir einfaldleika er, munum við bara ráð svart og hvítt. 149 00:05:40,860 --> 00:05:45,930 >> Svo hvað er rökrétt að gera við þurfum ef við langar að framkvæma lit í mynd? 150 00:05:45,930 --> 00:05:49,080 Hvað höfum við að gera? 151 00:05:49,080 --> 00:05:51,900 Eins og ef takmarkandi þáttur hér er að með einum bita getur þú aðeins 152 00:05:51,900 --> 00:05:55,977 tákna tvö ríki, 0 eða 1, hvítur eða svart, hvað viltu gera? 153 00:05:55,977 --> 00:05:56,810 Áhorfendur: Meira gögn. 154 00:05:56,810 --> 00:05:58,813 DAVID J. Malan: Fleiri bitar, já fleiri gögn, fleiri bitar. 155 00:05:58,813 --> 00:06:01,440 Og reyndar það er einmitt hvernig litmyndir eiga fulltrúa. 156 00:06:01,440 --> 00:06:05,120 Frekar en að nota einn hluti, a 0 eða 1 fyrir hvert punkta, hver punktur, 157 00:06:05,120 --> 00:06:06,170 þú notar bara margar. 158 00:06:06,170 --> 00:06:09,660 Kannski nota 8, kannski, fleiri almennt nota 24 og reyndar í vanda sett 159 00:06:09,660 --> 00:06:13,300 4, verður þú að spila með skrá snið sem notar 24 bita yfirleitt. 160 00:06:13,300 --> 00:06:15,430 >> En flest ykkar eru sennilega þekki JPEG. 161 00:06:15,430 --> 00:06:17,460 Ef þú hefur einhvern tíma tekið mynd á símanum, 162 00:06:17,460 --> 00:06:20,360 eða hlaðið inn eða séð eitthvað á Facebook, eða Flickr, allir tala 163 00:06:20,360 --> 00:06:24,882 af ljósmynd-undirstaða websites, hefur þú sennilega séð JPEG mynd áður. 164 00:06:24,882 --> 00:06:27,840 Og það kemur í ljós, þetta er skrá snið við erum að fara að nota í pset 4, 165 00:06:27,840 --> 00:06:30,340 þar sem þú ert að fara að að batna myndir 166 00:06:30,340 --> 00:06:35,160 sem ég hef óvart eytt úr skemmd minniskort í myndavélinni, 167 00:06:35,160 --> 00:06:35,800 ef þú vilt. 168 00:06:35,800 --> 00:06:38,490 >> Og það kemur í ljós að jafnvel þótt JPEG er nokkuð sophisticated-- 169 00:06:38,490 --> 00:06:40,906 það er miklu flóknari en svarta og hvíta punkta 170 00:06:40,906 --> 00:06:44,480 við sáum áðan, vegna þess að það er reyndar ímynda reiknirit sem 171 00:06:44,480 --> 00:06:47,410 eru notuð til að þjappa a JPEG, svo að þú getur haft mjög gott, 172 00:06:47,410 --> 00:06:49,832 gæði mynd en með tiltölulega fáir bitar. 173 00:06:49,832 --> 00:06:51,790 Og við munum koma aftur til þjöppun fyrir löngu. 174 00:06:51,790 --> 00:06:56,280 Það kemur í ljós að fyrsta þrjú bæti JPEG image-- 175 00:06:56,280 --> 00:07:02,750 sama hvað þú hefur tekið mynd of-- eru gildi 255, 216, 255. 176 00:07:02,750 --> 00:07:05,990 >> Með öðrum orðum, ef þú bara sjá þessi mynstur bita, 177 00:07:05,990 --> 00:07:09,180 fulltrúa hér eins og þrír bytes, eða 24 bita samtals, 178 00:07:09,180 --> 00:07:13,810 með miklum líkum þú getur álykta að þú ert að horfa á það með þessum fyrstu þremur 179 00:07:13,810 --> 00:07:15,230 bytes á JPEG-sniði. 180 00:07:15,230 --> 00:07:18,040 Og þetta er það sem er þekkt sem áritun JPEG. 181 00:07:18,040 --> 00:07:20,540 A einhver fjöldi af skrá snið þarna tilhneigingu til að byrja 182 00:07:20,540 --> 00:07:23,735 með ákveðnum mynstrum 0s og 1s, þannig að Windows og Mac OS og IOS, 183 00:07:23,735 --> 00:07:28,272 og Android vita hvers konar skrá þau eru, til viðbótar við svokölluðu skrá 184 00:07:28,272 --> 00:07:29,730 eftirnafn að mikið af skrám hafa. 185 00:07:29,730 --> 00:07:32,590 Ef þú hefur .jpg, það er önnur vísbending við tölvuna. 186 00:07:32,590 --> 00:07:35,310 >> Svo skulum nú líta á þetta aðeins meira tæknilega. 187 00:07:35,310 --> 00:07:37,390 Við vitum við aukastaf Kerfið er 0 til 9. 188 00:07:37,390 --> 00:07:38,740 Við vitum tvöfaldur er 0 og 1. 189 00:07:38,740 --> 00:07:41,842 Og ef þú heldur aftur til pset 0, við höfðum þú glíma við, 190 00:07:41,842 --> 00:07:43,800 fyrir smá, eitthvað heitir sextánskur, 191 00:07:43,800 --> 00:07:47,320 þar sem þú þarft 16 tölustafir, í stað þess að 10 eða í stað 2. 192 00:07:47,320 --> 00:07:50,405 Og þeir tölunum, samkvæmt venju, eru 0 til 9 og síðan lítt, 193 00:07:50,405 --> 00:07:55,040 með f, þar sem f táknar það heiltala, bara eins og a fljótur geðheilbrigði 194 00:07:55,040 --> 00:07:56,640 athuga? 195 00:07:56,640 --> 00:07:57,610 Svo, 15. 196 00:07:57,610 --> 00:08:01,390 Og verður tákna 10, bara með því að eðli röðun sem ég hef gefið. 197 00:08:01,390 --> 00:08:04,350 Það er bara handahófskennt venju, en það er alveg staðlað. 198 00:08:04,350 --> 00:08:06,870 >> Þannig að ef við lítum á þetta mynstur þriggja bytes-- skulum 199 00:08:06,870 --> 00:08:09,620 bara byrja að horfa á það í samræmi við hvernig 200 00:08:09,620 --> 00:08:12,450 tölva vísindamenn almennt horfa á og hugsa um skrár. 201 00:08:12,450 --> 00:08:15,580 Þú getur vissulega hugsa um skrár í 0s og 1s, og aukastaf, 202 00:08:15,580 --> 00:08:19,340 en í raun, við hafa tilhneigingu til að nota tvöfaldur eða meira yfirleitt hexadecimal-- 203 00:08:19,340 --> 00:08:20,760 aftur frá pset 0. 204 00:08:20,760 --> 00:08:25,857 Svo láta mig leggja til að 255, 216, og 255 eru bara þessar mynstur 0s og 1s. 205 00:08:25,857 --> 00:08:28,440 Og þú getur athugað þetta ef þú langar að gera stærðfræði frá viku 0. 206 00:08:28,440 --> 00:08:30,810 En nú, bara ráð að þetta er örugglega rétt. 207 00:08:30,810 --> 00:08:33,850 Ég hef bara endurskrifa þremur aukastöfum númer sem þremur tvöfaldur gildum. 208 00:08:33,850 --> 00:08:36,100 Nú það sem ég ætla að gera er að bara bæta við nokkrum hvítt rúm, 209 00:08:36,100 --> 00:08:37,266 bara fyrir sakir sýnilegur er. 210 00:08:37,266 --> 00:08:39,940 Og takið eftir, ég ætla bara að fara að færa hlutina í sundur. 211 00:08:39,940 --> 00:08:43,090 Svo áður en, eftir, fyrir, eftir. 212 00:08:43,090 --> 00:08:46,180 Ég ætla að gera neitt áhugavert annað en bara að breiða það út svo 213 00:08:46,180 --> 00:08:50,380 að tilkynning hver hópur átta bitar er nú tvö sett af fjórum bitum. 214 00:08:50,380 --> 00:08:54,920 Þetta er gagnlegt vegna sextánskur er sérstaklega smart 215 00:08:54,920 --> 00:09:00,930 því að hver sextánskur stafa 0 gegnum F, eða nánar tiltekið 0 gegnum 15, 216 00:09:00,930 --> 00:09:03,430 hægt að koma fram með nákvæmlega fjórum bitum. 217 00:09:03,430 --> 00:09:07,960 Með öðrum orðum, í sextánskur ef þú langar til að tákna 0, það er bara 0000, 218 00:09:07,960 --> 00:09:08,780 fjögur núll. 219 00:09:08,780 --> 00:09:13,997 Og ef þú vilt að tákna 15, það er 1111, sem er fjórum bitum. 220 00:09:13,997 --> 00:09:16,080 Og ef þú gera stærðfræði, ef þetta er sjálfur stað, 221 00:09:16,080 --> 00:09:18,210 þetta er 16s staðurinn, það er að fara að gefa you-- 222 00:09:18,210 --> 00:09:19,960 frekar sem er að fara to-- miður, í tvöfaldur, 223 00:09:19,960 --> 00:09:23,660 það er að fara að gefa þér 15, sjálfur stað, twos Place, fjórum fótum og eights sæti. 224 00:09:23,660 --> 00:09:26,821 Svo láta mig leggja til að það setja af fjórum bitum til vinstri 225 00:09:26,821 --> 00:09:28,070 er það sem við erum að fara að hringja f. 226 00:09:28,070 --> 00:09:30,110 Það er stærsta númerið sem þú getur táknað með fjórum bitum. 227 00:09:30,110 --> 00:09:33,300 Og við vitum nú þegar frá sextánskur, f er stærsta stafa í sextánskur. 228 00:09:33,300 --> 00:09:36,020 Við höfum fengið annan f það, tvær þarna. 229 00:09:36,020 --> 00:09:38,980 Og nú, bara taka á trú sem ég hef gert stærðfræði rétt 230 00:09:38,980 --> 00:09:41,890 og að vinstri helminginn þessara bita, 1101, 231 00:09:41,890 --> 00:09:43,980 er það sama og d í sextánskur. 232 00:09:43,980 --> 00:09:46,490 Og hægri hönd, 1000, er bara 8. 233 00:09:46,490 --> 00:09:48,140 >> Og að sjá að einn er auðvelt, ekki satt? 234 00:09:48,140 --> 00:09:51,670 The 8 represents-- er rétt undir þeim Eights stað. 235 00:09:51,670 --> 00:09:56,040 Þannig að við höfum einn í Eights dálki og ekkert í fjórum fótum, twos eða sjálfur. 236 00:09:56,040 --> 00:09:59,830 Svo nú venjulega, hafa menn að skrifa sextánskur tölustafir eins og þetta, 237 00:09:59,830 --> 00:10:03,000 þú squish bara þá saman, og þá forskeytið þá með 0x. 238 00:10:03,000 --> 00:10:05,920 Það þýðir ekkert annað en sjón vísbending til human-- 239 00:10:05,920 --> 00:10:10,350 hér kemur sextánskur value-- því það gæti ekki annað verið augljós. 240 00:10:10,350 --> 00:10:13,629 >> Sem er að segja, að lokum, að mynstur núllum og sjálfur, 241 00:10:13,629 --> 00:10:16,170 eða mynstur sextánskur Tölunum equivalently að þú ert 242 00:10:16,170 --> 00:10:18,990 að fara að byrja að leita að í Heimadæmi 4 er this-- 243 00:10:18,990 --> 00:10:22,120 og Heimadæmi 4 sérstakur mun ganga þú í gegnum þetta í meiri detail-- 244 00:10:22,120 --> 00:10:25,344 en ljóst eins konar Arcane sem þetta gæti litið á fyrstu sýn, 245 00:10:25,344 --> 00:10:27,010 þú ert að fara að byrja að sjá þetta mikið. 246 00:10:27,010 --> 00:10:30,320 Og í raun, jafnvel í gdb er aflúsara við kynntum á mánudag 247 00:10:30,320 --> 00:10:35,440 og Dan kynnir í pset 3, er að fara að oft sýna þér sextánskur gildi 248 00:10:35,440 --> 00:10:39,910 bara vegna þess að þeir hafa tilhneigingu til að vera meira hefðbundin en aukastaf eða tvöfaldur 249 00:10:39,910 --> 00:10:41,157 í heiminum á tölvum. 250 00:10:41,157 --> 00:10:42,490 Nú skulum setja þetta í samhengi. 251 00:10:42,490 --> 00:10:48,040 Margir af þú might muna þetta mynd hér, sem kom frá hverju? 252 00:10:48,040 --> 00:10:51,240 Sýn, svo jafnvel fyrr en að Windows XP gerði þetta frumraun. 253 00:10:51,240 --> 00:10:52,620 Svo er þetta fallegt landslag. 254 00:10:52,620 --> 00:10:55,940 Og í raun, ef þú pota í kring online-- Ég held að það sé Wikipedia grein, 255 00:10:55,940 --> 00:11:00,110 þar sem að gekk mjög ótrúlega út fann þetta stað í heiminum að setja upp 256 00:11:00,110 --> 00:11:02,240 hans eða myndavél hennar í nákvæmlega rétta place-- 257 00:11:02,240 --> 00:11:06,510 og þetta í dag lítur like-- en það er nákvæmlega það sama stilling. 258 00:11:06,510 --> 00:11:10,060 Þessi mynd, þó, er í skrá snið heitir punktamynd, b-m-bls. 259 00:11:10,060 --> 00:11:12,910 Og við erum að fara að taka frábær fljótur litið á hvað það þýðir. 260 00:11:12,910 --> 00:11:17,770 >> En punktamynd er bara önnur leið að fulltrúar myndir enn að nota punkta 261 00:11:17,770 --> 00:11:19,580 í 0s og 1s, að lokum. 262 00:11:19,580 --> 00:11:23,282 En á því að kíkja, það hefur meira áhugavert undirskrift 263 00:11:23,282 --> 00:11:24,490 í upphafi skrárinnar. 264 00:11:24,490 --> 00:11:26,670 Það er ekki bara þrír bytes, heldur er það 265 00:11:26,670 --> 00:11:30,770 a heild búnt af mynstri bytes sem hafa fyrirfram ákveðið merkingu. 266 00:11:30,770 --> 00:11:34,490 Til dæmis, einhvers staðar í Fyrstu bytes punktamyndarhátt mynd 267 00:11:34,490 --> 00:11:37,440 er að fara að vera á stærð af the mynd, breidd myndarinnar, 268 00:11:37,440 --> 00:11:40,390 hæð myndinni, svo gagnlegur lýsigögn, ef þú vilt. 269 00:11:40,390 --> 00:11:43,940 Gagnlegar upplýsingar sem Photoshop eða einhver myndvinnsluforrit sem þú ert að nota 270 00:11:43,940 --> 00:11:45,180 gæti í raun sama um. 271 00:11:45,180 --> 00:11:47,170 >> Svo meira um þetta í Heimadæmi 4, en þetta 272 00:11:47,170 --> 00:11:49,220 er aðeins að segja að í lok dags 273 00:11:49,220 --> 00:11:52,390 allir skrá snið sem þú hefur verið að nota fyrir years-- Microsoft Word skrár, 274 00:11:52,390 --> 00:11:55,820 Tölur skrár, Excel skrá, allir tala af skrá snið 275 00:11:55,820 --> 00:11:57,770 sem gæti hafa sumir þekktur skrá eftirnafn 276 00:11:57,770 --> 00:12:00,130 eru bara 0s og 1s undir hetta. 277 00:12:00,130 --> 00:12:02,970 Og menn hafa ákveðið hvað samninga eru, 278 00:12:02,970 --> 00:12:08,340 hvað mynstur 0s og 1s tákna Word file móti Excel skrá, 279 00:12:08,340 --> 00:12:10,322 móti allir tala af öðrum skráarsniðum. 280 00:12:10,322 --> 00:12:12,780 Svo í pset 4, munt þú hafa óákveðinn greinir í ensku tækifæri til að spila með það. 281 00:12:12,780 --> 00:12:14,405 >> En hvað þýðir það að hafa strúktúr. 282 00:12:14,405 --> 00:12:18,012 Þetta er í raun gott segue nú í C, sem hefur aðeins nokkra 283 00:12:18,012 --> 00:12:20,220 af fleiri aðgerðir sem við höfum ekki litið á enn. 284 00:12:20,220 --> 00:12:24,230 Það er ansi lítið mál og einn af the ágætur lögun um C er struct. 285 00:12:24,230 --> 00:12:27,300 Til dæmis, ef þú vildi represent-- skulum 286 00:12:27,300 --> 00:12:33,690 segja að þú vildir hafa breytu sem táknar nemanda í eitthvað forrit. 287 00:12:33,690 --> 00:12:37,330 Kannski þú varst að skrifa námskeið skráning program, eða algerlega versla 288 00:12:37,330 --> 00:12:38,870 tól, eða eitthvað svoleiðis. 289 00:12:38,870 --> 00:12:42,922 Hvað eru stykki af gögnum sem tengjast að nemandi sem koma upp í hugann? 290 00:12:42,922 --> 00:12:44,880 Eins nemandi er fulltrúa með hvaða gildi? 291 00:12:44,880 --> 00:12:45,732 Já? 292 00:12:45,732 --> 00:12:46,940 Þú ert með nafn sem námsmanni. 293 00:12:46,940 --> 00:12:48,900 Hvað annað er a dæmigerður nemandi hafa? 294 00:12:48,900 --> 00:12:49,320 >> Áhorfendur: [inaudible] 295 00:12:49,320 --> 00:12:50,200 >> DAVID J. Malan: Svo, því miður. 296 00:12:50,200 --> 00:12:50,660 >> Áhorfendur: Age. 297 00:12:50,660 --> 00:12:52,980 >> DAVID J. Malan: An aldur eða afmæli equivalently, jebb. 298 00:12:52,980 --> 00:12:53,557 Hvað annað? 299 00:12:53,557 --> 00:12:54,390 Áhorfendur: kennitala? 300 00:12:54,390 --> 00:12:57,460 DAVID J. Malan: Svo er kennitala, kannski símanúmer, kannski dorm, eða hús, 301 00:12:57,460 --> 00:12:58,670 eða háskóli, eða eitthvað svoleiðis. 302 00:12:58,670 --> 00:13:01,820 Allir tala um stykki af gögnum sem þú gætir hafa á tengiliðalistanum þínum 303 00:13:01,820 --> 00:13:03,890 er það kannski skilgreina nemanda. 304 00:13:03,890 --> 00:13:08,490 Þannig að ef við vildum gera þetta, í kóða, við gætum gert eitthvað einfalt eins og þetta. 305 00:13:08,490 --> 00:13:15,670 Við gætum hafa a program svo sem hefur við skulum segja, int helstu (tóm). 306 00:13:15,670 --> 00:13:18,920 Og ef ég vil til að tákna nemandi Ég gæti hafa, til dæmis, 307 00:13:18,920 --> 00:13:24,330 a band heitir heiti fyrir þá nemendur, a band heitir dorm fyrir að nemandi, 308 00:13:24,330 --> 00:13:26,900 kannski int kallað skírteini fyrir þennan nemanda. 309 00:13:26,900 --> 00:13:30,840 Og vegna þess að ég er að nota band, ég þarf að fara til baka og setja upp cs50.h. 310 00:13:30,840 --> 00:13:33,300 Kannski er ég að fara að þurfa stdio.h. 311 00:13:33,300 --> 00:13:38,190 Svo láta mig gera preemptively þeim og ég er að fara að kalla þetta student.c nú 312 00:13:38,190 --> 00:13:40,080 og vista þetta. 313 00:13:40,080 --> 00:13:44,206 >> Og nú get ég gert eitthvað með þessum breytum. 314 00:13:44,206 --> 00:13:46,830 Og við erum bara að fara að skrifa að sem athugasemd í sauðakóda, 315 00:13:46,830 --> 00:13:48,829 vegna þess að það er ekki áhugavert það sem við gerum nú. 316 00:13:48,829 --> 00:13:51,242 OK, þannig að þetta er forrit sem einhvern veginn geymir nemanda. 317 00:13:51,242 --> 00:13:53,450 Hvað vil ég að gera ef ég vilt geyma tvo nemendur? 318 00:13:53,450 --> 00:13:55,991 Svo fyrst eðlishvöt mín er að fara að vera allt í lagi, bíddu í eina mínútu, 319 00:13:55,991 --> 00:14:01,920 ef ég hef annan nemanda af hverju ekki ég bara gera band nafn 2, string dorm 2, 320 00:14:01,920 --> 00:14:04,190 INT id2. 321 00:14:04,190 --> 00:14:06,540 Og við höfum gert farinn niður þennan veg áður 322 00:14:06,540 --> 00:14:10,890 og hvað var lausn okkar við því sem virðist að vera eins konar hackish Afrita Líma 323 00:14:10,890 --> 00:14:11,555 starf hér? 324 00:14:11,555 --> 00:14:12,346 Áhorfendur: An array. 325 00:14:12,346 --> 00:14:13,830 DAVID J. Malan: Já, við gætum notað fylki. 326 00:14:13,830 --> 00:14:15,620 Hægri þetta mjög fljótt verður ómeðfærilegur. 327 00:14:15,620 --> 00:14:18,453 Þú þarft að raða af geðþótta byrja nafngiftir öllum þessum breytum. 328 00:14:18,453 --> 00:14:22,190 Og þú, manna, að halda lag sem OK NAME2 samsvarar 329 00:14:22,190 --> 00:14:25,060 með dorm2 samsvarar id2. 330 00:14:25,060 --> 00:14:26,200 Það verður bara sóðaskapur. 331 00:14:26,200 --> 00:14:29,350 Svo það er mun auðveldara, muna frá fyrir nokkrum vikum síðan, 332 00:14:29,350 --> 00:14:34,300 bara að þurfa að kallast band nöfn og kannski gefa okkur þrjár af þeim. 333 00:14:34,300 --> 00:14:36,940 Og þá kannski við höfum band dorms og hafa 334 00:14:36,940 --> 00:14:41,900 þrír af þeim, eða saman við stöðugan, int ids og hafa þrjú þeirra. 335 00:14:41,900 --> 00:14:45,250 En jafnvel nú finnst þetta smá sloppy, ekki satt. 336 00:14:45,250 --> 00:14:49,440 Við erum að tala um nemendur og enn Ég er virkilega bústað á lágu stigi 337 00:14:49,440 --> 00:14:50,470 framkvæmd upplýsingar. 338 00:14:50,470 --> 00:14:52,790 Nemandinn er nafn og dorm og ID. 339 00:14:52,790 --> 00:14:59,814 >> Hvers vegna get ég ekki sagt bara breytu heitir nemandi og kalla það er. 340 00:14:59,814 --> 00:15:02,230 Og ef ég vil annan nemanda, hvers vegna get ég ekki kalla það bara ekki. 341 00:15:02,230 --> 00:15:05,260 Eða ef ég vil a heild búnt nemenda, hvers vegna ekki ég bara 342 00:15:05,260 --> 00:15:09,740 segja að ég hafa a heild flokk nemendur og það er þremur af þeim. 343 00:15:09,740 --> 00:15:12,470 Með öðrum orðum, af hverju get ég ekki komið upp með eigin gögn tegund mína, sem heitir 344 00:15:12,470 --> 00:15:15,641 Nemendur, inni sem er nafn, er ID, er dorm, 345 00:15:15,641 --> 00:15:16,890 er allir tala af öðrum sviðum. 346 00:15:16,890 --> 00:15:19,030 Og það kemur í ljós þig getur gert nákvæmlega það. 347 00:15:19,030 --> 00:15:21,850 >> Svo hefur C þessa eiginleika sem kallast struct. 348 00:15:21,850 --> 00:15:24,700 Það er tungumál eiginleiki sem gerir okkur kleift að gera einmitt þetta. 349 00:15:24,700 --> 00:15:28,370 Ég ætla að fara á undan og opna structs.h 350 00:15:28,370 --> 00:15:32,299 þar sem við erum að fara að sjá Eftirfarandi skilgreiningar á nemanda. 351 00:15:32,299 --> 00:15:35,215 Það kemur í ljós - og þetta er jafnvel einfaldara en einn sem felur í sér auðkenni 352 00:15:35,215 --> 00:15:36,080 í smá stund síðan. 353 00:15:36,080 --> 00:15:39,120 Ef þú vilt koma upp með heimabakað gögn tegund, 354 00:15:39,120 --> 00:15:42,750 og auk þess að int og viðarkol, og fljóta og allar þessar aðrir sem eru fyrir hendi, 355 00:15:42,750 --> 00:15:45,810 þú getur gert það með því að bókstaflega skrifa typedef strúktúr, 356 00:15:45,810 --> 00:15:47,880 þá sumir hrokkið axlabönd, inni sem þú 357 00:15:47,880 --> 00:15:51,460 listi breytur sem þú vilt tengja með þessum nýja sérsniðna gögnum 358 00:15:51,460 --> 00:15:55,670 skrifar eins og nafn og dorm, og þá eftir hrokkið axlabönd 359 00:15:55,670 --> 00:15:57,860 þú gefur upp nafn á nýja tegund gagna. 360 00:15:57,860 --> 00:15:59,220 Svo, til dæmis, nemandi. 361 00:15:59,220 --> 00:16:03,247 >> Og hvað er gott um þetta núna er að ef við skoðum sama kóða, 362 00:16:03,247 --> 00:16:05,080 venju, fyrsta af öllu, er að setja þetta 363 00:16:05,080 --> 00:16:08,230 í skrá sem kallast eitthvað punktur h, haus skrá, sem við höfum ekki 364 00:16:08,230 --> 00:16:09,780 byrjaði að nota okkur of mikið. 365 00:16:09,780 --> 00:16:12,120 En við erum að fara að byrja með töluvert núna. 366 00:16:12,120 --> 00:16:18,650 Og hvað við getum gert með það, lokum, í þessum fáu línum af kóða 367 00:16:18,650 --> 00:16:22,130 er lýsa nákvæmlega sem gögn gerð, nemandi. 368 00:16:22,130 --> 00:16:23,230 Og nú skulum við nota það. 369 00:16:23,230 --> 00:16:27,274 >> Ég ætla að nú fara í skrá sem heitir structs1.c. 370 00:16:27,274 --> 00:16:29,440 Og við skulum taka a líta á a Nokkrum einkenni hér. 371 00:16:29,440 --> 00:16:32,250 Svo er efni upp hér aðallega þekki, og við munum 372 00:16:32,250 --> 00:16:35,040 koma aftur til það er ekki þekki í bara smá stund. 373 00:16:35,040 --> 00:16:39,880 Þetta er auðvitað meðal mína eigin haus skrá, sem er ný og vel, 374 00:16:39,880 --> 00:16:42,580 nema pset 3 þar, muna, höfum við helpers.h. 375 00:16:42,580 --> 00:16:45,150 Svo þú might muna #include helpers.h. 376 00:16:45,150 --> 00:16:49,381 >> Hvers vegna þó ég noti þegar ég vitna í stað þess að horn sviga? 377 00:16:49,381 --> 00:16:50,630 Hvenær þarf ég að velja á milli þeirra? 378 00:16:50,630 --> 00:16:52,310 Næstum alltaf Ég virðist að nota horn sviga. 379 00:16:52,310 --> 00:16:55,040 Og þá, allt í einu á lína sex Ég er að nota gæsalappa. 380 00:16:55,040 --> 00:16:55,860 Hvers vegna gæti það verið? 381 00:16:55,860 --> 00:16:56,700 Já? 382 00:16:56,700 --> 00:16:57,725 >> Áhorfendur: [inaudible] 383 00:16:57,725 --> 00:16:59,350 DAVID J. Malan: Það er í raun, hvað? 384 00:16:59,350 --> 00:17:00,559 Áhorfendur: Það er í IDE þinn. 385 00:17:00,559 --> 00:17:02,475 DAVID J. Malan: Já, það er í raun IDE mínu. 386 00:17:02,475 --> 00:17:05,690 Og við skulum ekki búa á IDE, því það er bara tól sem ég nota. 387 00:17:05,690 --> 00:17:08,119 Það er í núverandi minn skrá, sérstaklega. 388 00:17:08,119 --> 00:17:11,647 Svo er structs.h eigin minn skrá ekki sett í IDE, 389 00:17:11,647 --> 00:17:14,480 í stýrikerfinu sjálfu, heldur er það í núverandi möppu mína. 390 00:17:14,480 --> 00:17:16,910 Svo samningur er ef þú vilt að fela eigin haus skrá, 391 00:17:16,910 --> 00:17:18,200 þú notar bara gæsalappa. 392 00:17:18,200 --> 00:17:23,290 >> Hvað gerum við köllum þetta í lína 8, almennt séð? 393 00:17:23,290 --> 00:17:25,200 Þetta er það? 394 00:17:25,200 --> 00:17:28,220 #define eitthvað. 395 00:17:28,220 --> 00:17:31,040 Þetta táknar fastar, ekki satt? 396 00:17:31,040 --> 00:17:33,140 Ef þú vilt hafa gildi í forritinu 397 00:17:33,140 --> 00:17:35,110 sem þú notar í heild fullt af tímum, það er 398 00:17:35,110 --> 00:17:39,330 gott venju að þáttur það út, lýsa því, með kjötkássa tákn 399 00:17:39,330 --> 00:17:43,340 skilgreina, þá samkvæmt venju, í öllum hástafi word-- þó það sé ekki 400 00:17:43,340 --> 00:17:45,320 nauðsynlegt, en það er mannlegt samningur 401 00:17:45,320 --> 00:17:47,210 að nýta Fastar svo að þeir stökkva út 402 00:17:47,210 --> 00:17:50,380 á þig visually-- pláss og þá gildi sem þú vilt vera 403 00:17:50,380 --> 00:17:52,250 jafngildir nafni þessi fasti er. 404 00:17:52,250 --> 00:17:56,110 Nei semíkommu, en þú einfaldlega fylgja því mynstri þar. 405 00:17:56,110 --> 00:17:57,770 >> Svo hvað er ég að gera í þessum raunverulegum kóða. 406 00:17:57,770 --> 00:18:00,660 Svo skulum taka a líta á the aðalæð program hér. 407 00:18:00,660 --> 00:18:04,080 Í línu 12 vegna þess að ég hafa ma structs.h, 408 00:18:04,080 --> 00:18:06,492 Ég hef nú dularfullur á minn förgun ný gögn gerð. 409 00:18:06,492 --> 00:18:09,200 Ég er ekki bara að hafa aðgang að int, og bleikju, og fljóta, og band, 410 00:18:09,200 --> 00:18:10,060 og blár og aðrir. 411 00:18:10,060 --> 00:18:12,470 Ég hef nú aðgang að nemandi gögn tegund. 412 00:18:12,470 --> 00:18:17,740 Svo í línu 12, ég er að sameina tvö ideas-- einn sérsniðin gögn gerð og tvö, 413 00:18:17,740 --> 00:18:18,940 að nota fylkingu. 414 00:18:18,940 --> 00:18:21,700 Og svo í þessari áætlun ef Ég vil í raun styðja 415 00:18:21,700 --> 00:18:24,320 þrjár mismunandi nemendur í áætlun mína, ég 416 00:18:24,320 --> 00:18:30,480 getum einfaldlega sagt gefa mér breytu kallast nemendur, sem hver um sig 417 00:18:30,480 --> 00:18:32,970 er gerð nemenda, sem er sérsniðin gögn tegund mína. 418 00:18:32,970 --> 00:18:35,890 Og, sérstaklega, gefa mér þrír af þeim í array minn. 419 00:18:35,890 --> 00:18:37,750 >> Svo nú hvað eigum við að gera í þessari áætlun? 420 00:18:37,750 --> 00:18:40,670 Hér er bara fyrir lykkja iterating frá 0 til 3, því það er 421 00:18:40,670 --> 00:18:42,110 hvaða gildi nemenda er. 422 00:18:42,110 --> 00:18:44,420 Ég ætla bara að vekur notandi gefa mér nafn nemandans. 423 00:18:44,420 --> 00:18:48,090 Og þá í línu 17, við hafa að mestu kunnugleg línu. 424 00:18:48,090 --> 00:18:50,370 Við höfum gamlan vin okkar Getstring á hægri. 425 00:18:50,370 --> 00:18:52,345 Og hvað stykki af setningafræði er greinilega ný, 426 00:18:52,345 --> 00:18:55,130 ef þú hefur aldrei forritað í C áður, og hafa aldrei notað structs? 427 00:18:55,130 --> 00:18:55,510 Já? 428 00:18:55,510 --> 00:18:56,417 >> Áhorfendur: The .name. 429 00:18:56,417 --> 00:18:57,500 DAVID J. Malan: The .name. 430 00:18:57,500 --> 00:19:01,220 En þetta er ekki of mikið af stökk, því nú nemendur krappi i 431 00:19:01,220 --> 00:19:02,590 gefur þér i-ta nemanda. 432 00:19:02,590 --> 00:19:04,730 Og ef þú vilt að kafa inni í því skipulagi, 433 00:19:04,730 --> 00:19:09,490 þú notar bara eitt tímabil og þá nafn breytu inni, 434 00:19:09,490 --> 00:19:11,900 eða eign inni sem þú vilt fá aðgang að. 435 00:19:11,900 --> 00:19:14,816 Á sama hátt þá, ef ég hvetja þá notandi, gefa mér dorm nemandans, 436 00:19:14,816 --> 00:19:18,390 þú getur álíka geymt sem band í dorm breytu inni 437 00:19:18,390 --> 00:19:19,940 þeirrar nemenda uppbyggingu. 438 00:19:19,940 --> 00:19:21,410 >> Og nú hlutirnir fá smá ímynda. 439 00:19:21,410 --> 00:19:24,420 Og þetta er að fara að horfa á kannski fullt alveg strax. 440 00:19:24,420 --> 00:19:27,970 En þú munt sjá þetta miklu meira í pset 4, svo við skulum bara litið á það núna. 441 00:19:27,970 --> 00:19:33,364 Það kemur í ljós að í línu 23 gegnum 38, hvað finnst þér ég kannski að gera? 442 00:19:33,364 --> 00:19:35,530 Ég hef eytt athugasemdir í dag, en þá útgáfu 443 00:19:35,530 --> 00:19:38,660 af kóða á netinu fyrir Vitnað hefur allar athugasemdir. 444 00:19:38,660 --> 00:19:40,171 Hvað á ég að virðast vera að gera? 445 00:19:40,171 --> 00:19:42,530 >> Áhorfendur: Saving skrá með öllum þær upplýsingar sem notandinn slær inn. 446 00:19:42,530 --> 00:19:44,530 >> DAVID J. Malan: Já, nákvæmlega, þetta er ný leið 447 00:19:44,530 --> 00:19:46,370 sem við erum að sjá tvo, Annar lögun af C, 448 00:19:46,370 --> 00:19:48,700 þar sem ég get búið til mínar eigin skrár. 449 00:19:48,700 --> 00:19:51,580 Svona langt, nánast hvert forrit þú hefur skrifað er án ríkisfangs. 450 00:19:51,580 --> 00:19:53,334 Um leið og það er gert í gangi, það er það. 451 00:19:53,334 --> 00:19:55,000 Það er ekkert minni eða recollection af því. 452 00:19:55,000 --> 00:19:56,110 Það er engin skrá vistuð. 453 00:19:56,110 --> 00:19:58,120 En ef þú vilt að vista inntak sem hefur 454 00:19:58,120 --> 00:20:02,100 gerðist, eins og í leik eða forrit svona, það kemur í ljós að við getum gert það. 455 00:20:02,100 --> 00:20:04,360 Og þú munt sjá þetta meira í pset 4 og í kafla. 456 00:20:04,360 --> 00:20:08,661 En þessi lína 23 í meginatriðum býr til skrá sem heitir students.csv. 457 00:20:08,661 --> 00:20:10,160 Og þú gætir hafa séð þetta áður. 458 00:20:10,160 --> 00:20:14,250 Jafnvel ef þú hefur aldrei rannsakað CS áður, CSV er comma aðskilin breytur. 459 00:20:14,250 --> 00:20:19,000 Það er eins og a mjög fátækur maður er útgáfa af Excel skrá, 460 00:20:19,000 --> 00:20:22,270 sem þýðir að það gæti verið opnuð í Excel og í Apple Numbers, 461 00:20:22,270 --> 00:20:23,830 og það hefur raðir og dálka. 462 00:20:23,830 --> 00:20:26,485 En það er ekki sér- snið eins og Microsoft eða Apple. 463 00:20:26,485 --> 00:20:29,840 Það er bara kommum að aðgreina gildi sem við munum sjá í smá stund. 464 00:20:29,840 --> 00:20:31,010 >> Og bara taka giska. 465 00:20:31,010 --> 00:20:33,480 Í samræmi 23, í mjög enda, annar rök mín 466 00:20:33,480 --> 00:20:37,700 að þessu nýja aðgerð sem kallast F opinn fyrir Opna skrá er m. 467 00:20:37,700 --> 00:20:39,430 Hvað gæti W tákna? 468 00:20:39,430 --> 00:20:40,022 Já? 469 00:20:40,022 --> 00:20:41,260 >> Áhorfendur: Það leyfir þér að skrifa í skrána? 470 00:20:41,260 --> 00:20:42,630 >> DAVID J. Malan: Það leyfir þú skrifar í skrá. 471 00:20:42,630 --> 00:20:44,810 Svo er það a par af afbrigði að við getum stinga hérna. 472 00:20:44,810 --> 00:20:47,184 En ef þú vilt bara að lesa skrá, sem er að líta á það 473 00:20:47,184 --> 00:20:50,010 og lesa það í minni, þér bara nota vitna unquote "r". 474 00:20:50,010 --> 00:20:53,110 Ef þú vilt skrifa til skrá, þú nota tilvitnun unquote "w". 475 00:20:53,110 --> 00:20:55,190 Það er líka auka við og a par af öðrum hlutum 476 00:20:55,190 --> 00:20:57,356 ef þú vilt breyta núverandi skrá. 477 00:20:57,356 --> 00:21:00,480 Nú erum við að fara að halda að sjá þetta hlutur, þá munum við koma aftur til að stilla 24. 478 00:21:00,480 --> 00:21:02,640 NULL, það kemur í ljós, er sérstakt gildi sem 479 00:21:02,640 --> 00:21:06,070 er hægt að skila með tilteknum aðgerðum ef eitthvað hefur farið wrong-- 480 00:21:06,070 --> 00:21:08,490 ef skráin er ekki til, ef þú hefur keyrt út af minni, 481 00:21:08,490 --> 00:21:09,620 eða fullt af öðrum villum. 482 00:21:09,620 --> 00:21:13,470 En nú, við skulum gera ráð fyrir bara að þetta er bara venjulegur villuprófun. 483 00:21:13,470 --> 00:21:17,090 Hér í línu 26, ég er að iterating frá 0 til 3 yfir alla nemendur mína. 484 00:21:17,090 --> 00:21:20,470 Og þetta er góður af eins konar nýs virka, fprintf, 485 00:21:20,470 --> 00:21:21,460 en bara taka giska. 486 00:21:21,460 --> 00:21:24,370 Ef printf er bara prenta a sniðinn band, 487 00:21:24,370 --> 00:21:26,507 hvað þýðir fprintf meina sennilega? 488 00:21:26,507 --> 00:21:27,590 Áhorfendur: Prenta í skrá. 489 00:21:27,590 --> 00:21:29,290 DAVID J. Malan: Prentaðu sniðinn band í skrá. 490 00:21:29,290 --> 00:21:31,180 Það er það sem viðbótar F leið er skrá. 491 00:21:31,180 --> 00:21:36,420 Og nýja fyrsta rifrildi er að vera breytan sem táknar skrá. 492 00:21:36,420 --> 00:21:38,866 Þá höfum við bara snið string bara eins printf. 493 00:21:38,866 --> 00:21:40,740 Og jafnvel þótt það setningafræði er nýtt, þetta er bara 494 00:21:40,740 --> 00:21:44,610 þýðir stinga í nafni nemanda, stinga í nemanda dorm, og þá 495 00:21:44,610 --> 00:21:47,160 með fclose, loka skrá. 496 00:21:47,160 --> 00:21:49,730 Og þá lastly-- þetta er nýtt og við munum koma aftur til þessa 497 00:21:49,730 --> 00:21:53,240 áður long-- ég losað nemandi ástæðum 498 00:21:53,240 --> 00:21:54,860 sem gerðist upp hér að ofan þar. 499 00:21:54,860 --> 00:21:56,820 En við munum koma aftur til að áður en long-- 500 00:21:56,820 --> 00:21:59,820 það er vegna þess hversu GetString er í raun að vinna undir hetta. 501 00:21:59,820 --> 00:22:01,280 >> Svo skulum taka a fljótur líta hér. 502 00:22:01,280 --> 00:22:04,380 Ef ég tegund LS í möppuna mína, eftir því að ég er ekki 503 00:22:04,380 --> 00:22:09,360 hafa skrá sem heitir students.csv, bara ekki þarna, er ekki til. 504 00:22:09,360 --> 00:22:14,965 Svo ef ég safna saman nú þetta forrit, gera structs-1,. / structs-1, 505 00:22:14,965 --> 00:22:20,570 og ég ætla að fara á undan og tegund í Andi, sem býr í Berkeley í Yale. 506 00:22:20,570 --> 00:22:26,350 Við erum að fara að hafa Rob sem býr í Thayer þessa dagana. 507 00:22:26,350 --> 00:22:33,760 Og við skulum koma upp með þar er, held ég, Maria er í Mather, 508 00:22:33,760 --> 00:22:35,100 ef ég hefi minnst á réttan hátt. 509 00:22:35,100 --> 00:22:36,460 >> Svo ekkert virðist gerast. 510 00:22:36,460 --> 00:22:40,680 En ef ég tegund LS nú, það er students.csv. 511 00:22:40,680 --> 00:22:43,080 Við skulum fara á undan og opna students.csv. 512 00:22:43,080 --> 00:22:46,050 Þetta er aftur mjög léttur skráarsnið. 513 00:22:46,050 --> 00:22:49,570 En ég hef einfaldlega samþykkti samninginn að ég hef tvær raðir og dálka hér. 514 00:22:49,570 --> 00:22:52,020 Fyrsti dálkurinn er Fyrstu mannanöfnum. 515 00:22:52,020 --> 00:22:55,740 Annar dálkurinn er nemandi er dorm, eða háskóli, eða hús, eða whatnot. 516 00:22:55,740 --> 00:22:57,900 Og nú hef ég vistað þetta varanlega í skrá. 517 00:22:57,900 --> 00:22:59,280 >> Svo það er ekki allt sem áhugavert. 518 00:22:59,280 --> 00:23:02,980 En þetta er bara stepping steinn nú að vera fær um að hverfa upplýsingar 519 00:23:02,980 --> 00:23:04,040 varanlega. 520 00:23:04,040 --> 00:23:08,340 Svo skulum nú sjá hvað meira getum við gera með þessum og öðrum aðgerðum. 521 00:23:08,340 --> 00:23:10,729 En fyrst, einhverjar spurningar? 522 00:23:10,729 --> 00:23:12,145 Það var mikið, og það var hratt. 523 00:23:12,145 --> 00:23:16,131 En þú munt sjá mikið meira í pset 4 svæðinu, jafnframt. 524 00:23:16,131 --> 00:23:16,630 Já? 525 00:23:16,630 --> 00:23:19,360 >> Áhorfendur: Er there a vegur til að halda áfram að bæta nöfnum við þessi skrá? 526 00:23:19,360 --> 00:23:19,880 >> DAVID J. Malan: Góð spurning. 527 00:23:19,880 --> 00:23:21,800 Er there a vegur til að halda áfram bæta nöfnum við þessi skrá? 528 00:23:21,800 --> 00:23:22,340 Já. 529 00:23:22,340 --> 00:23:24,630 Og í raun, ef þú endar upp með tilvísun til-að opna skrána, 530 00:23:24,630 --> 00:23:26,780 þú myndir nota tilvitnun unquote "a" fyrir auka, 531 00:23:26,780 --> 00:23:31,090 sem vildi bara bæta við nýrri línu, a Ný lína aftur og aftur, einmitt. 532 00:23:31,090 --> 00:23:32,010 Góð spurning. 533 00:23:32,010 --> 00:23:32,950 Aðrar spurningar? 534 00:23:32,950 --> 00:23:33,450 Já? 535 00:23:33,450 --> 00:23:35,580 Áhorfendur: Ef þú hleypur í program aftur núna, 536 00:23:35,580 --> 00:23:38,000 myndi það halda að bæta nöfnum á skrá eða myndi það opna nýja skrá? 537 00:23:38,000 --> 00:23:38,740 >> DAVID J. Malan: Ah, góð spurning. 538 00:23:38,740 --> 00:23:41,448 Ef þú hleypur forritið aftur rétt nú, kannski slegið í nýjum nöfnum, 539 00:23:41,448 --> 00:23:44,820 myndi það bæta við skrá eða skrifa yfir skrána? 540 00:23:44,820 --> 00:23:47,420 Síðarnefndu, því ég er ekki nota auka ham. 541 00:23:47,420 --> 00:23:49,930 Og vegna þess að ég er bara í blindni opna skrána til að skrifa, 542 00:23:49,930 --> 00:23:51,310 það er bara að fara að skrifa yfir skrána. 543 00:23:51,310 --> 00:23:54,570 Þannig að ég myndi örugglega þurfa að gera er bæta, ef ég vil í raun og veru hafa langtíma 544 00:23:54,570 --> 00:23:55,350 gagnagrunnur. 545 00:23:55,350 --> 00:23:58,220 >> Nú er CSV gagnlegt, hreinskilnislega, jafnvel fyrir eins og ef þú ert writing-- 546 00:23:58,220 --> 00:24:00,100 og við munum að lokum sjá þetta síðar í önn þegar 547 00:24:00,100 --> 00:24:01,455 við notum CSVs í öðrum tilgangi. 548 00:24:01,455 --> 00:24:04,920 Ef þú vilt geyma allt fólkið sem hafa skráð sig til að tiltekinn atburður 549 00:24:04,920 --> 00:24:07,420 eða skráð sig fyrir nemendur þína hópur, eða eitthvað svoleiðis, 550 00:24:07,420 --> 00:24:10,330 geyma gögn í þessari tegund af snið er frábær þægilegur. 551 00:24:10,330 --> 00:24:12,580 Því bókstaflega, ef ég voru að sækja þessa skrá. 552 00:24:12,580 --> 00:24:14,540 Ég gæti double-- og við skulum reyna raun þetta 553 00:24:14,540 --> 00:24:16,720 ef ég hef Excel eða Numbers hér. 554 00:24:16,720 --> 00:24:19,130 >> Ég ætla að hægrismella eða stjórn-smella skrá minn. 555 00:24:19,130 --> 00:24:20,020 Úpps. 556 00:24:20,020 --> 00:24:21,830 Hægri-smelltu eða stjórna smellur skrá minn. 557 00:24:21,830 --> 00:24:24,960 Koma á, mús minn er ekki í samstarfi. 558 00:24:24,960 --> 00:24:32,694 Download-- Ég ætla að sækja allar skrár hér svo 559 00:24:32,694 --> 00:24:33,860 bara svo ég geti grípa þetta einn. 560 00:24:33,860 --> 00:24:37,850 Og við skulum sjá hvort þetta virkar students.csv-- fyrsta skipti 561 00:24:37,850 --> 00:24:39,310 Ég hef virkur. 562 00:24:39,310 --> 00:24:41,360 Nú þeir vilja sjá tengiliði mína. 563 00:24:41,360 --> 00:24:44,310 Nú þarf ég að skrá sig. 564 00:24:44,310 --> 00:24:47,620 Sjá hversu auðvelt það er að nota CSVs? 565 00:24:47,620 --> 00:24:50,840 Já, halda það upp til dagsetning. 566 00:24:50,840 --> 00:24:52,375 OK, nú erum við tilbúin fyrir bekknum. 567 00:24:52,375 --> 00:24:58,750 568 00:24:58,750 --> 00:25:00,370 OK, ó, hvað er nýtt? 569 00:25:00,370 --> 00:25:02,920 OK, nálægt. 570 00:25:02,920 --> 00:25:04,750 Það var töfrandi. 571 00:25:04,750 --> 00:25:07,280 OK, nú verðum við að uppfæra. 572 00:25:07,280 --> 00:25:10,890 Og nú, gleymdi það hvað skrá I upphaflega opnaði, 573 00:25:10,890 --> 00:25:13,090 en hvað a-- það sem við förum. 574 00:25:13,090 --> 00:25:16,341 OK, svo nú höfum við Excel skrá. 575 00:25:16,341 --> 00:25:18,290 Þakka þér fyrir. 576 00:25:18,290 --> 00:25:20,764 >> OK, svo það sem ég gerði var auðvelt að hluta. 577 00:25:20,764 --> 00:25:23,930 Auðvitað hefði ég getað fyrirfram uppsett Excel, eða Numbers, eða hvað program. 578 00:25:23,930 --> 00:25:25,846 En þetta er gott, vegna þess að nú get ég vinna 579 00:25:25,846 --> 00:25:28,090 gögn í stöðluðu sniði. 580 00:25:28,090 --> 00:25:30,294 >> Samhengi Svo nú skulum skipta yfir þar sem við var horfið 581 00:25:30,294 --> 00:25:32,710 síðasta sinn, sem var að byrja að taka burt þjálfun hjól. 582 00:25:32,710 --> 00:25:34,543 En fyrst, þú gerðir ekki sjá þetta fyrr hádegismat 583 00:25:34,543 --> 00:25:38,150 er aftur að gerast hér á eld og Ís í Cambridge, Sítar í New Haven. 584 00:25:38,150 --> 00:25:43,150 Skráðu þig á CS50s vefsvæði ASAP til að taka þátt CS50 nemendur og starfsfólk. 585 00:25:43,150 --> 00:25:46,090 >> Svo tókum þjálfun hjól burt á mánudaginn eins follows-- 586 00:25:46,090 --> 00:25:49,120 strengur hefur verið lýst í CS50s bókasafn í nokkurn tíma. 587 00:25:49,120 --> 00:25:52,650 Og það er gott, því það gerir okkur til að tala um breytur eins og að vera 588 00:25:52,650 --> 00:25:54,660 heill orð og setningar og fleira. 589 00:25:54,660 --> 00:25:56,710 En það kemur í ljós band er ekki til. 590 00:25:56,710 --> 00:26:00,200 Það er bara samheiti, eða alias, sem við höfum búið til fyrir eitthvað sem 591 00:26:00,200 --> 00:26:03,780 reyndar er svolítið meira tæknilega kallast bleikju *. 592 00:26:03,780 --> 00:26:07,900 >> Og reyndar, við sáum dæmi af áætlun á mánudag 593 00:26:07,900 --> 00:26:11,200 sem ekki hegða sér alveg eins og við bjuggumst við. 594 00:26:11,200 --> 00:26:13,630 Þetta var skrá, bera saman-0. 595 00:26:13,630 --> 00:26:17,910 Og muna að bera saman-0, ef Ég laun áætlun Mánudagur 596 00:26:17,910 --> 00:26:22,670 og hlaupa saman-0 og slá í mömmu í lágstafir, og mamma með lágstöfum aftur. 597 00:26:22,670 --> 00:26:25,320 The program krafðist I slá mismunandi hluti, 598 00:26:25,320 --> 00:26:29,210 jafnvel þótt mamma, allt í lágstafir, er eins sjónrænt. 599 00:26:29,210 --> 00:26:31,990 Svo það var stutt svar fyrir því hvers vegna tölvan hugsar 600 00:26:31,990 --> 00:26:34,500 þessir tveir strengir eru öðruvísi? 601 00:26:34,500 --> 00:26:35,250 Já? 602 00:26:35,250 --> 00:26:36,534 >> Áhorfendur: [inaudible] 603 00:26:36,534 --> 00:26:37,450 DAVID J. Malan: Hægri. 604 00:26:37,450 --> 00:26:39,600 Svo, mamma, í fyrsta sinn Ég slegið það inn í, er að vera 605 00:26:39,600 --> 00:26:42,710 geymdar einhvers staðar í tölvunni er mín minni en á öðrum stað 606 00:26:42,710 --> 00:26:44,690 en í annað sinn sem ég tegund í mömmu. 607 00:26:44,690 --> 00:26:46,580 Nú það vissulega gæti verið fullmótaðar. 608 00:26:46,580 --> 00:26:49,205 Tölvan gæti verið klár og gera sér grein fyrir þessum tveimur strengi, hey, 609 00:26:49,205 --> 00:26:49,954 þeir eru eins. 610 00:26:49,954 --> 00:26:51,520 Ég get ekki redundantly geyma það. 611 00:26:51,520 --> 00:26:54,229 En tölvur gera það ekki hagræðingu nema þú segir þeim að. 612 00:26:54,229 --> 00:26:56,061 Svo, við vanræksla, þeir bara að fara að enda 613 00:26:56,061 --> 00:26:57,670 í tveimur mismunandi stöðum í minni. 614 00:26:57,670 --> 00:27:01,570 Og svo til að vera skýrari, þegar við saman tvo strengi, 615 00:27:01,570 --> 00:27:03,950 Sú fyrsta var kallað s, annað var kallaður 616 00:27:03,950 --> 00:27:08,530 t, hvað sérstaklega var ég bera hér á línu 13? 617 00:27:08,530 --> 00:27:09,494 Já. 618 00:27:09,494 --> 00:27:12,390 >> Áhorfendur: Það er staður í minni að breyta vilja benda á. 619 00:27:12,390 --> 00:27:14,900 >> DAVID J. Malan: Einmitt, ég var bera saman stað í minni 620 00:27:14,900 --> 00:27:16,300 að þeir breytur bent til. 621 00:27:16,300 --> 00:27:20,560 Svo sérstaklega ef mamma var bæti númer 1, og 2, og 3, 622 00:27:20,560 --> 00:27:24,020 og 4-- vegna muna sviga 0 þarf að vera alla leið á endanum. 623 00:27:24,020 --> 00:27:29,420 Og hinn dæmi um mömmu, m-o-m, var á netfangið 10, 11, 12, og 13. 624 00:27:29,420 --> 00:27:33,100 Ég var að bera saman 1, sem heimilisfang, sem staðsetningu í minni, 625 00:27:33,100 --> 00:27:35,160 gegn 10, sem er augljóslega ekki það sama. 626 00:27:35,160 --> 00:27:36,260 1 er ekki 10. 627 00:27:36,260 --> 00:27:39,620 >> Svo er þetta ágætur í því það er nokkuð augljóst. 628 00:27:39,620 --> 00:27:42,870 En það er erfitt að því leyti sem við getum ekki virðast til að bera saman strengi. 629 00:27:42,870 --> 00:27:44,930 Svo fundamentally-- og á þessum lágu stigi, 630 00:27:44,930 --> 00:27:47,300 ef þú vildir að innleiða forrit til að bera saman 631 00:27:47,300 --> 00:27:50,270 tvö aðskilin orð að notandinn hefur slegið í fyrir gæði, 632 00:27:50,270 --> 00:27:53,944 gera þeir stilla upp bleikju í bleikju, bara í almennum skilmálum, 633 00:27:53,944 --> 00:27:55,360 hvað þurfum við að gera, virðist? 634 00:27:55,360 --> 00:27:57,940 Það er ekki nóg bara að líta á þessum tveimur heimilisföng. 635 00:27:57,940 --> 00:27:58,860 Hvað þurfum við að gera? 636 00:27:58,860 --> 00:27:59,360 Já? 637 00:27:59,360 --> 00:28:01,120 >> Áhorfendur: Iterate gegnum band [inaudible]. 638 00:28:01,120 --> 00:28:02,600 >> DAVID J. Malan: Já, við skulum iterate gegnum streng. 639 00:28:02,600 --> 00:28:05,808 Notum fyrir lykkju, while lykkju, eða hvað sem þú ert þægilegur með. 640 00:28:05,808 --> 00:28:08,840 Og ef við höfum fengið tvo strengi einhvers staðar í minni, við skulum líta á hvert áratugnum 641 00:28:08,840 --> 00:28:11,770 Fyrsti stafurinn, þá er hvert annað eðli, þá þriðju og fjórðu, 642 00:28:11,770 --> 00:28:15,206 og fimmta, þar til við högg hvað sérstakt Sentinel gildi? 643 00:28:15,206 --> 00:28:16,080 Áhorfendur: [inaudible] 644 00:28:16,080 --> 00:28:18,800 DAVID J. Malan: Já, sviga núll, á hver benda annaðhvort band 645 00:28:18,800 --> 00:28:20,100 við getum ákveðið það er það. 646 00:28:20,100 --> 00:28:21,970 Höfum við samþykkt hvert einasta staf? 647 00:28:21,970 --> 00:28:22,990 Ef ekki, return false. 648 00:28:22,990 --> 00:28:24,770 Ef svo er, aftur satt. 649 00:28:24,770 --> 00:28:28,800 Og svo er það einmitt það sem þessi útgáfa áætlunarinnar bera-1.c gerir. 650 00:28:28,800 --> 00:28:31,677 Það er eins og það sem við horfði á mánudaginn nema að ég hef 651 00:28:31,677 --> 00:28:34,760 fengið losa af orðinu string-- þó sem hefur enga virkni impact-- allt 652 00:28:34,760 --> 00:28:37,450 Ég er að gera núna er að fjarlægja sumir sjón hjól þjálfun, 653 00:28:37,450 --> 00:28:40,880 en að sjá greinilega að s og t er viðtakandi. 654 00:28:40,880 --> 00:28:43,020 Og það er það sem stjarnan, Stjarnan, táknar 655 00:28:43,020 --> 00:28:46,690 er heimilisfang, annars þekkt meira tæknilega sem bendill. 656 00:28:46,690 --> 00:28:49,880 >> Svo þegar ég lýsi s á lína 9 og segja char * s, 657 00:28:49,880 --> 00:28:52,160 það þýðir ekki að gefa mér streng. 658 00:28:52,160 --> 00:28:56,360 Það þýðir að gefa mér breytu sem lét tilgangur í lífinu er að geyma ávarp. 659 00:28:56,360 --> 00:29:00,400 Vegna þess að ég er að fara að setja heimilisfang streng inn í það. 660 00:29:00,400 --> 00:29:03,500 Og reyndar, GetString, að vera ljóst, ekki aftur a band. 661 00:29:03,500 --> 00:29:06,110 Það hverfur ekki aftur mömmu sviga núll, í sjálfu sér. 662 00:29:06,110 --> 00:29:10,005 Hvað þýðir getstring sérstaklega og nákvæmlega aftur? 663 00:29:10,005 --> 00:29:10,880 Áhorfendur: [inaudible] 664 00:29:10,880 --> 00:29:14,080 DAVID J. Malan: An heimilisfang, heimilisfang fyrsta staf 665 00:29:14,080 --> 00:29:16,070 í sumum band það hefur fengið. 666 00:29:16,070 --> 00:29:19,250 Og svo nú erum við að sjá sérstakt leitarorð aftur. 667 00:29:19,250 --> 00:29:20,640 Og ég benti á þetta fyrr. 668 00:29:20,640 --> 00:29:23,620 Þetta er að fara að vera góður samningur að við munum sjá aftur og aftur nú. 669 00:29:23,620 --> 00:29:27,540 Ég stöðva til að tryggja að s er ekki null og t er ekki null. 670 00:29:27,540 --> 00:29:30,100 Vegna miðað Mitt raunverulega fljótur minnst fyrr, 671 00:29:30,100 --> 00:29:35,510 hvað gæti þýtt ef GetString skilar ekki verið heimilisfang en N-U-L-L, sem er aftur, 672 00:29:35,510 --> 00:29:36,990 sumir sérstakur gildi? 673 00:29:36,990 --> 00:29:37,890 >> Áhorfendur: Villa. 674 00:29:37,890 --> 00:29:38,600 >> DAVID J. Malan: Það er villa. 675 00:29:38,600 --> 00:29:39,550 Eitthvað fór úrskeiðis. 676 00:29:39,550 --> 00:29:41,341 Og hvað oftast gæti gerst, sérstaklega 677 00:29:41,341 --> 00:29:45,162 með strings-- sem gæti verið Óþekkt lengd í advance-- 678 00:29:45,162 --> 00:29:46,870 Kannski tölvur ' út af minni, kannski 679 00:29:46,870 --> 00:29:49,280 þú gafst í slíkum lengi orð eða setningu 680 00:29:49,280 --> 00:29:51,880 eða límt svo mikið ritgerð það er bara ekki nóg minni. 681 00:29:51,880 --> 00:29:55,340 Og svo GetString ekki aftur heimilisfangið af the heild hlutur, 682 00:29:55,340 --> 00:29:56,620 svo það skilar bara ekkert. 683 00:29:56,620 --> 00:30:00,580 Og það segir villu hefur gerst með því að endurgreiða sérstaka NULL gildi. 684 00:30:00,580 --> 00:30:02,890 Það er núll netfang, svo að segja. 685 00:30:02,890 --> 00:30:06,157 >> Nú kemur í ljós kemur C með fall sem gerir það endurtekning. 686 00:30:06,157 --> 00:30:09,240 Við þurfum ekki að framkvæma þetta með fyrir lykkju eða while lykkju sjálf. 687 00:30:09,240 --> 00:30:11,150 Við getum notað virka, heitir succinctly, 688 00:30:11,150 --> 00:30:15,400 hrærið samningur, eða band saman, sem Tilgangur lífsins er að gera einmitt það. 689 00:30:15,400 --> 00:30:19,990 Þú gefur það tvær ábendingum tvö heimilisföng, og það mun fara til þeirra heimilisföng 690 00:30:19,990 --> 00:30:23,130 og þá bera saman bréf til bréf fyrir bréf fyrir gæði, 691 00:30:23,130 --> 00:30:26,610 hætt þegar það er satt? 692 00:30:26,610 --> 00:30:31,540 Þegar innsæi ætti hrærið samningur hætta iterating, bara til að vera ljóst? 693 00:30:31,540 --> 00:30:35,400 Þegar það hits sviga 0 í annaðhvort band, á hver benda hann getur ákveðið 694 00:30:35,400 --> 00:30:38,910 hefur allt samþykkt, eða hefur það verið misræmi? 695 00:30:38,910 --> 00:30:42,740 >> Svo, ef við keyra þetta núna og reyna litla hástafi leikur okkar, 696 00:30:42,740 --> 00:30:49,260 svo gera saman-1, ./compare-1, og slá mömmu í lágstöfum í bæði skiptin. 697 00:30:49,260 --> 00:30:50,560 Nú er það sama. 698 00:30:50,560 --> 00:30:54,080 Og ef ég geri það aftur með lágstafir og þá kannski hástafir. 699 00:30:54,080 --> 00:30:56,720 Nú greinir það örugglega milli efri og lágstafir. 700 00:30:56,720 --> 00:31:00,440 Svo ekki allt sem erfitt eða töfrum, en það þýðir nú að útskýra 701 00:31:00,440 --> 00:31:03,140 hvað er að gerast undir hetta. 702 00:31:03,140 --> 00:31:07,640 >> Svo hvað meira getum við útdrátt af þessu tagi lexíu? 703 00:31:07,640 --> 00:31:08,980 Svo skulum taka a líta á þetta. 704 00:31:08,980 --> 00:31:15,380 Ég ætla að fara á undan og skrifa fljótur program hér kallað afrita 0. 705 00:31:15,380 --> 00:31:21,594 Og nú skulum fara á undan og í raun við skulum gera this-- með afrit-0, 706 00:31:21,594 --> 00:31:23,010 taka a líta á það sem ég hef fengið hér. 707 00:31:23,010 --> 00:31:24,712 Ég segi fyrst notanda, segja eitthvað. 708 00:31:24,712 --> 00:31:26,420 Þá fæ ég band og ég geyma það í s. 709 00:31:26,420 --> 00:31:29,810 Þá er ég að athuga hvort s jafngildir jafngildir NULL, bara skila 1. 710 00:31:29,810 --> 00:31:31,590 Svo er þetta bara staðall villuprófun. 711 00:31:31,590 --> 00:31:33,112 Ekkert áhugavert hefur gerst. 712 00:31:33,112 --> 00:31:36,320 Og í raun, ef við losna við villa stöðva, þetta lítur út eins viku 1 kóða 713 00:31:36,320 --> 00:31:36,985 í augnablikinu. 714 00:31:36,985 --> 00:31:39,110 En ég er farinn að fá lítið betur um það. 715 00:31:39,110 --> 00:31:43,340 >> Nú í samræmi 16, viku síðan, kannski jafnvel nokkra daga eða mínútur síðan, 716 00:31:43,340 --> 00:31:46,720 þú gætir sagt lína 16 er búa til breytu sem heitir t 717 00:31:46,720 --> 00:31:48,219 og afritun s inn í það. 718 00:31:48,219 --> 00:31:50,010 Og það er fullkomlega sanngjarnt takeaway. 719 00:31:50,010 --> 00:31:51,560 En vera nákvæmari núna. 720 00:31:51,560 --> 00:31:54,190 Hvað er að gerast í takt 16? 721 00:31:54,190 --> 00:31:56,170 Hvað er að fá afrituð frá hægri til vinstri? 722 00:31:56,170 --> 00:31:56,669 Já? 723 00:31:56,669 --> 00:31:58,490 Áhorfendur: Er ekki að fá veffang s? 724 00:31:58,490 --> 00:32:01,220 >> DAVID J. Malan: Einmitt, t er að fá veffang s. 725 00:32:01,220 --> 00:32:05,170 Svo til að vera ljóst núna, ef ég fer aftur til fyrri tíma td 726 00:32:05,170 --> 00:32:08,520 og ég draga út sem ég hef slegið inn. 727 00:32:08,520 --> 00:32:11,640 Og það sem ég hef slegið in-- hér er s, og hér 728 00:32:11,640 --> 00:32:15,830 er það sem ég hef slegið í somewhere í minni, mamma og þá sviga 729 00:32:15,830 --> 00:32:17,840 0 sem er bætt við fyrir mig. 730 00:32:17,840 --> 00:32:23,060 Það sem ég geymt hér, muna, þetta er á stað 1, 2, 3, 4, 731 00:32:23,060 --> 00:32:24,655 þetta er það sem er efst á baugi í s. 732 00:32:24,655 --> 00:32:29,220 Svo ef á línu 16, segi ég gefa mér annar breytu sem heitir T og geyma 733 00:32:29,220 --> 00:32:33,590 í á verðmæti s, hvað fær geymd hér mun ekki mamma 734 00:32:33,590 --> 00:32:35,480 heldur bara númer 1. 735 00:32:35,480 --> 00:32:38,520 >> Þannig að ef við horfum fram í þessari áætlun nú, hvað er að fara að gerast? 736 00:32:38,520 --> 00:32:40,690 Svo eftir að það er þessi aðgerð þú gætir 737 00:32:40,690 --> 00:32:44,410 hef notað þetta fyrir nokkru fyrir keisaranum, eða Vigenère, eða kannski ekki. 738 00:32:44,410 --> 00:32:48,170 Ég kröfu með printf minn, ég er að fara að nýta afrita t. 739 00:32:48,170 --> 00:32:51,616 Fyrst í línu 19, fljótur geðheilsu athuga, strlen athugunum lengd t. 740 00:32:51,616 --> 00:32:53,740 Vegna þess að ég vil ekki að reyna að nýta eitthvað 741 00:32:53,740 --> 00:32:55,104 ef það er engin band þar. 742 00:32:55,104 --> 00:32:57,520 Ef notandinn lenti bara inn, það er ekkert að nýta. 743 00:32:57,520 --> 00:33:01,100 Svo ég vil ekki að gera línu 21. 744 00:33:01,100 --> 00:33:05,758 Svo lína 21 er hagnast sem bréf, virðist, í t? 745 00:33:05,758 --> 00:33:06,514 >> Áhorfendur: m? 746 00:33:06,514 --> 00:33:08,722 DAVID J. Malan: Það lítur eins og það er afritun hver einn? 747 00:33:08,722 --> 00:33:09,486 Áhorfendur: m. 748 00:33:09,486 --> 00:33:10,450 DAVID J. Malan: Uh, m. 749 00:33:10,450 --> 00:33:12,685 OK, þannig að fyrsta m, vegna fyrirvara sem ég er 750 00:33:12,685 --> 00:33:14,935 brottför til toupper, sem ef þú hefur aldrei séð það að það er 751 00:33:14,935 --> 00:33:16,980 bara aðgerð til nýta sem inntak hennar. 752 00:33:16,980 --> 00:33:20,240 T krappi núll þýðir að gefa mér núll eðli t. 753 00:33:20,240 --> 00:33:22,550 Og svo er hvernig þetta mynd breyting, að vera ljóst? 754 00:33:22,550 --> 00:33:25,490 755 00:33:25,490 --> 00:33:29,160 Hvað þarf til að endurskrifa eða breytt með tilliti til s og t og mamma 756 00:33:29,160 --> 00:33:30,097 sviga núll. 757 00:33:30,097 --> 00:33:31,470 >> Áhorfendur: [inaudible] 758 00:33:31,470 --> 00:33:34,030 >> DAVID J. Malan: Já, svo þetta hér einfaldlega 759 00:33:34,030 --> 00:33:40,860 þarf að fá breytt to-- festa this-- þarf að fá breytt í höfuðborg m. 760 00:33:40,860 --> 00:33:44,330 En nú líta síðar í program, ef ég prenta út 761 00:33:44,330 --> 00:33:49,800 s og t eins og ég hreinsa hér horfa á það sem er að fara að gerast að prenta út s og t. 762 00:33:49,800 --> 00:33:54,310 Svo gera afrita 0, ./copy-0. 763 00:33:54,310 --> 00:33:57,140 Leyfðu mér að fara á undan og sláðu í mömmu í öllum lágstöfum. 764 00:33:57,140 --> 00:34:00,140 Takið bæði frumleg og afrit hafa verið eignfærðar. 765 00:34:00,140 --> 00:34:00,850 Hvers vegna? 766 00:34:00,850 --> 00:34:04,431 Jæja, s og t eru bæði bendir til, ef þú vilt, sama klumpur af minni. 767 00:34:04,431 --> 00:34:06,930 Og hreinskilnislega, þetta er að fá virkilega uninteresting-- því 768 00:34:06,930 --> 00:34:09,150 sem við erum að nota netfangalistann núll hér. 769 00:34:09,150 --> 00:34:11,719 Ég meina, ég er ekki alveg sama þar sem efni er í minni. 770 00:34:11,719 --> 00:34:13,550 Sorry ég er að hreinsa aðeins of mikið. 771 00:34:13,550 --> 00:34:15,674 En ég er ekki alveg sama þar sem hlutirnir eru í minni. 772 00:34:15,674 --> 00:34:18,510 Og svo, örugglega það forritari hafa tilhneigingu til að hugsa um 773 00:34:18,510 --> 00:34:21,080 er að þegar þú talar um heimilisfang, eða bendi, 774 00:34:21,080 --> 00:34:22,679 Hverjum er ekki sama hvar það er í minni. 775 00:34:22,679 --> 00:34:24,989 Mér er alveg sama hvort það er á bæti einum eða einn milljarð. 776 00:34:24,989 --> 00:34:27,920 Ég hugsa bara að þetta breyta er í raun 777 00:34:27,920 --> 00:34:29,620 benda á þeim klumpur af minni. 778 00:34:29,620 --> 00:34:33,350 Og svo, héðan í frá, frekar en quibble yfir handahófskennt heimilisföng minni, við skulum 779 00:34:33,350 --> 00:34:36,710 bara byrja að teikna ábendingum eins ábendingum, sem örvar. 780 00:34:36,710 --> 00:34:39,340 Svo hvað s og t eru í raun, samkvæmt þessari áætlun, 781 00:34:39,340 --> 00:34:42,130 vegna þess hvernig ég búin t, það er bara tvö aðskilin breytur 782 00:34:42,130 --> 00:34:43,840 benda á sama klumpur af minni. 783 00:34:43,840 --> 00:34:45,215 Og við gerum ekki sama hvar þeir eru. 784 00:34:45,215 --> 00:34:47,130 Þannig að við getum ágrip burtu að smáatriðum. 785 00:34:47,130 --> 00:34:48,780 >> Svo hvernig laga ég þetta? 786 00:34:48,780 --> 00:34:54,120 Ef ég vil skrifa útgáfu af afrita forrit sem raunverulega eintök strenginn 787 00:34:54,120 --> 00:34:56,840 og capitalizes aðeins afrita, bara innsæi, 788 00:34:56,840 --> 00:34:59,766 hvað er got að vera efni til að lausn okkar? 789 00:34:59,766 --> 00:35:00,640 Áhorfendur: [inaudible] 790 00:35:00,640 --> 00:35:01,420 DAVID J. Malan: Við þurfum a hvað? 791 00:35:01,420 --> 00:35:01,820 Áhorfendur: klumpur af minni. 792 00:35:01,820 --> 00:35:03,280 DAVID J. Malan: Við þurfum annar klumpur af minni, ekki satt? 793 00:35:03,280 --> 00:35:05,360 Við vitum ekki hvernig á að gera það enn, endilega. 794 00:35:05,360 --> 00:35:11,330 En ég þarf svona að þetta gerist svo að upprunalega mamma með lágstöfum 795 00:35:11,330 --> 00:35:14,170 endar í því að auka klumpur af minni. 796 00:35:14,170 --> 00:35:19,770 Og svo þegar ég breyti afrit, ég vil ekki að breyta þessum eintak hér. 797 00:35:19,770 --> 00:35:26,020 Ég vil í staðinn að breyta aðeins þetta Afrita þannig að upprunalega er óbreytt. 798 00:35:26,020 --> 00:35:27,980 >> Svo, við skulum sjá hvernig við getum gert þetta. 799 00:35:27,980 --> 00:35:31,800 In afrita 1, sem hefur nú þegar verið sviptur athugasemd, 800 00:35:31,800 --> 00:35:33,250 en er athugasemd netinu. 801 00:35:33,250 --> 00:35:36,710 Við gerum í staðinn following-- þetta línur eru eins, fá mér band 802 00:35:36,710 --> 00:35:38,340 og kalla það er. 803 00:35:38,340 --> 00:35:43,500 En nú skulum líta á einn af okkar flókið en síðasta flókið 804 00:35:43,500 --> 00:35:47,340 um hríð, lína 16 er einmitt þetta. 805 00:35:47,340 --> 00:35:49,400 Svo ef notalega þinn með mynd við drew-- bara 806 00:35:49,400 --> 00:35:51,790 gefa mér nýja klumpur af minni, afrita allt í það, 807 00:35:51,790 --> 00:35:53,730 við skulum sjá hvernig við þýða það að kóða. 808 00:35:53,730 --> 00:35:59,400 >> Svo línu 16, á vinstri hönd hlið, char * T gefur mér þennan reit hérna. 809 00:35:59,400 --> 00:36:00,230 Það er allt það gerir. 810 00:36:00,230 --> 00:36:03,240 Á hægri hönd hlið, m Alloc eða malloc, 811 00:36:03,240 --> 00:36:06,480 er minni úthlutun, frábær ímynda sér, a dulinn leið bara að segja 812 00:36:06,480 --> 00:36:07,640 gefa mér klumpur af minni. 813 00:36:07,640 --> 00:36:09,290 Hversu mikið minni þurfum við? 814 00:36:09,290 --> 00:36:10,910 Jæja, er góður af a stór tjáningu. 815 00:36:10,910 --> 00:36:12,570 En við skulum sjá hvað það segir hér. 816 00:36:12,570 --> 00:36:15,940 Þannig að þetta er auðvitað, er að gefa mér band lengd s. 817 00:36:15,940 --> 00:36:19,094 Svo, mamma það ætti að vera það? 818 00:36:19,094 --> 00:36:21,010 Svo bara þrír, ekki satt? mamma er þrír stafir. 819 00:36:21,010 --> 00:36:22,830 Þú telja ekki sviga núll þegar þér 820 00:36:22,830 --> 00:36:25,960 tala um lengd streng það er reyndar manna sýnileg bréf. 821 00:36:25,960 --> 00:36:28,020 Svo mamma, svo gefur þetta mér 3. 822 00:36:28,020 --> 00:36:31,170 En bíddu í eina mínútu, ég er nú að bæta 1. 823 00:36:31,170 --> 00:36:34,861 Af hverju vil ég í raun að úthluta 4 bæti og ekki bara 3? 824 00:36:34,861 --> 00:36:35,360 Já? 825 00:36:35,360 --> 00:36:36,910 >> Áhorfendur: Fyrir Sentinel gildi? 826 00:36:36,910 --> 00:36:38,951 >> DAVID J. Malan: Einmitt, fyrir þessi Sentinel gildi. 827 00:36:38,951 --> 00:36:40,840 Fyrir sviga núll, Ég þarf 4 bytes samtals. 828 00:36:40,840 --> 00:36:42,870 Þannig að ég þarf lengd strengsins plús 1. 829 00:36:42,870 --> 00:36:45,400 Og þá bara fyrir gott measure-- jafnvel þó á þessu kerfi, 830 00:36:45,400 --> 00:36:49,390 það er alltaf að fara að vera 1-- ég er að segja margfalda þetta með stærð bleikju. 831 00:36:49,390 --> 00:36:51,552 Skrúfjárn út sizeof er rekstraraðili í C sem 832 00:36:51,552 --> 00:36:53,260 bara segir þér að fjölda bytes sem er 833 00:36:53,260 --> 00:36:54,700 þarf í ákveðinn gögn tegund. 834 00:36:54,700 --> 00:36:57,740 Það virkar ekki fyrir fylki, oftast, stundum er það. 835 00:36:57,740 --> 00:36:59,210 En í almennu máli, nr. 836 00:36:59,210 --> 00:37:02,330 En það verður að segja mér hversu margir bæti a bleikju er, sem kemur í ljós er alltaf 1. 837 00:37:02,330 --> 00:37:04,080 Svo er þetta eins og að margfalda með 1. 838 00:37:04,080 --> 00:37:05,900 >> Svo frábær dulinn leita lína af kóða. 839 00:37:05,900 --> 00:37:09,320 En allt það gerir er gefur mér klumpur af minni. 840 00:37:09,320 --> 00:37:13,590 En þýðir það virðist vera afritun nokkuð inn í þessi minni? 841 00:37:13,590 --> 00:37:14,560 Ekki enn. 842 00:37:14,560 --> 00:37:22,040 Og svo hvað ég á línu 22, og 23, 24, 25, vel, ég einfaldlega þetta. 843 00:37:22,040 --> 00:37:23,760 Og þetta er tegund af gamla skólanum efni núna. 844 00:37:23,760 --> 00:37:26,010 Þetta er eins og pset 2, þar þú ert bara að færa það 845 00:37:26,010 --> 00:37:28,620 um í minni, eða öllu heldur í strengi. 846 00:37:28,620 --> 00:37:31,920 >> Þannig að ég ætla iterating frá 0 til lengd band s. 847 00:37:31,920 --> 00:37:37,820 Og ég er að afrita i-ta staf í s í i-ta staf í t. 848 00:37:37,820 --> 00:37:41,820 Og vegna þess að ég er forritari, gerði viss um að úthluta nákvæmlega eins mörg bæti 849 00:37:41,820 --> 00:37:44,600 og ég þarf, það er fullkominn einn-á-mann tengsl. 850 00:37:44,600 --> 00:37:47,060 Og ég afrita mömmu í lágstafir til the nýr einn. 851 00:37:47,060 --> 00:37:50,170 Og þá loks, ég þessa línu. 852 00:37:50,170 --> 00:37:54,637 Og svo er áhrif aðeins að nýta þessa t hér. 853 00:37:54,637 --> 00:37:56,470 Svo mikið til að gleypa, en ef þú telur bara 854 00:37:56,470 --> 00:37:58,220 hvað er raunverulega að gerast á undir hetta 855 00:37:58,220 --> 00:38:00,880 er bara að færa þetta bæti í kring, allt sem 856 00:38:00,880 --> 00:38:06,617 er þörf til að leysa þetta vandamál er bara til að gefa okkur þetta klumpur af minni. 857 00:38:06,617 --> 00:38:08,450 Nú á hættu á yfirþyrmandi, láttu mig sýna 858 00:38:08,450 --> 00:38:13,200 eitt annað dæmi sem er nánast eins nema þessi 859 00:38:13,200 --> 00:38:14,350 lína af kóða. 860 00:38:14,350 --> 00:38:18,870 Svo er þetta tölvusnápur útgáfa þessarar áætlunar, ef þú vilt. 861 00:38:18,870 --> 00:38:21,050 En við skulum drjúpa bara það í hvað er að gerast. 862 00:38:21,050 --> 00:38:28,920 Línu 24 er notað til að vera þetta ekki krappi ég fær s krappi i. 863 00:38:28,920 --> 00:38:33,370 Nú er ég að breyta þessu til miklu meira dulinn stjörnu T 864 00:38:33,370 --> 00:38:36,280 plús 1 er stjarna s auk 1. 865 00:38:36,280 --> 00:38:38,702 >> Svo hvað er að gerast og hvers vegna höfum við stjörnuleik karakter? 866 00:38:38,702 --> 00:38:41,410 Við höfum séð stjörnuna áður, og það er verið að nota á annan hátt hér. 867 00:38:41,410 --> 00:38:45,490 Við sáum áður char *, nú er ég að sjá A Star í upphafi, og það er allt í lagi. 868 00:38:45,490 --> 00:38:48,190 Vegna þess að það kemur í ljós vér getur konar álykta bara 869 00:38:48,190 --> 00:38:50,280 frá þeim fyrst meginreglur hvað er að gerast. 870 00:38:50,280 --> 00:38:53,860 Svo bara að vera skýr, það er s? 871 00:38:53,860 --> 00:38:55,052 Síðustu viku, var það band. 872 00:38:55,052 --> 00:38:56,260 Það dugar ekki lengur. 873 00:38:56,260 --> 00:38:57,690 Hvað er S, sérstaklega? 874 00:38:57,690 --> 00:38:58,590 >> Áhorfendur: [inaudible] 875 00:38:58,590 --> 00:38:59,881 >> DAVID J. Malan: Það er bendi. 876 00:38:59,881 --> 00:39:02,610 Það er heimilisfangið af Fyrsti stafurinn við slegið í. 877 00:39:02,610 --> 00:39:04,780 OK, hvað er t? 878 00:39:04,780 --> 00:39:05,660 >> Áhorfendur: [inaudible] 879 00:39:05,660 --> 00:39:07,950 >> DAVID J. Malan: The heimilisfang fyrsta bæti 880 00:39:07,950 --> 00:39:10,490 í t, að klumpur af minni endurúthlutað. 881 00:39:10,490 --> 00:39:14,720 Svo kemur í ljós að þegar við iterate frá 0 á allt að streng 882 00:39:14,720 --> 00:39:17,424 length-- fyrst af öllu, ég byrjar á 0, vegna 883 00:39:17,424 --> 00:39:18,840 af þessu gamla skóla fyrir lykkja hlutur. 884 00:39:18,840 --> 00:39:22,400 Svo bara fyrir einfaldleika, við skulum gera ráð fyrir að fyrstu línu af kóða 885 00:39:22,400 --> 00:39:23,760 er í raun bara þetta, ekki satt. 886 00:39:23,760 --> 00:39:26,080 Ef ég er núll, bæta núll eitthvað væntanlega 887 00:39:26,080 --> 00:39:27,540 er ekki að fara að hafa áhrif. 888 00:39:27,540 --> 00:39:28,560 >> Svo er það þetta orðatiltæki? 889 00:39:28,560 --> 00:39:31,600 Það kemur í ljós að stjörnunni rekstraraðila í þessu samhengi 890 00:39:31,600 --> 00:39:33,700 er dereference rekstraraðila, sem er bara 891 00:39:33,700 --> 00:39:37,530 fínt leið til að segja að fara á eftirfarandi heimilisfang. 892 00:39:37,530 --> 00:39:42,080 Svo ef s er heimilisfang fyrsta karakter í þessu klumpur af minni, 893 00:39:42,080 --> 00:39:43,630 * S þýðir að fara þangað. 894 00:39:43,630 --> 00:39:45,630 Og vegna þess að við höfum dregið myndin á þennan hátt, 895 00:39:45,630 --> 00:39:47,430 þú getur samþykkja Eftirfarandi andlega fyrirmynd. 896 00:39:47,430 --> 00:39:51,030 Ef þetta er s, og þú segir * s, * s svona eins og Chutes og stigar, 897 00:39:51,030 --> 00:39:54,540 ef þú manst leikinn frá barnæsku, er eins fylgja því örina og fara 898 00:39:54,540 --> 00:39:55,570 á netfangið. 899 00:39:55,570 --> 00:39:57,080 >> * t er sama. 900 00:39:57,080 --> 00:39:59,855 Svo byrja hér, fara til klumpur þess. 901 00:39:59,855 --> 00:40:03,350 Ég get ekki bara draga á þessi skjár þannig. 902 00:40:03,350 --> 00:40:05,560 * T þýðir að fara hér. 903 00:40:05,560 --> 00:40:08,830 Og þá, er til hliðar er bara sagði að færa þennan staf hér, 904 00:40:08,830 --> 00:40:11,330 færa þessa persónu hér, færa þetta staf hér. 905 00:40:11,330 --> 00:40:12,890 En hvernig á ég að gera það incrementation? 906 00:40:12,890 --> 00:40:15,430 Ég þarf að losa það sem ég eyddi bara. 907 00:40:15,430 --> 00:40:18,140 Þetta er það sem er almennt kallað bendillinn tölur, sem 908 00:40:18,140 --> 00:40:20,040 þýðir stærðfræði með heimilisföng. 909 00:40:20,040 --> 00:40:22,460 >> Ef, í þetta fyrir lykkju, Ég að halda áfram incrementing i, 910 00:40:22,460 --> 00:40:26,880 og s er heimilisfang og t er heil netfang, ef ég halda bara að bæta 1, 911 00:40:26,880 --> 00:40:31,406 það bara þýðir að halda áfram, og áfram, og áfram í minni. 912 00:40:31,406 --> 00:40:34,030 Það er eins og Oxford Street, götu að CS bygging er á. 913 00:40:34,030 --> 00:40:36,490 CS byggingar er 33 Oxford Street. 914 00:40:36,490 --> 00:40:39,870 Þannig að ef þú varst að gera 33 Oxford Street plús 1, 915 00:40:39,870 --> 00:40:42,870 sem færir þér 34 Oxford Street, þá 35 Oxford Street, 916 00:40:42,870 --> 00:40:46,380 þá 36 Oxford Street, hvað þá byggingar eru í raun - ef þeir eru fyrir hendi. 917 00:40:46,380 --> 00:40:50,540 Og svo, það er allt sem við erum að gera hér með músina tölur. 918 00:40:50,540 --> 00:40:53,820 >> Svo það er frábær yfirnáttúrulegt leið tjá okkur. 919 00:40:53,820 --> 00:40:56,160 En allt sem er að gerast undir hetta 920 00:40:56,160 --> 00:40:59,330 er bara eftir þessar tölur eins og eftirfarandi kort, ef þú vilt, 921 00:40:59,330 --> 00:41:02,692 eða eftir örvarnar eins við höfum dregið á skjánum. 922 00:41:02,692 --> 00:41:04,910 OK, mikið að melta. 923 00:41:04,910 --> 00:41:10,410 Einhverjar spurningar um setningafræði, hugtök, ábendingum, malloc, eða þess háttar. 924 00:41:10,410 --> 00:41:11,480 Já, hérna fyrst. 925 00:41:11,480 --> 00:41:13,755 >> Áhorfendur: Svo þar sem segir * T jafngildir toupper * t, 926 00:41:13,755 --> 00:41:15,575 er að fara að nýta allir stafir eða just-- 927 00:41:15,575 --> 00:41:17,283 >> DAVID J. Malan: Ah, mjög góð spurning. 928 00:41:17,283 --> 00:41:19,805 Svo í þessari línu hér, 31, er þetta að fara að nýta 929 00:41:19,805 --> 00:41:21,430 fyrsti stafurinn eða allar stafina. 930 00:41:21,430 --> 00:41:23,460 Svo skulum svara því með því að fara aftur til fyrstu meginreglum. 931 00:41:23,460 --> 00:41:26,168 Og fyrstu meginreglum hér ég meina bara fara til helstu skilgreiningar 932 00:41:26,168 --> 00:41:27,000 um hvað er að ræða. 933 00:41:27,000 --> 00:41:29,770 Svo er toupper fall sem capitalizes char. 934 00:41:29,770 --> 00:41:30,530 Það er allt og sumt. 935 00:41:30,530 --> 00:41:36,740 * T þýðir að fara til first-- fara á heimilisfang í t. 936 00:41:36,740 --> 00:41:40,350 Svo, í myndinni, ef þetta er klumpur minni við úthlutað með malloc, 937 00:41:40,350 --> 00:41:43,310 og þetta er t, * T þýðir að fara hér. 938 00:41:43,310 --> 00:41:46,710 >> Á sama tíma, þú ert liggur að verðmæti, lágstafir m 939 00:41:46,710 --> 00:41:50,040 að toupper, ætlar þú að fá til baka höfuðborg M, hvar ert þú að setja það? 940 00:41:50,040 --> 00:41:52,410 Þú ert að setja það í sama stað. 941 00:41:52,410 --> 00:41:55,540 Og svo eftir að rökfræði þeirra helstu skilgreiningar það er bara 942 00:41:55,540 --> 00:41:58,792 hagnast fyrsta stafinn nema þú iterate með I eða 943 00:41:58,792 --> 00:42:02,000 fyrir lykkju eða while lykkju, það er ekki að fara að gera neitt meira en að spyrja hana. 944 00:42:02,000 --> 00:42:02,583 Góð spurning. 945 00:42:02,583 --> 00:42:03,237 Já? 946 00:42:03,237 --> 00:42:05,369 >> Áhorfendur: Hvers vegna gerðir þú að nota dereference aðferð frekar en 947 00:42:05,369 --> 00:42:05,979 array? 948 00:42:05,979 --> 00:42:07,395 >> DAVID J. Malan: Ah, góð spurning. 949 00:42:07,395 --> 00:42:10,672 Hvers vegna vildi þú nota dereference aðferð í stað array aðferð? 950 00:42:10,672 --> 00:42:12,130 Engin sérstök ástæða til að vera heiðarlegur. 951 00:42:12,130 --> 00:42:15,290 Og í raun, fyrir þetta konar dæmis, rétt, 952 00:42:15,290 --> 00:42:17,556 Ég ætla bara að rífast gera program flóknara, 953 00:42:17,556 --> 00:42:19,680 fleiri augu eru glerjun yfir, fólk er að skoða 954 00:42:19,680 --> 00:42:22,830 vegna þess að þetta lítur frábær yfirnáttúrulegt, en jafnvel þó að það er að gera það sama. 955 00:42:22,830 --> 00:42:26,695 Og svo, hreinskilnislega, þetta er óþarflega sjónrænt flókin lausn 956 00:42:26,695 --> 00:42:27,320 á því vandamáli. 957 00:42:27,320 --> 00:42:29,580 >> Það er samt góð hönnun, fimm af fimm fyrir hönnun, 958 00:42:29,580 --> 00:42:33,140 hvort sem það er í krappi ritháttur eða bendillinn tákn. 959 00:42:33,140 --> 00:42:36,299 But-- sérstaklega þegar við fáum síðar í námskeiðinu í pset 5 960 00:42:36,299 --> 00:42:39,340 þegar við framkvæma þessi orðabók sem Ég hef getið nokkra times-- 961 00:42:39,340 --> 00:42:42,300 við munum í raun sama um lágt minni heimilisföng 962 00:42:42,300 --> 00:42:44,140 að við skiljum í raun hvað er í gangi. 963 00:42:44,140 --> 00:42:48,300 >> En nú, kemur í ljós að þetta lína af kóða hornklofum 964 00:42:48,300 --> 00:42:49,900 í raun ekki til. 965 00:42:49,900 --> 00:42:52,230 Þeir eru það sem er kallað nokkur dæmi um setningarleg sykur, sem 966 00:42:52,230 --> 00:42:58,390 er bara furðulegur flott leið til að segja að þýðanda breytir hornklofum til að vera 967 00:42:58,390 --> 00:43:00,420 sem Stærðfræðiframsetningin. 968 00:43:00,420 --> 00:43:02,660 Svo það er mannlegt samningur að vera fær um að bara að skrifa 969 00:43:02,660 --> 00:43:04,220 þessir mjög notandi-vingjarnlegur sviga. 970 00:43:04,220 --> 00:43:06,850 En hvað þýðandinn, Clang, er í raun að gera hvenær 971 00:43:06,850 --> 00:43:10,970 þú skrifar hvað er lögð áhersla á línu 24, undir hetta það er í raun 972 00:43:10,970 --> 00:43:12,330 umbreyta það til þessa. 973 00:43:12,330 --> 00:43:16,200 Það er bara meira ánægjulegri sem mönnum að lesa og skrifa kóðann eins línu 24. 974 00:43:16,200 --> 00:43:18,530 En á endanum þeir þjálfun hjól líka koma út 975 00:43:18,530 --> 00:43:21,780 þegar eigin þægindi fær sterkari. 976 00:43:21,780 --> 00:43:27,240 >> Allt í lagi, svo muna þá að þetta var eins konar stærsta vandamálið 977 00:43:27,240 --> 00:43:27,807 við hljóp inn. 978 00:43:27,807 --> 00:43:30,640 Og það er það sem vakið þetta allt fjandinn samtal um ábendingum, 979 00:43:30,640 --> 00:43:32,340 og heimilisföng, og afritun hluti. 980 00:43:32,340 --> 00:43:35,410 Það var vegna þess að við skemmtiferðamaður yfir þetta heimskur, heimskur mál, þar 981 00:43:35,410 --> 00:43:38,830 Ég framkvæmda logically-- Lauren upp hér á kynningu og appelsínusafa 982 00:43:38,830 --> 00:43:43,770 í milk-- fullkomlega algorithmically rétt virka 983 00:43:43,770 --> 00:43:47,010 til að skipta tvær breytur ' gildi, en fjandinn hlutur 984 00:43:47,010 --> 00:43:50,550 ekki hafa allir viðvarandi eða varanleg, áhrif á númerið mitt. 985 00:43:50,550 --> 00:43:51,820 >> Og hvers vegna var það? 986 00:43:51,820 --> 00:43:54,650 Í hnotskurn, hvers vegna er þetta framkvæmd skipti 987 00:43:54,650 --> 00:43:58,740 rökrétt, en hefur engin áhrif um breytur sem eru liðin við það, 988 00:43:58,740 --> 00:44:01,119 eins x og y fyrir main? 989 00:44:01,119 --> 00:44:02,410 Hvað var GIST málið? 990 00:44:02,410 --> 00:44:02,909 Já? 991 00:44:02,909 --> 00:44:05,532 Áhorfendur: Vegna breyta gert afrit af breytunni í skarðið 992 00:44:05,532 --> 00:44:06,240 gegnum virka. 993 00:44:06,240 --> 00:44:09,060 >> DAVID J. Malan: Einmitt, þegar þú fara breytur í aðgerð, eða rök 994 00:44:09,060 --> 00:44:11,030 í aðgerð, þá eru þeir samþykkt af afrit, sem 995 00:44:11,030 --> 00:44:14,770 þýðir að þú færð eins leita Mynstur bita fyrir bæði X og Y, 996 00:44:14,770 --> 00:44:15,955 kallast hér a og b. 997 00:44:15,955 --> 00:44:18,080 Og þú getur gert neitt þú vilt með þeim eintökum, 998 00:44:18,080 --> 00:44:20,657 en þeir eru að fara að hafa ekki áhrif á starf virka. 999 00:44:20,657 --> 00:44:22,990 Og í raun, dró við að mynd á skjánum, muna 1000 00:44:22,990 --> 00:44:25,520 síðasta sinn, þar ef þig virkilega að hugsa um hvað er 1001 00:44:25,520 --> 00:44:28,570 fara á undir hood-- ef þetta er minni tölvunnar, 1002 00:44:28,570 --> 00:44:31,650 og hérna er klumpur af minni sem notuð fyrir helstu, 1003 00:44:31,650 --> 00:44:34,020 þetta er klumpur af minni sem notuð fyrir skipti, 1004 00:44:34,020 --> 00:44:37,090 og svo jafnvel ef helstu hefur tvær breytur, X og Y, 1005 00:44:37,090 --> 00:44:41,840 skipti gæti hafa nákvæmlega leita gildi, sem báðar eru 1 og 2, 1006 00:44:41,840 --> 00:44:44,520 en þeir eru alveg mismunandi klumpur af minni. 1007 00:44:44,520 --> 00:44:46,130 >> Þannig að við þurfum lausn á þessu. 1008 00:44:46,130 --> 00:44:51,580 Og hreinskilnislega, það vildi virðast að við nú hafa lausn á þessu vandamáli, ekki satt. 1009 00:44:51,580 --> 00:44:55,760 Ef við höfum nú getu til að vinna hlutina með því að viðtakandi 1010 00:44:55,760 --> 00:44:59,310 og, eins konar Chutes og stigar stíl, fylgja örvanna 1011 00:44:59,310 --> 00:45:02,820 og fara hvert sem við viljum í minni, gat ekki við 1012 00:45:02,820 --> 00:45:06,220 leysa þetta vandamál með því að liggur frá helsta að skipta 1013 00:45:06,220 --> 00:45:09,650 ekki þeim gildum sem við viljum skipti, en bara innsæi 1014 00:45:09,650 --> 00:45:11,630 hvað getum við fara að skipta í staðinn? 1015 00:45:11,630 --> 00:45:12,620 >> [Interposing raddir] 1016 00:45:12,620 --> 00:45:15,244 >> DAVID J. Malan: Hvers vegna er það ekki bara gefa það heimilisföng, ekki satt? 1017 00:45:15,244 --> 00:45:17,470 Hvers vegna eigum við ekki að gefa skipta á fjársjóður kortinu, ef þú vilt, 1018 00:45:17,470 --> 00:45:20,950 sem leiðir það til raunveruleg gildi x og y. 1019 00:45:20,950 --> 00:45:24,340 Skipti skulum, í raun breyta þessir upprunalegu bita, frekar en 1020 00:45:24,340 --> 00:45:26,797 bara komið afrit af bits. 1021 00:45:26,797 --> 00:45:29,130 Og svo, í raun, það er það sem er að fara að vera lausnin. 1022 00:45:29,130 --> 00:45:31,899 Þessi útgáfa er hér greinilega slæmur og gölluð. 1023 00:45:31,899 --> 00:45:35,190 Og nú, við fyrstu sýn, það lítur bara eins og við bætt við fullt af stjörnum handahófi 1024 00:45:35,190 --> 00:45:37,106 og yfir fingurna að það myndi þýða. 1025 00:45:37,106 --> 00:45:38,460 En, það myndi nú saman. 1026 00:45:38,460 --> 00:45:40,090 >> En við skulum sjá hvað þetta á að þýða. 1027 00:45:40,090 --> 00:45:43,990 Og því miður, höfundar C hefði getað valið annað tákn 1028 00:45:43,990 --> 00:45:46,380 að gera þetta svolítið skýrari, en stjarna rekstraraðila 1029 00:45:46,380 --> 00:45:48,610 hefur mismunandi merkingu í tvær mismunandi samhengi. 1030 00:45:48,610 --> 00:45:50,890 Og við höfum séð bæði, en við skulum greina. 1031 00:45:50,890 --> 00:45:55,310 >> Svo upp á toppinn þar, þegar ég hef breytt a og b 1032 00:45:55,310 --> 00:46:00,470 frá því að vera int í slæmt útgáfu til að int stjörnur, A og B, 1033 00:46:00,470 --> 00:46:01,740 Áður voru heiltölur. 1034 00:46:01,740 --> 00:46:05,752 Hvað eru a og b nú í gott, grænn útgáfa? 1035 00:46:05,752 --> 00:46:06,900 Þeir eru heimilisföng. 1036 00:46:06,900 --> 00:46:09,610 Heimilisföng hvað, að vera ljóst? 1037 00:46:09,610 --> 00:46:10,770 Heimilisföng heiltölur. 1038 00:46:10,770 --> 00:46:12,520 Svo fyrir þá staðreynd að ég er segja INT stjörnu leið 1039 00:46:12,520 --> 00:46:15,440 þetta er heimilisfang heiltala, sérstaklega. 1040 00:46:15,440 --> 00:46:19,120 >> Svo nú taka í línum af kóða, eitthvað annað hefur breyst líka. 1041 00:46:19,120 --> 00:46:22,770 tmp dvöl the sami, því það er bara tímabundið heiltala, 1042 00:46:22,770 --> 00:46:24,110 ekkert minni galdur þar. 1043 00:46:24,110 --> 00:46:26,370 En þarf nú stjörnu. 1044 00:46:26,370 --> 00:46:28,560 Og í raun, hvert annað minnst á a og b, 1045 00:46:28,560 --> 00:46:31,780 eftir því að allt sem er breytast úr rauðu í grænt 1046 00:46:31,780 --> 00:46:34,209 er að ég er forskeytið þá breytum með stjörnum. 1047 00:46:34,209 --> 00:46:35,750 Vegna þess að ég vil ekki að afrita og b. 1048 00:46:35,750 --> 00:46:40,350 Vegna þess að ef ég afrita bara og b og skipti a og b, hvað er ég að skipta í raun? 1049 00:46:40,350 --> 00:46:43,760 Bara heimilisföng, ég vil skipta hvað er á þeim heimilisföng. 1050 00:46:43,760 --> 00:46:44,860 Ég vil fara þangað. 1051 00:46:44,860 --> 00:46:48,000 Og svo stjarnan rekstraraðila inni virka minn, 1052 00:46:48,000 --> 00:46:51,700 ekki inni breytu lista, þýðir að þú ferð til þeirra heimilisföng 1053 00:46:51,700 --> 00:46:54,490 og í raun breyta þessum gildum. 1054 00:46:54,490 --> 00:46:56,500 >> Svo er það mynd nú líta eins í staðinn. 1055 00:46:56,500 --> 00:47:03,250 Jæja, ef í stað ég er liggur í fyrir a og b ekki 1 og 2-- 1056 00:47:03,250 --> 00:47:05,790 Ég þarf reyndar að bæta við annar skilgreining hér. 1057 00:47:05,790 --> 00:47:09,030 Svo ætla að þetta klumpur af minni er á stað 10. 1058 00:47:09,030 --> 00:47:12,960 >> Þetta er á stað 11, en þetta er a hluti af a einföldun, 1059 00:47:12,960 --> 00:47:18,900 Ég hef nú tveir kostir ég fara x og y eða ekki ég fara heimilisföng þeirra? 1060 00:47:18,900 --> 00:47:22,500 Ef ég fara heimilisföng þeirra eins og þetta, ég bara 1061 00:47:22,500 --> 00:47:25,390 nú þarf að innleiða skipti á græna kóða 1062 00:47:25,390 --> 00:47:29,080 þannig að þegar það sér að og þegar það lítur b, það er ekki bara að afrita a og b 1063 00:47:29,080 --> 00:47:30,540 og færa mjólk og appelsínusafa. 1064 00:47:30,540 --> 00:47:32,664 Mjólk og appelsínusafa samlíking brýtur nú niður, 1065 00:47:32,664 --> 00:47:35,060 vegna þess að þeir eru bollar fljótandi og ekki kort. 1066 00:47:35,060 --> 00:47:37,750 Við þurfum í staðinn að fara til að takast á 10 og vér 1067 00:47:37,750 --> 00:47:42,420 þarf að fara að takast á 11, og þá framkvæma þessi Makaskipti rökfræði. 1068 00:47:42,420 --> 00:47:45,580 >> Svo er röksemdafærsla það sama, en við þurfum aðeins öðruvísi leið 1069 00:47:45,580 --> 00:47:47,160 að fá aðgang þá breytum. 1070 00:47:47,160 --> 00:47:52,400 Og svo að lokum, hvað Áætlunin verður að líta út eins og þetta er. 1071 00:47:52,400 --> 00:47:56,610 Í swap.c bókstaflega afrita og límt græna útgáfa. 1072 00:47:56,610 --> 00:47:58,450 En ég þarf að gera eina breytingu. 1073 00:47:58,450 --> 00:48:00,180 Það er ekki nóg að breyta skipti. 1074 00:48:00,180 --> 00:48:03,830 Hvaða önnur lína af kóða þarf ég að breyta? 1075 00:48:03,830 --> 00:48:04,330 Já? 1076 00:48:04,330 --> 00:48:05,770 >> Áhorfendur: Þar sem það tekur rök. 1077 00:48:05,770 --> 00:48:07,603 >> DAVID J. Malan: Hvar það tekur rök hennar. 1078 00:48:07,603 --> 00:48:09,985 Þannig að ef ég fletta upp main, ég getur ekki bara fara í x og y, 1079 00:48:09,985 --> 00:48:12,820 og ég lofa, síðasta stykki af nýju setningafræði dag. 1080 00:48:12,820 --> 00:48:17,200 Ég þarf að fara í ekki x og Y en heimilisfang x og y. 1081 00:48:17,200 --> 00:48:20,400 Og það kemur í ljós, tákn að höfundar C valdi 1082 00:48:20,400 --> 00:48:23,860 er ef þú notar merkið hér, ekki til að rugla saman við Bita merkið, 1083 00:48:23,860 --> 00:48:27,130 ef þú notar merkið hér og merkið hér, 1084 00:48:27,130 --> 00:48:29,570 þetta tölur út fyrir þig, hvað er heimilisfangið x, 1085 00:48:29,570 --> 00:48:31,740 kannski er það 10, hvað er heimilisfang y, kannski er það 1086 00:48:31,740 --> 00:48:35,400 11, og fer þá í staðinn. 1087 00:48:35,400 --> 00:48:37,210 >> Svo mikið til að gleypa allt í einu. 1088 00:48:37,210 --> 00:48:40,190 En við skulum sjá nú fljótt í okkar eftir fjórar mínútur 1089 00:48:40,190 --> 00:48:42,150 þar sem það getur farið skakkur. 1090 00:48:42,150 --> 00:48:45,120 Og eins og til hliðar, reyndar Ég tók þessa mynd, 1091 00:48:45,120 --> 00:48:46,920 TF tók þessa mynd fyrir ári eða tveimur síðan. 1092 00:48:46,920 --> 00:48:49,190 Þannig að þetta er aftur horn af Eliot matsal. 1093 00:48:49,190 --> 00:48:52,310 Ábendingum kannski erfiðasta málefni sem við ná í CS50. 1094 00:48:52,310 --> 00:48:54,810 Svo ef þú hafa the tegund af halla er eins og kannski er það 1095 00:48:54,810 --> 00:48:56,770 meira af íshokkí stafur eins og þetta, gera sér grein fyrir 1096 00:48:56,770 --> 00:49:00,160 við erum konar nálgast hámarki í Skilmálar huglægu flókið. 1097 00:49:00,160 --> 00:49:02,300 >> Og ég koma upp á þessu mynd, vegna þess að ég sver 1098 00:49:02,300 --> 00:49:05,920 til guðs, í haust 1996, þegar ég tók CS50 með kennslu náungi minn, 1099 00:49:05,920 --> 00:49:09,620 Nishat Mehta, settist hann mig niður í horni Eliot D. Hall yfir hádegi, 1100 00:49:09,620 --> 00:49:12,330 eða kvöldmat, eða eitthvað til að reyna til að hjálpa mér að skilja ábendingum. 1101 00:49:12,330 --> 00:49:16,520 Og þetta er þar sem ég var vikum eftir það var kynnt í fyrirlestri hvenær 1102 00:49:16,520 --> 00:49:18,170 Ég skildi loksins ábendingum. 1103 00:49:18,170 --> 00:49:20,590 Og ég er vongóður um að þetta verður að smella langt fyrr fyrir þig. 1104 00:49:20,590 --> 00:49:23,540 En átta sig á þessu algerlega meðal The flóknari efni 1105 00:49:23,540 --> 00:49:24,420 Við höfum litið á. 1106 00:49:24,420 --> 00:49:25,819 En það er meðal öflugustu. 1107 00:49:25,819 --> 00:49:28,860 Og þegar þú færð það, það er í raun allt bara að fara að lokum koma saman. 1108 00:49:28,860 --> 00:49:31,460 Svo viss er það ekki þarf að öllum vaskur í dag. 1109 00:49:31,460 --> 00:49:32,980 >> Svo hér er síðasta program við erum að fara að horfa á. 1110 00:49:32,980 --> 00:49:35,605 Og við erum að fara að enda með Flýtileiðir þrjár mínútur af claymation 1111 00:49:35,605 --> 00:49:37,030 gert með vini okkar, Nick Parlante. 1112 00:49:37,030 --> 00:49:41,440 Hér er forrit, sem á tveimur efstu línur lýsir breyta x og y. 1113 00:49:41,440 --> 00:49:44,780 Sem báðar eru heimilisföng heiltalna, AKA ábendingum. 1114 00:49:44,780 --> 00:49:48,125 Við úthluta þá nóg minni til að geyma int 1115 00:49:48,125 --> 00:49:51,344 og geyma heimilisfangið sem minni í x. 1116 00:49:51,344 --> 00:49:53,260 Svo, það er jafnvel einfaldara en í dæmi áður. 1117 00:49:53,260 --> 00:49:56,100 Gefðu mér fjögur bæti af minni, það er á stærð við int, 1118 00:49:56,100 --> 00:49:58,000 og setja þetta netfang í x. 1119 00:49:58,000 --> 00:50:01,070 Þessi lína hér þýðir fara á heimilisfang í x 1120 00:50:01,070 --> 00:50:05,270 og setja merkingu líf, fjölda 42 þar. 1121 00:50:05,270 --> 00:50:07,710 En þessi lína áhyggjur mig. 1122 00:50:07,710 --> 00:50:12,620 Stjörnu Y þýðir að fara á heimilisfang í y, og setja óheppinn númer 13 þar. 1123 00:50:12,620 --> 00:50:15,780 Hvers vegna er það hættulegt, á þessum tímapunkti í story-- vísu hratt sagði 1124 00:50:15,780 --> 00:50:17,980 í minnkandi mínútur okkar here-- hvers vegna er það slæmt 1125 00:50:17,980 --> 00:50:19,660 fyrir mig að segja, fara í heimilisfang í Y? 1126 00:50:19,660 --> 00:50:21,077 >> Áhorfendur: Þú hefur ekki [inaudible]. 1127 00:50:21,077 --> 00:50:22,910 DAVID J. Malan: Ég hef ekki setja neitt í y. 1128 00:50:22,910 --> 00:50:25,520 Svo er það gildi y, á þessum tímapunkti í sögunni? 1129 00:50:25,520 --> 00:50:26,570 Við höfum ekki hugmynd. 1130 00:50:26,570 --> 00:50:29,190 Það er einhver sorp gildi og né Binky vita. 1131 00:50:29,190 --> 00:50:32,532 Ef við gætum enda á þessum nótum. 1132 00:50:32,532 --> 00:50:34,832 >> [Vídeó spilun] 1133 00:50:34,832 --> 00:50:36,500 >> -Hey, Binky, vakna. 1134 00:50:36,500 --> 00:50:39,140 Það er kominn tími til bendillinn gaman. 1135 00:50:39,140 --> 00:50:40,210 >> -Hvað er þetta? 1136 00:50:40,210 --> 00:50:41,690 Lærðu um ábendingum? 1137 00:50:41,690 --> 00:50:43,570 Oh, Goody. 1138 00:50:43,570 --> 00:50:46,600 >> -Ja, Til að byrja, ég held að við erum að fara að þurfa nokkra punkta. 1139 00:50:46,600 --> 00:50:47,380 >> -OK. 1140 00:50:47,380 --> 00:50:51,120 Þetta númer úthlutar tveimur ábendingum sem getur bent til heiltölur. 1141 00:50:51,120 --> 00:50:53,557 >> -OK, Vel ég sé tveir ábendingum, en þeir 1142 00:50:53,557 --> 00:50:55,140 virðast ekki vera að benda á neitt. 1143 00:50:55,140 --> 00:50:55,970 >> -Það er rétt. 1144 00:50:55,970 --> 00:50:58,100 Upphaflega ábendingum benda ekki til neitt. 1145 00:50:58,100 --> 00:51:00,950 Það sem þeir benda á eru kallað pointees og setja þá upp 1146 00:51:00,950 --> 00:51:02,330 er sérstakt skref. 1147 00:51:02,330 --> 00:51:03,210 >> -OH, Hægri, hægri. 1148 00:51:03,210 --> 00:51:03,940 Ég vissi það. 1149 00:51:03,940 --> 00:51:05,730 The pointees eru aðskilin. 1150 00:51:05,730 --> 00:51:08,310 Svo hvernig gera þú úthluta pointee? 1151 00:51:08,310 --> 00:51:11,960 >> -OK, Vel þetta númer úthlutar ný heiltala pointee, 1152 00:51:11,960 --> 00:51:15,050 og þessi hluti setur x til að benda á það. 1153 00:51:15,050 --> 00:51:16,240 >> -Hey, Sem lítur betur. 1154 00:51:16,240 --> 00:51:17,743 Svo láta það gera eitthvað. 1155 00:51:17,743 --> 00:51:23,580 >> -OK, Ég dereference bendilinn x til geyma fjölda 42 í pointee hennar. 1156 00:51:23,580 --> 00:51:27,130 Fyrir þetta bragð, ég þarf minn töfrasprota af dereferencing. 1157 00:51:27,130 --> 00:51:30,200 >> -Your Töfrasprota af dereferencing? 1158 00:51:30,200 --> 00:51:32,310 Uh, það, það er frábært. 1159 00:51:32,310 --> 00:51:34,270 >> -Þetta Er það kóðinn lítur út. 1160 00:51:34,270 --> 00:51:35,970 Ég ætla bara að setja upp fjölda and-- 1161 00:51:35,970 --> 00:51:37,070 >> [POP SOUND] 1162 00:51:37,070 --> 00:51:39,140 >> -Hey, Leita þar sem hún fer. 1163 00:51:39,140 --> 00:51:43,980 Svo, gera dereference á X fylgir örin til að fá aðgang pointee þess. 1164 00:51:43,980 --> 00:51:46,150 Í þessu tilviki, til að geyma 42 í það. 1165 00:51:46,150 --> 00:51:50,700 Hey, prófaðu að nota það til að geyma fjölda 13 í gegnum aðra músina, y. 1166 00:51:50,700 --> 00:51:51,840 >> -OK. 1167 00:51:51,840 --> 00:51:56,270 Ég ætla bara að fara hérna að y, og fá númer 13 sett upp. 1168 00:51:56,270 --> 00:52:00,380 Og þá taka sprotann af dereferencing og just-- 1169 00:52:00,380 --> 00:52:01,646 >> [Buzzer SOUND] 1170 00:52:01,646 --> 00:52:04,080 >> -Ég Hey það virkaði ekki. 1171 00:52:04,080 --> 00:52:06,470 Segja, uh, Binky, ég ekki held dereferencing 1172 00:52:06,470 --> 00:52:10,850 Y er góð hugmynd, vegna þess að setja upp pointee er sérstakt skref. 1173 00:52:10,850 --> 00:52:12,480 Og ég held ekki að við alltaf gerði það. 1174 00:52:12,480 --> 00:52:14,620 >> -Hmm, Góður punktur. 1175 00:52:14,620 --> 00:52:19,810 >> -Já, Úthlutað við músina, y, en við aldrei setja það til að benda á pointee. 1176 00:52:19,810 --> 00:52:21,590 >> -Hmm, Mjög athugull. 1177 00:52:21,590 --> 00:52:23,215 -Hey, Þú ert að leita vel þar, Binky. 1178 00:52:23,215 --> 00:52:26,390 Getur þú festa það þannig að y stig við sama pointee og x. 1179 00:52:26,390 --> 00:52:29,290 >> -Sure Nota ég töfrasprota minn af músina verkefni. 1180 00:52:29,290 --> 00:52:31,970 >> -er Að fara til vera a Vandamálið, eins og áður? 1181 00:52:31,970 --> 00:52:33,790 >> -Nei, Þetta er ekki snerta pointees. 1182 00:52:33,790 --> 00:52:35,840 Það breytir bara einn músina til að benda á það sama thing-- 1183 00:52:35,840 --> 00:52:36,465 >> [Pabbi SOUND] 1184 00:52:36,465 --> 00:52:37,450 --as annað. 1185 00:52:37,450 --> 00:52:38,440 >> -Ó ég skil. 1186 00:52:38,440 --> 00:52:41,200 Nú y stig til sama stað og x. 1187 00:52:41,200 --> 00:52:42,950 Svo, bíddu, nú y er fastur. 1188 00:52:42,950 --> 00:52:44,110 Það hefur pointee. 1189 00:52:44,110 --> 00:52:47,779 Svo er hægt að reyna vendi af dereferencing aftur til að senda 13 yfir. 1190 00:52:47,779 --> 00:52:51,110 >> -OH, OK, hér fer. 1191 00:52:51,110 --> 00:52:52,330 >> -Hey, Líta á það. 1192 00:52:52,330 --> 00:52:53,570 Nú dereferencing verk á y. 1193 00:52:53,570 --> 00:52:57,900 Og vegna þess að ábendingum deilir sem eitt pointee, bæði þeir sjá 13. 1194 00:52:57,900 --> 00:52:59,952 >> -Já, Hlutdeild, uh, hvað sem er. 1195 00:52:59,952 --> 00:53:01,535 Svo erum við að fara að skipta stöðum núna? 1196 00:53:01,535 --> 00:53:03,730 >> -Ég Líta við erum út á tíma. 1197 00:53:03,730 --> 00:53:04,660 >> -But-- 1198 00:53:04,660 --> 00:53:06,520 >> -Bara Muna þrjú Pointer reglur. 1199 00:53:06,520 --> 00:53:09,550 Númer 1, þá er einfaldasta uppbygging er að þú ert með músina, 1200 00:53:09,550 --> 00:53:11,630 og það bendir á að pointee. 1201 00:53:11,630 --> 00:53:13,740 En músina og pointee eru aðskilin. 1202 00:53:13,740 --> 00:53:15,620 Og algeng villa er að setja upp músina 1203 00:53:15,620 --> 00:53:18,000 en að gleyma að gefa það a pointee. 1204 00:53:18,000 --> 00:53:21,170 >> Númer 2, músina dereferencing byrjar á músina 1205 00:53:21,170 --> 00:53:24,020 og segir örina sína yfir til að fá aðgang pointee þess. 1206 00:53:24,020 --> 00:53:27,815 Eins og við allur vita, þetta virkar aðeins ef það er pointee, sem eins konar fær aftur 1207 00:53:27,815 --> 00:53:29,260 að Regla númer 1. 1208 00:53:29,260 --> 00:53:31,990 >> Númer 3, músina verkefni tekur einn músina 1209 00:53:31,990 --> 00:53:35,330 og breytir það að benda til Sama pointee sem annað músina. 1210 00:53:35,330 --> 00:53:37,150 Svo eftir verkefni, tveir ábendingum 1211 00:53:37,150 --> 00:53:40,927 mun benda til sömu pointee, stundum það er kallað hlutdeild. 1212 00:53:40,927 --> 00:53:42,510 Og það er allt það er til það, virkilega. 1213 00:53:42,510 --> 00:53:43,130 Bless-bless núna. 1214 00:53:43,130 --> 00:53:43,475 >> [END spilun] 1215 00:53:43,475 --> 00:53:44,830 >> DAVID J. Malan: Það er það fyrir CS50. 1216 00:53:44,830 --> 00:53:46,246 Þökk sé prófessor Nick Parlante. 1217 00:53:46,246 --> 00:53:47,730 Við munum sjá þig í næstu viku. 1218 00:53:47,730 --> 00:53:51,706 1219 00:53:51,706 --> 00:53:56,435 >> [Raftónlist spila] 1220 00:53:56,435 --> 00:57:22,775