1 00:00:00,000 --> 00:00:01,110 >> [Tónlist spila] 2 00:00:01,110 --> 00:00:10,567 3 00:00:10,567 --> 00:00:11,650 DAVID J. MALAN: Allt í lagi. 4 00:00:11,650 --> 00:00:15,610 Þetta er CS50, og þetta er endir viku Four. 5 00:00:15,610 --> 00:00:19,420 Og einn af the efni í dag er að á stafrænu réttar, 6 00:00:19,420 --> 00:00:20,989 listin að jafna upplýsingar. 7 00:00:20,989 --> 00:00:22,780 Og reyndar, jafnvel þótt þú ert í the miðja 8 00:00:22,780 --> 00:00:25,070 núna friðar á þriggja og Breakout, í næstu viku, 9 00:00:25,070 --> 00:00:27,880 áhersla verður lögð á einmitt þetta lén. 10 00:00:27,880 --> 00:00:30,686 >> Svo einn af the kælir störf sem ég alltaf hafði var aftur í framhaldsnám, 11 00:00:30,686 --> 00:00:33,560 þegar ég var að vinna fyrir the heimamaður Middlesex County District Attorney er 12 00:00:33,560 --> 00:00:34,950 skrifstofa, gera réttar vinna. 13 00:00:34,950 --> 00:00:37,450 Svo í raun, Massachusetts State Police, stundum, 14 00:00:37,450 --> 00:00:40,100 þegar vinna á málum myndi koma í hlutum eins og harða diska 15 00:00:40,100 --> 00:00:42,185 og disklingadrifið og minniskort og þess háttar. 16 00:00:42,185 --> 00:00:44,060 Og þeir myndu afhenda þau mér og lærifaðir minn, 17 00:00:44,060 --> 00:00:48,070 og markmið okkar var að finna vísbendingar, ef það væri einhver á þessum miðlum. 18 00:00:48,070 --> 00:00:50,700 Nú, þú gætir hafa séð fagurt af þessum heimi réttar 19 00:00:50,700 --> 00:00:53,000 í fjölmiðlum, sjónvarpi og kvikmyndum. 20 00:00:53,000 --> 00:00:55,730 En starfið sem ég hafði, og eflaust að heimurinn, 21 00:00:55,730 --> 00:00:57,550 er ekki alveg eins og þú myndir sjá það. 22 00:00:57,550 --> 00:01:00,794 Við skulum taka a líta á það sem þú hefur sennilega séð. 23 00:01:00,794 --> 00:01:01,460 [Vídeó spilun] 24 00:01:01,460 --> 00:01:02,930 -OK. 25 00:01:02,930 --> 00:01:05,380 Nú, við skulum fá gott að líta á þig. 26 00:01:05,380 --> 00:01:06,850 >> [Tónlist spila] 27 00:01:06,850 --> 00:01:12,260 28 00:01:12,260 --> 00:01:12,932 >> -Hold Það. 29 00:01:12,932 --> 00:01:13,657 Hlaupa til baka. 30 00:01:13,657 --> 00:01:14,733 >> -Bíddu. 31 00:01:14,733 --> 00:01:15,233 Fara til hægri. 32 00:01:15,233 --> 00:01:16,371 33 00:01:16,371 --> 00:01:16,870 -Það. 34 00:01:16,870 --> 00:01:17,369 Frysta það. 35 00:01:17,369 --> 00:01:17,930 -Full-Skjár. 36 00:01:17,930 --> 00:01:18,376 >> -OK. 37 00:01:18,376 --> 00:01:18,875 Frysta það. 38 00:01:18,875 --> 00:01:20,160 -Tighten Upp á það, munt þú? 39 00:01:20,160 --> 00:01:22,126 >> -Vector Í á sem strákur frá bak hjólinu. 40 00:01:22,126 --> 00:01:24,435 >> -Zoom Í hérna á þessum stað. 41 00:01:24,435 --> 00:01:28,580 >> -Með Réttum búnaði, mynd má stækka og skerpti. 42 00:01:28,580 --> 00:01:29,330 >> Hvað er það? 43 00:01:29,330 --> 00:01:30,780 >> -Það Er aukahlutur program. 44 00:01:30,780 --> 00:01:32,170 >> Má ég ljóst að upp eitthvað? 45 00:01:32,170 --> 00:01:33,070 >> Ég veit ekki. 46 00:01:33,070 --> 00:01:34,150 Við skulum auka það. 47 00:01:34,150 --> 00:01:35,440 >> -Enhance Kafli A6. 48 00:01:35,440 --> 00:01:36,570 49 00:01:36,570 --> 00:01:38,562 Ég aukið smáatriði, and-- 50 00:01:38,562 --> 00:01:40,020 Ég held að það er nóg til að auka. 51 00:01:40,020 --> 00:01:40,976 Losa það á skjánum mínum. 52 00:01:40,976 --> 00:01:42,559 >> Ég aukið spegilmynd í auga hennar. 53 00:01:42,559 --> 00:01:44,322 -Hringjum Er keyrt þetta í gegnum vídeó aukahluti. 54 00:01:44,322 --> 00:01:45,210 >> -Edgar Er hægt að auka þetta? 55 00:01:45,210 --> 00:01:45,710 >> -Hang Á. 56 00:01:45,710 --> 00:01:47,570 57 00:01:47,570 --> 00:01:49,458 >> -Ég Hef verið að vinna á þessum íhugunar. 58 00:01:49,458 --> 00:01:50,402 >> Spegilmynd -Er einhvers. 59 00:01:50,402 --> 00:01:50,902 >> -Reflection. 60 00:01:50,902 --> 00:01:52,870 -Það Er spegilmynd af andliti mannsins. 61 00:01:52,870 --> 00:01:53,694 >> -The Spegilmynd! 62 00:01:53,694 --> 00:01:54,610 -Það Er spegilmynd. 63 00:01:54,610 --> 00:01:55,880 -Zoom Inn á spegil. 64 00:01:55,880 --> 00:01:57,860 Þú getur séð spegilmynd. 65 00:01:57,860 --> 00:01:59,630 >> Má ég bæta ímynd hér? 66 00:01:59,630 --> 00:02:00,377 67 00:02:00,377 --> 00:02:01,210 Má ég bæta það? 68 00:02:01,210 --> 00:02:02,190 Má ég bæta það? 69 00:02:02,190 --> 00:02:03,066 Megum við auka þetta? 70 00:02:03,066 --> 00:02:03,898 Má ég bæta það? 71 00:02:03,898 --> 00:02:04,740 -Hold Á sekúndu. 72 00:02:04,740 --> 00:02:05,281 Ég auka. 73 00:02:05,281 --> 00:02:06,470 -Zoom Inn á dyrnar. 74 00:02:06,470 --> 00:02:06,970 -Times 10. 75 00:02:06,970 --> 00:02:08,009 -Zoom. 76 00:02:08,009 --> 00:02:08,509 -Til Að færa inn. 77 00:02:08,509 --> 00:02:09,340 -More. 78 00:02:09,340 --> 00:02:10,094 -Bíddu, Hætta. 79 00:02:10,094 --> 00:02:10,750 -Stop. 80 00:02:10,750 --> 00:02:11,250 -Pause Það. 81 00:02:11,250 --> 00:02:13,542 -Rotate Okkur 75 gráður um lóðrétt, vinsamlegast. 82 00:02:13,542 --> 00:02:14,750 83 00:02:14,750 --> 00:02:16,127 >> -Stop. 84 00:02:16,127 --> 00:02:19,330 Fara til baka í hálfu um dyrnar aftur. 85 00:02:19,330 --> 00:02:21,420 >> -Got Mynd eyki sem getur punktamynd? 86 00:02:21,420 --> 00:02:24,420 >> -Kannski Við getum notað Pradeep Singh Aðferð til að sjá í gluggum. 87 00:02:24,420 --> 00:02:25,902 >> -The hugbúnaður er ástand af the list. 88 00:02:25,902 --> 00:02:26,866 >> -The eigingildið er slökkt. 89 00:02:26,866 --> 00:02:29,758 >> -Með Hægri samsetning algorithms-- 90 00:02:29,758 --> 00:02:32,168 >> Tekið lýsing -Hann reiknirit til næsta stig, 91 00:02:32,168 --> 00:02:34,110 og ég get notað þær í auka þessa mynd. 92 00:02:34,110 --> 00:02:36,840 >> -Lock Á og stækka z-ásinn. 93 00:02:36,840 --> 00:02:37,351 >> -Enhance. 94 00:02:37,351 --> 00:02:37,850 Auka. 95 00:02:37,850 --> 00:02:38,720 -Enhance. 96 00:02:38,720 --> 00:02:40,070 -Freeze Og auka. 97 00:02:40,070 --> 00:02:43,420 [END vídeó spilun] 98 00:02:43,420 --> 00:02:45,830 DAVID J. MALAN: Svo þeir eru öll orð, en þeir voru ekki 99 00:02:45,830 --> 00:02:47,870 notað í setningum rétt. 100 00:02:47,870 --> 00:02:52,370 Og reyndar í framtíðinni, hvenær sem er, vinsamlegast, þú heyrir einhvern segja orðið, 101 00:02:52,370 --> 00:02:54,250 "Auka" chuckle bara svolítið. 102 00:02:54,250 --> 00:02:57,190 Vegna þess að þegar þú ert að reyna að auka, til dæmis, þetta er það sem gerist. 103 00:02:57,190 --> 00:02:58,580 >> Svo hér er heillandi mynd. 104 00:02:58,580 --> 00:02:59,720 Þetta er eigin Daven CS50 er. 105 00:02:59,720 --> 00:03:03,740 Og geri ráð fyrir að við vildum áherslur í á TWINKLE í auga hans, 106 00:03:03,740 --> 00:03:05,870 eða spegilmynd af slæmur strákur sem var greinilega 107 00:03:05,870 --> 00:03:07,820 tekin af öryggi myndavél. 108 00:03:07,820 --> 00:03:10,330 Þetta er það sem gerist þegar þú zoom í á myndinni sem 109 00:03:10,330 --> 00:03:14,060 hefur aðeins endanlegri fjölda bita í tengslum við það. 110 00:03:14,060 --> 00:03:15,420 >> Það er það sem þú vilt fá. 111 00:03:15,420 --> 00:03:19,190 Og reyndar, í auga Daven er er heldur fjórir, kannski sex pixlar 112 00:03:19,190 --> 00:03:22,110 að semja nákvæmlega hvað var Glimmering þar. 113 00:03:22,110 --> 00:03:25,890 Svo Vandamál Set Fjögurra mun að lokum hafa þú kanna heiminn, sérstaklega 114 00:03:25,890 --> 00:03:28,090 með eðli eitthvað Við köllum skrá I / O, þar 115 00:03:28,090 --> 00:03:31,000 I / O er bara fínt leið til að sagði inntak og úttak. 116 00:03:31,000 --> 00:03:34,280 >> Svo hingað til, allar milliverkanir Við höfum haft með tölvu 117 00:03:34,280 --> 00:03:36,770 hafa að mestu verið með þínum lyklaborð og skjár, 118 00:03:36,770 --> 00:03:40,770 en ekki svo mikið með harða diskinn, eða vistun skráa utan þær sem þú 119 00:03:40,770 --> 00:03:41,620 sjálfur skrifa. 120 00:03:41,620 --> 00:03:44,570 Áætlanir þínar svona langt hafa ekki verið að búa til, og sparnaður, 121 00:03:44,570 --> 00:03:46,270 og uppfæra eigin skrár sínar. 122 00:03:46,270 --> 00:03:47,150 >> Jæja, hvað er skrá? 123 00:03:47,150 --> 00:03:48,105 Jæja, eitthvað eins og JPEG. 124 00:03:48,105 --> 00:03:50,520 Þetta er mynd sem þú gætir hafa eða senda á Facebook 125 00:03:50,520 --> 00:03:51,690 eða sjá hvar á vefnum. 126 00:03:51,690 --> 00:03:54,460 Reyndar, að mynd við bara sá um Daven var JPEG. 127 00:03:54,460 --> 00:03:57,570 Og hvað er áhugavert um skrám eins JPEG 128 00:03:57,570 --> 00:04:02,170 er að þeir geta verið greind, yfirleitt, með ákveðnum mynstrum af bitum. 129 00:04:02,170 --> 00:04:05,200 >> Í öðrum orðum, það er það sem greinir á JPEG frá GIF 130 00:04:05,200 --> 00:04:08,109 frá Smellur frá Word skjal frá Excel skrá? 131 00:04:08,109 --> 00:04:09,900 Jæja, það er bara öðruvísi mynstur bita. 132 00:04:09,900 --> 00:04:12,820 Og þessi mismunandi mynstur eru venjulega við upphaf þessara skráa. 133 00:04:12,820 --> 00:04:18,200 >> Þannig að þegar tölvan þín opnar Word doc, eða þegar tölvan opnar JPEG, 134 00:04:18,200 --> 00:04:20,940 það lítur yfirleitt á að Fyrstu nokkur bitar í skránni. 135 00:04:20,940 --> 00:04:24,059 Og ef það viðurkennir munstur, það segir, ó, þetta er mynd. 136 00:04:24,059 --> 00:04:25,850 Leyfðu mér að sýna það að notandi sem grafík. 137 00:04:25,850 --> 00:04:27,870 Eða, ó, þetta lítur út eins og Word doc. 138 00:04:27,870 --> 00:04:30,480 Leyfðu mér að sýna hana til notandi sem ritgerð. 139 00:04:30,480 --> 00:04:33,020 >> Svo til dæmis, JPEG, það kemur í ljós, eru 140 00:04:33,020 --> 00:04:35,460 nokkuð háþróuð undir hetta. 141 00:04:35,460 --> 00:04:40,140 En fyrstu þrjú bæti mest á hverjum JPEG byrjar með þessum þremur tölum. 142 00:04:40,140 --> 00:04:44,680 Svo bæti núll, einn, og tveir eru í mest á hverjum JPEG, 255 og svo númerið 143 00:04:44,680 --> 00:04:46,675 216, þá er fjöldi 255. 144 00:04:46,675 --> 00:04:48,990 >> Og það sem þú munt vera fær um að byrja að gera í næstu viku 145 00:04:48,990 --> 00:04:52,920 er í raun poking undir hetta skráa eins JPEG 146 00:04:52,920 --> 00:04:57,210 og eins punktamynd skrá, og sjá hvað er alltaf verið þar eins lengi 147 00:04:57,210 --> 00:04:58,650 eins og þú hafir verið að nota tölvuna. 148 00:04:58,650 --> 00:05:01,860 >> En hvað er það er ekki venjulega skrifað eins aukastaf númer eins og þetta. 149 00:05:01,860 --> 00:05:04,620 Tölvunarfræðingar ekki hafa tilhneigingu til að tala í aukastaf. 150 00:05:04,620 --> 00:05:06,139 Þeir gera ekki raunverulega tala í tvöfaldur. 151 00:05:06,139 --> 00:05:07,930 Venjulega, þegar við viljum til að tjá tölur, 152 00:05:07,930 --> 00:05:10,710 við notum í raun og veru sextánskur, sem þú getur muna 153 00:05:10,710 --> 00:05:13,027 frá, segja, Heimadæmi Einn, sem áskorun 154 00:05:13,027 --> 00:05:14,610 þú að hugsa um mismunandi kerfi. 155 00:05:14,610 --> 00:05:17,170 >> Við, að sjálfsögðu, ég þekki með aukastaf, núll til níu. 156 00:05:17,170 --> 00:05:18,215 Við ræddum um tvöfaldur. 157 00:05:18,215 --> 00:05:20,710 Og við gerum í raun ekki hafa að nota það mikið hér 158 00:05:20,710 --> 00:05:22,470 á út, vegna þess að tölvur vilja nota það. 159 00:05:22,470 --> 00:05:24,900 En forritarar munu mjög oft, en ekki alltaf, 160 00:05:24,900 --> 00:05:29,360 nota sextánskur, sem bara þýðir þú ert 16 stafi í stafrófinu þinni, 161 00:05:29,360 --> 00:05:31,330 öfugt við tvo eða 10. 162 00:05:31,330 --> 00:05:34,530 >> Svo hvernig gera telja að þú hærri en níu í sextánskur? 163 00:05:34,530 --> 00:05:41,120 Hægt fara 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, bara með venju. 164 00:05:41,120 --> 00:05:43,540 En hvað er lykillinn er að hver af þessum er einn tákn. 165 00:05:43,540 --> 00:05:44,340 Það er engin 10. 166 00:05:44,340 --> 00:05:48,400 Það er engin 11, í sjálfu sér, vegna þess að hvert með tölustöfunum þínum, rétt eins og í aukastaf 167 00:05:48,400 --> 00:05:51,940 og rétt eins og í tvöfaldur, ætti bara vera einn staf, því venju. 168 00:05:51,940 --> 00:05:55,280 >> Svo að þá er stafrófið sem við höfum til ráðstöfunar fyrir sextánskur. 169 00:05:55,280 --> 00:05:58,600 Svo hvaða hjartarskinn a JPEG líta út ef þú voru að skrifa út þá fyrstu þrjú 170 00:05:58,600 --> 00:06:01,980 bæti ekki eins aukastaf en til dæmis, eins og sextánskur? 171 00:06:01,980 --> 00:06:03,640 Og hvers vegna er álög jafnvel allt sem að gagni? 172 00:06:03,640 --> 00:06:05,290 >> Jæja, a fljótur líta á dæmi. 173 00:06:05,290 --> 00:06:09,030 Þannig að ef ég skrifa út bits sem tákna þessar aukastaf Numbers 174 00:06:09,030 --> 00:06:12,450 þetta gæti verið smá ryðgaður nú frá nokkrum vikum til baka, 175 00:06:12,450 --> 00:06:14,820 en vinstri einn og rétt sem eru nokkuð auðvelt. 176 00:06:14,820 --> 00:06:17,990 255 var stærsta númerið sem við gæti táknað með átta bitum. 177 00:06:17,990 --> 00:06:18,820 Það var allt sjálfur. 178 00:06:18,820 --> 00:06:21,320 Svo eina sem er mildilega áhugavert er miðja einn. 179 00:06:21,320 --> 00:06:24,700 Og ef þú gerir svona út stærðfræði, muntu ráða að, örugglega, 180 00:06:24,700 --> 00:06:27,949 að mynstur í einum og núll táknar 216. 181 00:06:27,949 --> 00:06:30,240 Svo skulum kveða bara fyrir nú að þetta eru réttar. 182 00:06:30,240 --> 00:06:31,730 En af hverju er þetta áhugavert? 183 00:06:31,730 --> 00:06:33,970 >> Jæja, bæti, að sjálfsögðu, er átta bitar. 184 00:06:33,970 --> 00:06:38,980 Og það kemur í ljós að ef þú heldur af bæti sem tveimur klumpur af fjórum bitum, 185 00:06:38,980 --> 00:06:39,500 eins og þetta. 186 00:06:39,500 --> 00:06:41,000 Leyfðu mér að bæta bara smá pláss. 187 00:06:41,000 --> 00:06:42,550 Svo áður, eftir. 188 00:06:42,550 --> 00:06:46,520 Ég hef bara bætt við nokkrum hvítt rúm fyrir sakir visualization er hér. 189 00:06:46,520 --> 00:06:51,840 Hvernig gætum við tákna nú í, segja, sextánskur hvert quad bita, 190 00:06:51,840 --> 00:06:52,880 hvert sett af fjórum bitum? 191 00:06:52,880 --> 00:06:56,420 >> Svo til dæmis, á vinstri nú höfum við 1111 í tvöfaldur. 192 00:06:56,420 --> 00:07:00,420 Hvað er að tala í aukastaf, ef þú gera út stærðfræði? 193 00:07:00,420 --> 00:07:03,780 Þú hefur sjálfur stað, twos stað, sem Fours stað, og eights stað. 194 00:07:03,780 --> 00:07:04,341 >> Áhorfendur: 15. 195 00:07:04,341 --> 00:07:05,340 DAVID J. MALAN: Það er 15. 196 00:07:05,340 --> 00:07:08,340 Þannig að ef við gerum átta plús fjórir plús tveir plús einn, fáum við 15. 197 00:07:08,340 --> 00:07:11,790 Svo ég gæti skrifað niður 15 hér 1111, en allt lið hér 198 00:07:11,790 --> 00:07:13,190 er sextánskur, ekki aukastaf. 199 00:07:13,190 --> 00:07:17,310 Svo í stað þess að skrifa niður 15, 1-5, Ég ætla að skrifa það í álög, 200 00:07:17,310 --> 00:07:22,311 sem ef þú hugsa til baka, ef þú ert núll í f, hvað er 15 að fara að vera? 201 00:07:22,311 --> 00:07:22,810 Áhorfendur: f. 202 00:07:22,810 --> 00:07:24,434 DAVID J. MALAN: Svo kemur í ljós að það er f. 203 00:07:24,434 --> 00:07:29,140 Og þú getur unnið það út með því að segja, vel, ef a er 10, þá f er í lagi 15. 204 00:07:29,140 --> 00:07:33,250 Svo reyndar gætum við umrita þetta sama mengi af tölum sem f f. 205 00:07:33,250 --> 00:07:35,750 Og þá ef við gerum smá af stærðfræði, Við munum ráða að það er d. 206 00:07:35,750 --> 00:07:38,650 Átta er frekar auðvelt, vegna þess að við hafa einn í eights stað. 207 00:07:38,650 --> 00:07:40,620 Og þá höfum við a par fleiri m m er. 208 00:07:40,620 --> 00:07:44,669 >> Svo hvað menn hafa tilhneigingu til að gera með samningnum þegar þeir nota sextánskur er þeir bara 209 00:07:44,669 --> 00:07:47,710 skrifa þetta svolítið meira succinctly, að losna við mest af þessu hvíta rými. 210 00:07:47,710 --> 00:07:50,890 Og bara til að vera frábær ljóst að lesendur að þetta er sextánskur, 211 00:07:50,890 --> 00:07:54,670 einfalt samningur milli menn er þú skrifar núll 212 00:07:54,670 --> 00:07:58,000 x, sem hefur enga merkingu aðra en sjónræn auðkenni á, 213 00:07:58,000 --> 00:07:59,590 hér kemur álög tala. 214 00:07:59,590 --> 00:08:04,210 >> Og þá, setja þér tvo tölustafi, f f-í þessu tilfelli, þá d a, þá f-f. 215 00:08:04,210 --> 00:08:06,700 Svo löng saga stutt, sextánskur tilhneigingu bara 216 00:08:06,700 --> 00:08:11,990 til að vera gagnleg vegna þess að hver af sínum tölustafir, núll í f, fullkomlega línur 217 00:08:11,990 --> 00:08:13,880 upp með mynstur af fjórum bitum. 218 00:08:13,880 --> 00:08:18,080 >> Svo ef þú ert með tvær sextánskur tölustafir, núll í F, aftur og aftur, 219 00:08:18,080 --> 00:08:20,256 sem gefur þér fullkomlega átta bitar eða eitt bæti. 220 00:08:20,256 --> 00:08:22,380 Svo er það hvers vegna það hefur tilhneigingu til að vera á hefðbundinn gagnlegt. 221 00:08:22,380 --> 00:08:24,990 Það er engin vitsmunalegum efni í raun umfram það, 222 00:08:24,990 --> 00:08:27,010 önnur en raun gagnsemi hans. 223 00:08:27,010 --> 00:08:29,310 >> Nú JPEG eru ekki aðeins skrá snið fyrir grafík. 224 00:08:29,310 --> 00:08:33,230 Þú gætir muna að það eru skrár eins og þetta í heiminum, 225 00:08:33,230 --> 00:08:34,830 að minnsta kosti frá nokkrum árum. 226 00:08:34,830 --> 00:08:37,580 >> Þannig að þetta var í raun sett í Windows XP 227 00:08:37,580 --> 00:08:39,960 á milljónum tölvum um allan heim. 228 00:08:39,960 --> 00:08:43,000 Og þetta var punktamynd skrá, BMP. 229 00:08:43,000 --> 00:08:47,690 Og punktamynd skrá, eins og þú munt sjá næsta viku, bara þýðir mynstri punkta, 230 00:08:47,690 --> 00:08:51,710 pixlar sem þeir eru kallaðir, a kort á bita, virkilega. 231 00:08:51,710 --> 00:08:55,160 >> Svo er það áhugavert, þó, um þetta skráarsnið, BMP, er 232 00:08:55,160 --> 00:08:58,590 að undir hetta, það hefur meira en bara þrjú bæti 233 00:08:58,590 --> 00:09:01,020 að semja haus hennar, svo að tala, fyrstu bit. 234 00:09:01,020 --> 00:09:03,330 Það lítur í raun lítið flókið við fyrstu sýn. 235 00:09:03,330 --> 00:09:04,704 Og þú munt sjá þetta í P setja. 236 00:09:04,704 --> 00:09:06,810 Og fá eitthvað einkum út af þessu núna 237 00:09:06,810 --> 00:09:10,720 er ekki svo mikilvægt, eins og bara staðreynd að í upphafi hvers punktamynd 238 00:09:10,720 --> 00:09:13,823 skrá, myndrænt form, það er allt fullt af tölum. 239 00:09:13,823 --> 00:09:14,980 240 00:09:14,980 --> 00:09:16,720 >> Nú Microsoft, höfundur þessarar sniði, 241 00:09:16,720 --> 00:09:18,820 hefur tilhneigingu til að kalla þá hlutir ekki ints og stafir 242 00:09:18,820 --> 00:09:22,259 og flýtur en orð og d orð og þráir og bæti. 243 00:09:22,259 --> 00:09:23,800 Svo þeir eru bara mismunandi gögn gerðum. 244 00:09:23,800 --> 00:09:25,170 Þeir eru mismunandi nöfn fyrir sama. 245 00:09:25,170 --> 00:09:26,740 En þú munt sjá að í P Set Four. 246 00:09:26,740 --> 00:09:31,450 >> En þetta er aðeins að segja að ef manneskju tvöfaldur-smellur einhvers BMP skrá á hans 247 00:09:31,450 --> 00:09:35,015 eða harður ökuferð hennar, og opnast upp sýna honum eða henni að mynd, 248 00:09:35,015 --> 00:09:38,500 það gerðist vegna þess að rekstur kerfi væntanlega tekið eftir ekki aðeins 249 00:09:38,500 --> 00:09:41,460 að .BMP skrá eftirnafn í skrá nafn, 250 00:09:41,460 --> 00:09:45,010 en einnig sú staðreynd að það er einhver venju að mynstri bitum 251 00:09:45,010 --> 00:09:47,490 í upphafi þeirrar punktamynd skrá. 252 00:09:47,490 --> 00:09:50,270 >> En við skulum einbeita nú á svo flókið skrá, 253 00:09:50,270 --> 00:09:52,120 en í staðinn á eitthvað eins og þetta. 254 00:09:52,120 --> 00:09:55,190 Segjum hér í gedit, ég bara byrjunina 255 00:09:55,190 --> 00:09:57,070 um forrit sem er frekar einfalt. 256 00:09:57,070 --> 00:09:58,860 Ég hef fengið nokkrar nær allt ofan. 257 00:09:58,860 --> 00:10:02,120 Nú hef ég #include "structs.h" en Ég kem aftur til það í smá stund. 258 00:10:02,120 --> 00:10:03,974 En þetta er gagnlegt fyrir nú. 259 00:10:03,974 --> 00:10:05,890 Svo er þetta forrit það er að fara að framkvæma 260 00:10:05,890 --> 00:10:07,335 eins gagnagrunni skrásetjari. 261 00:10:07,335 --> 00:10:09,710 Svo gagnagrunni nemenda, og sérhver nemandi í heimi 262 00:10:09,710 --> 00:10:13,190 hefur nafn og hús og sennilega sumir önnur efni, en við munum halda það einfalt. 263 00:10:13,190 --> 00:10:15,140 Sérhver nemandi hefur nafn og hús. 264 00:10:15,140 --> 00:10:17,700 >> Þannig að ef ég vildi til að skrifa forrit sem tilgangur í lífinu 265 00:10:17,700 --> 00:10:19,860 var bara að kunnugt frá núll á allt að þremur, 266 00:10:19,860 --> 00:10:22,070 ef það er þremur nemendum við Harvard háskóla. 267 00:10:22,070 --> 00:10:25,350 Og ég vil bara að fá, með því að nota GetString, nafn hvers nemanda og hús, 268 00:10:25,350 --> 00:10:26,600 og þá bara prenta þær út. 269 00:10:26,600 --> 00:10:28,630 >> Þetta er tegund af eins og viku Einn, vika Tveir dót núna, 270 00:10:28,630 --> 00:10:30,810 þar sem ég vil bara fyrir lykkja eða eitthvað svoleiðis. 271 00:10:30,810 --> 00:10:34,500 Og ég vil kalla GetString nokkrar sinnum, og þá prenta m nokkrum sinnum. 272 00:10:34,500 --> 00:10:37,340 Svo hvernig gæti ég gert þetta, þó, þegar bæði nafn og hús 273 00:10:37,340 --> 00:10:39,070 taka þátt fyrir hvern nemanda? 274 00:10:39,070 --> 00:10:42,830 >> Svo gæti Fyrsta eðlishvöt mín vera að gera eitthvað eins og this. 275 00:10:42,830 --> 00:10:49,620 Ég gæti fyrst sagt, vel, gefa mér, segja, fjölbreytta strengi kallast nöfn. 276 00:10:49,620 --> 00:10:51,530 Og ég vil ekki hardcode þrjú hér. 277 00:10:51,530 --> 00:10:53,064 Hvað vil ég að setja það? 278 00:10:53,064 --> 00:10:55,730 Svo NEMENDUR, því það er bara fasti lýst efst, 279 00:10:55,730 --> 00:10:57,860 bara svo að ég þurfi ekki að hardcode þrír í mörgum stöðum. 280 00:10:57,860 --> 00:11:00,859 Þannig, ég get breytt henni eitt sæti, og það hefur áhrif á breytingu allstaðar. 281 00:11:00,859 --> 00:11:04,470 Og þá gæti ég gert band hús NEMENDA. 282 00:11:04,470 --> 00:11:10,250 >> Og nú, gæti ég gert eitthvað eins fyrir (int i = 0; i 00:11:14,390 Þannig að ég ætla að slá hratt, en þetta er líklega kunnugt setningafræði nú. 284 00:11:14,390 --> 00:11:17,030 >> Og nú, þetta var nýleg. 285 00:11:17,030 --> 00:11:22,890 Ef ég vil setja í i-ta Nafn nemanda, held ég að ég að gera þetta. 286 00:11:22,890 --> 00:11:26,480 Og þá, ekki nöfn en hús krappi i. 287 00:11:26,480 --> 00:11:29,930 Ég gera þetta, GetString, og láta mér að fara til baka og laga þessa línu. 288 00:11:29,930 --> 00:11:30,430 Sammála? 289 00:11:30,430 --> 00:11:31,200 Ósammála? 290 00:11:31,200 --> 00:11:32,366 Það er ekki mjög notendavænt. 291 00:11:32,366 --> 00:11:33,890 Ég hef ekki sagt notanda hvað ég á að gera. 292 00:11:33,890 --> 00:11:36,520 >> En nú, ef ég líka vildi síðar, skulum 293 00:11:36,520 --> 00:11:40,060 segja, prenta þetta out-- svo TODO síðar. 294 00:11:40,060 --> 00:11:42,330 Ég ætla að gera meira með this-- þetta að öllum líkindum IS 295 00:11:42,330 --> 00:11:45,970 rétta framkvæmd fá nöfn og hús, þrjú 296 00:11:45,970 --> 00:11:48,870 af þeim samtals hvor, frá notanda. 297 00:11:48,870 --> 00:11:51,280 >> En þetta er ekki mjög góð hönnun, rétt? 298 00:11:51,280 --> 00:11:55,220 Hvað ef nemandi hefur ekki bara nafn og hús, en einnig kennitala, 299 00:11:55,220 --> 00:11:57,770 og símanúmer, og netfang, 300 00:11:57,770 --> 00:12:00,280 og kannski heimasíða, og kannski Twitter höndla, 301 00:12:00,280 --> 00:12:03,730 og allir tala um aðrar upplýsingar tengslum við nemandann eða einstaklingur, 302 00:12:03,730 --> 00:12:04,610 almennt. 303 00:12:04,610 --> 00:12:07,720 Hvernig ættum við að byrja að bæta virkni til þetta forrit? 304 00:12:07,720 --> 00:12:14,080 >> Jæja, mér líður eins og einföldustu leið gæti vera að gera eitthvað eins og, segjum, 305 00:12:14,080 --> 00:12:16,490 int ids NEMENDA. 306 00:12:16,490 --> 00:12:18,380 Svo ég get sett allar kenni þeirra þar. 307 00:12:18,380 --> 00:12:22,240 Og þá, fyrir eitthvað eins og símanúmer, 308 00:12:22,240 --> 00:12:24,400 Ég er ekki viss um hvernig á að tákna sem bara enn. 309 00:12:24,400 --> 00:12:30,280 Svo skulum fara á undan og bara kalla þetta Twitters Nemendur, sem 310 00:12:30,280 --> 00:12:33,550 er svolítið skrítið, but-- og fullt meira sviðum. 311 00:12:33,550 --> 00:12:36,360 >> Ég hef byrjað að í raun afrita og líma hérna. 312 00:12:36,360 --> 00:12:39,416 Og þetta er að fara að vaxa nokkuð ómeðfærilegur ansi hratt, ekki satt? 313 00:12:39,416 --> 00:12:42,290 Væri ekki gott ef það voru í heiminum gögn uppbygging þekkt 314 00:12:42,290 --> 00:12:45,600 ekki sem int eða streng, en eitthvað hærra stigi, abstrakt, svo 315 00:12:45,600 --> 00:12:47,570 að tala, þekktur sem nemandi? 316 00:12:47,570 --> 00:12:50,220 C er ekki kominn með innbyggðum virkni nemenda, 317 00:12:50,220 --> 00:12:52,260 en hvað ef ég vildi gefa það svo? 318 00:12:52,260 --> 00:12:55,640 >> Jæja, það kemur í ljós, ég ætla að opna skrá sem heitir structs.h hér, 319 00:12:55,640 --> 00:12:57,090 og þú getur gert nákvæmlega það. 320 00:12:57,090 --> 00:12:58,290 Og við erum að fara að byrja að gera þetta núna. 321 00:12:58,290 --> 00:13:01,490 Og undir hetta P Set Three, þú hefur nú þegar verið að gera þetta núna. 322 00:13:01,490 --> 00:13:05,920 Það er ekkert sem heitir g RECT eða a g sporöskjulaga í forritunarmál C 323 00:13:05,920 --> 00:13:10,570 >> Fólkinu á Stanford innleitt þá gagnatög með því að nota þessa aðferð hér, 324 00:13:10,570 --> 00:13:13,900 lýsa eigin nýjum gögnum þeirra gerðir með nýtt leitarorð 325 00:13:13,900 --> 00:13:16,744 heitir strúktúr og annað einn heitir typedef. 326 00:13:16,744 --> 00:13:19,660 Og reyndar, þótt setningafræði lítur svolítið öðruvísi efni 327 00:13:19,660 --> 00:13:23,550 við höfum séð áður, í meginreglu, það er frábær einfalt. 328 00:13:23,550 --> 00:13:25,297 >> Þetta þýðir bara "skilgreina tegund." 329 00:13:25,297 --> 00:13:27,255 Það er að fara til vera a uppbyggingu og skipulag 330 00:13:27,255 --> 00:13:29,400 er bara eins og ílát fyrir margar hluti. 331 00:13:29,400 --> 00:13:31,780 Og að uppbygging er að fara að hafa band sem heitir nafn, 332 00:13:31,780 --> 00:13:33,210 og streng sem heitir hús. 333 00:13:33,210 --> 00:13:37,520 Og við skulum kalla, bara til þæginda, þetta allt gagnagrind nemandi. 334 00:13:37,520 --> 00:13:40,320 >> Svo um leið og þú færð að semíkommur, hefur þú nú 335 00:13:40,320 --> 00:13:43,280 skapa eigin þinn gögn tegund sem heitir nemandi 336 00:13:43,280 --> 00:13:46,420 sem nú stendur við hlið int, og fljóta, og bleikju, og band, 337 00:13:46,420 --> 00:13:50,270 og g RECT, og g sporöskjulaga, og hvaða númeri sem um aðra hluti fólk hefur fundið upp. 338 00:13:50,270 --> 00:13:53,340 >> Svo er það gagnlegt um þetta nú er að ef ég fer aftur 339 00:13:53,340 --> 00:13:57,430 að strúktúrinn 0 og klára þetta framkvæmd, sem ég skrifaði 340 00:13:57,430 --> 00:14:02,080 fyrirfram hér, eftir því að allir af óumflýjanleg messiness sem 341 00:14:02,080 --> 00:14:05,490 var um að byrja að gerast og ég bætt símanúmer og Twitters og allt 342 00:14:05,490 --> 00:14:07,370 þessir annað til Skilgreining nemanda, 343 00:14:07,370 --> 00:14:11,810 nú er succinctly pakkað upp aðeins eitt fylki nemenda. 344 00:14:11,810 --> 00:14:15,500 >> Og hver af þeim nemendum núna hefur marga hluti inni á henni. 345 00:14:15,500 --> 00:14:16,930 Svo sem fer bara eina spurningu. 346 00:14:16,930 --> 00:14:19,700 Hvernig gera þú fá á nafni, og húsið, og ID, 347 00:14:19,700 --> 00:14:21,640 og hvað annað er inni nemandans? 348 00:14:21,640 --> 00:14:22,930 Super einfalt, eins vel. 349 00:14:22,930 --> 00:14:25,730 Nýr setningafræði, en einföld hugmynd. 350 00:14:25,730 --> 00:14:29,239 >> Þú vísitölu einfaldlega inn í array, eins og við gerðum í síðustu viku og þetta. 351 00:14:29,239 --> 00:14:31,030 Og hvað er greinilega ný stykki af setningafræði? 352 00:14:31,030 --> 00:14:32,590 353 00:14:32,590 --> 00:14:35,880 Bara., Sem þýðir "fara inn í uppbyggingu og fá svæðið kallast 354 00:14:35,880 --> 00:14:39,030 nafn, fá á sviði sem kallast hús, fá á sviði sem kallast nemandi. " 355 00:14:39,030 --> 00:14:41,940 >> Svo í P Set Three, ef þú ert enn að vinna á það, 356 00:14:41,940 --> 00:14:44,020 og flest gott fólk enn eru, gera sér grein fyrir því að eins og þér 357 00:14:44,020 --> 00:14:46,130 byrja að nota hluti eins og g rects og g ovals 358 00:14:46,130 --> 00:14:50,201 og önnur atriði sem virðast ekki koma frá Week núll, einn, eða tveir, 359 00:14:50,201 --> 00:14:52,950 átta sig á að það er vegna þess að Stanford lýst nýjar gerðir gagna. 360 00:14:52,950 --> 00:14:56,160 >> Og reyndar, það er einmitt það sem við munum gera, eins og heilbrigður, í P Set Four, þegar 361 00:14:56,160 --> 00:14:59,880 við byrjum að takast á við hlutina eins og myndir, bitmaps og fleira. 362 00:14:59,880 --> 00:15:02,882 Svo er það bara stríðnispúki og andlega fyrirmynd fyrir það sem er að koma. 363 00:15:02,882 --> 00:15:04,590 Nú, procrastinated ég svolítið í morgun. 364 00:15:04,590 --> 00:15:09,560 Ég var eins konar forvitinn að sjá hvað Microsoft veggfóður raun 365 00:15:09,560 --> 00:15:10,310 lítur út eins og í dag. 366 00:15:10,310 --> 00:15:15,200 Og það kemur í ljós að einhver í 2006 reyndar fór næstum nákvæmlega 367 00:15:15,200 --> 00:15:19,210 sama stað til að mynda í raun hvað lítur svona þessa dagana. 368 00:15:19,210 --> 00:15:21,380 Svæðið er nú lítið gróin. 369 00:15:21,380 --> 00:15:24,850 >> Svo tala nú af myndum, skulum koma aftur Daven hér 370 00:15:24,850 --> 00:15:26,890 á skjánum og Nicholas, og bara minna þig 371 00:15:26,890 --> 00:15:30,540 að ef þú vilt að tengja okkur fyrir hádegi á föstudaginn, höfuð til venjulega slóð okkar 372 00:15:30,540 --> 00:15:31,440 hér. 373 00:15:31,440 --> 00:15:33,530 >> Svo hvar did við fara burt á mánudaginn? 374 00:15:33,530 --> 00:15:35,140 Við kynna þetta vandamál, ekki satt? 375 00:15:35,140 --> 00:15:37,610 Þetta var að því er virðist að rétt framkvæmd skipti, 376 00:15:37,610 --> 00:15:40,460 þannig að þú tekur tvær ints, einn kallað, er einn hét b, 377 00:15:40,460 --> 00:15:44,130 skipta á þeim, rétt eins og Laura gerði hér á sviðinu með mjólk og vatni, 378 00:15:44,130 --> 00:15:46,820 með því að nota a tímabundinn breytilegur eða tómt bolli, 379 00:15:46,820 --> 00:15:50,540 svo að við gætum sett b í og ​​á komu b án þess að gera skipta um hluti. 380 00:15:50,540 --> 00:15:51,560 Við notuðum til breytu. 381 00:15:51,560 --> 00:15:52,870 Það heitir afleysingamanneskja. 382 00:15:52,870 --> 00:15:55,520 >> En hvað var grundvallaratriði vandamál með þessum kóða á mánudag? 383 00:15:55,520 --> 00:15:57,700 384 00:15:57,700 --> 00:15:58,870 Hvað var vandamálið hér? 385 00:15:58,870 --> 00:16:00,106 386 00:16:00,106 --> 00:16:00,605 Já. 387 00:16:00,605 --> 00:16:01,970 >> Áhorfendur: Það tekur meira pláss. 388 00:16:01,970 --> 00:16:04,719 >> DAVID J. MALAN: Tekur upp meira rúm, því ég er að nota breytu, 389 00:16:04,719 --> 00:16:05,400 og það er allt í lagi. 390 00:16:05,400 --> 00:16:07,300 Það er satt, en ég er að fara að segja að það er allt í lagi. 391 00:16:07,300 --> 00:16:10,030 Það er aðeins 32 bitar í Grand fyrirætlun af hlutur, svo ekki stór samningur. 392 00:16:10,030 --> 00:16:10,655 Aðrar hugsanir? 393 00:16:10,655 --> 00:16:12,572 Áhorfendur: Það skiptir bara breyturnar fundist. 394 00:16:12,572 --> 00:16:13,571 DAVID J. MALAN: Einmitt. 395 00:16:13,571 --> 00:16:15,090 Það skiptir bara breytum staðnum. 396 00:16:15,090 --> 00:16:18,173 Vegna hvenær hringt er function-- þegar ég hafði stæði frá Annenberg 397 00:16:18,173 --> 00:16:19,840 síðasta sinn, hefur þú helstu neðst. 398 00:16:19,840 --> 00:16:23,560 Um leið og þú hringja í aðgerð sem kallast skipti, skipti ekki fá x og y, 399 00:16:23,560 --> 00:16:24,400 upprunalega gildi. 400 00:16:24,400 --> 00:16:26,392 Hvað gerir swap fá, gerði við kröfu? 401 00:16:26,392 --> 00:16:27,100 Áhorfendur: Afrit. 402 00:16:27,100 --> 00:16:28,090 DAVID J. MALAN: Svo afrit af þeim. 403 00:16:28,090 --> 00:16:31,120 Svo það fær einn og tveir, ef þér muna dæmi frá síðasta sinn, 404 00:16:31,120 --> 00:16:34,730 en afrit af einum og tveimur sem eru með góðum árangri skipti. 405 00:16:34,730 --> 00:16:38,550 En því miður á endanum, gildin eru enn sú sama. 406 00:16:38,550 --> 00:16:41,880 Svo við getum séð þetta með okkar nýja vini, vonandi GDB, 407 00:16:41,880 --> 00:16:45,180 að þú eða TFS og Ca er hafa verið að leiðbeina þér í átt þannig. 408 00:16:45,180 --> 00:16:51,210 >> Svo ekki skipti muna lítur like-- skulum opna this-- lítur svona út. 409 00:16:51,210 --> 00:16:54,160 Við frumstilla X að einn, y til tvö. 410 00:16:54,160 --> 00:16:55,620 Had a búnt af prenta m er. 411 00:16:55,620 --> 00:16:58,080 En þá, lykillinn kalla hér var að skipta, sem 412 00:16:58,080 --> 00:17:00,260 er einmitt kóðinn við bara sá áðan. 413 00:17:00,260 --> 00:17:03,180 Sem er rétt að byrja litið, en virkni, 414 00:17:03,180 --> 00:17:06,800 þetta forrit virkar ekki, vegna þess að það er ekki til frambúðar skipta x og y. 415 00:17:06,800 --> 00:17:10,190 >> Svo skulum sjá þetta, fljótleg heitt upp hér við GDB, sem ./noswap. 416 00:17:10,190 --> 00:17:11,867 417 00:17:11,867 --> 00:17:15,200 A fullt af yfirþyrmandi upplýsinga, sem Ég losna við Control L fyrir nú. 418 00:17:15,200 --> 00:17:17,516 Og nú, ég ætla að fara á undan og keyra það. 419 00:17:17,516 --> 00:17:19,349 Og því miður, að var ekki að gagni. 420 00:17:19,349 --> 00:17:22,355 Það hljóp forritið inni þetta forrit sem heitir GDB, aflúsara, 421 00:17:22,355 --> 00:17:23,730 en það var ekki láta mig pota í kring. 422 00:17:23,730 --> 00:17:26,229 >> Svo hvernig get ég staldra raun framkvæmd innan þessa áætlun? 423 00:17:26,229 --> 00:17:27,410 424 00:17:27,410 --> 00:17:28,329 Svo brjóta. 425 00:17:28,329 --> 00:17:32,340 Og ég gæti skemmt á öllum línu númer, einn, 10, 15. 426 00:17:32,340 --> 00:17:35,530 En ég get líka skemmt táknrænt með því að segja brjóta Main. 427 00:17:35,530 --> 00:17:38,980 Og það er að fara að setja inn hlé lið, greinilega í línu 16 í aðal. 428 00:17:38,980 --> 00:17:40,050 Og hvar er línan 16? 429 00:17:40,050 --> 00:17:42,960 Við skulum fara upp að kóða og fara upp í noswap. 430 00:17:42,960 --> 00:17:46,930 Og reyndar, lína 16 er mjög fyrst í áætluninni. 431 00:17:46,930 --> 00:17:52,130 >> Svo nú, ef ég fer á undan og tegund keyra þessa tíma, Enter, bið það. 432 00:17:52,130 --> 00:17:53,080 Svo skulum pota í kring. 433 00:17:53,080 --> 00:17:55,716 Prenta x-- hvers vegna er x núll? 434 00:17:55,716 --> 00:17:56,705 435 00:17:56,705 --> 00:17:57,830 Og hunsa dollara merkið. 436 00:17:57,830 --> 00:17:59,725 Það er bara fyrir áhugamaður notkun af the program. 437 00:17:59,725 --> 00:18:00,780 438 00:18:00,780 --> 00:18:03,140 Hvers vegna er x núll í augnablikinu? 439 00:18:03,140 --> 00:18:03,640 Já. 440 00:18:03,640 --> 00:18:07,061 >> Áhorfendur: Það bið rétt áður lína 16, ekki í raun á línu 16. 441 00:18:07,061 --> 00:18:08,060 DAVID J. MALAN: Einmitt. 442 00:18:08,060 --> 00:18:11,630 GDB, við vanræksla, hefur bið framkvæmd rétt áður en línu 16. 443 00:18:11,630 --> 00:18:14,820 Svo það hefur ekki framkvæmt, sem þýðir x er sumir óþekktur gildi. 444 00:18:14,820 --> 00:18:17,150 Og við svo heppnir að það er eitthvað hreint eins núll. 445 00:18:17,150 --> 00:18:20,310 Svo nú ef ég tegund næst, nú keyrð 16. 446 00:18:20,310 --> 00:18:22,000 Það er að bíða eftir mér til að framkvæma 17. 447 00:18:22,000 --> 00:18:23,400 Leyfðu mér að fara á undan og prenta x. 448 00:18:23,400 --> 00:18:24,094 Það er eitt. 449 00:18:24,094 --> 00:18:25,260 Leyfðu mér að fara á undan og prenta y. 450 00:18:25,260 --> 00:18:26,176 Hvað ætti ég að sjá núna? 451 00:18:26,176 --> 00:18:27,660 452 00:18:27,660 --> 00:18:28,560 >> Áhorfendur: [inaudible] 453 00:18:28,560 --> 00:18:29,165 >> DAVID J. MALAN: Smá hávær. 454 00:18:29,165 --> 00:18:30,040 >> Áhorfendur: [inaudible] 455 00:18:30,040 --> 00:18:30,537 456 00:18:30,537 --> 00:18:32,120 DAVID J. MALAN: Ekki alveg sátt. 457 00:18:32,120 --> 00:18:34,760 Svo já, sjáum við nokkur sorp gildi. 458 00:18:34,760 --> 00:18:37,862 Nú, y er 134514064 þar. 459 00:18:37,862 --> 00:18:39,320 Jæja, það er bara sorp gildi. 460 00:18:39,320 --> 00:18:41,350 Áætlun mín notar RAM fyrir mismunandi tilgangi. 461 00:18:41,350 --> 00:18:42,350 Það er önnur störf. 462 00:18:42,350 --> 00:18:44,040 Annað fólk skrifaði inni tölvunni minni. 463 00:18:44,040 --> 00:18:46,789 Svo þessir bitar hafa verið notuð til önnur gildi, og hvað ég ætla að sjá 464 00:18:46,789 --> 00:18:49,470 er leifar af sumir áður notkun þessarar minni. 465 00:18:49,470 --> 00:18:53,350 >> Svo ekki máli, vegna þess að um leið eins og ég slá næsta og þá prenta y, 466 00:18:53,350 --> 00:18:55,640 það er frumstillt til gildi sem ég vil. 467 00:18:55,640 --> 00:18:57,400 Svo nú, við skulum fara á undan svolítið hraðar. 468 00:18:57,400 --> 00:18:58,540 N fyrir næstu. 469 00:18:58,540 --> 00:18:59,570 Við skulum gera það aftur. 470 00:18:59,570 --> 00:19:00,530 Við skulum gera það aftur. 471 00:19:00,530 --> 00:19:02,404 En ég vil ekki að lemja það hér, vegna þess að ef ég 472 00:19:02,404 --> 00:19:05,110 langar að sjá hvað er að gerast inni skiptasamninga, hvað er stjórn? 473 00:19:05,110 --> 00:19:05,520 >> Áhorfendur: skref. 474 00:19:05,520 --> 00:19:06,436 >> DAVID J. MALAN: skref. 475 00:19:06,436 --> 00:19:09,800 Þannig að þetta skref mig inn í virka, frekar en yfir það. 476 00:19:09,800 --> 00:19:12,270 Og nú, það er lítið dulinn heiðarlega, en þetta er bara 477 00:19:12,270 --> 00:19:14,581 segja mér að ég er í línu 33 núna. 478 00:19:14,581 --> 00:19:15,580 Og við skulum gera þetta aftur. 479 00:19:15,580 --> 00:19:16,080 Prenta afleysingamanneskja. 480 00:19:16,080 --> 00:19:17,129 481 00:19:17,129 --> 00:19:20,170 Sorp gildi, neikvæð í þetta sinn, en það er bara enn sorp gildi. 482 00:19:20,170 --> 00:19:22,810 Svo skulum gera næst, prenta afleysingamanneskja. 483 00:19:22,810 --> 00:19:27,130 Það er frumstilla til 1, sem var gildi x, einnig þekkt sem a. 484 00:19:27,130 --> 00:19:29,110 >> Nú, þar eru okkar og x koma frá? 485 00:19:29,110 --> 00:19:32,510 Jæja, eftir í meginatriðum við kallast þessi gildi x og y. 486 00:19:32,510 --> 00:19:34,740 Við fórum í þá þá að skipta sem hér segir. 487 00:19:34,740 --> 00:19:37,010 X kom fyrst, komma y. 488 00:19:37,010 --> 00:19:40,020 Og þá, skipti gætu kalla þá X og y. 489 00:19:40,020 --> 00:19:42,630 En til glöggvunar, það er kalla þá a og b. 490 00:19:42,630 --> 00:19:45,970 En a og b eru nú að fara að vera afrit af X og Y, hvort um sig. 491 00:19:45,970 --> 00:19:50,660 >> Svo ef ég fer aftur til GDB, afleysingamanneskja er nú einn og a er nú einn. 492 00:19:50,660 --> 00:19:56,130 En ef ég að gera næst og gera nú prenta a, a hefur þegar verið flutt yfir. 493 00:19:56,130 --> 00:20:00,030 The mjólk hefur verið hellt í fyrrum gler appelsínusafa, eða öfugt. 494 00:20:00,030 --> 00:20:04,750 >> Og ef ég geri næst aftur, og nú ef ég prenta út sem geðheilsu stöðva, 495 00:20:04,750 --> 00:20:07,687 a er enn tvö, en b er nú einn. 496 00:20:07,687 --> 00:20:08,770 Frankly, það er enn þar. 497 00:20:08,770 --> 00:20:10,670 Mér er alveg sama hvað afleysingamanneskja er. 498 00:20:10,670 --> 00:20:16,850 En um leið og ég slæ nú, við skulum segja, halda áfram að fara aftur, núna er ég í lok 499 00:20:16,850 --> 00:20:17,480 forritið. 500 00:20:17,480 --> 00:20:20,730 Og því miður, x er enn er ein og y enn tvö. 501 00:20:20,730 --> 00:20:22,272 >> Svo það var notagildi gdb þarna? 502 00:20:22,272 --> 00:20:23,980 Það var ekki að hjálpa mér að laga vandamálið í sjálfu sér, 503 00:20:23,980 --> 00:20:26,265 en það hjálpar vonandi mér skilja það eftir að átta sig á 504 00:20:26,265 --> 00:20:30,000 að já, rökfræði mín er rétt, en númerið mitt er ekki á endanum að hafa 505 00:20:30,000 --> 00:20:31,450 varanleg áhrif. 506 00:20:31,450 --> 00:20:34,570 Svo er það vandamál sem við erum að fara að nú að leysa í dag. 507 00:20:34,570 --> 00:20:37,870 >> En við skulum fá það með því að þetta. 508 00:20:37,870 --> 00:20:39,230 Band er lygi. 509 00:20:39,230 --> 00:20:41,860 Það líka, ekki gögn gerð sem er til í C. Það er 510 00:20:41,860 --> 00:20:44,750 verið samheiti fyrir suma tími fyrir eitthvað annað, 511 00:20:44,750 --> 00:20:47,300 og við getum leiða í ljós að eins og hér segir. 512 00:20:47,300 --> 00:20:53,282 >> Leyfðu mér að fara á undan og opna upp forrit sem heitir saman-0. 513 00:20:53,282 --> 00:20:56,240 Og frekar en að slá þetta einn út, Við munum byrja að ganga í gegnum kóða 514 00:20:56,240 --> 00:20:58,040 Ég skrifaði nú þegar, en það er aðeins nokkrar línur. 515 00:20:58,040 --> 00:20:59,570 Þannig að þetta er saman-0. 516 00:20:59,570 --> 00:21:02,380 Og það fyrsta sem ég er að gera er að fá lína af texta. 517 00:21:02,380 --> 00:21:05,610 >> En taka það sem ég er gera í fyrsta skipti. 518 00:21:05,610 --> 00:21:07,910 Hvað er öðruvísi greinilega um línu 21? 519 00:21:07,910 --> 00:21:10,020 520 00:21:10,020 --> 00:21:11,402 Reyndar Bíddu. 521 00:21:11,402 --> 00:21:12,110 Þetta er afrit tvö. 522 00:21:12,110 --> 00:21:13,568 Það er ekki einu sinni rétt forrit. 523 00:21:13,568 --> 00:21:14,780 Allt í lagi, Spilla viðvörun. 524 00:21:14,780 --> 00:21:16,890 Allt í lagi, svo aldrei hugur að. 525 00:21:16,890 --> 00:21:18,520 Það er svarið til framtíðar spurningu. 526 00:21:18,520 --> 00:21:21,450 >> Hér er saman-0, og ég er um að fá línu af texta. 527 00:21:21,450 --> 00:21:22,435 Forritið er mun einfaldari. 528 00:21:22,435 --> 00:21:23,560 Svo er þetta augljóst. 529 00:21:23,560 --> 00:21:28,070 Þetta er eins og á viku, viku tvö efni í augnablikinu. band s = GetString. 530 00:21:28,070 --> 00:21:29,700 Nú segi ég það aftur hér. 531 00:21:29,700 --> 00:21:31,830 band t = GetString. 532 00:21:31,830 --> 00:21:35,300 Og þá, the síðastur hlutur í þessu program, eins og nafnið gefur til kynna, 533 00:21:35,300 --> 00:21:37,090 er ég ætla að reyna að bera saman þá. 534 00:21:37,090 --> 00:21:40,709 >> Þannig að ef s, fyrsta band, jafngildir = t, þá er ég 535 00:21:40,709 --> 00:21:42,250 að fara að segja að þú slærð það sama. 536 00:21:42,250 --> 00:21:44,291 Annars ætla ég að segja þú slærð mismunandi hluti. 537 00:21:44,291 --> 00:21:45,880 Svo skulum taka saman og keyra þetta forrit. 538 00:21:45,880 --> 00:21:48,481 Svo gera saman núll. 539 00:21:48,481 --> 00:21:48,980 Lítur vel út. 540 00:21:48,980 --> 00:21:50,490 Engin Uppsöfnunarvillur. 541 00:21:50,490 --> 00:21:52,386 >> Leyfðu mér að fara á undan núna og slá ./compare-0. 542 00:21:52,386 --> 00:21:55,230 543 00:21:55,230 --> 00:21:59,220 Leyfðu mér að fara á undan og segja eitthvað : Daven og eitthvað: Rob. 544 00:21:59,220 --> 00:22:00,450 Og ég pikka mismunandi hluti. 545 00:22:00,450 --> 00:22:01,250 Svo langt, svo góður. 546 00:22:01,250 --> 00:22:02,680 Forrit virðist vera rétt. 547 00:22:02,680 --> 00:22:03,880 >> En við skulum hlaupa það aftur. 548 00:22:03,880 --> 00:22:05,800 Segja eitthvað: Gabe. 549 00:22:05,800 --> 00:22:07,140 Segja eitthvað: Gabe. 550 00:22:07,140 --> 00:22:08,520 551 00:22:08,520 --> 00:22:09,020 Allt í lagi. 552 00:22:09,020 --> 00:22:10,851 Kannski ég lenti rúm bar eða eitthvað angurvær. 553 00:22:10,851 --> 00:22:11,600 Við skulum gera það aftur. 554 00:22:11,600 --> 00:22:13,020 Svo Zamyla. 555 00:22:13,020 --> 00:22:13,970 556 00:22:13,970 --> 00:22:14,470 Zamyla. 557 00:22:14,470 --> 00:22:15,740 558 00:22:15,740 --> 00:22:17,330 Mismunandi hlutir. 559 00:22:17,330 --> 00:22:19,430 Svo hvað er að gerast? 560 00:22:19,430 --> 00:22:23,200 >> Þannig að við höfum þessar tvær línur af númer, GetString vera kölluð tvisvar. 561 00:22:23,200 --> 00:22:25,760 Og þá er ég einfaldlega að reyna að bera saman s og t. 562 00:22:25,760 --> 00:22:28,370 En hvað raunverulega þá er að fara á? 563 00:22:28,370 --> 00:22:31,180 Jæja, rithönd mín er um það bil að Butcher þetta dæmi nokkuð. 564 00:22:31,180 --> 00:22:34,630 Og við skulum í raun kasta þetta upp yfir hér, eins og vel. 565 00:22:34,630 --> 00:22:37,390 566 00:22:37,390 --> 00:22:45,712 >> Þannig að við höfum línu eins band s = GetString. 567 00:22:45,712 --> 00:22:48,295 Svo er það einfaldlega fyrsta áhugavert lína frá því forriti. 568 00:22:48,295 --> 00:22:49,920 569 00:22:49,920 --> 00:22:52,974 En hvað allt þetta skiptið hefur verið fara á undir hetta? 570 00:22:52,974 --> 00:22:55,890 Jæja, á vinstri hönd hlið er band, sem er einhvers konar breytu, 571 00:22:55,890 --> 00:22:56,785 og það er kallað s. 572 00:22:56,785 --> 00:23:00,019 Þannig að ég veit að þetta er að nota minni, eða RAM, í tölvunni minni einhvern veginn. 573 00:23:00,019 --> 00:23:02,060 Þannig að ég ætla að abstractly draga að sem ferningur. 574 00:23:02,060 --> 00:23:04,820 32 bita, það kemur í ljós, en meira um það í framtíðinni. 575 00:23:04,820 --> 00:23:06,410 Og þá, hvað er að gerast hérna? 576 00:23:06,410 --> 00:23:08,700 >> Jæja, GetString augljóslega fær band frá notandanum. 577 00:23:08,700 --> 00:23:11,360 Og GetString fékk Zamyla eða Gabe eða Daven. 578 00:23:11,360 --> 00:23:14,640 Svo skulum velja fyrsta af þeim, sem var Daven. 579 00:23:14,640 --> 00:23:19,174 Svo í raun, hvað GetString fékk mér í því fyrsta tilfelli var D-a-v-e-n. 580 00:23:19,174 --> 00:23:22,690 581 00:23:22,690 --> 00:23:25,045 Og þá, hvað aðrir gerðu það gefa mér leynilega? 582 00:23:25,045 --> 00:23:25,920 Áhorfendur: [inaudible] 583 00:23:25,920 --> 00:23:28,720 DAVID J. MALAN: Já, að / 0 eða null staf. 584 00:23:28,720 --> 00:23:30,550 Svo það gaf í raun mér streng. 585 00:23:30,550 --> 00:23:34,550 En við vitum nú þegar frá fyrri lítur að band er bara fylki 586 00:23:34,550 --> 00:23:37,895 af persónum, og það er sagt með þetta sérstaka vörðr eðli, / 0. 587 00:23:37,895 --> 00:23:39,220 588 00:23:39,220 --> 00:23:42,310 >> En ef þetta er satt og þetta er ferningur, 589 00:23:42,310 --> 00:23:44,160 þetta er greinilega miklu stærri rétthyrningur. 590 00:23:44,160 --> 00:23:46,830 Og reyndar, þetta er, Ég kröfu, aðeins 32 bita. 591 00:23:46,830 --> 00:23:49,500 Og þetta er greinilega meira en 32 bitar, því þetta er líklega 592 00:23:49,500 --> 00:23:51,583 átta plús átta plús átta plús átta plús átta, 593 00:23:51,583 --> 00:23:53,320 bara vegna þess að bæti í ASCII. 594 00:23:53,320 --> 00:23:57,030 Hvernig Heck við erum að fara að passa Daven í þessu litla kassa hér? 595 00:23:57,030 --> 00:23:59,880 >> Jæja, hvað er að GetString raun að gera? 596 00:23:59,880 --> 00:24:03,680 Jæja, þetta rist hér táknar minni tölvunnar minnar eða RAM. 597 00:24:03,680 --> 00:24:07,564 Svo skulum segja að geðþótta að ef hver af þessum táknar bæti, 598 00:24:07,564 --> 00:24:09,730 þá getum við hugsað um hvert bæti sem hafa netfang, 599 00:24:09,730 --> 00:24:13,830 eins 33 Oxford Street, eða 34 Oxford Street, eða 35 Oxford Street. 600 00:24:13,830 --> 00:24:16,700 >> Svo bara eins og heimili hafa netföng og byggingar hafa heimilisföng, 601 00:24:16,700 --> 00:24:19,810 svo ekki einstökum bæti minni hafa netföng eða tölur 602 00:24:19,810 --> 00:24:21,042 sem einstaklega þekkja þá. 603 00:24:21,042 --> 00:24:22,000 Nú, þetta er handahófskennt. 604 00:24:22,000 --> 00:24:25,370 En að halda það einfalt, ég ætla að nota sextánskur bara með því að venju, 605 00:24:25,370 --> 00:24:28,200 en 0x þýðir ekkert annað en "þetta er sextánskur." 606 00:24:28,200 --> 00:24:31,030 og ég ætla að halda því fram að "D" endar á Byte Einn í minni. 607 00:24:31,030 --> 00:24:34,210 >> Ég fékk ekkert annað að gerast í minni, svo Daven fékk fyrsta blettur 608 00:24:34,210 --> 00:24:35,509 á Byte One. 609 00:24:35,509 --> 00:24:36,800 Þetta, þá er að fara að vera 0x2. 610 00:24:36,800 --> 00:24:37,831 611 00:24:37,831 --> 00:24:38,705 Þetta er að fara að 0x3. 612 00:24:38,705 --> 00:24:39,840 613 00:24:39,840 --> 00:24:41,800 Þetta er að fara að vera 0x4. 614 00:24:41,800 --> 00:24:43,025 Þetta er að fara að 0x5. 615 00:24:43,025 --> 00:24:44,025 Þetta er að fara að vera 0x6. 616 00:24:44,025 --> 00:24:45,560 617 00:24:45,560 --> 00:24:48,290 >> En þegar þú byrjar að hugsa um hvað gera í tölvunni 618 00:24:48,290 --> 00:24:50,710 undir hetta, þú getur byrjað að álykta 619 00:24:50,710 --> 00:24:54,960 hvernig þér, fyrir nokkrum árum, vildi hafa innleitt C sjálfu. 620 00:24:54,960 --> 00:24:58,360 Hvað er GetString líklega returning-- vegna þess að það 621 00:24:58,360 --> 00:25:00,946 finnst eins og það er ekki aftur Daven, í sjálfu sér, 622 00:25:00,946 --> 00:25:03,320 vegna þess að hann er örugglega ekki að fara að passa í þessu litla box-- 623 00:25:03,320 --> 00:25:05,090 svo hvað er GetString líklega aftur? 624 00:25:05,090 --> 00:25:07,958 625 00:25:07,958 --> 00:25:08,920 >> Áhorfendur: [inaudible] 626 00:25:08,920 --> 00:25:10,540 >> DAVID J. MALAN: Staðsetning Daven. 627 00:25:10,540 --> 00:25:12,770 Og það er verið að gera þetta allt frá viku One. 628 00:25:12,770 --> 00:25:16,150 Hvað GetString er í raun aftur er ekki band, í sjálfu sér. 629 00:25:16,150 --> 00:25:17,780 Það er ein af litlu hvítu lygar. 630 00:25:17,780 --> 00:25:22,520 Það er aftur á heimilisfang band í minni, einstaka netfang. 631 00:25:22,520 --> 00:25:24,820 Daven býr á 33. Oxford Street. 632 00:25:24,820 --> 00:25:29,310 En fleiri succinctly, Gavin býr á 0x1, Heimilisfang númer eitt. 633 00:25:29,310 --> 00:25:32,280 >> Svo hvað fær setja á þetta lítill kassi þá að vera skýr, 634 00:25:32,280 --> 00:25:35,930 er bara netfang strengsins. 635 00:25:35,930 --> 00:25:38,110 Svo allan þennan tíma, þetta hefur verið að fara á. 636 00:25:38,110 --> 00:25:41,650 En hvað þetta vísbending á nú er að ef allir er hefur 637 00:25:41,650 --> 00:25:44,710 er fjöldi inni af því, sem er að stoppa þig, forritari, 638 00:25:44,710 --> 00:25:47,970 frá því að setja allir tala í allir mismunandi og bara stökk 639 00:25:47,970 --> 00:25:49,080 til þess klumpur af minni? 640 00:25:49,080 --> 00:25:51,320 Og reyndar, munum við sjá það er ógn næst. 641 00:25:51,320 --> 00:25:53,500 >> En nú, þetta finnst ófullnægjandi. 642 00:25:53,500 --> 00:25:55,630 Ef ég segi, fá mér band, þú gefur mér Daven. 643 00:25:55,630 --> 00:25:57,230 En þú í raun ekki að gefa mér Daven. 644 00:25:57,230 --> 00:25:59,310 Allt sem þú gefur mér er heimilisfang Daven er. 645 00:25:59,310 --> 00:26:04,310 Hvernig veit ég þá fyrir víst þar Daven hefst og ends-- 646 00:26:04,310 --> 00:26:07,140 sagan er að fá weird-- þar Daven byrjar og endar, 647 00:26:07,140 --> 00:26:10,435 og þá, næsta band í minni byrjar? 648 00:26:10,435 --> 00:26:11,520 649 00:26:11,520 --> 00:26:13,620 >> Jæja, ef þú ert að fötlun mér upphaf Daven, 650 00:26:13,620 --> 00:26:17,230 meginatriðum, hvernig veit ég þar enda nafn hans er? 651 00:26:17,230 --> 00:26:20,550 Sem sérstakt null karakter, sem er allur the fleiri mikilvægur nú 652 00:26:20,550 --> 00:26:23,040 ef strengi undir hetta eru einfaldlega greind 653 00:26:23,040 --> 00:26:25,820 einstaklega af staðsetningu þeirra í minni. 654 00:26:25,820 --> 00:26:28,130 Svo allan þennan tíma, það er hvað er verið að fara á. 655 00:26:28,130 --> 00:26:32,470 >> Svo þegar við horfum nú á kóðinn hér, útskýra 656 00:26:32,470 --> 00:26:35,790 ef þú myndi galla í línu 26. 657 00:26:35,790 --> 00:26:39,560 Hvers vegna er Zamyla og Zamyla öðruvísi? 658 00:26:39,560 --> 00:26:41,330 Hvers vegna er Gabe og Gabe öðruvísi? 659 00:26:41,330 --> 00:26:42,154 Já, í bakinu. 660 00:26:42,154 --> 00:26:43,390 >> Áhorfendur: Þeir hafa mismunandi heimilisföng. 661 00:26:43,390 --> 00:26:45,931 >> DAVID J. MALAN: Einfaldlega vegna þess að þeir hafa mismunandi heimilisföng. 662 00:26:45,931 --> 00:26:48,820 Vegna þess að þegar þú hringja GetString aftur, sem ég ætla að gera fljótlega hér, 663 00:26:48,820 --> 00:26:52,870 ef þetta er seinni línan, band t, eins og ég gerði í forriti, 664 00:26:52,870 --> 00:26:55,030 jafngildir annað símtal til GetString. 665 00:26:55,030 --> 00:26:56,370 666 00:26:56,370 --> 00:26:58,670 Í næsta skipti sem ég kalla GetString, ég ætla 667 00:26:58,670 --> 00:27:00,190 að fá annað klumpur af minni. 668 00:27:00,190 --> 00:27:02,220 >> GetString er leyft að spyrja rekstri 669 00:27:02,220 --> 00:27:03,800 kerfi til að fá meiri og fleiri minni. 670 00:27:03,800 --> 00:27:07,894 Það er ekki að fara að endurnýta sama sex bæti hvert einasta skipti. 671 00:27:07,894 --> 00:27:09,810 Það er að fara að fá nýjan klumpur af minni, sem 672 00:27:09,810 --> 00:27:12,780 þýðir ekki að fara að fá einhver önnur gildi hérna. 673 00:27:12,780 --> 00:27:15,380 >> Svo þegar ég er jafn = t, þú ert ekki að bera saman 674 00:27:15,380 --> 00:27:17,880 D á móti þessu og A móti þetta og V gegn þessu. 675 00:27:17,880 --> 00:27:19,588 Þú ert að bera saman þessa á móti þessu, sem 676 00:27:19,588 --> 00:27:24,020 hreinskilnislega er nokkuð useful-- useless-- er nokkuð gagnslaus, vegna þess að hver raunverulega 677 00:27:24,020 --> 00:27:25,830 er ekki sama hvar strengirnir eru í minni? 678 00:27:25,830 --> 00:27:26,850 >> Og reyndar höfum við ekki. 679 00:27:26,850 --> 00:27:28,980 Og við erum ekki að fara að byrja sérstaklega umhyggju. 680 00:27:28,980 --> 00:27:34,180 Aðeins að því marki sem galla geta komið og öryggi hótun geta komið vilja 681 00:27:34,180 --> 00:27:36,100 við byrjum í raun að hugsa um þetta. 682 00:27:36,100 --> 00:27:37,230 Svo skulum laga þetta vandamál. 683 00:27:37,230 --> 00:27:39,650 Skrúfjárn út, þú festa það frábær einfaldlega. 684 00:27:39,650 --> 00:27:42,600 >> Og við skulum í raun, áður en ég sýna þetta aftur, hvað myndi 685 00:27:42,600 --> 00:27:47,170 þú gera ef í CS50 flokki, og þú þurftir að framkvæma 686 00:27:47,170 --> 00:27:48,600 samanburður við tveimur strengjum. 687 00:27:48,600 --> 00:27:51,440 Þú greinilega getur ekki bara notað s jafn = t. 688 00:27:51,440 --> 00:27:54,090 En bara rökrétt, hvernig myndir þú bera þetta band 689 00:27:54,090 --> 00:27:56,370 gegn þessum streng með C kóða? 690 00:27:56,370 --> 00:27:56,880 Já. 691 00:27:56,880 --> 00:27:58,780 >> Áhorfendur: Bara gera fyrir lykkju [inaudible] 692 00:27:58,780 --> 00:28:00,670 693 00:28:00,670 --> 00:28:01,670 DAVID J. MALAN: Perfect. 694 00:28:01,670 --> 00:28:02,900 Áhorfendur: [inaudible] 695 00:28:02,900 --> 00:28:03,310 DAVID J. MALAN: Já. 696 00:28:03,310 --> 00:28:05,390 Nota bara fyrir lykkju eða a en lykkja eða hvað sem er. 697 00:28:05,390 --> 00:28:08,710 En bara um grunn hugmynd að ef þetta er klumpur af minni eða fjölda 698 00:28:08,710 --> 00:28:11,590 og þetta er, og kunnugt yfir bæði á sama tíma. 699 00:28:11,590 --> 00:28:12,960 Og bara bera stafina. 700 00:28:12,960 --> 00:28:14,260 >> Og þú hefur fengið að vera lítið varkár, vegna þess að þú 701 00:28:14,260 --> 00:28:16,247 vil ekki einn fingur að fara framhjá öðrum 702 00:28:16,247 --> 00:28:18,080 vegna þess að einn strengur er lengur en hitt. 703 00:28:18,080 --> 00:28:21,380 Svo þú ert að fara að vilja til að athuga þetta sérstaka gildi í lok, null. 704 00:28:21,380 --> 00:28:24,017 En það er í raun, í endir, eins og einfaldur eins og þessi. 705 00:28:24,017 --> 00:28:26,100 Og hreinskilnislega, við þurfum ekki að fjárfesta á ný að hjól. 706 00:28:26,100 --> 00:28:27,960 Hér er útgáfa Tveir. 707 00:28:27,960 --> 00:28:32,910 Og það sem ég ætla að segja hér er að í stað þess að bera saman s jafn = t, 708 00:28:32,910 --> 00:28:38,964 Ég stað að fara að segja, ef strengur Samanburður á S kommum t jafngildir = 0. 709 00:28:38,964 --> 00:28:40,130 Nú, hvað er band saman? 710 00:28:40,130 --> 00:28:43,046 >> Það kemur í ljós, það er fall sem koma með C, en tilgangur í lífinu 711 00:28:43,046 --> 00:28:44,650 er að bera saman tvo strengi. 712 00:28:44,650 --> 00:28:48,300 Og hrærið saman, ef við lesum þess maður síðu eða gögn eða CS50 713 00:28:48,300 --> 00:28:50,630 tilvísun, það mun einfaldlega segja þér að hrærið 714 00:28:50,630 --> 00:28:55,730 bera saman ávöxtun annaðhvort neikvæð númer eða jákvæð tala eða núll, 715 00:28:55,730 --> 00:28:57,660 þar núll þýðir að þeir eru jafnir. 716 00:28:57,660 --> 00:28:58,570 >> Svo bara conjecture. 717 00:28:58,570 --> 00:29:00,390 Hvað gæti það þýtt ef hrærið bera saman ávöxtun 718 00:29:00,390 --> 00:29:02,110 neikvætt gildi eða jákvætt virði? 719 00:29:02,110 --> 00:29:02,785 720 00:29:02,785 --> 00:29:04,285 Áhorfendur: Rúmlega eða minna en. 721 00:29:04,285 --> 00:29:05,570 DAVID J. MALAN: Já, meira en eða minna en. 722 00:29:05,570 --> 00:29:08,640 Svo ef þú vilja til að flokka í heild fullt af strengjum í dictionary-- 723 00:29:08,640 --> 00:29:12,975 eins og við munum að lokum niður road-- fullkominn virka til að nota hugsanlega 724 00:29:12,975 --> 00:29:15,850 vegna þess að það er að fara að gera það Samanburður á strengi fyrir þig, og segja 725 00:29:15,850 --> 00:29:20,060 þú gerir a kemur fyrir b, eða gerir b koma áður en stafrófsröð. 726 00:29:20,060 --> 00:29:21,490 Við getum gert einmitt það. 727 00:29:21,490 --> 00:29:23,620 >> Og taka ég gerði einn annan hlutur í þessu dæmi. 728 00:29:23,620 --> 00:29:26,870 Hvað annað hefur breyst hærri upp í þessari aðalæð virka? 729 00:29:26,870 --> 00:29:28,500 730 00:29:28,500 --> 00:29:29,350 Char *. 731 00:29:29,350 --> 00:29:31,150 Og þetta er að annar hvítur lygi. 732 00:29:31,150 --> 00:29:33,750 Allan þennan tíma, þegar þú hefur verið að skrifa streng, 733 00:29:33,750 --> 00:29:38,350 við höfum verið leynilega endurskrifa band sem char * þannig að clang raun 734 00:29:38,350 --> 00:29:39,270 skilur þig. 735 00:29:39,270 --> 00:29:42,450 >> Með öðrum orðum, í CS50.h og eins og við munum að lokum sjá, 736 00:29:42,450 --> 00:29:45,950 við gert samheiti sem kallast band það er það sama og bleikju *. 737 00:29:45,950 --> 00:29:49,910 Og nú, veit bara að *, Í þessu samhengi, að minnsta kosti, 738 00:29:49,910 --> 00:29:51,286 þýðir á netfangið. 739 00:29:51,286 --> 00:29:52,210 >> Heimilisfangið hvað? 740 00:29:52,210 --> 00:29:56,390 Jæja, sú staðreynd að ég sagði char *, og ekki int * eða fljóta *, 741 00:29:56,390 --> 00:30:00,820 þýðir að char * er veffang bleikju. 742 00:30:00,820 --> 00:30:06,770 Þannig að þetta lítill kassi hér, aka band, er í raun af gerðinni char *, 743 00:30:06,770 --> 00:30:10,490 sem er einfaldlega fínt leið til að segja, í þennan reit mun fara veffang. 744 00:30:10,490 --> 00:30:12,430 Og hvað þýðir það netfang vísa til? 745 00:30:12,430 --> 00:30:13,780 Apparently, a bleikju. 746 00:30:13,780 --> 00:30:16,410 >> En við gátum alveg hafa int * og aðra hluti. 747 00:30:16,410 --> 00:30:20,790 En nú, char * er í raun mest einfalt og einn af áhuga. 748 00:30:20,790 --> 00:30:23,310 Þannig að þetta vandamál er að fara að hækka, þó, aftur. 749 00:30:23,310 --> 00:30:24,830 >> Ég geri ráð fyrir að opna upp þetta forrit. 750 00:30:24,830 --> 00:30:27,670 Við skulum sjá hvort nú getum spá hvað er athugavert við þennan kóða. 751 00:30:27,670 --> 00:30:31,140 Svo í þessari áætlun, afrita 0, ég er að fara á undan og aftur kalla 752 00:30:31,140 --> 00:30:34,190 GetString og geyma verðmæti í s. 753 00:30:34,190 --> 00:30:38,800 >> Og þá, hvers vegna er ég að þessu, bara að minna frá vikna fortíðinni? 754 00:30:38,800 --> 00:30:40,960 Við gerðum segja að GetString stundum skilar null. 755 00:30:40,960 --> 00:30:42,793 Hvað þýðir það ef GetString skilar null? 756 00:30:42,793 --> 00:30:45,040 757 00:30:45,040 --> 00:30:46,034 Eitthvað fór úrskeiðis. 758 00:30:46,034 --> 00:30:48,950 Það þýðir líklega strengur er of stór, út í tölvunni minni. 759 00:30:48,950 --> 00:30:51,724 Það gerist frábær, frábær, frábær sjaldan, en það gæti gerst. 760 00:30:51,724 --> 00:30:53,890 Við viljum til að athuga það, og það er allt sem við erum að gera. 761 00:30:53,890 --> 00:30:57,910 >> Vegna þess að við munum sjá nú, ef þú ert ekki byrja að haka staðaldri fyrir hluti 762 00:30:57,910 --> 00:31:00,870 eins null, þú gætir reyndar byrja að fara 763 00:31:00,870 --> 00:31:03,106 til heimilisföng í minni sem eru ógild. 764 00:31:03,106 --> 00:31:05,980 Og þú ert að fara að byrja að örva fleiri og fleiri skiptingu galla. 765 00:31:05,980 --> 00:31:08,360 Eða í Mac eða PC, bara veldur tölvunni til að hengja 766 00:31:08,360 --> 00:31:10,340 eða forrit til að frysta, hugsanlega. 767 00:31:10,340 --> 00:31:14,930 >> Svo nú, ég kröfu í Afritaðu 0.c, að ég er að fara að afrita þessa strengi með því 768 00:31:14,930 --> 00:31:15,685 af línu 28. 769 00:31:15,685 --> 00:31:16,850 770 00:31:16,850 --> 00:31:18,750 Og þá er ég að fara kröfu neðst 771 00:31:18,750 --> 00:31:21,430 hér sem ég ætla að breyta einn af þeim. 772 00:31:21,430 --> 00:31:22,330 >> Svo taka þetta. 773 00:31:22,330 --> 00:31:24,370 Ég er að hringja gamla vini strlen okkar. 774 00:31:24,370 --> 00:31:28,960 Og bara útskýra á ensku hvað þessi lína 34 er að gera? 775 00:31:28,960 --> 00:31:32,480 Hvað gerir t krappi 0 tákna á vinstri. 776 00:31:32,480 --> 00:31:32,980 Já. 777 00:31:32,980 --> 00:31:34,339 >> Áhorfendur: Fyrsta eðli T? 778 00:31:34,339 --> 00:31:35,880 DAVID J. MALAN: Fyrsta eðli t. 779 00:31:35,880 --> 00:31:36,379 Það er það. 780 00:31:36,379 --> 00:31:40,024 Fyrsti stafurinn t, ég vil að úthluta hástafi útgáfa 781 00:31:40,024 --> 00:31:41,190 á fyrsta staf í t. 782 00:31:41,190 --> 00:31:43,200 Þannig að þetta er að eignfæra fyrsti stafurinn. 783 00:31:43,200 --> 00:31:46,340 Og þá er mjög síðasta sem ég geri í þetta forrit er að ég kröfu hér er 784 00:31:46,340 --> 00:31:50,340 upprunalega, s, og hér er afrit, t. 785 00:31:50,340 --> 00:31:54,610 >> En miðað við sögu við bara sagði um hvað strengir eru í raun, 786 00:31:54,610 --> 00:31:57,520 hvað er lína 28 í raun að gera, og hvað er 787 00:31:57,520 --> 00:31:59,405 leiðir padda fara að vera á skjánum? 788 00:31:59,405 --> 00:32:01,300 789 00:32:01,300 --> 00:32:03,500 >> Svo fyrst, fyrsta spurningin, 28. 790 00:32:03,500 --> 00:32:09,040 Hvað er band t = s í raun að gera? 791 00:32:09,040 --> 00:32:16,430 Ef við höfum á vinstri hönd hlið hér string t = s; 792 00:32:16,430 --> 00:32:19,400 sem gefur mér einn reit hér og einn kassi hér. 793 00:32:19,400 --> 00:32:25,530 Og geri ráð þetta netfang er 0x, við skulum segja, 50 að þessu sinni, eftir geðþótta. 794 00:32:25,530 --> 00:32:28,847 Hvað gerir band t = s gera undir hetta? 795 00:32:28,847 --> 00:32:30,340 >> Áhorfendur: [inaudible] 796 00:32:30,340 --> 00:32:34,100 >> DAVID J. MALAN: Það geymir minni takast það, svo 0x50 fer þangað. 797 00:32:34,100 --> 00:32:37,980 Þannig að ef nú fer ég að fyrsta eðli í t og hástaf það, 798 00:32:37,980 --> 00:32:39,535 hvað er ég að gera í raun að s? 799 00:32:39,535 --> 00:32:41,300 800 00:32:41,300 --> 00:32:43,450 Ég er virkilega að gera slíkt hið sama, ekki satt? 801 00:32:43,450 --> 00:32:47,680 Vegna þess að ef Heimilisfang 0x50-- og bara, ég hafa ekki mikið pláss á borðinu hér, 802 00:32:47,680 --> 00:32:51,750 en gera ráð fyrir að þetta sé 0x50 niður hér, einhvers staðar í minni tölvunnar minnar. 803 00:32:51,750 --> 00:32:55,825 >> Og ég hef, til dæmis, Gabe í lágstafir hér, eins og þetta. 804 00:32:55,825 --> 00:32:57,120 805 00:32:57,120 --> 00:33:01,980 Og ég hef sagt ekki krappi 0 fær til eignar. 806 00:33:01,980 --> 00:33:04,860 Jæja, t krappi 0 er fyrsti stafurinn á t. 807 00:33:04,860 --> 00:33:07,840 Svo lítið g er að fara til verða stór G. En vandamálið 808 00:33:07,840 --> 00:33:09,410 er, hvað þýðir s einnig benda á? 809 00:33:09,410 --> 00:33:10,300 >> Áhorfendur: Sama. 810 00:33:10,300 --> 00:33:11,841 >> DAVID J. MALAN: The sama nákvæmlega hlutur. 811 00:33:11,841 --> 00:33:16,342 Svo einföld skýring kannski, jafnvel ef setningafræði er svolítið skrítið. 812 00:33:16,342 --> 00:33:17,050 Svo skulum gera þetta. 813 00:33:17,050 --> 00:33:20,210 Gera afrit-0 og þá ./copy-0. 814 00:33:20,210 --> 00:33:21,820 815 00:33:21,820 --> 00:33:24,110 Segja eitthvað: Gabe. 816 00:33:24,110 --> 00:33:26,760 Og því miður, bæði þá hefur nú verið eignfærður, 817 00:33:26,760 --> 00:33:29,500 en fyrir að undirliggjandi Ástæðan fyrir því að við erum einfaldlega 818 00:33:29,500 --> 00:33:32,350 nú að takast á við heimilisföng. 819 00:33:32,350 --> 00:33:36,470 >> Svo hvernig gera við byrjum að address-- engin orðaleikur intended-- 820 00:33:36,470 --> 00:33:39,270 hvernig eigum við að byrja að takast á þetta tiltekna vandamál? 821 00:33:39,270 --> 00:33:44,400 Jæja, í copy1.c eru hlutirnir að fara til að fá svolítið flóknara. 822 00:33:44,400 --> 00:33:49,310 En ég myndi halda að eðli einföld lausn. 823 00:33:49,310 --> 00:33:50,852 >> Svo erfitt að fá við fyrstu sýn. 824 00:33:50,852 --> 00:33:53,560 Ekki að fara að vera auðvelt fyrir í fyrsta skipti sem þú slá það út, ef til vill, 825 00:33:53,560 --> 00:33:57,440 en ef vandamálið er að einfaldlega að gera t = s bara 826 00:33:57,440 --> 00:33:59,694 afritar netfang, hvað, aftur ef ég get valið á þig, 827 00:33:59,694 --> 00:34:02,110 er að fara að vera lausn fyrir raunverulega að afrita streng? 828 00:34:02,110 --> 00:34:04,906 829 00:34:04,906 --> 00:34:06,770 >> Áhorfendur: Við munum líklega nota lykkju aftur. 830 00:34:06,770 --> 00:34:06,890 >> DAVID J. MALAN: Já. 831 00:34:06,890 --> 00:34:08,390 Þannig að við erum að fara að þurfa lykkju aftur. 832 00:34:08,390 --> 00:34:11,800 Og vegna þess að ef við viljum að afrita band s í annað band, 833 00:34:11,800 --> 00:34:14,120 við viljum líklega að gera það eðli með staf. 834 00:34:14,120 --> 00:34:17,199 En vandamálið er, ef þetta er upphaflega s, 835 00:34:17,199 --> 00:34:22,159 nú þurfum við að byrja sérstaklega úthlutun minni t. 836 00:34:22,159 --> 00:34:24,320 >> Með öðrum orðum, við skulum uppkast þetta eitt síðasta skipti. 837 00:34:24,320 --> 00:34:28,659 Ef þetta er band s = GetString. 838 00:34:28,659 --> 00:34:30,956 839 00:34:30,956 --> 00:34:32,455 Og við skulum setja þetta upp hér, eins og heilbrigður. 840 00:34:32,455 --> 00:34:36,639 841 00:34:36,639 --> 00:34:37,420 Þetta er GetString. 842 00:34:37,420 --> 00:34:39,070 843 00:34:39,070 --> 00:34:43,860 Og þá, myndin fyrir eitthvað svona er að fara að vera eins og áður, 844 00:34:43,860 --> 00:34:44,360 g-a-b-e- / 0. 845 00:34:44,360 --> 00:34:47,294 846 00:34:47,294 --> 00:34:48,960 Það lítur smá eitthvað eins og this. 847 00:34:48,960 --> 00:34:53,650 Og s því, við köllum þetta 0x50, og það er að fara að vera 51, 52. 848 00:34:53,650 --> 00:34:54,409 >> Svo er þetta 0x50. 849 00:34:54,409 --> 00:34:55,679 850 00:34:55,679 --> 00:34:59,690 Og þá, ég band t. 851 00:34:59,690 --> 00:35:02,450 Í minni, það er bara að fara að gefa mér smá veldi svona. 852 00:35:02,450 --> 00:35:04,080 Svo er það mikilvægt skref núna? 853 00:35:04,080 --> 00:35:09,870 Ef ég vil að afrita s í t, hvað auður þurfum að fylla í hér? 854 00:35:09,870 --> 00:35:12,050 Eða hvað við þurfum að gera á háu stigi? 855 00:35:12,050 --> 00:35:14,101 856 00:35:14,101 --> 00:35:14,600 Já? 857 00:35:14,600 --> 00:35:16,200 858 00:35:16,200 --> 00:35:17,020 Einhver? 859 00:35:17,020 --> 00:35:17,690 Já. 860 00:35:17,690 --> 00:35:19,214 >> Áhorfendur: Við þurfum að [inaudible]. 861 00:35:19,214 --> 00:35:21,380 DAVID J. MALAN: Já, við þarf til að fylla í auða. 862 00:35:21,380 --> 00:35:24,340 Ég get ekki afritað og síðan nýta heiti Gabe er 863 00:35:24,340 --> 00:35:28,120 þangað til ég spyrja stýrikerfi fyrir annað klumpur af minni 864 00:35:28,120 --> 00:35:30,640 það er að minnsta kosti eins stór og upprunalega. 865 00:35:30,640 --> 00:35:32,130 Svo sem skilur okkur eftir með spurningu. 866 00:35:32,130 --> 00:35:36,080 >> Hvernig get ég beðið stýrikerfi ekki bara fyrir a einfaldur lítill pointer-- 867 00:35:36,080 --> 00:35:38,530 þar sem þetta er kallað, er heimilisfang, a pointer-- ekki 868 00:35:38,530 --> 00:35:40,980 fyrir a einfaldur lítill kassi svona kallast streng? 869 00:35:40,980 --> 00:35:44,200 Hvernig get ég spyrja rekstri kerfi fyrir stór klumpur af minni? 870 00:35:44,200 --> 00:35:48,430 Svo langt, ég hef bara fengið það til baka óbeint með því að kalla GetString. 871 00:35:48,430 --> 00:35:50,740 Svo hvernig er GetString jafnvel að fá minni? 872 00:35:50,740 --> 00:35:53,430 >> Jæja, það kemur í ljós að það er þetta önnur aðgerð hér 873 00:35:53,430 --> 00:35:55,160 að við munum nú að byrja að nota. 874 00:35:55,160 --> 00:35:59,780 Nú, þetta lítur vegur meira dulinn than-- og ég er sá eini sem getur séð it-- 875 00:35:59,780 --> 00:36:03,150 þessi lína lítur vegur meira dulinn þá ætti við fyrstu sýn. 876 00:36:03,150 --> 00:36:04,650 En við skulum stríða henni í sundur. 877 00:36:04,650 --> 00:36:07,950 >> Á vinstri hönd hlið, ég hef char * t. 878 00:36:07,950 --> 00:36:13,280 Svo í ensku, við skulum byrja á að móta viðeigandi setningar í tæknimáli. 879 00:36:13,280 --> 00:36:19,757 Þannig að þetta er að úthluta a af taginu char * heitir t. 880 00:36:19,757 --> 00:36:21,090 Nú, hvað þýðir það í raun þýtt? 881 00:36:21,090 --> 00:36:23,881 >> Jæja, það þýðir, hvað er ég að fara til að setja í þessa breytu sem heitir T? 882 00:36:23,881 --> 00:36:24,780 883 00:36:24,780 --> 00:36:26,402 An heimilisfang char. 884 00:36:26,402 --> 00:36:28,360 Svo er það bara einfaldara, meira sanngjarnt leið 885 00:36:28,360 --> 00:36:29,930 að lýsa vinstri hönd hlið. 886 00:36:29,930 --> 00:36:32,890 Svo skapar þessi kassi hér aðeins. 887 00:36:32,890 --> 00:36:34,760 Svo hægri hönd hlið, væntanlega, er að fara 888 00:36:34,760 --> 00:36:37,170 að úthluta að stærri klumpur af minni hvernig? 889 00:36:37,170 --> 00:36:38,340 Svo skulum stríða þetta sundur. 890 00:36:38,340 --> 00:36:41,131 >> Það er yfirþyrmandi við fyrstu sýn, en hvað er að gerast inni hér? 891 00:36:41,131 --> 00:36:43,740 Fyrst, það er malloc, sem er greinilega nýr vinur okkar, 892 00:36:43,740 --> 00:36:45,450 "Minni úthluta." 893 00:36:45,450 --> 00:36:49,560 Svo er þetta rifrildi berist inn í það, svo það er ansi stór rök. 894 00:36:49,560 --> 00:36:50,970 Svo skulum stríða þetta sundur. 895 00:36:50,970 --> 00:36:53,410 >> strlen af ​​s, að sjálfsögðu, táknar the-- 896 00:36:53,410 --> 00:36:54,142 897 00:36:54,142 --> 00:36:55,600 Áhorfendur: Fjöldi stafi. 898 00:36:55,600 --> 00:36:56,710 DAVID J. MALAN: Bara Fjöldi stafa í s. 899 00:36:56,710 --> 00:36:59,040 Svo lengd s, upprunalegu band. 900 00:36:59,040 --> 00:37:00,350 Svo G-a-b-e. 901 00:37:00,350 --> 00:37:02,320 Svo er það líklega fjögur í þessu tilfelli. 902 00:37:02,320 --> 00:37:05,485 Hvers vegna er ég að gera 1 eftir hringja strlen af ​​s? 903 00:37:05,485 --> 00:37:06,360 Áhorfendur: [inaudible] 904 00:37:06,360 --> 00:37:07,590 DAVID J. MALAN: Til að sérstakt null staf. 905 00:37:07,590 --> 00:37:11,260 Ef þú spyrð mig hvað er lengd Nafn Gabe er, ég er að fara að segja fjórir. 906 00:37:11,260 --> 00:37:14,480 Undir hetta, þó, ég þarf sem fimmta bæti fyrir núll staf. 907 00:37:14,480 --> 00:37:16,100 Svo er að hvers vegna ég er að gera á 1. 908 00:37:16,100 --> 00:37:21,730 >> Nú bara ef þú ert að keyra þetta Forritið á tölvunni öðru en, segja, 909 00:37:21,730 --> 00:37:24,610 að CS50 tæki, þar sem stærð char 910 00:37:24,610 --> 00:37:26,350 gæti verið öðruvísi frá eigin computer-- minn 911 00:37:26,350 --> 00:37:30,590 kemur í ljós að ég get hringt í þetta rekstraraðila sizeof, bara að spyrja tölvuna, 912 00:37:30,590 --> 00:37:32,870 hvað er á stærð við bleikju á þessari tölvu? 913 00:37:32,870 --> 00:37:37,400 >> Og með því að margfalda fimm í þessu Dæmi um stærð af a bleikju sem 914 00:37:37,400 --> 00:37:40,440 á flestum tölvum mun bara vera einn, malloc 915 00:37:40,440 --> 00:37:44,830 er að fara að úthluta mér þetta stóra klumpur af minni hérna til hægri. 916 00:37:44,830 --> 00:37:47,140 Og það er að fara að return-- það er function-- svo það er 917 00:37:47,140 --> 00:37:48,265 að fara að snúa aftur til mín hvað? 918 00:37:48,265 --> 00:37:50,914 919 00:37:50,914 --> 00:37:51,830 Áhorfendur: Heimilisfangið? 920 00:37:51,830 --> 00:37:53,709 DAVID J. MALAN: Heimilisfang hvað? 921 00:37:53,709 --> 00:37:55,250 Áhorfendur: Af minni því úthlutað? 922 00:37:55,250 --> 00:37:56,450 DAVID J. MALAN: Af minni því úthlutað. 923 00:37:56,450 --> 00:37:59,189 Þannig að ég hef ekki hugmynd, satt, þar sem þetta er að fara að enda. 924 00:37:59,189 --> 00:38:01,480 Ég ætla að leggja til að það er að fara að enda í 0x88. 925 00:38:01,480 --> 00:38:02,770 926 00:38:02,770 --> 00:38:06,009 Alveg handahófskennt, en einhvers staðar annar en 0x50, 927 00:38:06,009 --> 00:38:08,800 vegna þess að stýrikerfi, hvaða Windows og Mac OS gert fyrir mig, er 928 00:38:08,800 --> 00:38:11,230 ganga úr skugga um að það er að gefa mér mismunandi klumpur af vinnsluminni. 929 00:38:11,230 --> 00:38:14,210 >> Svo er þetta gildi þar sem þetta klumpur af minni gæti endað. 930 00:38:14,210 --> 00:38:16,060 Svo er þetta það sem endar hérna, 0x88. 931 00:38:16,060 --> 00:38:17,480 932 00:38:17,480 --> 00:38:21,570 Svo nú greinilega, get ég skilið að þetta er ekki það sama og þetta, 933 00:38:21,570 --> 00:38:23,960 vegna þess að þeir eru að benda á mismunandi klumpur af minni. 934 00:38:23,960 --> 00:38:29,980 Þannig að ef ég nú reyndar vilt afrita þetta í, við skulum gera fyrirhugaða lausn þína. 935 00:38:29,980 --> 00:38:36,870 >> Við skulum bara fara að búa for lykkju, og gera t krappi ég fær s krappi i. 936 00:38:36,870 --> 00:38:39,760 Vegna þess að nú get ég notað þetta array eins rithátturinn, 937 00:38:39,760 --> 00:38:43,390 því jafnvel þótt malloc mjög generically úthlutar mér minni, 938 00:38:43,390 --> 00:38:45,290 minni er bara samliggjandi bæti. 939 00:38:45,290 --> 00:38:47,240 Bæti, bæti, bæti, aftur til baka til baka. 940 00:38:47,240 --> 00:38:50,030 >> Ég get sannarlega sem forritari meðhöndla það eins og fylki, sem 941 00:38:50,030 --> 00:38:55,090 þýðir að ég get notað þetta loksins þekki ritháttur af aðeins nokkrum hornklofum. 942 00:38:55,090 --> 00:38:56,462 943 00:38:56,462 --> 00:39:00,020 >> Svo láta mig staldra þar, vegna þess að þetta er mikið í einu, jafnvel 944 00:39:00,020 --> 00:39:03,530 þótt grunnhugmyndin að ágrip er að strengur, allan þennan tíma, 945 00:39:03,530 --> 00:39:05,550 er ekki ný gögn tegund í sjálfu sér. 946 00:39:05,550 --> 00:39:10,150 Það er bara svo-kölluð músina, veffang eðli, 947 00:39:10,150 --> 00:39:12,650 sem bara þýðir að það er tala að með því að mönnum venju 948 00:39:12,650 --> 00:39:15,350 Við hafa tilhneigingu til að skrifa eins og 0x eitthvað. 949 00:39:15,350 --> 00:39:18,590 >> En það er bara tala, eins 33 Oxford Street, 950 00:39:18,590 --> 00:39:20,530 sem gerist að vera Netfang CS hússins. 951 00:39:20,530 --> 00:39:22,000 952 00:39:22,000 --> 00:39:23,545 Einhverjar spurningar um þessar upplýsingar? 953 00:39:23,545 --> 00:39:24,790 954 00:39:24,790 --> 00:39:25,289 Já? 955 00:39:25,289 --> 00:39:28,530 >> Áhorfendur: Hvers vegna eigum við að athuga fyrir t jöfn núll? 956 00:39:28,530 --> 00:39:30,740 >> DAVID J. MALAN: Hvers vegna gerum við athuga t jöfn núll? 957 00:39:30,740 --> 00:39:33,250 Ef við lesum documentation-- mikill question-- fyrir malloc, 958 00:39:33,250 --> 00:39:37,020 það er að fara að segja í fínu prenta, stundum malloc gæti skilað null, 959 00:39:37,020 --> 00:39:38,080 bara eins GetString. 960 00:39:38,080 --> 00:39:41,820 Og reyndar, GetString skilar null ef aftur á móti, malloc skilar núll, 961 00:39:41,820 --> 00:39:43,130 því GetString notar malloc. 962 00:39:43,130 --> 00:39:46,400 >> Og það gæti gerst ef OS, Mac OS, Windows, hvað er einfaldlega 963 00:39:46,400 --> 00:39:48,130 út af minni fyrir þig. 964 00:39:48,130 --> 00:39:49,820 Svo það er það sem gerðist þarna. 965 00:39:49,820 --> 00:39:52,910 >> Og láta mig sýna einn annar hlutur sem gæti bara blása huga þínum 966 00:39:52,910 --> 00:39:55,100 eða alveg að vera of langt yfir línuna. 967 00:39:55,100 --> 00:39:59,770 En láttu mig draga upp sama fyrir lykkja fyrir afritun, 968 00:39:59,770 --> 00:40:05,480 sem fyrir augnabliki, muna var þetta. T krappi ég fær s krappi i. 969 00:40:05,480 --> 00:40:06,740 >> Nice og notandi-vingjarnlegur. 970 00:40:06,740 --> 00:40:09,330 Líður eins og viku tvö aftur. 971 00:40:09,330 --> 00:40:14,920 En þessi útgáfa reyndar getur verið endurskrifuð sem þetta, sem lítur dulinn. 972 00:40:14,920 --> 00:40:18,280 Það er tækni sem kallast bendill stærðfræði, netfang tölur. 973 00:40:18,280 --> 00:40:19,600 En af hverju virkar þetta? 974 00:40:19,600 --> 00:40:22,220 >> Nú gremjulegur, sem Höfundar C ákvað að nota 975 00:40:22,220 --> 00:40:25,070 á * tákn fyrir mismunandi tilgangi. 976 00:40:25,070 --> 00:40:29,020 Við höfum séð það notað einu sinni nú þegar, char *, sem þýðir "gefa mér breytu 977 00:40:29,020 --> 00:40:31,210 það er að fara að koma veffang bleikju. " 978 00:40:31,210 --> 00:40:33,990 Svo char * í því samhengi þýðir "gefa mér breytu." 979 00:40:33,990 --> 00:40:40,050 >> Því miður, ef þú ert að nota * án orð fyrir framan það, eins og bleikju, 980 00:40:40,050 --> 00:40:41,905 það er nú kallað dereference stjórnandi. 981 00:40:41,905 --> 00:40:43,530 Og við munum sjá meira af þessu áður en langur. 982 00:40:43,530 --> 00:40:44,930 En það þýðir bara "fara þangað." 983 00:40:44,930 --> 00:40:49,070 Það er eins og að segja, ef einhver rétti mér á stykki af pappír "33 Oxford Street," 984 00:40:49,070 --> 00:40:53,830 ef ég "* 33 Oxford Street," sem þýðir "Fara niður götuna í CS bygging." 985 00:40:53,830 --> 00:40:57,220 >> Svo * bara þýðir að fara þangað ef það er ekkert orð í framan. 986 00:40:57,220 --> 00:40:59,100 Svo er það t, að vera ljóst? 987 00:40:59,100 --> 00:41:03,250 t er heimilisfang klumpur af minni sem var gefið til baka til mín. 988 00:41:03,250 --> 00:41:06,650 s er heimilisfang hvað, að vera ljóst, í dæminu sem við höfum verið að ræða, 989 00:41:06,650 --> 00:41:07,500 lágstöfum GABE? 990 00:41:07,500 --> 00:41:08,990 991 00:41:08,990 --> 00:41:10,005 s er heimilisfangið of-- 992 00:41:10,005 --> 00:41:11,585 993 00:41:11,585 --> 00:41:12,460 Áhorfendur: The band. 994 00:41:12,460 --> 00:41:14,126 DAVID J. MALAN: Af upprunalegu nafni Gabe er. 995 00:41:14,126 --> 00:41:16,660 Svo það er veffang þetta klumpur af minni. 996 00:41:16,660 --> 00:41:22,220 Þannig að ef ég segi ekki + i-- i, tilkynning, er bara gamall vinur okkar. 997 00:41:22,220 --> 00:41:24,770 Það er bara vísitölu breytu sem er iterating frá núll á allt 998 00:41:24,770 --> 00:41:26,960 lengd strengsins s. 999 00:41:26,960 --> 00:41:30,367 Svo það er að fara að vera núll, þá einn, þá tvo, þá þrjár, þá fjórar. 1000 00:41:30,367 --> 00:41:33,200 Svo skulum saman þessar nýju Grunni eins stykki púsluspil, ef þú vilt, 1001 00:41:33,200 --> 00:41:36,140 jafnvel þó aftur, setningafræði er miklu meira Bogagöng en grunni. 1002 00:41:36,140 --> 00:41:39,522 Svo er t að tölu + ég er að fara að gefa mér 1003 00:41:39,522 --> 00:41:42,480 tala, því að þetta eru allt tölur sem við höfum verið að teikna sem álög. 1004 00:41:42,480 --> 00:41:43,560 En þeir eru bara tölur. 1005 00:41:43,560 --> 00:41:49,960 >> Svo ef heimilisfang t við sögðum var 0x88, hvað er 0x88 plús núll. 1006 00:41:49,960 --> 00:41:51,564 1007 00:41:51,564 --> 00:41:53,980 Jafnvel ef þú ert ekki ánægð með álög enn, taka giska. 1008 00:41:53,980 --> 00:41:54,410 >> Áhorfendur: Upprunalega. 1009 00:41:54,410 --> 00:41:55,850 >> DAVID J. MALAN: Enn 0x88. 1010 00:41:55,850 --> 00:41:58,910 Svo hvað þýðir * 0x88 meina? 1011 00:41:58,910 --> 00:42:02,670 Það þýðir, "farið þangað" sem þýðir á áhrifaríkan hátt, "setja fingurinn hér." 1012 00:42:02,670 --> 00:42:06,930 Og nú á hægri hönd hlið af þetta tjáning, * og síðan í parens, 1013 00:42:06,930 --> 00:42:11,586 s + I þýðir s, sem er takast upp hér á litla g. 1014 00:42:11,586 --> 00:42:16,220 s + 0 er, að sjálfsögðu, s, hvað sem s er. 1015 00:42:16,220 --> 00:42:21,230 >> Svo nú er það * s, sem rétt eins og * 33 Oxford Street þýðir að fara á heimilisfang 1016 00:42:21,230 --> 00:42:22,010 s. 1017 00:42:22,010 --> 00:42:24,170 Svo er hér þetta fingur, hægri hönd. 1018 00:42:24,170 --> 00:42:26,050 Svo hvað er ég að fara að afrita inn í hvað? 1019 00:42:26,050 --> 00:42:30,260 Málið á hægri, sem er Gabe, lítið g hér inn hér. 1020 00:42:30,260 --> 00:42:32,750 >> Og svo áhrif sem Fyrsta endurtekning af lykkju, 1021 00:42:32,750 --> 00:42:36,200 eins og þú lagt, jafnvel þótt það lítur brjálaður flóknara en nokkuð 1022 00:42:36,200 --> 00:42:42,110 við höfum séð áður, er einfaldlega að segja fara hér og afrita þessi karakter hér. 1023 00:42:42,110 --> 00:42:44,700 Það er að gefa þér kort til báðum stöðum. 1024 00:42:44,700 --> 00:42:46,130 >> Og við munum sjá miklu meira af þessu. 1025 00:42:46,130 --> 00:42:50,600 En nú er ætlunin bara að kynna nokkrar af þessum helstu hugmyndir. 1026 00:42:50,600 --> 00:42:53,550 Og reyndar, við skulum líta á einn á verkefnið hér, 1027 00:42:53,550 --> 00:42:57,480 og þá lofaði claymation, sem mun gera allt í lagi. 1028 00:42:57,480 --> 00:42:57,980 Allt í lagi. 1029 00:42:57,980 --> 00:43:01,680 Svo láta mig opna up-- þar sem við förum. 1030 00:43:01,680 --> 00:43:02,850 1031 00:43:02,850 --> 00:43:05,440 Svo skulum me-- við munum koma aftur við þessa mynd fyrir löngu. 1032 00:43:05,440 --> 00:43:08,360 Leyfðu mér að opna þetta endanlega dæmi hér. 1033 00:43:08,360 --> 00:43:09,440 1034 00:43:09,440 --> 00:43:12,710 >> Svo hér er frábær, frábær forrit sem nær 1035 00:43:12,710 --> 00:43:15,050 ekkert í lífinu sem gerir eftirfarandi. 1036 00:43:15,050 --> 00:43:18,740 Það lýsir fyrst tvær breytur, x og y, sem eru ekki tölur að þessu sinni, 1037 00:43:18,740 --> 00:43:19,240 í sjálfu sér. 1038 00:43:19,240 --> 00:43:20,448 Þeir eru ekki heiltölur, í sjálfu sér. 1039 00:43:20,448 --> 00:43:22,899 Þeir eru greinilega int *. 1040 00:43:22,899 --> 00:43:25,690 Svo bara einhver, hvað þýðir það ef gögn tegund, breyta þínum, 1041 00:43:25,690 --> 00:43:26,860 er gerð int * star? 1042 00:43:26,860 --> 00:43:30,240 Það er heimilisfang int. 1043 00:43:30,240 --> 00:43:31,990 >> Svo ég hef ekki hugmynd um hvar það er enn. 1044 00:43:31,990 --> 00:43:35,150 Það bara þýðir "setja, að lokum, veffang í int hér. " 1045 00:43:35,150 --> 00:43:38,340 0x50, 0x88, hvar sem það er í minni, sem netfang er að fara þangað. 1046 00:43:38,340 --> 00:43:40,200 Og það er það sem er y að fara að vera, eins og heilbrigður. 1047 00:43:40,200 --> 00:43:44,920 >> Ef ég segi nú x = malloc (sizeof (int)), þetta er fínt leið til að segja, 1048 00:43:44,920 --> 00:43:49,000 hey stýrikerfi, með malloc, gefa mér nóg minni fyrir stærð 1049 00:43:49,000 --> 00:43:52,370 af int, sem er sennilega að fara að vera 32 bita eða fjórum bæti. 1050 00:43:52,370 --> 00:43:53,680 >> Svo hvað þýðir malloc aftur? 1051 00:43:53,680 --> 00:43:55,250 Malloc skilar ávarp. 1052 00:43:55,250 --> 00:43:57,020 Svo hvað er að fara að fá geymd í x? 1053 00:43:57,020 --> 00:44:00,600 Veffang klumpur af minni, fjórum bytes, sem malloc 1054 00:44:00,600 --> 00:44:03,360 bara fundið fyrir mig með því að spyrja stýrikerfið. 1055 00:44:03,360 --> 00:44:08,240 >> Nú á meðan, lína fjögur hér að * x = 42. 1056 00:44:08,240 --> 00:44:09,990 Bara til að vera skýr, hvað er að gerast þarna niðri? 1057 00:44:09,990 --> 00:44:11,530 Á vinstri hönd hlið, * x. 1058 00:44:11,530 --> 00:44:13,610 það er eins og * 33 Oxford Street. 1059 00:44:13,610 --> 00:44:15,523 Svo * x þýðir hvað? 1060 00:44:15,523 --> 00:44:16,450 >> Áhorfendur: Go to. 1061 00:44:16,450 --> 00:44:17,908 >> DAVID J. MALAN: Farðu á þetta netfang. 1062 00:44:17,908 --> 00:44:20,466 Hvar sem klumpur af minnið er farið að honum. 1063 00:44:20,466 --> 00:44:21,979 Og setja það þar, augljóslega? 1064 00:44:21,979 --> 00:44:22,520 Áhorfendur: 42. 1065 00:44:22,520 --> 00:44:23,580 DAVID J. MALAN: 42. 1066 00:44:23,580 --> 00:44:25,650 Allt í lagi, * y, sama hugmyndin. 1067 00:44:25,650 --> 00:44:26,860 Fara á heimilisfang í y. 1068 00:44:26,860 --> 00:44:31,740 Setja númerið 13 þar, en hvað er y í augnablikinu? 1069 00:44:31,740 --> 00:44:33,172 1070 00:44:33,172 --> 00:44:34,630 Áhorfendur: Það er ekkert minni fyrir y. 1071 00:44:34,630 --> 00:44:35,710 DAVID J. MALAN: Það er ekkert minni fyrir y. 1072 00:44:35,710 --> 00:44:38,215 Svo er það sem y líklega innihalda, eins og við höfum verið að segja? 1073 00:44:38,215 --> 00:44:38,520 >> Áhorfendur: Sorp. 1074 00:44:38,520 --> 00:44:39,480 >> DAVID J. MALAN: Sumir sorp gildi. 1075 00:44:39,480 --> 00:44:41,320 Nú, sorp gildi er enn a tala. 1076 00:44:41,320 --> 00:44:43,160 Það getur samt verið skakkur fyrir heimilisfang. 1077 00:44:43,160 --> 00:44:45,160 Það sem þó einhver hripa eitthvað niður, 1078 00:44:45,160 --> 00:44:48,002 og ég mistúlka það sem skilningi sumir byggja niður götuna. 1079 00:44:48,002 --> 00:44:50,460 Og ef þú reynir bara að fara inn í sumir byggja þú átt ekki, 1080 00:44:50,460 --> 00:44:53,710 eða einhver klumpur af minni sem þú hefur ekki verið gefin, slæmir hlutir gætu gerst. 1081 00:44:53,710 --> 00:44:57,740 Tölva gæti hrun, eða einhver önnur óákveðin hegðun gæti gerst. 1082 00:44:57,740 --> 00:45:01,310 >> Svo hið innra, þá til að Binky er þetta. 1083 00:45:01,310 --> 00:45:04,290 Ég man enn, 20 sumir stakur árum síðar, 1084 00:45:04,290 --> 00:45:07,200 þar sem ég var þegar ég loksins skilið ábendingum. 1085 00:45:07,200 --> 00:45:09,520 >> Sem er að segja, ef þú fara hér á þremur mínútum 1086 00:45:09,520 --> 00:45:12,170 og held ég ekki skilja ábendingum, átta sig 1087 00:45:12,170 --> 00:45:14,410 Ég hef minnst fyrir 20 ár fyrir sumir brjálaður ástæðu 1088 00:45:14,410 --> 00:45:17,140 hvenær og hvers vegna það sökkt lokum í, sitja með kenningu 1089 00:45:17,140 --> 00:45:19,501 náungi, Nishat Mehta í bak Eliot matsal. 1090 00:45:19,501 --> 00:45:21,250 Nú, ég hef minnst þetta vegna þess að þetta var 1091 00:45:21,250 --> 00:45:23,920 einn af the efni sem ég, í Einkum barist við. 1092 00:45:23,920 --> 00:45:26,470 Og þá, smellti hún loksins, eins og ég þora að segja mikið af efni 1093 00:45:26,470 --> 00:45:27,460 lokum mun. 1094 00:45:27,460 --> 00:45:32,590 Og nú, til að gera það finnst öllum hamingjusamari og allt meira sannfærandi, 1095 00:45:32,590 --> 00:45:35,360 skulum taka endanlega líta í okkar Síðustu þrjár mínútur hér á Binky, 1096 00:45:35,360 --> 00:45:37,675 frá vini okkar, Nick Parlante frá Stanford. 1097 00:45:37,675 --> 00:45:38,910 1098 00:45:38,910 --> 00:45:41,580 >> [Vídeó spilun] 1099 00:45:41,580 --> 00:45:42,750 >> -Hey, Binky. 1100 00:45:42,750 --> 00:45:43,500 Vakna! 1101 00:45:43,500 --> 00:45:45,960 Það er kominn tími til að bendillinn gaman. 1102 00:45:45,960 --> 00:45:47,012 >> Hvað er það? 1103 00:45:47,012 --> 00:45:48,723 Læra um ábendingum? 1104 00:45:48,723 --> 00:45:50,580 Ó, Goody! 1105 00:45:50,580 --> 00:45:53,563 >> -Well, Til að byrja, held ég að við séum að fara að þurfa nokkra ábendingum. 1106 00:45:53,563 --> 00:45:54,390 >> -OK. 1107 00:45:54,390 --> 00:45:57,930 Þessi kóði úthlutar tveimur ábendingum, sem geta bent til heiltalna. 1108 00:45:57,930 --> 00:45:58,430 -OK. 1109 00:45:58,430 --> 00:46:02,140 Jæja, ég sé tvo ábendingum, en þeir virðast ekki vera að benda á neitt. 1110 00:46:02,140 --> 00:46:02,980 >> -Það Er rétt. 1111 00:46:02,980 --> 00:46:05,100 Upphaflega, ábendingum ekki benda til nokkuð. 1112 00:46:05,100 --> 00:46:08,030 Það sem þeir benda á er kölluð pointees og setja þá upp 's 1113 00:46:08,030 --> 00:46:09,370 sérstakt skref. 1114 00:46:09,370 --> 00:46:10,220 >> -Ó, Hægri, hægri. 1115 00:46:10,220 --> 00:46:10,950 Ég vissi það. 1116 00:46:10,950 --> 00:46:12,385 The pointees eru aðskilin. 1117 00:46:12,385 --> 00:46:14,315 Ger, svo hvernig gera þú úthluta pointee? 1118 00:46:14,315 --> 00:46:15,340 1119 00:46:15,340 --> 00:46:15,960 >> -OK. 1120 00:46:15,960 --> 00:46:18,970 Jæja, þetta númer úthlutar ný heiltala pointee, 1121 00:46:18,970 --> 00:46:20,950 og þessi hluti setur x til að benda á það. 1122 00:46:20,950 --> 00:46:22,050 1123 00:46:22,050 --> 00:46:23,230 >> -Hey, Sem lítur betur. 1124 00:46:23,230 --> 00:46:25,060 Svo að það að gera eitthvað. 1125 00:46:25,060 --> 00:46:25,990 >> -OK. 1126 00:46:25,990 --> 00:46:30,455 Ég ætla dereference bendillinn X til geyma fjölda 42 í pointee hennar. 1127 00:46:30,455 --> 00:46:32,830 Fyrir þetta bragð, ég þarf minn Magic Wand í Dereferencing. 1128 00:46:32,830 --> 00:46:34,130 1129 00:46:34,130 --> 00:46:36,080 >> -Your Magic Wand af Dereferencing? 1130 00:46:36,080 --> 00:46:37,357 1131 00:46:37,357 --> 00:46:38,190 That-- sem er frábært. 1132 00:46:38,190 --> 00:46:39,340 1133 00:46:39,340 --> 00:46:41,080 >> -Þetta er það sem kóðinn lítur út. 1134 00:46:41,080 --> 00:46:44,110 Ég ætla bara að setja upp fjölda og [POP] 1135 00:46:44,110 --> 00:46:44,700 >> -Hey, Líta. 1136 00:46:44,700 --> 00:46:46,140 Það fer það. 1137 00:46:46,140 --> 00:46:50,980 >> So gera dereference á x þannig örin til að fá aðgang pointee sína. 1138 00:46:50,980 --> 00:46:53,160 Í þessu tilviki, í verslun 42 þar. 1139 00:46:53,160 --> 00:46:57,710 Hey prófaðu að nota það til að geyma fjölda 13 með hinu músina, y. 1140 00:46:57,710 --> 00:46:58,760 >> -OK. 1141 00:46:58,760 --> 00:47:03,270 Ég ætla bara að fara hingað til að y, og fá númer 13 sett upp. 1142 00:47:03,270 --> 00:47:07,930 Og þá, taka Wand af Dereferencing og bara [BUZZ] 1143 00:47:07,930 --> 00:47:08,960 >> -Ó! 1144 00:47:08,960 --> 00:47:09,500 >> -Ó, Hey! 1145 00:47:09,500 --> 00:47:11,090 Það virkaði ekki. 1146 00:47:11,090 --> 00:47:15,630 Segja, Binky, ég held ekki dereferencing y er góð hugmynd, vegna þess að þú veist, 1147 00:47:15,630 --> 00:47:17,850 setja upp pointee er sérstakt skref. 1148 00:47:17,850 --> 00:47:20,450 Og ég held ekki að við aldrei gerði það. 1149 00:47:20,450 --> 00:47:21,480 >> Gott lið. 1150 00:47:21,480 --> 00:47:21,980 -Já. 1151 00:47:21,980 --> 00:47:25,680 Við úthlutað músina y, en við aldrei setja það til að benda á pointee. 1152 00:47:25,680 --> 00:47:27,190 1153 00:47:27,190 --> 00:47:28,616 >> -Mjög Athugull. 1154 00:47:28,616 --> 00:47:30,240 -Hey, Þú ert að leita góður þar, Binky. 1155 00:47:30,240 --> 00:47:33,400 Getur þú festa hana þannig að Y stig að sama pointee og x? 1156 00:47:33,400 --> 00:47:34,000 >> Vissulega. 1157 00:47:34,000 --> 00:47:36,780 Ég nota töfrasprota minn af Pointer Verkefni. 1158 00:47:36,780 --> 00:47:38,740 >> -er Að fara að vera vandamál eins og áður? 1159 00:47:38,740 --> 00:47:39,240 Nei. 1160 00:47:39,240 --> 00:47:40,660 Þetta þýðir ekki að snerta pointees. 1161 00:47:40,660 --> 00:47:44,450 Það breytist bara einn bendi til benda til ekki sama annars. 1162 00:47:44,450 --> 00:47:45,450 >> -Ó Skil. 1163 00:47:45,450 --> 00:47:48,200 Nú y bendir á sama stað og x. 1164 00:47:48,200 --> 00:47:48,910 Svo bíða. 1165 00:47:48,910 --> 00:47:49,950 Nú, y er fastur. 1166 00:47:49,950 --> 00:47:51,120 Það hefur pointee. 1167 00:47:51,120 --> 00:47:54,510 Svo þú geta reyna sprotanum af Dereferencing aftur að senda 13 yfir. 1168 00:47:54,510 --> 00:47:56,510 >> -Uh, OK. 1169 00:47:56,510 --> 00:47:58,160 Hér fer það. [POP] 1170 00:47:58,160 --> 00:47:59,340 >> -Hey, Líta á það. 1171 00:47:59,340 --> 00:48:00,750 Nú dereferencing vinnur á y. 1172 00:48:00,750 --> 00:48:04,991 Og vegna þess að ábendingum er að deila að einn pointee, bæði þeir sjá 13. 1173 00:48:04,991 --> 00:48:05,490 -Já. 1174 00:48:05,490 --> 00:48:06,870 Deila, hvað sem er. 1175 00:48:06,870 --> 00:48:08,820 Svo erum við að fara að skipta stöðum núna? 1176 00:48:08,820 --> 00:48:09,440 >> Sjáðu. 1177 00:48:09,440 --> 00:48:10,830 Við erum út á tíma. 1178 00:48:10,830 --> 00:48:11,570 >> -But-- 1179 00:48:11,570 --> 00:48:13,530 >> Alveg man þremur Pointer reglur. 1180 00:48:13,530 --> 00:48:16,560 Fjöldi Einn, grunn uppbygging er að þú ert með músina, 1181 00:48:16,560 --> 00:48:18,680 og það bendir á að pointee. 1182 00:48:18,680 --> 00:48:20,640 En bendi og pointee eru aðskilin, 1183 00:48:20,640 --> 00:48:22,610 og algeng villa er að setja upp músina, 1184 00:48:22,610 --> 00:48:25,000 en að gleyma að gefa það a pointee. 1185 00:48:25,000 --> 00:48:28,170 >> Númer tvö, músina dereferencing byrjar bendillinn 1186 00:48:28,170 --> 00:48:31,050 og segir ör sína yfir til að fá aðgang pointee sína. 1187 00:48:31,050 --> 00:48:33,400 Eins og við allur vita, þetta aðeins virkar ef það er 1188 00:48:33,400 --> 00:48:36,270 a pointee, hvers konar kemur aftur Regla númer eitt. 1189 00:48:36,270 --> 00:48:39,000 >> Númer þrjú, músina Úthlutun tekur einn músina 1190 00:48:39,000 --> 00:48:42,320 og breytir því að benda á að Sama pointee sem annar músina. 1191 00:48:42,320 --> 00:48:44,160 Svo eftir framsal, tveir ábendingum 1192 00:48:44,160 --> 00:48:45,910 mun benda til sömu pointee. 1193 00:48:45,910 --> 00:48:47,990 Stundum, það er kallað hlutdeild. 1194 00:48:47,990 --> 00:48:49,740 Og það er allur there er til það, í raun. 1195 00:48:49,740 --> 00:48:50,277 Bless-bless núna. 1196 00:48:50,277 --> 00:48:51,110 [END vídeó spilun] 1197 00:48:51,110 --> 00:48:52,568 DAVID J. MALAN: Það er það fyrir CS50. 1198 00:48:52,568 --> 00:48:55,110 Við munum sjá þig í næstu viku. 1199 00:48:55,110 --> 00:48:56,064