1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> DAVID Malan: Halló, og velkomin aftur til CS50. 3 00:00:13,260 --> 00:00:14,860 Svo er þetta í lok viku fjögur. 4 00:00:14,860 --> 00:00:16,680 Bara eitt tilkynning fyrst. 5 00:00:16,680 --> 00:00:19,600 Svo svonefnd fimmta mánudagur er koma upp þetta kemur mánudagur. 6 00:00:19,600 --> 00:00:22,800 Þetta er tækifæri til að breyta frá SAT / UNSAT að bókstafur, eða frá 7 00:00:22,800 --> 00:00:24,130 bókstafur SAT / UNSAT. 8 00:00:24,130 --> 00:00:27,130 Annoyingly, þessi aðferð hjartarskinn þurfa a undirskrift, vegna þess að þú þarft að fylla 9 00:00:27,130 --> 00:00:28,770 út einn af þeim bleiku bæta við / falla form. 10 00:00:28,770 --> 00:00:31,680 >> Vegna tæknilega, the SAT / UNSAT útgáfa og einkunn bréf útgáfa 11 00:00:31,680 --> 00:00:33,320 hafa mismunandi númer verslun. 12 00:00:33,320 --> 00:00:34,240 En ekki máli. 13 00:00:34,240 --> 00:00:36,620 Bara koma til mín eða að ræna eða Lauren á hverjum stað. 14 00:00:36,620 --> 00:00:39,550 Eða sendu okkur tölvupóst ef þú ert ekki góður af pappírsvinnu sem þú þarft í dag, og við 15 00:00:39,550 --> 00:00:43,410 mun vera viss um að hjálpa þér að taka umönnun sem áður mánudag. 16 00:00:43,410 --> 00:00:45,780 >> Allt í lagi, svo í dag - 17 00:00:45,780 --> 00:00:47,630 raunverulega, there 'a hluti af echo. 18 00:00:47,630 --> 00:00:51,070 Getum við tón mig niður aðeins? 19 00:00:51,070 --> 00:00:51,730 OK. 20 00:00:51,730 --> 00:00:54,850 Svo í dag, munum við kynna efnisatriði þekktur sem ábendingum. 21 00:00:54,850 --> 00:00:57,770 Og ég viðurkenni að þetta er eitt af flóknari atriði sem við tilhneigingu til að 22 00:00:57,770 --> 00:01:00,960 ná í þessum flokki, eða raun ekki allir Námskeið sem notar C. 23 00:01:00,960 --> 00:01:05,510 >> En taka minn orð fyrir það, sérstaklega ef hugur þinn finnst svolítið meira laut 24 00:01:05,510 --> 00:01:07,100 í dag og í næstu vikur. 25 00:01:07,100 --> 00:01:10,340 Það er ekki fulltrúi að fá allir verri á þessu það þýðir bara að 26 00:01:10,340 --> 00:01:13,360 það er sérstaklega háþróuð umræðuefni sem ég lofa, nokkrum vikum 27 00:01:13,360 --> 00:01:17,610 þess vegna, mun virðast allt of strikingly einfalt að hyggja. 28 00:01:17,610 --> 00:01:18,720 >> Ég man enn þann dag í dag. 29 00:01:18,720 --> 00:01:22,190 Ég sat í Elliott matsalur, sat við hliðina á mér TF Nishat Mehta, 30 00:01:22,190 --> 00:01:24,070 sem var heimilisfastur Elliott House. 31 00:01:24,070 --> 00:01:26,340 Og fyrir sumir ástæða, þetta efni smellir bara. 32 00:01:26,340 --> 00:01:29,430 Hver er að segja að ég átti erfitt líka með það í nokkurn tíma, en ég 33 00:01:29,430 --> 00:01:33,610 mun gera mitt besta til að forðast slíkt glíma við efni sem á endanum 34 00:01:33,610 --> 00:01:34,580 er alveg öflugur. 35 00:01:34,580 --> 00:01:37,350 >> Í raun einn af the efni sem við munum ræða í næstu vikur er að 36 00:01:37,350 --> 00:01:41,130 af öryggi, og hvernig þú getur raunverulega nýta vélar á vegum 37 00:01:41,130 --> 00:01:42,320 sem voru ekki ætluð. 38 00:01:42,320 --> 00:01:45,850 Og þessir exploitations eru yfirleitt vegna galla, mistök sem við 39 00:01:45,850 --> 00:01:49,740 fólk gerir með því að skilja sum undirliggjandi framkvæmd 40 00:01:49,740 --> 00:01:52,250 upplýsingar um hvaða forrit eru gerðar. 41 00:01:52,250 --> 00:01:55,410 >> Nú til að gera þetta virðist allt meira notendavænt vingjarnlegur, ég hélt ég myndi spila 10 42 00:01:55,410 --> 00:01:59,680 Annað sýnishorn af smá claymation Mynd heitir Binky sem var komið til 43 00:01:59,680 --> 00:02:03,020 lífið með vinkonu okkar í Stanford, prófessor Nick Parlante. 44 00:02:03,020 --> 00:02:06,753 Svo langar mig til að gefa þér þetta beitu af Binky hér. 45 00:02:06,753 --> 00:02:09,520 >> [Vídeó spilun] 46 00:02:09,520 --> 00:02:10,380 >> -Hey, Binky. 47 00:02:10,380 --> 00:02:11,050 Vakna. 48 00:02:11,050 --> 00:02:13,610 Það er kominn tími fyrir gaman músina. 49 00:02:13,610 --> 00:02:14,741 >> -Hvað er það? 50 00:02:14,741 --> 00:02:16,440 Læra um ábendingum? 51 00:02:16,440 --> 00:02:17,928 Ó, goodie. 52 00:02:17,928 --> 00:02:18,920 >> [END vídeó spilun] 53 00:02:18,920 --> 00:02:20,670 >> DAVID Malan: Það er Stanford tölvufræði. 54 00:02:20,670 --> 00:02:23,194 Svo meira um það að koma. 55 00:02:23,194 --> 00:02:24,930 >> [Applause] 56 00:02:24,930 --> 00:02:26,660 >> DAVID Malan: Því miður, Nick. 57 00:02:26,660 --> 00:02:30,680 >> Svo muna að síðast þegar við endaði á þetta virkilega spennandi cliffhanger 58 00:02:30,680 --> 00:02:32,960 þar þessi aðgerð bara virkaði ekki. 59 00:02:32,960 --> 00:02:34,960 Amk innsæi, fannst það eins og það ætti að virka. 60 00:02:34,960 --> 00:02:37,600 Einfaldlega skipta gildin tveggja heiltalna. 61 00:02:37,600 --> 00:02:40,915 En muna að þegar við prenta út upprunalegu gildi í helstu, einn og 62 00:02:40,915 --> 00:02:44,210 tveir, voru þeir enn einn og tvö og ekki tveir og einn. 63 00:02:44,210 --> 00:02:46,070 >> Svo láta mig skipta í raun yfir á tækið. 64 00:02:46,070 --> 00:02:50,180 Og ég skrifaði upp smá beinagrind kóða í fara hér, þar sem ég halda því fram að x 65 00:02:50,180 --> 00:02:52,500 verði 1, y verður 2. 66 00:02:52,500 --> 00:02:54,810 Ég prenta þá út bæði þeirra gildi með F prenta. 67 00:02:54,810 --> 00:02:57,540 >> Ég kröfu þá niður hér að við erum að fara að skipta á þeim. 68 00:02:57,540 --> 00:03:00,800 Ég skildi eftir tóman stað hér fyrir okkur til fylla í dag á aðeins augnablik. 69 00:03:00,800 --> 00:03:03,380 Þá ætla ég að halda því fram að tvær breytur hafa verið skipti. 70 00:03:03,380 --> 00:03:04,770 Þá er ég að fara að prenta þá út aftur. 71 00:03:04,770 --> 00:03:07,090 Og svo vonandi, ætti ég að sjá 1, 2. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 Það er frábær einfalt Markmiðið núna. 74 00:03:09,830 --> 00:03:12,430 >> Svo hvernig við förum um að skipta tvær breytur? 75 00:03:12,430 --> 00:03:17,220 Jæja ef ég leggja hér að þessar bolla gæti tákna minni í tölvu. 76 00:03:17,220 --> 00:03:19,070 Þetta er nokkur bit, þetta er annað nokkrum bit. 77 00:03:19,070 --> 00:03:23,260 Gætum við fengið sjálfboðaliða Komdu upp og blanda okkur nokkra drykki, ef þekki? 78 00:03:23,260 --> 00:03:23,920 Komdu upp. 79 00:03:23,920 --> 00:03:24,815 Hvað er nafn þitt? 80 00:03:24,815 --> 00:03:25,260 >> JESS: Jess. 81 00:03:25,260 --> 00:03:25,690 >> DAVID Malan: Jess? 82 00:03:25,690 --> 00:03:26,540 Komdu upp, Jess. 83 00:03:26,540 --> 00:03:29,180 Ef þú dont 'hugur, verðum við að setja Google Gler á þig svo við getum 84 00:03:29,180 --> 00:03:30,430 immortalize þetta. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 OK, gler. 87 00:03:34,670 --> 00:03:37,250 Taka upp myndskeið. 88 00:03:37,250 --> 00:03:43,103 Og OK, við erum gott að fara með Jess hér. 89 00:03:43,103 --> 00:03:43,810 Allt í lagi. 90 00:03:43,810 --> 00:03:45,120 Gaman að hitta þig. 91 00:03:45,120 --> 00:03:47,720 >> Svo það sem ég vil eins og þú gerir hér - ef þú gætir, alveg fljótt - 92 00:03:47,720 --> 00:03:51,040 bara hellir okkur hálft glas af appelsínu safa og hálft glas af mjólk, 93 00:03:51,040 --> 00:03:55,710 fulltrúi í raun númer 1 í einum bolla og 2 í hinum bikarnum. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> Þetta er að fara að vera góður myndefni. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> JESS: miður. 98 00:04:05,860 --> 00:04:06,330 >> DAVID Malan: Nei, nei. 99 00:04:06,330 --> 00:04:08,703 Það er allt í lagi. 100 00:04:08,703 --> 00:04:10,120 Nice. 101 00:04:10,120 --> 00:04:12,950 Allt í lagi, þannig að við höfum fjórar bæti virði af appelsínusafa. 102 00:04:12,950 --> 00:04:14,460 Við munum kallast það gildið 1. 103 00:04:14,460 --> 00:04:16,579 Nú fjórar bytes virði af mjólk. 104 00:04:16,579 --> 00:04:18,519 Mun kalla það gildi 2. 105 00:04:18,519 --> 00:04:20,440 Sem x og y, í þessari röð. 106 00:04:20,440 --> 00:04:23,450 >> Allt í lagi, svo nú ef verkefni á hönd - fyrir þig, Jess, fyrir framan alla 107 00:04:23,450 --> 00:04:24,270 af bekkjarfélögum þínum - 108 00:04:24,270 --> 00:04:28,510 er að skipta um gildi x og y svo að við viljum að appelsínusafa Í 109 00:04:28,510 --> 00:04:32,070 annar bolli og mjólk í þessum bolla, hvernig þú might - áður en þú gerir í raun 110 00:04:32,070 --> 00:04:34,020 það - fara að gera þetta? 111 00:04:34,020 --> 00:04:35,220 >> OK, vitur ákvörðun. 112 00:04:35,220 --> 00:04:36,340 Svo þú þarft aðeins meira minni. 113 00:04:36,340 --> 00:04:38,190 Svo skulum úthluta tímabundið bolli, ef þú vilt. 114 00:04:38,190 --> 00:04:40,540 Og nú halda áfram að skipta x og y. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> Excellent. 117 00:04:53,530 --> 00:04:54,420 Svo mjög vel gert. 118 00:04:54,420 --> 00:04:55,670 Þakka þér svo mikið, Jess. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 Hér þú ert. 121 00:05:00,020 --> 00:05:01,950 Smá minjagrip. 122 00:05:01,950 --> 00:05:04,350 >> OK, svo augljóslega, frábær einfalt hugmynd. 123 00:05:04,350 --> 00:05:07,500 Alveg innsæi að við þurfum svolítið meira geymslupláss - í þessu formi, 124 00:05:07,500 --> 00:05:09,750 bolla - ef við viljum í raun og veru að skipta þessar tvær breytur. 125 00:05:09,750 --> 00:05:11,110 Þannig að við skulum gera einmitt það. 126 00:05:11,110 --> 00:05:14,330 Upp hér á milli þar sem ég halda að ég er fara að gera nokkrar skipta, ég 127 00:05:14,330 --> 00:05:15,720 fara á undan og lýsa afleysingamanneskja. 128 00:05:15,720 --> 00:05:17,980 Og ég mun láta það jafnt, segja, x. 129 00:05:17,980 --> 00:05:21,110 >> Þá er ég að fara að breyta gildi x bara eins Jess gerði hér með 130 00:05:21,110 --> 00:05:23,200 mjólk og appelsínusafa að vera jöfn y. 131 00:05:23,200 --> 00:05:27,460 Og ég ætla að breyta Y til að vera jöfn að ekki x, því nú erum við væri 132 00:05:27,460 --> 00:05:29,530 fastur í hring, heldur temp. 133 00:05:29,530 --> 00:05:33,170 Þar sem ég tímabundið - eða þar Jess tímabundið setja appelsínusafa 134 00:05:33,170 --> 00:05:35,460 áður clobbering að bolli með mjólk. 135 00:05:35,460 --> 00:05:37,250 >> Svo láta mig fara á undan núna og gera þetta. 136 00:05:37,250 --> 00:05:39,210 Það heitir noswap.c. 137 00:05:39,210 --> 00:05:41,190 Og nú láta mig hlaupa ekki skipti. 138 00:05:41,190 --> 00:05:43,910 Og reyndar ég, ef ég stækka gluggi svolítið, sem 139 00:05:43,910 --> 00:05:45,160 x er 1, y er 2.. 140 00:05:45,160 --> 00:05:47,230 Og þá er x 2, y er 1. 141 00:05:47,230 --> 00:05:51,910 >> En muna að á mánudaginn gerðum við það svolítið öðruvísi þar sem ég 142 00:05:51,910 --> 00:05:56,760 staðinn innleitt hjálpar virka, ef þú vilt, það var í raun ógilt. 143 00:05:56,760 --> 00:05:58,010 Ég kallaði það skipti. 144 00:05:58,010 --> 00:06:01,600 Ég gaf henni tvær breytur, og ég kallaði þeim og ég kallaði þá b. 145 00:06:01,600 --> 00:06:04,380 >> Frankly, gæti ég kalla þá x og y. 146 00:06:04,380 --> 00:06:06,040 Það er ekkert stoppa mig frá að gera það. 147 00:06:06,040 --> 00:06:08,140 En ég myndi halda því fram að það er svo smá óljós. 148 00:06:08,140 --> 00:06:11,910 Vegna muna fyrir mánudag sem við haldið fram að þessir þættir voru 149 00:06:11,910 --> 00:06:13,650 afrit af gildum liðin inn 150 00:06:13,650 --> 00:06:15,640 Svo það boðberi bara með þinn huga, held ég, ef þú notar 151 00:06:15,640 --> 00:06:17,370 nákvæmlega sömu breytur. 152 00:06:17,370 --> 00:06:20,150 >> Svo ég ætla í staðinn að hringja þeim og b, bara fyrir skýrleika. 153 00:06:20,150 --> 00:06:21,840 En við gætum kalla þá mest eitthvað sem við viljum. 154 00:06:21,840 --> 00:06:26,280 Og ég ætla að afrita og líma raun þetta númer frá upp 155 00:06:26,280 --> 00:06:27,170 niður hér. 156 00:06:27,170 --> 00:06:29,110 Vegna þess að ég sá bara að það virkar. 157 00:06:29,110 --> 00:06:30,790 Svo er það í nokkuð góðri þjálfun. 158 00:06:30,790 --> 00:06:37,390 Og ég breyta x mínum í, x minn til a, y minn til b og y mína til b. 159 00:06:37,390 --> 00:06:39,130 >> Svo í öðrum orðum, nákvæmlega sama röksemdafærsla. 160 00:06:39,130 --> 00:06:40,850 Nákvæmlega sama sem Jess gerði. 161 00:06:40,850 --> 00:06:44,350 Og þá eitt sem ég hef að gera upp hér, að sjálfsögðu, er nú að kalla fram þessa 162 00:06:44,350 --> 00:06:45,990 virka, eða kalla þessa aðgerð. 163 00:06:45,990 --> 00:06:50,430 Þannig að ég mun kalla þessa aðgerð með tveimur aðföng, x og y, og högg á Vista. 164 00:06:50,430 --> 00:06:52,300 >> Allt í lagi, svo í grundvallaratriðum sama. 165 00:06:52,300 --> 00:06:55,570 Í raun hef ég sennilega gert forritið óþarflega flókið með 166 00:06:55,570 --> 00:07:00,820 skrifa fall sem er bara að taka sumir sex línur af kóða en ég 167 00:07:00,820 --> 00:07:02,970 áður hafði framkvæmda þetta í aðeins þrjú. 168 00:07:02,970 --> 00:07:06,230 >> Svo láta mig fara á undan núna og endurgerð þetta, gera ekki skipti. 169 00:07:06,230 --> 00:07:07,920 Allt í lagi, ruglaður ég upp hér. 170 00:07:07,920 --> 00:07:11,290 Þetta ætti að vera villa sem þú gætir sjá æ almennt eins og þinn 171 00:07:11,290 --> 00:07:12,380 forrit fá flóknari. 172 00:07:12,380 --> 00:07:13,470 En það er auðvelt festa. 173 00:07:13,470 --> 00:07:15,650 Leyfðu mér að fletta aftur upp hér. 174 00:07:15,650 --> 00:07:18,190 >> Og hvað er það fyrsta villa ég sjá? 175 00:07:18,190 --> 00:07:19,520 Óbeina yfirlýsingu. 176 00:07:19,520 --> 00:07:21,466 Hvað þýðir að benda yfirleitt? 177 00:07:21,466 --> 00:07:22,830 Ó, ég gleymdi frumgerð. 178 00:07:22,830 --> 00:07:26,900 Ég gleymdi að kenna þýðanda sem skipti er að fara að vera til jafnvel þótt hann 179 00:07:26,900 --> 00:07:28,920 er ekki til í upphafi af the program. 180 00:07:28,920 --> 00:07:35,780 Þannig að ég ætla bara að fara að segja ógilt, skipti, int, sem int b, semíkommu. 181 00:07:35,780 --> 00:07:37,280 >> Þannig að ég ætla ekki að reimplement það. 182 00:07:37,280 --> 00:07:39,140 En nú passar það hvað er hérna. 183 00:07:39,140 --> 00:07:42,530 Og tilkynningu, án þess semíkommu hér, sem er ekki nauðsynlegt þegar 184 00:07:42,530 --> 00:07:43,200 framkvæmd. 185 00:07:43,200 --> 00:07:46,010 >> Svo láta mig endurgerð þetta, gera ekki skipti. 186 00:07:46,010 --> 00:07:46,910 Miklu betra form. 187 00:07:46,910 --> 00:07:48,130 Hlaupa ekki skipti. 188 00:07:48,130 --> 00:07:48,740 Og fjandinn. 189 00:07:48,740 --> 00:07:51,650 Nú erum við aftur þar sem við vorum á mánudag, þar sem hlutur ekki skipta. 190 00:07:51,650 --> 00:07:55,410 >> Og hvað er leiðandi skýring hvers vegna þetta er raunin? 191 00:07:55,410 --> 00:07:56,380 Já? 192 00:07:56,380 --> 00:07:57,630 >> STUDENT: [inaudible]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> DAVID Malan: Einmitt. 195 00:08:05,230 --> 00:08:07,330 Svo sem a og b eru eintök af x og y. 196 00:08:07,330 --> 00:08:10,680 Og í raun, hvenær þú hefur verið hringja í aðgerð svona langt að 197 00:08:10,680 --> 00:08:12,540 fer breytur eins ints - 198 00:08:12,540 --> 00:08:14,470 eins skipti er von hér - 199 00:08:14,470 --> 00:08:16,270 þú krakkar hafa verið farið í eintökum. 200 00:08:16,270 --> 00:08:19,150 >> Nú það þýðir að það tekur svolítið tíma, hættu annað, fyrir 201 00:08:19,150 --> 00:08:23,270 tölva til að afrita bita úr einni breytu í bita af öðru. 202 00:08:23,270 --> 00:08:24,610 En það er ekki svo stór samningur. 203 00:08:24,610 --> 00:08:25,920 En þeir eru engu að síður afrit. 204 00:08:25,920 --> 00:08:30,020 >> Og svo nú, í tengslum við skipti, Ég er í raun tekist 205 00:08:30,020 --> 00:08:31,180 breyta og b. 206 00:08:31,180 --> 00:08:33,000 Í staðreynd, við skulum gera a fljótur geðheilsan athuga. 207 00:08:33,000 --> 00:08:36,830 Prenta F a er% i, nýja línu. 208 00:08:36,830 --> 00:08:38,770 Og stinga skulum í. 209 00:08:38,770 --> 00:08:41,830 Nú skulum gera það sama með b. 210 00:08:41,830 --> 00:08:43,640 Og við skulum gera það sama hér. 211 00:08:43,640 --> 00:08:47,260 >> Og nú, láttu mig afrita sömu línur aftur neðst á virka 212 00:08:47,260 --> 00:08:51,250 eftir þrjár línur mínum áhugavert hefði framkvæmt, og 213 00:08:51,250 --> 00:08:53,270 prenta a og b enn og aftur. 214 00:08:53,270 --> 00:08:56,030 Svo nú skulum gera þetta, gera ekki skipti. 215 00:08:56,030 --> 00:08:58,430 Leyfðu mér að gera í flugstöðinni glugga í hluti hærri, svo að við getum séð 216 00:08:58,430 --> 00:08:59,520 meira af því í einu. 217 00:08:59,520 --> 00:09:00,860 >> Og hlaupa ekki skipti. 218 00:09:00,860 --> 00:09:04,000 x er 1, y er 2.. a er 1, b er 2.. 219 00:09:04,000 --> 00:09:06,070 Og þá, sem er 2, b er 1. 220 00:09:06,070 --> 00:09:09,390 Svo það er að vinna, rétt eins og Jess gerði hér inni skipti. 221 00:09:09,390 --> 00:09:13,090 En auðvitað, það hefur engin áhrif á breytum í helsta. 222 00:09:13,090 --> 00:09:15,360 >> Svo við sáum bragð þar sem við gæti lagað þetta, ekki satt? 223 00:09:15,360 --> 00:09:19,560 Þegar þú ert frammi fyrir þessum scoping mál, þú bara Punt og gera x 224 00:09:19,560 --> 00:09:22,400 og y hvaða breytur í staðinn? 225 00:09:22,400 --> 00:09:23,390 >> Þú gætir gert þær heimsvísu. 226 00:09:23,390 --> 00:09:27,560 Setja þá á the mjög toppur af the skrá eins og við gerðum, jafnvel í leiknum 15. 227 00:09:27,560 --> 00:09:28,890 Við notum alþjóðlegt breytu. 228 00:09:28,890 --> 00:09:32,420 En í samhengi í leiknum sem 15, það er sanngjarnt að hafa alþjóðlegt 229 00:09:32,420 --> 00:09:37,170 Variable alþingismaður borð, vegna þess að heild á 15.c er allt 230 00:09:37,170 --> 00:09:38,650 um framkvæmd þessi leikur. 231 00:09:38,650 --> 00:09:41,470 Það er það sem skrá er til að gera. 232 00:09:41,470 --> 00:09:44,170 >> En í þessu tilfelli hér, ég Að kalla fram aðgerðir skipti. 233 00:09:44,170 --> 00:09:45,380 Ég vil skipta tvær breytur. 234 00:09:45,380 --> 00:09:48,950 Og það ætti að byrja að líða bara sloppy ef lausnin á öllum okkar 235 00:09:48,950 --> 00:09:51,300 vandamál þegar við hlaupum í umfangi mál er að gera það alþjóðlegt. 236 00:09:51,300 --> 00:09:54,730 Vegna mjög fljótt program okkar er að fara að verða alveg sóðaskapur. 237 00:09:54,730 --> 00:09:57,760 Og við gerðum það mjög sparlega vegna í 15.c. 238 00:09:57,760 --> 00:10:00,470 >> En það kemur í ljós að það er betri leið að öllu leyti. 239 00:10:00,470 --> 00:10:05,600 Leyfðu mér að fara í raun til baka og eyða prenta er f, bara til að einfalda kóðann. 240 00:10:05,600 --> 00:10:09,160 Og láta mig leggja til að þetta, reyndar er, slæmt. 241 00:10:09,160 --> 00:10:15,990 En ef ég bæti í staðinn í sumum stjörnum og stjörnur, get ég í staðinn að snúa þessu 242 00:10:15,990 --> 00:10:18,670 virka inn í einn sem er reyndar starfræktar. 243 00:10:18,670 --> 00:10:25,020 >> Svo láta mig fara aftur hingað og viðurkenna að segja Stars er alltaf erfitt, 244 00:10:25,020 --> 00:10:26,170 svo ég segi stjörnum. 245 00:10:26,170 --> 00:10:27,660 Ég ætla bara fess upp að eitt. 246 00:10:27,660 --> 00:10:28,190 Allt í lagi. 247 00:10:28,190 --> 00:10:30,190 Og nú, hvað er ég að fara að gera í staðinn? 248 00:10:30,190 --> 00:10:34,130 >> Svo fyrst af öllu, ég ætla að tilgreina að í stað þess að standast int inn 249 00:10:34,130 --> 00:10:37,980 skiptigengi virka, ég er í staðinn að fara að segja int stjörnu. 250 00:10:37,980 --> 00:10:39,170 Nú, hvað þýðir stjörnu benda? 251 00:10:39,170 --> 00:10:41,970 Þetta er að hugmyndinni um músina að Binky er claymation eðli, var 252 00:10:41,970 --> 00:10:43,465 vísa til stund síðan. 253 00:10:43,465 --> 00:10:47,610 >> Þannig að ef við segjum int stjörnu, merkir þetta nú er að er ekki að fara að vera 254 00:10:47,610 --> 00:10:49,110 samþykkt í því verðmæti hennar. 255 00:10:49,110 --> 00:10:50,350 Það er ekki að fara að afrita inn 256 00:10:50,350 --> 00:10:54,700 Frekar, heimilisfang a er fara til að fara framhjá inn 257 00:10:54,700 --> 00:10:57,840 >> Svo muna að inni í tölvunni þinni er allt fullt af minni, annars 258 00:10:57,840 --> 00:10:58,760 þekktur sem RAM. 259 00:10:58,760 --> 00:11:00,520 Og það RAM er bara allt fullt af bætum. 260 00:11:00,520 --> 00:11:03,320 Þannig að ef Mac eða tölvan hefur tveggja gígabæta, hefur þú 2 261 00:11:03,320 --> 00:11:05,760 billjón bæti af minni. 262 00:11:05,760 --> 00:11:08,440 >> Nú skulum bara gera ráð fyrir að bara að halda hlutum gott og skipulegan, við 263 00:11:08,440 --> 00:11:09,450 framselja netfang - 264 00:11:09,450 --> 00:11:10,170 tala - 265 00:11:10,170 --> 00:11:12,270 að sérhver bæti af RAM í tölvunni þinni. 266 00:11:12,270 --> 00:11:15,410 The mjög fyrstur bæti þeim 2 milljarðar er með núlli númeri. 267 00:11:15,410 --> 00:11:18,572 Næsta einn er bæti númer eitt, númer tvö, alla leið á upp, punktur punktur 268 00:11:18,572 --> 00:11:20,530 punktur, í u.þ.b. 2 milljarðar. 269 00:11:20,530 --> 00:11:23,640 >> Svo þú getur fjöldi bæti af minni í tölvunni þinni. 270 00:11:23,640 --> 00:11:26,460 Þannig að við skulum gera ráð fyrir að það er það sem er átt við með heimilisfang. 271 00:11:26,460 --> 00:11:31,360 Svo þegar ég sé int stjörnu a, hvað er að gerast til að fara framhjá í skipti nú er 272 00:11:31,360 --> 00:11:32,830 heimilisfang a. 273 00:11:32,830 --> 00:11:37,150 Ekki gildi þess, en hvað í pósti þess netfang er, svo að segja - 274 00:11:37,150 --> 00:11:38,810 staðsetningu þess í vinnsluminni. 275 00:11:38,810 --> 00:11:41,250 >> Og tilsvarandi fyrir b, ég er að fara að segja það sama. 276 00:11:41,250 --> 00:11:42,720 Int, stjarna, b. 277 00:11:42,720 --> 00:11:46,350 Sem innskot, tæknilega stjörnu gæti farið í öðrum stöðum. 278 00:11:46,350 --> 00:11:50,140 En við munum staðla á stjörnunni vera við hliðina á gögn tegund. 279 00:11:50,140 --> 00:11:54,080 >> Svo skipta undirskrift nú þýðir, gefa mér veffang heiltala, og kalla 280 00:11:54,080 --> 00:11:55,400 að takast á við. 281 00:11:55,400 --> 00:11:58,690 Og gefa mér annað veffang int og kalla þessi tölu b. 282 00:11:58,690 --> 00:12:01,120 >> En nú hefur númerið mitt hér til að breyta. 283 00:12:01,120 --> 00:12:03,470 Vegna þess að ef ég lýsi int afleysingamanneskja - 284 00:12:03,470 --> 00:12:05,580 sem er enn í int - 285 00:12:05,580 --> 00:12:08,700 en ég að geyma í það, hvaða gildi? 286 00:12:08,700 --> 00:12:12,870 Til að vera skýr, ég binda A með númerið sem skrifað núna? 287 00:12:12,870 --> 00:12:14,360 >> Ég er að setja staðsetningu í a. 288 00:12:14,360 --> 00:12:16,500 En ég er ekki sama um staðsetning nú, ekki satt? 289 00:12:16,500 --> 00:12:21,940 Hitastig til bara Jess 'þriðja bolla verið, í hvaða tilgangi? 290 00:12:21,940 --> 00:12:23,090 Að geyma verðmæti. 291 00:12:23,090 --> 00:12:24,830 Mjólk eða appelsínusafa. 292 00:12:24,830 --> 00:12:28,520 Ekki til í raun og veru að geyma veffang annaðhvort af þeim hlutum, sem líður 293 00:12:28,520 --> 00:12:31,200 lítið nonsensical í þetta raunverulegt Heimurinn samhengi samt. 294 00:12:31,200 --> 00:12:34,990 >> Svo í raun, það sem ég vil setja í Temp er ekki heimilisfang a, en 295 00:12:34,990 --> 00:12:36,180 Innihald. 296 00:12:36,180 --> 00:12:41,930 Svo ef er tala eins og 123, þetta er The 123 bæti af minni að bara 297 00:12:41,930 --> 00:12:45,090 verður að vera hernema, að gildi í verður að vera hernema. 298 00:12:45,090 --> 00:12:49,040 >> Ef ég vil fara á þetta netfang, Ég þarf að segja stjarna. 299 00:12:49,040 --> 00:12:52,610 Sama hátt, ef ég væri að breyta því sem er á heimilisfang a, breyti ég 300 00:12:52,610 --> 00:12:53,570 þetta til að byrja a. 301 00:12:53,570 --> 00:12:58,185 Ef ég vil að geyma í hvað er í því Staðsetning A með hvað er á þeim stað 302 00:12:58,185 --> 00:13:02,180 á b, stjarna B stjarna. 303 00:13:02,180 --> 00:13:05,340 >> Svo í stuttu máli, jafnvel ef það er ekki alveg vaskur í enn - og ég myndi ekki búast við 304 00:13:05,340 --> 00:13:06,560 að það væri svo hratt - 305 00:13:06,560 --> 00:13:11,100 grein fyrir því að allt sem ég er að gera er að prefixing þessar stjörnur til breytum mínum, 306 00:13:11,100 --> 00:13:13,350 orðatiltæki grípa ekki þau gildi. 307 00:13:13,350 --> 00:13:14,520 Ekki breyta gildum. 308 00:13:14,520 --> 00:13:17,600 Heldur skaltu fara til þeirra talna og fá gildi. 309 00:13:17,600 --> 00:13:21,430 Fara á þetta netfang og breyta gildið þar. 310 00:13:21,430 --> 00:13:25,500 >> Svo nú langar mig að fletta aftur upp á toppinn, bara að festa þessa línu hér, að 311 00:13:25,500 --> 00:13:27,690 breyta frumgerð að passa. 312 00:13:27,690 --> 00:13:30,280 En ég þarf nú að gera einn annar hlutur. 313 00:13:30,280 --> 00:13:35,500 Innsæi, ef ég hef breytt tegundir rök sem skipti er von, 314 00:13:35,500 --> 00:13:37,245 hvað annað þarf ég að breyting á númerið mitt? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> Þegar ég kalla Víxla. 317 00:13:40,840 --> 00:13:43,340 Því núna, er það Ég liggur að skipta enn? 318 00:13:43,340 --> 00:13:47,450 Gildi x og verðmæti af Y eða mjólk og appelsínusafa. 319 00:13:47,450 --> 00:13:48,510 En ég vil ekki að gera það. 320 00:13:48,510 --> 00:13:51,060 Ég vil þess í stað að fara í það? 321 00:13:51,060 --> 00:13:53,050 The location x og staðsetning y. 322 00:13:53,050 --> 00:13:55,300 Hvað eru póstföng þeirra, svo að segja. 323 00:13:55,300 --> 00:13:57,600 >> Svo til að gera það, það er merkið. 324 00:13:57,600 --> 00:13:59,260 Merkið konar hljómar eins heimilisfang. 325 00:13:59,260 --> 00:14:03,240 svo n, merkið, heimilisfang af x, og heimilisfang y. 326 00:14:03,240 --> 00:14:06,790 Svo það er vísvitandi að við notum &-merkið þegar starf aðgerðina, 327 00:14:06,790 --> 00:14:10,230 og stjörnur þegar lýsa og þegar framkvæmd aðgerð. 328 00:14:10,230 --> 00:14:14,220 >> Og bara hugsa um merkið sem heimilisfang rekstraraðila, og stjörnu sem 329 00:14:14,220 --> 00:14:15,490 fara þangað rekstraraðila - 330 00:14:15,490 --> 00:14:18,640 eða, fleiri almennilega, dereference stjórnandi. 331 00:14:18,640 --> 00:14:23,480 Svo er það allt fullt af orðum bara að segja að nú, vonandi, skipti er að fara 332 00:14:23,480 --> 00:14:24,440 að vera rétt. 333 00:14:24,440 --> 00:14:26,550 >> Leyfðu mér að fara á undan og gera - 334 00:14:26,550 --> 00:14:30,940 skulum reyndar endurnefna skrána, svo þetta forrit samt kallast engin skipti. 335 00:14:30,940 --> 00:14:33,240 Ég halda því fram að við munum kalla það swap.c núna. 336 00:14:33,240 --> 00:14:35,670 Svo gera, skipti. 337 00:14:35,670 --> 00:14:37,520 Punktur, rista, skipti. 338 00:14:37,520 --> 00:14:40,210 >> Og nú örugglega, x er 1, y er 2.. 339 00:14:40,210 --> 00:14:44,040 Og þá, x er 2, y er einn. 340 00:14:44,040 --> 00:14:46,500 Jæja við skulum sjá hvort við getum ekki gert þetta svolítið öðruvísi og hvað er 341 00:14:46,500 --> 00:14:47,180 fara á hér. 342 00:14:47,180 --> 00:14:51,250 Fyrst, langar mig að súmma inn á okkar teikna skjár hér. 343 00:14:51,250 --> 00:14:54,160 Og láta mig leggja um stund - og þegar ég draga hér verður spegill 344 00:14:54,160 --> 00:14:58,660 upp nú - láta mig leggja til að hér er allt fullt af minni, eða 345 00:14:58,660 --> 00:15:00,540 RAM, inni á tölvunni minni. 346 00:15:00,540 --> 00:15:04,140 >> Og þetta mun vera bíta númer, skulum segja, 1. 347 00:15:04,140 --> 00:15:05,720 Þetta verður bæti númer 2. 348 00:15:05,720 --> 00:15:08,220 Og ég mun gera í heild búnt fleiri og þá fullt af punktur punktur punkta til 349 00:15:08,220 --> 00:15:10,880 benda til þess að það er 2 milljörðum af þessum hlutum. 350 00:15:10,880 --> 00:15:13,520 4, 5, og svo framvegis. 351 00:15:13,520 --> 00:15:17,055 >> Þannig að það eru fyrstu fimm bœti af minni tölvunnar minnar. 352 00:15:17,055 --> 00:15:17,560 Allt í lagi? 353 00:15:17,560 --> 00:15:19,060 Mjög fáir af 2 milljarða króna. 354 00:15:19,060 --> 00:15:21,120 En nú ætla ég að leggja eftirfarandi. 355 00:15:21,120 --> 00:15:27,490 Ég ætla að leggja til að x er að fara að geymt fjölda 1, og Y er að fara 356 00:15:27,490 --> 00:15:29,690 til að geyma númer 2. 357 00:15:29,690 --> 00:15:35,000 Og láta mig fara á undan núna og táknar þessi gildi sem hér segir. 358 00:15:35,000 --> 00:15:41,510 >> Skulum gera þetta þannig. 359 00:15:41,510 --> 00:15:42,870 Gefðu mér bara eina sekúndu. 360 00:15:42,870 --> 00:15:44,150 Eitt annað. 361 00:15:44,150 --> 00:15:45,680 OK. 362 00:15:45,680 --> 00:15:47,560 Ég vil gera þetta smá - 363 00:15:47,560 --> 00:15:50,440 skulum gera þetta aftur. 364 00:15:50,440 --> 00:15:53,250 Annars ætla ég að og nota Sömu tölur, óviljandi, 365 00:15:53,250 --> 00:15:54,230 mörgum sinnum. 366 00:15:54,230 --> 00:15:57,320 >> Svo bara svo að við höfum mismunandi tölur að tala um, við skulum kalla þessa bæti 367 00:15:57,320 --> 00:16:03,391 númer 123, 124, 125, 126, og punktur punktur punktur. 368 00:16:03,391 --> 00:16:08,400 Og láta mig halda nú að ég ætla að setja gildið 1 hér, og verðmæti 2 369 00:16:08,400 --> 00:16:11,990 hér, annars þekkt sem x og y. 370 00:16:11,990 --> 00:16:15,300 Svo gerist það bara svo að þetta er x, þetta er y. 371 00:16:15,300 --> 00:16:18,180 >> Og bara með því að sumir af handahófi tækifæri, sem tölva, stýrikerfi, 372 00:16:18,180 --> 00:16:21,890 gerðist að setja x í stað númer 123. 373 00:16:21,890 --> 00:16:25,590 Og y endaði í stað 124 - 374 00:16:25,590 --> 00:16:26,330 fjandinn. 375 00:16:26,330 --> 00:16:28,700 Ég ætti að hafa fasta þetta. 376 00:16:28,700 --> 00:16:34,040 Ó maður, ég vil virkilega að gera þetta? 377 00:16:34,040 --> 00:16:37,340 Já, ég vil að laga þetta og B réttur um þetta í dag. 378 00:16:37,340 --> 00:16:39,950 Því miður, ný á þessu. 379 00:16:39,950 --> 00:16:45,020 >> 127, 131, og ég vildi ekki vera svona flókið, en hvers vegna gerði ég breyta 380 00:16:45,020 --> 00:16:46,340 tölur þar? 381 00:16:46,340 --> 00:16:48,360 Því ég vil að ints til raun að vera fjórir bæti. 382 00:16:48,360 --> 00:16:49,810 Svo skulum vera frábær endaþarms um þetta. 383 00:16:49,810 --> 00:16:53,800 Þannig að ef 1. gerist að vera beint 123, 2 er að fara að vera á heimilisfang 384 00:16:53,800 --> 00:16:55,730 127 vegna þess að það er bara 4 byes burtu. 385 00:16:55,730 --> 00:16:56,210 Það er allt. 386 00:16:56,210 --> 00:16:58,640 Og við munum gleyma öllu af önnur heimilisföng í heiminum. 387 00:16:58,640 --> 00:17:03,320 >> Sem x er á stað 123, y er að staðsetning 127. 388 00:17:03,320 --> 00:17:05,770 Og nú, hvað ég reyndar langar að gera? 389 00:17:05,770 --> 00:17:10,099 Þegar ég kalla skipti nú, hvað er í raun að fara á? 390 00:17:10,099 --> 00:17:14,920 Jæja, þegar ég kalla skipti, ég farið í veffang x og heimilisfang y. 391 00:17:14,920 --> 00:17:18,540 Svo til dæmis, ef þessir tveir stykki pappír nú tákna tvö 392 00:17:18,540 --> 00:17:23,510 rök A og B að skipta, er það sem ég að fara að skrifa á fyrsta þeirra, 393 00:17:23,510 --> 00:17:27,720 sem ég ætla að hringja í vísa til sem a? 394 00:17:27,720 --> 00:17:30,610 >> Einmitt, 123. 395 00:17:30,610 --> 00:17:31,905 Svo er þetta ég kröfu a. 396 00:17:31,905 --> 00:17:32,955 Þetta er viðfang a. 397 00:17:32,955 --> 00:17:35,856 Ég er að setja veffang x þar. 398 00:17:35,856 --> 00:17:38,152 >> Hvað er það? 399 00:17:38,152 --> 00:17:40,890 >> Hvað er það? 400 00:17:40,890 --> 00:17:41,190 >> Nei. 401 00:17:41,190 --> 00:17:41,720 Það er allt í lagi. 402 00:17:41,720 --> 00:17:42,570 Enn gott, samt gott. 403 00:17:42,570 --> 00:17:43,530 Þannig að þetta er. 404 00:17:43,530 --> 00:17:46,240 Og nú á seinni stykki af pappír, þetta er að fara að vera b, og hvað er ég 405 00:17:46,240 --> 00:17:49,010 að fara að skrifa á þetta blað? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> Svo það eina sem hefur breyst síðan Fyrri ómögulegt að segja okkar af þessari sögu er, 408 00:17:53,720 --> 00:17:58,590 frekar en bókstaflega 1 og 2, ég að fara að fara í 123 og 127. 409 00:17:58,590 --> 00:18:02,130 Og ég ætla nú að fara að setja þær í þessa kassa, allt í lagi? 410 00:18:02,130 --> 00:18:04,640 Svo táknar að svartur kassi nú skiptigengi virka. 411 00:18:04,640 --> 00:18:07,230 >> Á sama tíma, við skulum nú hafa einhver framkvæma skipti virka. 412 00:18:07,230 --> 00:18:09,090 Myndi einhver upp hér eins og til sjálfboðaliði? 413 00:18:09,090 --> 00:18:09,560 Komdu upp. 414 00:18:09,560 --> 00:18:11,080 Hvað er nafn þitt? 415 00:18:11,080 --> 00:18:11,460 Charlie. 416 00:18:11,460 --> 00:18:12,080 Allt í lagi, Charlie. 417 00:18:12,080 --> 00:18:14,810 Komdu upp. 418 00:18:14,810 --> 00:18:17,310 >> Svo Charlie er að fara að spila hlutverk svartur kassi okkar. 419 00:18:17,310 --> 00:18:21,460 Og Charlie, það sem ég vil að þú gerir nú er að innleiða skipti á þann hátt 420 00:18:21,460 --> 00:18:25,320 að miðað þessir tvö heimilisföng, þú varst í raun að fara 421 00:18:25,320 --> 00:18:26,330 að breyta gildum. 422 00:18:26,330 --> 00:18:28,290 Og ég mun hvísla í eyrað hvernig á að keyra sjónvarpið hér. 423 00:18:28,290 --> 00:18:29,930 >> Svo fara á undan, og þú ert svartur kassi. 424 00:18:29,930 --> 00:18:30,920 Náðu í það. 425 00:18:30,920 --> 00:18:34,054 Hvaða gildi sérð þú fyrir a, og Hvaða gildi sérðu fyrir b? 426 00:18:34,054 --> 00:18:36,740 >> CHARLIE sem: a er 123 og b er 127. 427 00:18:36,740 --> 00:18:37,530 >> DAVID Malan: OK, nákvæmlega. 428 00:18:37,530 --> 00:18:38,940 Nú hlé þar fyrir aðeins augnablik. 429 00:18:38,940 --> 00:18:41,680 The fyrstur hlutur þú ert að fara að gera núna, í samræmi við kóða - þar sem 430 00:18:41,680 --> 00:18:43,220 Ég nú draga upp á skjánum - 431 00:18:43,220 --> 00:18:46,750 er að fara að vera að úthluta smá hluti af minni kallast afleysingamanneskja. 432 00:18:46,750 --> 00:18:48,850 Þannig að ég ætla að fara á undan og gefa þér að minni. 433 00:18:48,850 --> 00:18:52,210 >> Þannig að þetta er að fara að vera þriðja breytu að þú hefur aðgang að 434 00:18:52,210 --> 00:18:54,080 þú kallaðir afleysingamanneskja. 435 00:18:54,080 --> 00:18:57,120 Og hvað ert þú að fara að skrifa á afleysingamanneskja blað? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> CHARLIE: Ábendingum, ekki satt? 438 00:19:03,470 --> 00:19:04,790 >> DAVID Malan: OK, vel ekki endilega ábendingum. 439 00:19:04,790 --> 00:19:07,230 Svo lína af kóða sem ég hef hápunktur á the réttur hönd hlið, 440 00:19:07,230 --> 00:19:07,900 skulum byrja þar. 441 00:19:07,900 --> 00:19:08,890 Það segir stjörnu a. 442 00:19:08,890 --> 00:19:11,670 Svo er nú að geyma fjöldi 123. 443 00:19:11,670 --> 00:19:16,660 Og bara innsæi, hvað gerði stjörnu 123 meina? 444 00:19:16,660 --> 00:19:21,630 >> En sérstaklega, ef a er 123, stjarna sem þýðir hvað? 445 00:19:21,630 --> 00:19:22,560 Gildi a. 446 00:19:22,560 --> 00:19:24,580 Eða meira frjálslegur, fara þangað. 447 00:19:24,580 --> 00:19:28,620 Svo láta mig leggja til að, halda á í hönd þín, fara á undan og meðhöndla það 448 00:19:28,620 --> 00:19:29,430 eins og það er kort. 449 00:19:29,430 --> 00:19:32,940 Og ganga sjálfur yfir til the tölva ' minni, og finna okkur hvað er 450 00:19:32,940 --> 00:19:36,520 á stað 123. 451 00:19:36,520 --> 00:19:37,720 Einmitt. 452 00:19:37,720 --> 00:19:41,100 >> Svo við sjáum á stað 123 er það, augljóslega? 453 00:19:41,100 --> 00:19:44,240 OK, svo það gildi nú ert þú að fara að setja inn Temp? 454 00:19:44,240 --> 00:19:44,750 Einmitt. 455 00:19:44,750 --> 00:19:45,600 Svo fara á undan og gera það. 456 00:19:45,600 --> 00:19:51,280 Og skrifaðu númer 1 á stykki af pappír sem er nú heitir afleysingamanneskja. 457 00:19:51,280 --> 00:19:53,540 >> Og nú er næsta skref að þú ert að fara að framkvæma 458 00:19:53,540 --> 00:19:54,310 er að fara að vera það. 459 00:19:54,310 --> 00:19:57,820 Jæja, á hægri hönd hlið af the næsta lína af kóða er stjarna b. b, af 460 00:19:57,820 --> 00:19:59,260 Námskeiðið, geymir ávarp. 461 00:19:59,260 --> 00:20:02,270 Sem fjallar 127. 462 00:20:02,270 --> 00:20:06,620 Star B þýðir það, frjálslegur tala? 463 00:20:06,620 --> 00:20:08,700 >> Fara á þeim stað. 464 00:20:08,700 --> 00:20:14,988 Svo fara á undan og finna okkur hvað er á stað 127. 465 00:20:14,988 --> 00:20:15,480 OK. 466 00:20:15,480 --> 00:20:19,170 Auðvitað, á stað 127, er enn gildi 2.. 467 00:20:19,170 --> 00:20:24,060 Svo hvað ert þú að fara nú geymt á hvað er á þeim stað í a? 468 00:20:24,060 --> 00:20:26,860 Svo stjörnu leið fara að stað með. 469 00:20:26,860 --> 00:20:29,770 Hvað er staðsetning a? 470 00:20:29,770 --> 00:20:30,430 >> Einmitt. 471 00:20:30,430 --> 00:20:34,190 Svo nú ef þú vilt breyta hvað er á þeim stað - 472 00:20:34,190 --> 00:20:36,470 Ég fer á undan og hlaupa strokleður eru hér. 473 00:20:36,470 --> 00:20:37,760 Og nú setti hana aftur á bursta. 474 00:20:37,760 --> 00:20:42,190 Hvaða númer ertu að fara að skrifa í því auða reitinn núna? 475 00:20:42,190 --> 00:20:42,850 >> Einmitt. 476 00:20:42,850 --> 00:20:46,470 Þannig að þetta lína af kóða, að vera ljóst - að láta mér hlé það er Charlie að gera og 477 00:20:46,470 --> 00:20:51,730 benda á hér, hvað hann er bara gert er skrifa í kassann á stað 123 478 00:20:51,730 --> 00:20:55,150 verðmæti sem var áður á b. 479 00:20:55,150 --> 00:20:59,140 Og svo við höfum nú til framkvæmda örugglega þetta annarri línu af kóða. 480 00:20:59,140 --> 00:21:01,920 >> Nú því miður, það er enn ein lína eftir. 481 00:21:01,920 --> 00:21:04,900 Nú hvað er í Temp, bókstaflega? 482 00:21:04,900 --> 00:21:06,200 Það er augljóslega númer eitt. 483 00:21:06,200 --> 00:21:07,020 Það er ekki heimilisfang. 484 00:21:07,020 --> 00:21:09,380 Það er bara tala, konar breytu frá viku eitt. 485 00:21:09,380 --> 00:21:13,520 >> Og nú þegar þú segir stjörnu b, sem þýðir fara til the heimilisfang b, sem er að 486 00:21:13,520 --> 00:21:15,090 námskeið hér. 487 00:21:15,090 --> 00:21:16,020 Svo þegar þú færð það - 488 00:21:16,020 --> 00:21:18,320 Ég fer á undan og eyða hvað er raunverulega það - og hvað ert þú 489 00:21:18,320 --> 00:21:20,820 að fara að skrifa núna á 127 staðsetningu? 490 00:21:20,820 --> 00:21:22,010 >> CHARLIE: Hitastig, sem er eitt. 491 00:21:22,010 --> 00:21:23,430 >> DAVID Malan: Temp, sem er eitt. 492 00:21:23,430 --> 00:21:25,670 Og hvað gerist í Temp í lokin? 493 00:21:25,670 --> 00:21:26,600 Jæja, eigum við ekki raunverulega vita. 494 00:21:26,600 --> 00:21:27,420 Við í raun ekki sama. 495 00:21:27,420 --> 00:21:31,090 Hvenær við höfum innleitt virka svona langt, allir heimamaður breytur sem þú hefur 496 00:21:31,090 --> 00:21:31,890 eru örugglega staðbundin. 497 00:21:31,890 --> 00:21:33,060 Og þeir hverfa bara. 498 00:21:33,060 --> 00:21:35,040 Þeir eru endurheimtur af rekstri kerfið á endanum. 499 00:21:35,040 --> 00:21:39,800 >> Sem sú staðreynd að hitastig hefur enn á gildi 1 er tegund af grundvallaratriðum 500 00:21:39,800 --> 00:21:41,150 uninteresting okkur. 501 00:21:41,150 --> 00:21:43,100 Allt í lagi, þannig að umferð lófaklapp ef við gætum fyrir Charlie. 502 00:21:43,100 --> 00:21:46,400 Mjög vel gert. 503 00:21:46,400 --> 00:21:51,520 >> Allt í lagi, svo er það meira þetta að við getum gert? 504 00:21:51,520 --> 00:21:54,400 Svo kemur í ljós að við höfum verið segja nokkur hvít lygi 505 00:21:54,400 --> 00:21:55,540 um langt skeið. 506 00:21:55,540 --> 00:21:59,990 Reyndar kemur það í ljós að band, allan þennan tíma, er í raun ekki 507 00:21:59,990 --> 00:22:02,190 röð af stöfum í sjálfu sér. 508 00:22:02,190 --> 00:22:03,980 Það er góður af því innsæi. 509 00:22:03,980 --> 00:22:08,270 >> En tæknilega séð, band er gögn gerð sem við lýst inni 510 00:22:08,270 --> 00:22:12,170 The CS50 bókasafn til að einfalda heiminn fyrir fyrstu vikum flokki. 511 00:22:12,170 --> 00:22:20,130 Hvað band raun er er heimilisfangið um eðli einhvers staðar í vinnsluminni. 512 00:22:20,130 --> 00:22:25,530 A band er í raun tala, eins og 123 eða 127, sem gerist að afmarka 513 00:22:25,530 --> 00:22:28,420 þar sem band hefst í tölvunnar minni. 514 00:22:28,420 --> 00:22:31,870 >> En það er ekki um að band, í sjálfu sér,. sjálft 515 00:22:31,870 --> 00:22:33,460 Og við getum séð þetta þannig. 516 00:22:33,460 --> 00:22:35,980 Leyfðu mér að fara á undan og opna sumir númer sem er meðal 517 00:22:35,980 --> 00:22:38,340 dag kóðann dæmi. 518 00:22:38,340 --> 00:22:42,225 Og ég ætla að fara á undan og opna upp, við skulum segja, bera-0.c. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 Þetta er þrjótur forrit sem er að fara til að vera framkvæmd eins og hér segir. 521 00:22:48,790 --> 00:22:49,040 >> Fyrst. 522 00:22:49,040 --> 00:22:50,420 Ég ætla að segja eitthvað. 523 00:22:50,420 --> 00:22:52,660 Þá ætla ég að fara á undan og fá band frá notanda 524 00:22:52,660 --> 00:22:53,750 í þeirri næstu línu. 525 00:22:53,750 --> 00:22:55,370 Svo ég ætla að segja það aftur. 526 00:22:55,370 --> 00:22:57,540 Þá er ég að fara að fá annan band frá notandanum. 527 00:22:57,540 --> 00:23:00,390 >> Og tilkynningu, ég sýna eitt af strengi í breytu sem heitir s, og 528 00:23:00,390 --> 00:23:03,040 annar þessara strengi í breytu sem heitir t. 529 00:23:03,040 --> 00:23:07,480 Og nú ætla ég að halda því fram, mjög sæmilega, að ef s jafngildir jafngildir t, 530 00:23:07,480 --> 00:23:08,940 strengir eru þau sömu. 531 00:23:08,940 --> 00:23:09,970 Þú skrifar það sama. 532 00:23:09,970 --> 00:23:11,830 Annars vegar eru strengir ekki það sama. 533 00:23:11,830 --> 00:23:15,440 >> Eftir allt saman, ef við inntak tvö ints, tvær stafir, tvö fljóta, tvö tveggja manna, allir á 534 00:23:15,440 --> 00:23:18,400 þær tegundir gagna sem við höfum talað um svona langt til að bera saman þá - 535 00:23:18,400 --> 00:23:22,070 muna við gert mjög ljóst á meðan síðan að þú gerir það ekki þetta, vegna þess að 536 00:23:22,070 --> 00:23:25,840 einn jafn merki er að sjálfsögðu framsal rekstraraðila. 537 00:23:25,840 --> 00:23:26,820 Svo það væri padda. 538 00:23:26,820 --> 00:23:29,260 >> Við notum jafn jafn skilti, sem reyndar saman 539 00:23:29,260 --> 00:23:31,050 hlutir fyrir sönnum jafnrétti. 540 00:23:31,050 --> 00:23:32,275 En ég kröfu þetta er þrjótur. 541 00:23:32,275 --> 00:23:37,400 Ef ég fer á undan og gera bera núll, og þá ekki bera saman punktur rista núll. 542 00:23:37,400 --> 00:23:39,700 Og ég tegund í, segjum, halló. 543 00:23:39,700 --> 00:23:41,590 Og þá skulum segja halló aftur. 544 00:23:41,590 --> 00:23:46,040 Bókstaflega sama, tölvan krafa Ég gafst mismunandi hluti. 545 00:23:46,040 --> 00:23:47,640 >> Nú kannski ég mistyped bara eitthvað. 546 00:23:47,640 --> 00:23:49,910 Ég tegund nafn mitt að þessu sinni. 547 00:23:49,910 --> 00:23:52,580 Ég meina, halló. 548 00:23:52,580 --> 00:23:54,770 Halló. 549 00:23:54,770 --> 00:23:57,360 Það er mismunandi í hvert einasta sinn. 550 00:23:57,360 --> 00:23:58,430 >> Ja, hvers vegna er það? 551 00:23:58,430 --> 00:24:00,140 Hvað er raunverulega að gerast undir hetta? 552 00:24:00,140 --> 00:24:03,270 Jæja, hvað er raunverulega að gerast undir hetta er band þá 553 00:24:03,270 --> 00:24:07,410 Ég gafst upp á þeim fyrsta skipti til dæmis er orð halló, auðvitað. 554 00:24:07,410 --> 00:24:11,660 En ef við komum þetta undir hetta, muna að 555 00:24:11,660 --> 00:24:13,470 band er í fylki. 556 00:24:13,470 --> 00:24:15,040 Og við höfum sagt eins mikið í fortíðinni. 557 00:24:15,040 --> 00:24:20,200 >> Þannig að ef ég teikna þá fylking svona, ég fara til að tákna eitthvað alveg 558 00:24:20,200 --> 00:24:23,030 svipað og við gerðum í smá stund síðan. 559 00:24:23,030 --> 00:24:25,390 Og það er í raun eitthvað sérstakt hér líka. 560 00:24:25,390 --> 00:24:28,090 Hvað höfum vér ákvarða var á í lok hvers band? 561 00:24:28,090 --> 00:24:30,760 Já, þetta sviga núll, sem er bara leið fulltrúi, 562 00:24:30,760 --> 00:24:33,610 bókstaflega, 00000000. 563 00:24:33,610 --> 00:24:35,680 Átta 0 bitar í röð. 564 00:24:35,680 --> 00:24:37,610 >> Ég veit ekki, hreinskilnislega, hvað er eftir þetta. 565 00:24:37,610 --> 00:24:40,090 Það er bara fullt meira RAM inni á tölvunni minni. 566 00:24:40,090 --> 00:24:40,970 En þetta er fylki. 567 00:24:40,970 --> 00:24:42,260 Við ræddum um fylki áður. 568 00:24:42,260 --> 00:24:45,010 Og við tölum yfirleitt um fylki eins og að vera staðsetning núll, 569 00:24:45,010 --> 00:24:46,580 þá, og síðan tvö. 570 00:24:46,580 --> 00:24:47,950 En það er bara fyrir þægindi. 571 00:24:47,950 --> 00:24:49,380 Og það er alveg ættingi. 572 00:24:49,380 --> 00:24:53,010 >> Þegar þú ert í raun að fá minni frá tölva, það er að sjálfsögðu allir 573 00:24:53,010 --> 00:24:55,450 2 milljarðar sumir stakur bytes, hugsanlega. 574 00:24:55,450 --> 00:24:59,100 Svo í raun undir hetta, allan þennan tíma, já. 575 00:24:59,100 --> 00:25:01,670 Þetta gæti mjög vel verið krappi núll. 576 00:25:01,670 --> 00:25:04,780 En ef þú grafa enn dýpra undir hetta, sem er í raun 577 00:25:04,780 --> 00:25:07,000 takast númer 123. 578 00:25:07,000 --> 00:25:09,150 Þetta er tölu 124. 579 00:25:09,150 --> 00:25:11,040 Þetta er tölu 125.. 580 00:25:11,040 --> 00:25:12,540 >> Og ég vissi ekki skrúfa upp þennan tíma. 581 00:25:12,540 --> 00:25:15,840 Þetta eru nú eitt bæti sundur til hvers? 582 00:25:15,840 --> 00:25:17,930 Hversu stór er bleikju? 583 00:25:17,930 --> 00:25:19,170 A bleikju er bara eitt bæti. 584 00:25:19,170 --> 00:25:20,570 Int er yfirleitt fjögur bæti. 585 00:25:20,570 --> 00:25:24,850 Svo að hvers vegna ég gerði það 123, 127, 131 og svo framvegis. 586 00:25:24,850 --> 00:25:27,560 Nú get ég haldið stærðfræði einfaldari og bara gera auk 1. 587 00:25:27,560 --> 00:25:30,510 Og þetta er nú það sem er raunverulega að gerast á undir hetta. 588 00:25:30,510 --> 00:25:37,760 >> Svo þegar þú lýsa eitthvað eins og this, band s, þetta er í raun - 589 00:25:37,760 --> 00:25:39,170 það kemur í ljós - 590 00:25:39,170 --> 00:25:41,190 bleikju stjörnu. 591 00:25:41,190 --> 00:25:44,640 Star, að sjálfsögðu, þýðir heimilisfang, aka músina. 592 00:25:44,640 --> 00:25:46,200 Svo er það heimilisfang eitthvað. 593 00:25:46,200 --> 00:25:47,510 Hvað er það heimilisfang? 594 00:25:47,510 --> 00:25:47,760 >> Jæja - 595 00:25:47,760 --> 00:25:51,680 Ég er sú eina sem getur séð mjög mikilvægt atriði sem ég er að gera, hugsa eða 596 00:25:51,680 --> 00:25:52,560 Ég er að gera. 597 00:25:52,560 --> 00:25:55,270 Svo band - 598 00:25:55,270 --> 00:25:57,180 The dapur hlutur er ÉG hafa a skjár þarna þar sem ég 599 00:25:57,180 --> 00:25:58,100 gæti hafa séð það. 600 00:25:58,100 --> 00:26:00,990 >> Allt í lagi, svo er band er það Ég lýsti áður. 601 00:26:00,990 --> 00:26:04,600 En það kemur í ljós, þökk sé smá galdur á CS50 bókasafn, allt þetta 602 00:26:04,600 --> 00:26:08,780 tími band hefur bókstaflega verið bleikju stjörnu. 603 00:26:08,780 --> 00:26:11,310 Stjarnan þýðir aftur bendillinn eða heimilisfang. 604 00:26:11,310 --> 00:26:14,180 Sú staðreynd að það er hliðstæðra á Orðið bleikju þýðir að það er 605 00:26:14,180 --> 00:26:15,970 heimilisfang staf. 606 00:26:15,970 --> 00:26:23,100 >> Þannig að ef fá band heitir, og ÉG tegund í H-E-L-L-O, er nú lagt það sem hefur fengið 607 00:26:23,100 --> 00:26:27,330 band bókstaflega verið aftur öll í þetta sinn, jafnvel þó að við höfum frekar 608 00:26:27,330 --> 00:26:29,980 oversimplified heiminn? 609 00:26:29,980 --> 00:26:33,310 Hvað þýðir að fá band í raun aftur sem gildi aftur hennar? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> 123 í þessu tilfelli, til dæmis. 612 00:26:38,720 --> 00:26:42,630 Við höfum áður sagt að fá band einfaldlega skilar streng, röð 613 00:26:42,630 --> 00:26:43,300 stafir. 614 00:26:43,300 --> 00:26:44,790 En það er a hluti af a hvítu lygi. 615 00:26:44,790 --> 00:26:48,010 Leiðin fá band virkar í raun undir hetta er það fær 616 00:26:48,010 --> 00:26:48,930 band frá notandanum. 617 00:26:48,930 --> 00:26:51,530 Það plops stafi sem hann eða hún gerðir í minni. 618 00:26:51,530 --> 00:26:54,680 Það leggur sviga núll í lok af þeim röð af stöfum. 619 00:26:54,680 --> 00:26:57,310 >> En þá hvað er að fá band bókstaflega aftur? 620 00:26:57,310 --> 00:27:02,710 Það skilar bókstaflega veffang mjög fyrstu bæti í vinnsluminni sem 621 00:27:02,710 --> 00:27:04,130 það er notað til að styrkur. 622 00:27:04,130 --> 00:27:07,500 Og það kemur í ljós að með því að koma aftur einn heimilisfang 623 00:27:07,500 --> 00:27:12,120 Fyrsti stafurinn í streng, sem er nóg að finna um alla 624 00:27:12,120 --> 00:27:12,630 band. 625 00:27:12,630 --> 00:27:16,930 >> Með öðrum orðum, fá strengur er ekki með til að fara aftur 123 og 124 og 125. 626 00:27:16,930 --> 00:27:19,950 Það þarf ekki að gefa mér fyrir listi yfir allt bæti því að 627 00:27:19,950 --> 00:27:20,740 band mitt er að nota. 628 00:27:20,740 --> 00:27:22,670 Vegna einn, þá eru þeir allir aftur til baka. 629 00:27:22,670 --> 00:27:28,160 Og tveir, miðað við fyrstu tölu, ég getur fundið út hvar strengurinn endar. 630 00:27:28,160 --> 00:27:29,910 Hvernig? 631 00:27:29,910 --> 00:27:33,490 >> Sérstaða null eðli, sviga núll í lokin. 632 00:27:33,490 --> 00:27:35,430 Svo í öðrum orðum, ef þú fara í kringum - 633 00:27:35,430 --> 00:27:36,530 inni á breytum - 634 00:27:36,530 --> 00:27:41,300 netfang á bleikju, og þú tekur að í lok hvers band, allir 635 00:27:41,300 --> 00:27:45,040 röð af stöfum sem við mennirnir hugsa um strengi, ef þú gera ráð fyrir að 636 00:27:45,040 --> 00:27:48,600 í lok slíkra band það er A sviga núll, þú ert gullna. 637 00:27:48,600 --> 00:27:52,430 Þar sem þú getur alltaf fundið enda streng. 638 00:27:52,430 --> 00:27:54,870 >> Nú hvað er raunverulega þá fara á í þessari áætlun? 639 00:27:54,870 --> 00:27:59,990 Hvers vegna er þetta forrit, bera-0.c, þrjótur? 640 00:27:59,990 --> 00:28:01,690 Hvað er í raun verið saman? 641 00:28:01,690 --> 00:28:02,420 Já? 642 00:28:02,420 --> 00:28:05,000 >> STUDENT: [inaudible]. 643 00:28:05,000 --> 00:28:05,730 >> DAVID Malan: Einmitt. 644 00:28:05,730 --> 00:28:08,350 Það er að bera saman staði á strengi. 645 00:28:08,350 --> 00:28:12,420 Svo ef notandi hefur slegið inn halló einu sinni, eins og ég gerði, minni gæti endað 646 00:28:12,420 --> 00:28:13,430 útlit eins og this. 647 00:28:13,430 --> 00:28:18,210 Ef notandi þá slær í Halló aftur, en með því að kalla að fá band aftur, c er 648 00:28:18,210 --> 00:28:21,800 ekki sérstaklega snjall nema þú kenna það að vera snjall með því að skrifa kóðann. 649 00:28:21,800 --> 00:28:22,430 >> C - 650 00:28:22,430 --> 00:28:23,860 og tölvur almennt - 651 00:28:23,860 --> 00:28:27,370 ef þú slærð í orðinu halló aftur, þú veist hvað þú ert að fara að fá. 652 00:28:27,370 --> 00:28:31,480 Þú ert bara að fara að fá annað array af minni að, já, gerist vera 653 00:28:31,480 --> 00:28:35,510 geyma H-E-L-L-O og svo framvegis. 654 00:28:35,510 --> 00:28:38,240 >> Það er að fara að horfa á það sama við okkur mönnum, en þetta netfang 655 00:28:38,240 --> 00:28:39,460 gæti ekki verið 123. 656 00:28:39,460 --> 00:28:42,470 Það gæti bara svo gerst að stýrikerfi hefur sumir boði 657 00:28:42,470 --> 00:28:45,430 pláss til dæmis á stað - 658 00:28:45,430 --> 00:28:49,820 skulum segja eitthvað handahófskennt, eins og þetta er staðsetning 200. 659 00:28:49,820 --> 00:28:51,620 Og þetta er staðsetning 201. 660 00:28:51,620 --> 00:28:53,060 Og þetta er staðsetning 202. 661 00:28:53,060 --> 00:28:55,730 Við höfum ekki hugmynd um hvar sem er að fara að vera í minni. 662 00:28:55,730 --> 00:28:59,110 >> En hvað þýðir þetta er að það er fara að geyma endanum í s? 663 00:28:59,110 --> 00:29:00,750 Talan 123. 664 00:29:00,750 --> 00:29:04,860 Hvað er að fara að vera geymd í t, í þessu handahófskennda dæmi? 665 00:29:04,860 --> 00:29:06,300 Talan 200. 666 00:29:06,300 --> 00:29:11,410 Og allt það þýðir þá er augljóslega 123 er ekki jafnt 200. 667 00:29:11,410 --> 00:29:14,940 Og svo þetta ef ástand aldrei metur að sanna. 668 00:29:14,940 --> 00:29:18,430 Vegna FÁ band er að nota mismunandi klumpur af minni í hvert sinn. 669 00:29:18,430 --> 00:29:20,360 >> Nú getum við séð þetta aftur í annað dæmi. 670 00:29:20,360 --> 00:29:23,764 Leyfðu mér að fara á undan og opna afrita 0.c. 671 00:29:23,764 --> 00:29:28,770 Ég halda því fram að þetta dæmi er að fara til reyna - en ekki - að afrita tvo strengi 672 00:29:28,770 --> 00:29:29,910 eins og hér segir. 673 00:29:29,910 --> 00:29:31,730 >> Ég ætla að segja eitthvað til notandans. 674 00:29:31,730 --> 00:29:34,490 Ég ætla þá að fara að fá band og kalla það s. 675 00:29:34,490 --> 00:29:36,400 Og nú er ég að gera þetta eftirlit hér. 676 00:29:36,400 --> 00:29:37,990 Við nefndi þetta á meðan bak. 677 00:29:37,990 --> 00:29:42,490 En þegar might fá band skila NULL, annar sérstaka eðli, eða sérstakt 678 00:29:42,490 --> 00:29:45,050 tákn segjum. 679 00:29:45,050 --> 00:29:45,900 Ef það er út af minni. 680 00:29:45,900 --> 00:29:48,970 >> Fyrir dæmi, ef notandinn er í raun vera erfitt og tegundir sem grimmilegur 681 00:29:48,970 --> 00:29:51,220 fjölda stafa í því lyklaborð og smellir á Enter. 682 00:29:51,220 --> 00:29:54,580 Ef þessi fjöldi stafi bara get ekki passa í vinnsluminni fyrir hvað brjálaður 683 00:29:54,580 --> 00:29:57,820 Ástæðan, vel að fá band gæti mjög vel aftur null. 684 00:29:57,820 --> 00:30:01,080 >> Eða ef forritið þitt sjálft er að gera a einhver fjöldi um aðra hluti og það er bara 685 00:30:01,080 --> 00:30:03,790 ekki nóg minni fyrir fá band til að ná árangri, gæti það enda 686 00:30:03,790 --> 00:30:05,240 upp aftur null. 687 00:30:05,240 --> 00:30:07,160 En við skulum vera nákvæmari um hvað þetta er. 688 00:30:07,160 --> 00:30:10,280 Hvað er gögn gerð S er í raun? 689 00:30:10,280 --> 00:30:11,610 Char stjörnu. 690 00:30:11,610 --> 00:30:14,560 >> Svo kemur í ljós nú getum afhýða aftur lag af null. 691 00:30:14,560 --> 00:30:17,500 Skrúfjárn út, null er - já, augljóslega sérstakt tákn. 692 00:30:17,500 --> 00:30:19,190 En hvað er það í raun? 693 00:30:19,190 --> 00:30:25,220 Raunverulega, null er bara tákn sem við menn nota til að tákna núll og vel. 694 00:30:25,220 --> 00:30:29,010 >> Svo höfundar C og tölvur almennt, ákvað árum 695 00:30:29,010 --> 00:30:30,010 að, þú veist hvað. 696 00:30:30,010 --> 00:30:34,850 Hvers vegna eigum við ekki að tryggja að enginn notandi gögn er alltaf, alltaf, alltaf 697 00:30:34,850 --> 00:30:36,730 geymd á núll bless? 698 00:30:36,730 --> 00:30:39,610 Í raun, jafnvel í handahófi dæmi mínu áður, gerði ég ekki að byrja tala við 699 00:30:39,610 --> 00:30:40,390 bæti við núll. 700 00:30:40,390 --> 00:30:41,540 Ég byrjaði á einn. 701 00:30:41,540 --> 00:30:44,950 Vegna þess að ég vissi að fólk í heiminum hafa ákveðið að panta núll 702 00:30:44,950 --> 00:30:47,970 bæti í RAM neinum sem eitthvað sérstakt. 703 00:30:47,970 --> 00:30:52,020 >> Ástæðan sé, hvenær sem þú vilt merki um að eitthvað hafi farið úrskeiðis 704 00:30:52,020 --> 00:30:55,960 með tilliti til viðtakandi, aftur þú null - annars þekkt sem núll - 705 00:30:55,960 --> 00:30:59,410 og vegna þess að þú veist að það er engin legit gögn á heimilisfang núll, greinilega 706 00:30:59,410 --> 00:31:00,400 sem þýðir villu. 707 00:31:00,400 --> 00:31:04,080 Og það er þess vegna sem við, með því að venju, athuga for null og aftur eitthvað 708 00:31:04,080 --> 00:31:06,260 eins og einn í þeim tilvikum. 709 00:31:06,260 --> 00:31:09,300 >> Þannig að ef við fletta niður núna, þetta er bara þá sumir villuprófun, bara ef 710 00:31:09,300 --> 00:31:10,610 eitthvað fór úrskeiðis með [? tryggingu?] 711 00:31:10,610 --> 00:31:13,470 með öllu og hætta forritið því aftur snemma. 712 00:31:13,470 --> 00:31:19,030 Þessi lína nú mætti ​​endurskrifa eins og þetta, sem þýðir hvað? 713 00:31:19,030 --> 00:31:23,155 Á vinstri hönd hlið, gefa mér annan bendillinn að staf, og kalla það t. 714 00:31:23,155 --> 00:31:26,935 Hvað er ég að geyma inni t, byggt á þessum eina línu af kóða? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> Ég er að geyma staðsetningu. 717 00:31:32,170 --> 00:31:34,742 Sérstaklega staðsetningin sem var í s. 718 00:31:34,742 --> 00:31:39,000 Svo ef notandi hefur slegið í halló, og sem fyrst gerist halló til enda 719 00:31:39,000 --> 00:31:42,567 hér, þá er talan 123 fara að koma til baka frá fá 720 00:31:42,567 --> 00:31:43,810 band og geymdar - 721 00:31:43,810 --> 00:31:44,780 eins og ég sagði áðan - 722 00:31:44,780 --> 00:31:45,440 í s. 723 00:31:45,440 --> 00:31:50,560 >> Þegar ég lýsi nú annað bendi til A bleikju og kalla það t, hvaða tala er 724 00:31:50,560 --> 00:31:53,940 bókstaflega að fara að enda í T samkvæmt sögunni? 725 00:31:53,940 --> 00:31:55,420 Svo 123. 726 00:31:55,420 --> 00:32:00,310 >> Svo tæknilega nú bæði s og T eru benda til nákvæmrar 727 00:32:00,310 --> 00:32:02,410 sömu klumpur af minni. 728 00:32:02,410 --> 00:32:06,140 Svo taka það sem ég ætla að gera núna til að sanna að þetta forrit er þrjótur. 729 00:32:06,140 --> 00:32:08,820 >> Fyrst ætla ég að halda því fram, með prenta f capitalizing 730 00:32:08,820 --> 00:32:10,080 afrit af the band. 731 00:32:10,080 --> 00:32:11,660 Svo ég ætla að gera smá villuprófun. 732 00:32:11,660 --> 00:32:12,160 Ég ætla að ganga úr skugga um. 733 00:32:12,160 --> 00:32:16,710 Við skulum vera viss um að band t er á kosti stærri en núll í lengd, 734 00:32:16,710 --> 00:32:19,190 þannig að það er einhver persóna úti að í raun nýta. 735 00:32:19,190 --> 00:32:22,840 >> Og þá þú might muna þetta frá fyrri dæmum. 736 00:32:22,840 --> 00:32:25,630 2 efri - sem er í The ctype.h skrá. 737 00:32:25,630 --> 00:32:30,800 T krappi núll gefur mér núll eðli band t. 738 00:32:30,800 --> 00:32:34,360 Og 2 efri af sama verðmæti, auðvitað breytir það í hástafi. 739 00:32:34,360 --> 00:32:38,230 >> Svo innsær, þetta hápunktur línu af kóða er capitalizing fyrsta 740 00:32:38,230 --> 00:32:40,250 bréf í t. 741 00:32:40,250 --> 00:32:44,485 En það er ekki hagnast, innsæi, fyrsti stafurinn í s. 742 00:32:44,485 --> 00:32:48,130 En ef þú ert að hugsa fram í tímann, er það sem ég um að sjá þegar ég keyrt þetta forrit 743 00:32:48,130 --> 00:32:54,220 og prenta út bæði upprunalega, s, og svokölluð afrita, T? 744 00:32:54,220 --> 00:32:55,350 >> Þeir eru í raun að fara til vera the sami. 745 00:32:55,350 --> 00:32:56,600 Og hvers vegna eru þeir að fara að vera eins? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 Þeir eru báðir benda til nákvæmlega það sama. 748 00:33:01,020 --> 00:33:01,610 Svo skulum gera þetta. 749 00:33:01,610 --> 00:33:03,160 >> Gerðu afrit núll. 750 00:33:03,160 --> 00:33:04,070 Það safnar lagi. 751 00:33:04,070 --> 00:33:06,500 Leyfðu mér að hlaupa afrita núll. 752 00:33:06,500 --> 00:33:10,110 Leyfðu mér að slá eitthvað eins halló í allt lágstafir högg þá inn. 753 00:33:10,110 --> 00:33:16,520 Og það heldur því fram að bæði upprunalega s og afrit eru örugglega eins. 754 00:33:16,520 --> 00:33:17,920 >> Svo hvað raunverulega gerðist hér? 755 00:33:17,920 --> 00:33:20,100 Leyfðu mér að gera annað uppkast þessa mynd bara að segja sögu í 756 00:33:20,100 --> 00:33:21,340 örlítið mismunandi hátt. 757 00:33:21,340 --> 00:33:26,060 Hvað er raunverulega að gerast undir hlutanum hetta þegar ég lýsa eitthvað eins 758 00:33:26,060 --> 00:33:30,410 bleikju byrja s, eða band s, Ég er að fá músina - 759 00:33:30,410 --> 00:33:33,090 sem gerist að vera fjórir bœti í CS50 tæki 760 00:33:33,090 --> 00:33:34,410 og í fullt af tölvum. 761 00:33:34,410 --> 00:33:36,008 Og ég ætla að kalla þessa s. 762 00:33:36,008 --> 00:33:39,810 Og þetta hefur nú sumir óþekkt gildi. 763 00:33:39,810 --> 00:33:43,900 >> Þegar þú lýsa breytu, nema þú sjálfur setti gildi þar, hver 764 00:33:43,900 --> 00:33:44,570 veit hvað er þar. 765 00:33:44,570 --> 00:33:48,110 Það gæti verið einhver af handahófi röð bits frá fyrri framkvæmd. 766 00:33:48,110 --> 00:33:52,490 Svo þegar ég, gera í samræmi mínu kóða fá band, og þá geyma aftur 767 00:33:52,490 --> 00:33:54,800 gildi í s fá band einhvern veginn - 768 00:33:54,800 --> 00:33:58,520 og við munum að lokum afhýða aftur hvernig fá band virkar einhvern veginn úthlutar að 769 00:33:58,520 --> 00:34:00,480 array sem sennilega lítur svolítið eins og þetta. 770 00:34:00,480 --> 00:34:05,390 H-E-L-L-O, sviga núll. 771 00:34:05,390 --> 00:34:09,510 >> Skulum gera ráð fyrir að þetta er heimilisfang 123 bara fyrsta samræmi. 772 00:34:09,510 --> 00:34:13,000 Svo fá band aftur, í auðkenndur línu þar, skilar það 773 00:34:13,000 --> 00:34:15,000 tala við sögðum, 123. 774 00:34:15,000 --> 00:34:17,420 Svo fer það virkilega inni s hér? 775 00:34:17,420 --> 00:34:26,590 >> Jæja, hvað raunverulega fer inni S er 123. 776 00:34:26,590 --> 00:34:29,250 En satt, ég er að fá smá rugla með öllum þessum talna, 777 00:34:29,250 --> 00:34:30,320 allar þessar handahófi númer. 778 00:34:30,320 --> 00:34:32,290 123, 124, 127. 779 00:34:32,290 --> 00:34:34,570 Þannig að við skulum í raun einfalda heimurinn svolítið. 780 00:34:34,570 --> 00:34:38,800 >> Þegar við tölum um ábendingum, hreinskilnislega, að okkur mönnum, sem Heck er ekki sama hvar 781 00:34:38,800 --> 00:34:39,870 hlutir eru í minni? 782 00:34:39,870 --> 00:34:41,080 Það er alveg handahófskennt. 783 00:34:41,080 --> 00:34:43,370 Það er að fara að ráðast á hvernig mikið vinnsluminni sem notandinn hefur. 784 00:34:43,370 --> 00:34:46,590 Það er að fara að ráðast á þegar í dag þú keyrir forritið, ef til vill, og 785 00:34:46,590 --> 00:34:48,250 hvaða inntak sem notandinn gefur þér. 786 00:34:48,250 --> 00:34:50,060 Við erum bústað á máli upplýsingar. 787 00:34:50,060 --> 00:34:54,230 >> Svo skulum ágrip burtu og segja að, þegar þú keyrir línu af kóða eins og þetta, 788 00:34:54,230 --> 00:34:57,320 bleikju stjörnu s fær aftur Verðmæti FÁ band. 789 00:34:57,320 --> 00:35:02,720 Hvers vegna eigum við ekki í staðinn bara draga það sem við halda starf músina eins og það er 790 00:35:02,720 --> 00:35:04,140 benda á eitthvað? 791 00:35:04,140 --> 00:35:07,000 Svo ég halda nú að s upp það er bendiprik - 792 00:35:07,000 --> 00:35:08,480 undir hetta það netfang. 793 00:35:08,480 --> 00:35:11,330 En það er bara að benda á að fyrsta bæti í 794 00:35:11,330 --> 00:35:12,780 band sem hefur verið skilað. 795 00:35:12,780 --> 00:35:16,710 >> Ef ég skila nú kóðann hér, hvað er að gerast á þessari línu? 796 00:35:16,710 --> 00:35:20,020 Jæja, í þessari auðkenndur línu nú, Ég lýsa greinilega annað 797 00:35:20,020 --> 00:35:21,070 breytu sem kallast t. 798 00:35:21,070 --> 00:35:25,700 En það er líka músina, þannig að ég ætla að draga það sem, í orði, nákvæmlega 799 00:35:25,700 --> 00:35:26,710 sama stærð kassi. 800 00:35:26,710 --> 00:35:28,160 Og ég ætla að kalla það t. 801 00:35:28,160 --> 00:35:33,500 >> Og nú ef við förum aftur til kóðann aftur, þegar ég geyma s inni í t, 802 00:35:33,500 --> 00:35:36,920 hvað er ég tæknilega setja inni t? 803 00:35:36,920 --> 00:35:39,350 Jæja tæknilega, þetta var númer 123. 804 00:35:39,350 --> 00:35:42,270 Svo í raun ætti ég að vera að skrifa fjölda 123 er komið. 805 00:35:42,270 --> 00:35:43,900 En við skulum taka það hærra stigi. 806 00:35:43,900 --> 00:35:48,090 t, ef það er bara músina, innsær er bara þessi. 807 00:35:48,090 --> 00:35:49,800 Það er allt sem er verið að geymd þar. 808 00:35:49,800 --> 00:35:54,970 >> Svo nú á síðustu áhugaverðum línum af kóða, þegar ég fer í raun um 809 00:35:54,970 --> 00:36:00,680 capitalizing núll staf í t, hvað er að gerast? 810 00:36:00,680 --> 00:36:06,310 Jæja, T krappi núll er nú bendir hvað eðli, væntanlega? 811 00:36:06,310 --> 00:36:07,460 >> Það er benda til h. 812 00:36:07,460 --> 00:36:08,870 Þar sem T krappi núll - 813 00:36:08,870 --> 00:36:12,490 muna, þetta er gamall setningafræði. T krappi núll þýðir bara ef t er a band, T 814 00:36:12,490 --> 00:36:15,590 krappi núll þýðir að fá núll eðli í þeim styrk. 815 00:36:15,590 --> 00:36:18,650 Svo það sem raunverulega þýðir er að fara á þetta fylki - 816 00:36:18,650 --> 00:36:21,520 og já, þetta gæti verið 123, þetta gæti verið 124. 817 00:36:21,520 --> 00:36:22,790 En það er allt ættingja, man. 818 00:36:22,790 --> 00:36:25,640 Alltaf þegar að tala um fjölda, höfum við Kosturinn við að tala um 819 00:36:25,640 --> 00:36:27,000 miðað vísitölur. 820 00:36:27,000 --> 00:36:31,120 >> Og svo nú getum við bara gera ráð sem T krappi núll er h. 821 00:36:31,120 --> 00:36:35,090 Svo ef ég kalla 2 efri á það, hvað það er raun að gera er að hagnast 822 00:36:35,090 --> 00:36:38,290 lágstafir klst til hástafi H. En auðvitað, hvað er s? 823 00:36:38,290 --> 00:36:41,010 Það er að benda á sama fjári band. 824 00:36:41,010 --> 00:36:44,200 >> Svo er þetta allt sem er verið að gerast í þessum kóða svo langt. 825 00:36:44,200 --> 00:36:45,960 Svo er það þá vísbendingu? 826 00:36:45,960 --> 00:36:48,300 Hvernig lögum við þessi tvö vandamál? 827 00:36:48,300 --> 00:36:50,870 Hvernig berðu við raunverulegum strengi? 828 00:36:50,870 --> 00:36:53,720 >> Jæja innsæi, hvernig væri þú ferð um að bera saman tvö 829 00:36:53,720 --> 00:36:55,090 strengir fyrir sönnum jafnrétti? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> Hvað þýðir það ef tveir strengir eru jafnir? 832 00:37:00,750 --> 00:37:04,330 Greinilega ekki að heimilisföng þeirra eru jafnt í minni, vegna þess að það er lágt 833 00:37:04,330 --> 00:37:06,590 stigi framkvæmd smáatriði. 834 00:37:06,590 --> 00:37:08,360 Allar persónurnar eru þær sömu. 835 00:37:08,360 --> 00:37:12,810 Svo láta mig leggja til, og láta mig kynna í útgáfu eitt af compare.c 836 00:37:12,810 --> 00:37:14,970 hér, svo bera-1.c. 837 00:37:14,970 --> 00:37:19,590 >> Leyfðu mér að leggja til að við fáum enn bendillinn heitir s, og geyma í það 838 00:37:19,590 --> 00:37:20,610 skilagildi fá band. 839 00:37:20,610 --> 00:37:21,750 Skulum gera það sama með t. 840 00:37:21,750 --> 00:37:23,230 Svo er ekkert af kóða öðruvísi. 841 00:37:23,230 --> 00:37:25,420 Ég ætla að bæta smá meira villuprófun núna. 842 00:37:25,420 --> 00:37:29,390 Svo nú er að við erum svona flögnun baka þetta lag í CS50 af hvaða band 843 00:37:29,390 --> 00:37:33,520 reyndar er, þurfum við að vera meira endaþarms um að tryggja að við ekki misnota 844 00:37:33,520 --> 00:37:35,330 Vitlaus gildi eins null. 845 00:37:35,330 --> 00:37:36,440 >> Þannig að ég ætla bara að fara að athuga. 846 00:37:36,440 --> 00:37:41,490 Ef s er ekki jafn null og t ekki jafnt null, sem þýðir að við erum í lagi. 847 00:37:41,490 --> 00:37:44,460 Fá strengur ekki skrúfa upp getting annaðhvort þeirra strengi. 848 00:37:44,460 --> 00:37:51,270 Og þú getur kannski giska nú, hvað gerir STR CMP gera væntanlega? 849 00:37:51,270 --> 00:37:52,000 Band saman. 850 00:37:52,000 --> 00:37:55,470 >> Svo ef þú hefur forritað í Java áður, þetta er eins og equals aðferðin í 851 00:37:55,470 --> 00:37:56,490 String klasinn. 852 00:37:56,490 --> 00:37:57,890 En fyrir þá sem hafa ekki forritað áður, 853 00:37:57,890 --> 00:37:59,320 þetta er bara c-virka. 854 00:37:59,320 --> 00:38:02,180 Það gerist að koma í skrá sem heitir string.h. 855 00:38:02,180 --> 00:38:03,830 Það er þar sem það er lýst. 856 00:38:03,830 --> 00:38:05,110 >> Og band bera - 857 00:38:05,110 --> 00:38:07,530 Ég gleymi reyndar notkun þess, en aldrei huga að. 858 00:38:07,530 --> 00:38:10,470 Muna að við getum gert maður, hrærið saman. 859 00:38:10,470 --> 00:38:12,590 Og þetta er að fara að koma upp Linux forritari handbók. 860 00:38:12,590 --> 00:38:14,060 Og það er satt, smá dulinn. 861 00:38:14,060 --> 00:38:15,270 En ég get séð hér að, svarið. 862 00:38:15,270 --> 00:38:17,570 Ég verð að fela string.h. 863 00:38:17,570 --> 00:38:20,590 >> Og það segir hér undir lýsingu, "the band Berðu saman virka saman 864 00:38:20,590 --> 00:38:24,560 tveir strengir S1 og S2. "Og S1 og S2 eru greinilega tveir 865 00:38:24,560 --> 00:38:26,120 rök liðin inn 866 00:38:26,120 --> 00:38:28,650 Ég í raun ekki muna hvað const er, en nú eftir - 867 00:38:28,650 --> 00:38:31,480 og þú gætir hafa séð þetta þegar þegar þú hefur notað manninn síður ef þú 868 00:38:31,480 --> 00:38:32,390 hafa það allt - 869 00:38:32,390 --> 00:38:36,220 að bleikju stjarna er bara samheiti með streng. 870 00:38:36,220 --> 00:38:40,440 >> Svo ber það tveir strengir, S1 og S2, og það skilar heiltölu minna 871 00:38:40,440 --> 00:38:44,930 en eða jafnt og eða hærra en núll ef S1 er að finna, hver um sig, til að vera 872 00:38:44,930 --> 00:38:47,450 minna en, eða passa, eða vera meiri en S2. 873 00:38:47,450 --> 00:38:51,220 Það er bara mjög flókið leið til að segja að strengur bera ávöxtun 874 00:38:51,220 --> 00:38:55,760 núll ef tveir strengir eru innsær eins, staf fyrir 875 00:38:55,760 --> 00:38:57,120 staf fyrir staf. 876 00:38:57,120 --> 00:38:59,970 >> Það skilar neikvæð tala, ef s, í stafrófsröð, er ætlað 877 00:38:59,970 --> 00:39:01,010 að koma fyrir t. 878 00:39:01,010 --> 00:39:05,300 Eða skilar jákvæð tala ef s er ætlað að koma á eftir t 879 00:39:05,300 --> 00:39:06,170 stafrófsröð. 880 00:39:06,170 --> 00:39:08,360 Svo með þessari einföldu aðgerð, gæti þú, til dæmis, raða 881 00:39:08,360 --> 00:39:09,770 allt fullt af orðum? 882 00:39:09,770 --> 00:39:13,984 >> Svo í þessari nýju útgáfu, ég er að fara að fara á undan og gera compare1. 883 00:39:13,984 --> 00:39:15,750 Punktur rista bera einn. 884 00:39:15,750 --> 00:39:18,030 Ég tegund í halló í öllum lágstöfum. 885 00:39:18,030 --> 00:39:20,300 Ég ætla að slá í halló í öllum lágstöfum aftur. 886 00:39:20,300 --> 00:39:23,340 Og sem betur fer nú áttar það Ég gafst það sama. 887 00:39:23,340 --> 00:39:27,520 >> Á sama tíma, ef ég tegund í halló í neðri tilfelli og HELLO með hástöfum og 888 00:39:27,520 --> 00:39:29,710 bera saman þá, slegið I mismunandi hlutir. 889 00:39:29,710 --> 00:39:32,530 Vegna þess að ekki aðeins eru heimilisföng mismunandi, en við erum að bera saman 890 00:39:32,530 --> 00:39:35,350 mismunandi stafir aftur og aftur. 891 00:39:35,350 --> 00:39:37,320 >> Jæja við skulum fara og festa einn Önnur vandamál núna. 892 00:39:37,320 --> 00:39:41,590 Leyfðu mér að opna útgáfu eitt af afrita, sem nú fjallar 893 00:39:41,590 --> 00:39:42,900 þetta mál eins og hér segir. 894 00:39:42,900 --> 00:39:45,650 Og þetta er að fara að líta svolítið flóknari. 895 00:39:45,650 --> 00:39:49,320 En ef þú hugsa um hvað vandamálið við þarf að leysa, vonandi mun þetta vera 896 00:39:49,320 --> 00:39:51,870 hreinsa í bara smá stund núna. 897 00:39:51,870 --> 00:39:57,280 >> Þannig að þetta fyrsta lína, bleikju byrja t, í skilmálum leikmaður gæti einhver lagt 898 00:39:57,280 --> 00:39:59,450 hvað þessi lína hér þýðir? 899 00:39:59,450 --> 00:40:01,050 Char stjörnu t, hvað er að gera? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> Gott. 902 00:40:07,210 --> 00:40:09,500 Búa til bendi á sumum blettur í minni. 903 00:40:09,500 --> 00:40:10,930 Og láta mig hreinsa hann svolítið. 904 00:40:10,930 --> 00:40:17,180 Lýsa yfir breytu sem mun geyma heimilisfang sumir bleikju í minni, bara 905 00:40:17,180 --> 00:40:18,480 að vera svolítið meira viðeigandi. 906 00:40:18,480 --> 00:40:21,210 >> OK, svo nú á hægri hönd, hef ég aldrei séð einn af þessum aðgerðum 907 00:40:21,210 --> 00:40:22,660 áður, malloc. 908 00:40:22,660 --> 00:40:26,980 En hvað gæti það þýtt? 909 00:40:26,980 --> 00:40:28,050 Úthlutun minni. 910 00:40:28,050 --> 00:40:29,410 Minni úthlutun. 911 00:40:29,410 --> 00:40:33,050 >> Svo kemur í ljós, allt þar til nú, við hafa í raun ekki haft öflug leið 912 00:40:33,050 --> 00:40:36,210 spyrja stýrikerfi, gefið mér minni. 913 00:40:36,210 --> 00:40:39,980 Frekar höfum við nú aðgerð sem kallast malloc sem er einmitt þessi. 914 00:40:39,980 --> 00:40:42,960 Jafnvel þó að þetta sé frekar mikil truflun núna, eftir því í 915 00:40:42,960 --> 00:40:46,200 milli tveggja svigum er bara að fara að vera tala. 916 00:40:46,200 --> 00:40:48,510 Þar sem ég hef slegið í spurningunni merki geta verið margar. 917 00:40:48,510 --> 00:40:51,020 >> Og þessi tala þýðir, gefa mér 10 bæti. 918 00:40:51,020 --> 00:40:52,320 Gefa mér 20 bæti. 919 00:40:52,320 --> 00:40:53,820 Gefðu mér 100 bæti. 920 00:40:53,820 --> 00:40:56,500 Og malloc mun gera sitt besta til að spyrja stýrikerfi - 921 00:40:56,500 --> 00:40:57,630 Linux, í þessu tilviki - 922 00:40:57,630 --> 00:40:59,630 hey, eru 100 bæti þeirra af vinnsluminni í boði? 923 00:40:59,630 --> 00:41:04,320 Ef svo er, aftur þá bæti við mig með skil á netfangið sem um 924 00:41:04,320 --> 00:41:06,610 þá bæti, kannski? 925 00:41:06,610 --> 00:41:07,610 The mjög fyrstur einn. 926 00:41:07,610 --> 00:41:10,460 >> Svo hér líka - og þetta er ríkjandi í C, á meðan þú ert 927 00:41:10,460 --> 00:41:11,680 takast með heimilisfang? 928 00:41:11,680 --> 00:41:15,830 Þú ert næstum alltaf að takast á við fyrsta tölu, sama hversu stór 929 00:41:15,830 --> 00:41:19,490 bútur af minni sem þú ert að afhent aftur, svo að segja. 930 00:41:19,490 --> 00:41:20,880 >> Svo skulum kafa í hér. 931 00:41:20,880 --> 00:41:23,940 Ég er að reyna að úthluta hvernig margir bytes, nákvæmlega? 932 00:41:23,940 --> 00:41:24,080 Jæja. 933 00:41:24,080 --> 00:41:26,090 Band lengd s - við skulum gera áþreifanleg dæmi. 934 00:41:26,090 --> 00:41:30,700 Ef s er halló, H-E-L-L-O, hvað er band lengd s, vitanlega? 935 00:41:30,700 --> 00:41:32,010 Svo það er fimm. 936 00:41:32,010 --> 00:41:34,590 En ég er að gera plús 1 á því, hvers vegna? 937 00:41:34,590 --> 00:41:37,700 Hvers vegna vil ég sex bæti í stað þess að fimm? 938 00:41:37,700 --> 00:41:38,790 The null eðli. 939 00:41:38,790 --> 00:41:41,210 >> Ég vil ekki að fara burt þetta sérstakt null eðli. 940 00:41:41,210 --> 00:41:45,160 Vegna þess að ef ég geri afrit af Halló og bara gera H-E-L-L-O, en ég ekki setja 941 00:41:45,160 --> 00:41:50,160 að sérstakt eðli, the tölva gæti ekki hafa, við tækifæri, a sviga 942 00:41:50,160 --> 00:41:51,730 núll þarna fyrir mig. 943 00:41:51,730 --> 00:41:55,570 Og svo ef ég er að reyna að reikna út lengd afrita, gæti ég held að 944 00:41:55,570 --> 00:41:59,360 það er 20 stafir að lengd, eða milljón stafir að lengd ef ég bara aldrei gerst 945 00:41:59,360 --> 00:42:01,050 til högg a sviga núll. 946 00:42:01,050 --> 00:42:05,780 >> Þannig að við þurfum sex bæti að geyma H-E-L-L-O, sviga núll. 947 00:42:05,780 --> 00:42:07,870 Og þá er þetta bara að vera frábær endaþarms. 948 00:42:07,870 --> 00:42:10,700 Segjum sem svo að ég gleymi hvað á stærð við bleikju er. 949 00:42:10,700 --> 00:42:12,020 Við höldum að segja eitt bæti hennar. 950 00:42:12,020 --> 00:42:12,860 Og það er yfirleitt. 951 00:42:12,860 --> 00:42:15,425 Fræðilega séð gæti það verið eitthvað mismunandi, á annarri Mac eða 952 00:42:15,425 --> 00:42:16,250 mismunandi PC. 953 00:42:16,250 --> 00:42:19,650 >> Svo kemur í ljós að það er þetta stjórnandi kallað sizeof að ef þú gefa það í 954 00:42:19,650 --> 00:42:22,680 heiti gögn tegund - eins bleikju, eða int, eða fljóta - 955 00:42:22,680 --> 00:42:26,930 það mun segja þér, virk, hversu margir bæti á bleikju tekur upp á þetta 956 00:42:26,930 --> 00:42:28,090 sérstakur tölva. 957 00:42:28,090 --> 00:42:31,360 >> Svo er þetta í raun bara eins og að segja sinnum 1 eða 958 00:42:31,360 --> 00:42:32,440 sinnum neitt. 959 00:42:32,440 --> 00:42:36,340 En ég ætla að gera það bara til að vera frábær endaþarms, það bara í tilfelli bleikju ólíkt 960 00:42:36,340 --> 00:42:40,610 á tölvunni þinni á móti mitt, þannig stærðfræði er alltaf að fara að kíkja. 961 00:42:40,610 --> 00:42:43,720 >> Loksins, niður hér ég athuga for null, sem er alltaf gott - aftur, 962 00:42:43,720 --> 00:42:44,920 hvenær við erum að fást við ábendingum. 963 00:42:44,920 --> 00:42:47,520 Ef malloc var ekki fær um að gefa mér sex byes - sem er 964 00:42:47,520 --> 00:42:49,210 ólíklegt, en bara ef - 965 00:42:49,210 --> 00:42:50,730 aftur einn strax. 966 00:42:50,730 --> 00:42:53,290 Og nú, fara fram í tímann og afrita band sem hér segir. 967 00:42:53,290 --> 00:42:57,240 Og þetta er kunnuglegt setningafræði, að vísu í öðru hlutverki. 968 00:42:57,240 --> 00:43:01,210 >> Ég ætla að fara á undan og fá band lengd s og geyma það í n. 969 00:43:01,210 --> 00:43:06,620 Ég ætla þá að fara að iterate frá ég jafningjar núll til og með n, 970 00:43:06,620 --> 00:43:08,410 meiri en eða jafnt og. 971 00:43:08,410 --> 00:43:13,540 Svo að á hverju endurtekning, ég setti ith eðli s í ith 972 00:43:13,540 --> 00:43:15,380 eðli t. 973 00:43:15,380 --> 00:43:18,190 >> Svo hvað er raunverulega að gerast undir hetta hér? 974 00:43:18,190 --> 00:43:22,140 Jæja ef þetta, til dæmis, er s - 975 00:43:22,140 --> 00:43:26,400 og ég hef slegið í orðinu H-E-L-L-O og það er sviga núll. 976 00:43:26,400 --> 00:43:29,020 Og aftur, þetta er s benda hér. 977 00:43:29,020 --> 00:43:30,830 Og hér er nú t. 978 00:43:30,830 --> 00:43:34,860 >> Og þetta er að benda nú til afrit af minni, ekki satt? 979 00:43:34,860 --> 00:43:37,340 Malloc hefur gefið mér allt klumpur af minni. 980 00:43:37,340 --> 00:43:41,440 Ég veit ekki í upphafi hvað er í einhverjum af þessum stöðum. 981 00:43:41,440 --> 00:43:44,340 Þannig að ég ætla að hugsa um þetta sem allt fullt af spurningarmerkjum. 982 00:43:44,340 --> 00:43:50,190 >> En um leið og ég byrja að lykkja frá núlli á upp í gegnum lengd s, t 983 00:43:50,190 --> 00:43:52,790 krappi núll og t krappi 1 - 984 00:43:52,790 --> 00:43:55,080 og ég ætla að setja þetta núna á kostnaður - 985 00:43:55,080 --> 00:44:04,190 T krappi núll og s krappi núll meina að ég ætla að vera að afrita 986 00:44:04,190 --> 00:44:09,875 iteratively klst í hér, E-L-L-O. Plús, því ég gerði ásamt 987 00:44:09,875 --> 00:44:12,370 1, sviga núll. 988 00:44:12,370 --> 00:44:19,060 >> Svo nú er að ræða bera saman-1.c, í lok, ef ég prenta út 989 00:44:19,060 --> 00:44:24,760 fjármögnun t, ættum við sjá að s er óbreytt. 990 00:44:24,760 --> 00:44:26,090 Leyfðu mér að fara á undan núna og gera þetta. 991 00:44:26,090 --> 00:44:28,630 Svo gera copy1. 992 00:44:28,630 --> 00:44:30,860 Punktur rista copy1. 993 00:44:30,860 --> 00:44:33,670 Ég ætla að slá í halló, Enter. 994 00:44:33,670 --> 00:44:37,430 Og nú eftir, aðeins afrit hefur verið eignfærður. 995 00:44:37,430 --> 00:44:40,890 Þar sem ég hef sannarlega tvær klumpur af minni. 996 00:44:40,890 --> 00:44:44,390 >> Því miður getur þú gera sumir laglegur slæmur og laglegur hættulegt hlutur hér. 997 00:44:44,390 --> 00:44:49,290 Leyfðu mér að draga upp dæmi hér nú, sem gefur okkur dæmi um nokkrar 998 00:44:49,290 --> 00:44:51,540 mismunandi línur. 999 00:44:51,540 --> 00:44:56,040 Svo bara innsær hér, fyrsta línan af kóða, int stjörnu x, er lýsa 1000 00:44:56,040 --> 00:44:57,340 breytu sem heitir x. 1001 00:44:57,340 --> 00:44:58,810 Og hvað er gögn tegund þeirrar breytu? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 Hvað er gögn tegund þeirrar breytu? 1004 00:45:04,290 --> 00:45:06,980 Það var ekki cliffhanger. 1005 00:45:06,980 --> 00:45:08,350 >> Gögnin tegund er int stjörnu. 1006 00:45:08,350 --> 00:45:12,600 Svo hvað þýðir það? x mun geyma veffang int. 1007 00:45:12,600 --> 00:45:13,520 Einfaldur eins og þessi. 1008 00:45:13,520 --> 00:45:16,220 Y er að fara að geyma heimilisfang heiltala. 1009 00:45:16,220 --> 00:45:18,390 Hvað er þriðja línan af kóða gera þarna? 1010 00:45:18,390 --> 00:45:21,850 Það er úthlutun hversu margir bytes, líklega? 1011 00:45:21,850 --> 00:45:22,350 Fjórir. 1012 00:45:22,350 --> 00:45:25,460 Vegna þess að stærð heiltala er almennt fjórir, malloc fjögurra gefur 1013 00:45:25,460 --> 00:45:29,950 mig aftur veffang klumpur af minni, fyrsta bæti Hvers er 1014 00:45:29,950 --> 00:45:32,110 geymd nú í x. 1015 00:45:32,110 --> 00:45:34,410 >> Nú erum við að flytja smá fljótt. 1016 00:45:34,410 --> 00:45:35,760 Star x þýðir hvað? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 Það þýðir að fara á þetta netfang og setja það númer þar? 1019 00:45:42,590 --> 00:45:43,870 Setja númer 42 þar. 1020 00:45:43,870 --> 00:45:47,590 Star Y þýðir að fara á það sem er á y og setja númerið 13 þar. 1021 00:45:47,590 --> 00:45:48,600 >> En bíddu í eina mínútu. 1022 00:45:48,600 --> 00:45:51,640 Hvað er í y í augnablikinu? 1023 00:45:51,640 --> 00:45:54,950 Hvaða netfang er y geymslu? 1024 00:45:54,950 --> 00:45:55,770 Við vitum ekki, ekki satt? 1025 00:45:55,770 --> 00:45:59,230 Við höfum aldrei einu sinni að nota verkefni rekstraraðili felur y. 1026 00:45:59,230 --> 00:46:03,370 Svo Y lýst sem á annarri línu númer er bara sorp gildi, stór 1027 00:46:03,370 --> 00:46:04,760 spurningarmerki svo að segja. 1028 00:46:04,760 --> 00:46:07,230 Það gæti verið að benda handahófi við eitthvað í minni, sem 1029 00:46:07,230 --> 00:46:08,340 er almennt slæmt. 1030 00:46:08,340 --> 00:46:13,540 >> Svo um leið og við högg þessi lína þar, stjörnu Y skilar 13, eitthvað slæmt, 1031 00:46:13,540 --> 00:46:17,220 eitthvað mjög slæmt er um að gerast Binky. 1032 00:46:17,220 --> 00:46:25,810 Svo skulum sjá hvað er að fara að enda gerast að Binky hér í þessari mínútu 1033 00:46:25,810 --> 00:46:26,200 eða svo líta. 1034 00:46:26,200 --> 00:46:26,490 >> [Vídeó spilun] 1035 00:46:26,490 --> 00:46:26,745 >> -Hey, Binky. 1036 00:46:26,745 --> 00:46:27,000 Vakna. 1037 00:46:27,000 --> 00:46:29,296 Það er kominn tími fyrir gaman músina. 1038 00:46:29,296 --> 00:46:30,680 >> -Hvað er það? 1039 00:46:30,680 --> 00:46:31,980 Læra um ábendingum? 1040 00:46:31,980 --> 00:46:34,010 Ó, goodie. 1041 00:46:34,010 --> 00:46:37,220 >> -Jæja, til að byrja, held ég að við erum að fara að þurfa nokkra punkta. 1042 00:46:37,220 --> 00:46:37,930 >> -OK. 1043 00:46:37,930 --> 00:46:41,650 Þessi númer úthlutar tveimur ábendingum sem getur bent til heiltalna. 1044 00:46:41,650 --> 00:46:43,760 >> -Allt í lagi, vel, ég á tvær ábendingum. 1045 00:46:43,760 --> 00:46:45,850 En þeir virðast ekki vera benda til nokkuð. 1046 00:46:45,850 --> 00:46:46,490 >> -Það er rétt. 1047 00:46:46,490 --> 00:46:48,630 Upphaflega, gera ábendingar ekki benda til nokkuð. 1048 00:46:48,630 --> 00:46:51,700 Það sem þeir benda á eru kallaðir pointees, og setja þá upp er 1049 00:46:51,700 --> 00:46:52,850 aðskilin skref. 1050 00:46:52,850 --> 00:46:53,740 >> -Ó, hægri, hægri. 1051 00:46:53,740 --> 00:46:54,500 Ég vissi það. 1052 00:46:54,500 --> 00:46:56,270 The pointees eru aðskilin. 1053 00:46:56,270 --> 00:46:58,553 Svo hvernig gera úthluta þér pointee? 1054 00:46:58,553 --> 00:46:59,480 >> -OK. 1055 00:46:59,480 --> 00:47:03,707 Jæja, þetta númer úthlutar nýja heiltölur pointee, og þessi hluti setur x 1056 00:47:03,707 --> 00:47:05,520 til að benda á það. 1057 00:47:05,520 --> 00:47:06,760 >> -Hey, sem lítur betur. 1058 00:47:06,760 --> 00:47:08,520 Svo gera það gera eitthvað. 1059 00:47:08,520 --> 00:47:09,530 >> -OK. 1060 00:47:09,530 --> 00:47:14,110 Ég dereference bendillinn x til að geyma númer 42 í pointee hennar. 1061 00:47:14,110 --> 00:47:17,660 Fyrir þessu bragð, ég þarf galdur minn vendi af dereferencing. 1062 00:47:17,660 --> 00:47:20,695 >> -Your Magic vendi af dereferencing? 1063 00:47:20,695 --> 00:47:22,632 Uh, það er frábært. 1064 00:47:22,632 --> 00:47:24,620 >> -Þetta er það kóðinn lítur út. 1065 00:47:24,620 --> 00:47:27,526 Ég ætla bara að setja upp fjölda, og - 1066 00:47:27,526 --> 00:47:28,250 >> -Hey, líta. 1067 00:47:28,250 --> 00:47:29,680 Það það fer. 1068 00:47:29,680 --> 00:47:34,520 Svo gera dereference á x segir örin aðgang pointee hennar. 1069 00:47:34,520 --> 00:47:36,690 Í þessu tilfelli, til að geyma 42 þar. 1070 00:47:36,690 --> 00:47:40,890 Hey, reyna að nota það til að geyma fjölda 13 með hinu músina, y. 1071 00:47:40,890 --> 00:47:42,125 >> -OK. 1072 00:47:42,125 --> 00:47:46,810 Ég verð bara að fara yfir hér að y og fá númer 13 sett upp. 1073 00:47:46,810 --> 00:47:50,890 Og þá taka vendi af dereferencing og bara - 1074 00:47:50,890 --> 00:47:52,430 hó! 1075 00:47:52,430 --> 00:47:53,030 >> -Ó, hey. 1076 00:47:53,030 --> 00:47:54,610 Það virkaði ekki. 1077 00:47:54,610 --> 00:47:58,200 Segja, Binky, ég held ekki dereferencing y er góð hugmynd, 1078 00:47:58,200 --> 00:48:01,370 því að setja upp pointee er sérstakt skref. 1079 00:48:01,370 --> 00:48:03,460 Og ég held ekki að við gerðum alltaf það. 1080 00:48:03,460 --> 00:48:03,810 >> -Hmm. 1081 00:48:03,810 --> 00:48:05,160 Góður punktur. 1082 00:48:05,160 --> 00:48:07,410 >> -Já, úthlutað við músina y. 1083 00:48:07,410 --> 00:48:10,045 En við setjum aldrei það að benda til pointee. 1084 00:48:10,045 --> 00:48:10,490 >> -Hmm. 1085 00:48:10,490 --> 00:48:12,170 Mjög athugull. 1086 00:48:12,170 --> 00:48:13,790 >> -Hey, ert þú að leita gott þar, Binky. 1087 00:48:13,790 --> 00:48:16,920 Þú getur lagað það þannig að Y stig í sama pointee sem x? 1088 00:48:16,920 --> 00:48:17,810 >> -Jú. 1089 00:48:17,810 --> 00:48:20,300 Ég nota galdra sprota minn bendillinn verkefni. 1090 00:48:20,300 --> 00:48:22,240 >> -Er það að fara að vera vandamál eins og áður? 1091 00:48:22,240 --> 00:48:22,665 >> -Nei. 1092 00:48:22,665 --> 00:48:24,300 Þetta snertir ekki pointees. 1093 00:48:24,300 --> 00:48:27,880 Það breytist bara einn músina til að benda að sama og annars. 1094 00:48:27,880 --> 00:48:28,970 >> -Ó, ég. 1095 00:48:28,970 --> 00:48:31,730 Nú y bendir á sama stað og x. 1096 00:48:31,730 --> 00:48:32,450 Svo bíða. 1097 00:48:32,450 --> 00:48:33,490 Nú y er fastur. 1098 00:48:33,490 --> 00:48:34,630 Það hefur pointee. 1099 00:48:34,630 --> 00:48:36,520 Svo þú geta reyna vendi af dereferencing aftur 1100 00:48:36,520 --> 00:48:39,200 að senda 13 yfir. 1101 00:48:39,200 --> 00:48:39,840 >> -OK. 1102 00:48:39,840 --> 00:48:41,570 Hér fer. 1103 00:48:41,570 --> 00:48:42,870 >> -Hey, líta á það. 1104 00:48:42,870 --> 00:48:44,320 Nú dereferencing verk á y. 1105 00:48:44,320 --> 00:48:47,020 Og vegna þess að ábendingar eru að deila að einn pointee, þeir 1106 00:48:47,020 --> 00:48:48,585 bæði sjá 13. 1107 00:48:48,585 --> 00:48:49,040 >> -Já. 1108 00:48:49,040 --> 00:48:49,670 Hlutdeild. 1109 00:48:49,670 --> 00:48:50,380 Whatever. 1110 00:48:50,380 --> 00:48:52,290 Svo erum við að fara skipta stöðum núna? 1111 00:48:52,290 --> 00:48:52,970 >> -Ó, sjáðu. 1112 00:48:52,970 --> 00:48:54,150 Við erum út á tíma. 1113 00:48:54,150 --> 00:48:55,200 >> -En - 1114 00:48:55,200 --> 00:48:57,060 >> -Bara muna þrjú bendillinn reglur. 1115 00:48:57,060 --> 00:49:00,100 Númer eitt, þá er einfaldasta uppbygging er að þú ert með músina. 1116 00:49:00,100 --> 00:49:02,170 Og það bendir á að pointee. 1117 00:49:02,170 --> 00:49:04,160 En bendillinn og pointee eru aðskilin. 1118 00:49:04,160 --> 00:49:06,460 Og algeng villa er að setja upp músina, en að 1119 00:49:06,460 --> 00:49:08,540 gleyma að fá pointee. 1120 00:49:08,540 --> 00:49:12,460 >> Númer tvö, bendill dereferencing byrjar á músina og fylgir þess 1121 00:49:12,460 --> 00:49:14,570 arrow yfir til aðgang pointee hennar. 1122 00:49:14,570 --> 00:49:18,640 Eins og við allur vita, þetta virkar aðeins ef það er pointee, sem fær aftur að 1123 00:49:18,640 --> 00:49:19,790 Regla númer eitt. 1124 00:49:19,790 --> 00:49:23,670 >> Númer þrjú, bendill verkefni tekur einn músina og breytingar það að benda til 1125 00:49:23,670 --> 00:49:25,850 sama pointee sem annar músina. 1126 00:49:25,850 --> 00:49:27,840 Svo eftir verkefni, tveir ábendingum mun 1127 00:49:27,840 --> 00:49:29,430 benda til sama pointee. 1128 00:49:29,430 --> 00:49:31,600 Stundum að heitir hlutdeild. 1129 00:49:31,600 --> 00:49:33,430 Og þessi 'allur there er til það, í raun. 1130 00:49:33,430 --> 00:49:33,840 Bless bless núna. 1131 00:49:33,840 --> 00:49:34,300 >> [END vídeó spilun] 1132 00:49:34,300 --> 00:49:36,940 >> DAVID Malan: Svo meira á ábendingum, meira á Binky næstu viku. 1133 00:49:36,940 --> 00:49:38,190 Við munum sjá þig á mánudaginn. 1134 00:49:38,190 --> 00:49:42,187