1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> DAVID MALAN: Hello, és szívesen vissza CS50. 3 00:00:13,260 --> 00:00:14,860 Tehát ez a hét végén négy. 4 00:00:14,860 --> 00:00:16,680 Csak egy bejelentést az első. 5 00:00:16,680 --> 00:00:19,600 Így az úgynevezett ötödik hétfő jön a jövő hétfő. 6 00:00:19,600 --> 00:00:22,800 Ez a lehetőség, hogy változik SAT / UNSAT egy levelet minőségű, vagy 7 00:00:22,800 --> 00:00:24,130 levél minőségű SAT / UNSAT. 8 00:00:24,130 --> 00:00:27,130 Bosszantó, hogy a folyamat nem igényel aláírás, mert meg kell adnia 9 00:00:27,130 --> 00:00:28,770 ki egy ilyen rózsaszín add / drop formában. 10 00:00:28,770 --> 00:00:31,680 >> Mivel technikailag a SAT / UNSAT verzió és a levél minőségű verzió 11 00:00:31,680 --> 00:00:33,320 van különböző katalógusszámok. 12 00:00:33,320 --> 00:00:34,240 De nem nagy ügy. 13 00:00:34,240 --> 00:00:36,620 Csak gyere fel hozzám, vagy a Rob vagy Lauren bármely pontján. 14 00:00:36,620 --> 00:00:39,550 Vagy írjon nekünk, ha nem az a fajta a papírmunka van szükség ma, és mi 15 00:00:39,550 --> 00:00:43,410 lesz, biztos, hogy segít, hogy gondoskodik, hogy mielőtt hétfő. 16 00:00:43,410 --> 00:00:45,780 >> Rendben, így ma - 17 00:00:45,780 --> 00:00:47,630 valóban, van egy kis visszhang. 18 00:00:47,630 --> 00:00:51,070 Tudunk hang engem egy kicsit? 19 00:00:51,070 --> 00:00:51,730 OK. 20 00:00:51,730 --> 00:00:54,850 Tehát ma bemutatjuk a téma ismert mutatók. 21 00:00:54,850 --> 00:00:57,770 És én elismerem, hogy ez az egyik bonyolultabb témák, hogy hajlamosak vagyunk 22 00:00:57,770 --> 00:01:00,960 terjed ebben az osztályban, vagy tényleg olyan bevezető kurzus, amely C- 23 00:01:00,960 --> 00:01:05,510 >> De hogy szavam rá, különösen ha az agyad úgy érzi, egy kicsit hajlított 24 00:01:05,510 --> 00:01:07,100 ma és a hetek. 25 00:01:07,100 --> 00:01:10,340 Ez nem reprezentatív veszed rosszabb ebben ez csak azt jelenti, hogy az 26 00:01:10,340 --> 00:01:13,360 ez egy különösen bonyolult téma Ígérem, hogy, néhány hét 27 00:01:13,360 --> 00:01:17,610 így, úgy tűnik, nagyon is feltűnően egyszerű visszatekintve. 28 00:01:17,610 --> 00:01:18,720 >> Még mindig emlékszem, hogy ezen a napon. 29 00:01:18,720 --> 00:01:22,190 Ott ültem Elliott Dining Hall, mellett ült a TF Nishat Mehta, 30 00:01:22,190 --> 00:01:24,070 aki belföldi illetőségű Elliott ház. 31 00:01:24,070 --> 00:01:26,340 És valamilyen oknál fogva, ez a téma csak rákattint. 32 00:01:26,340 --> 00:01:29,430 Ami azt jelenti, hogy én is küzdöttem vele bizonyos ideig, de 33 00:01:29,430 --> 00:01:33,610 minden tőlem telhetőt, hogy segítsen elkerülni az ilyen küzdenek a téma, hogy végül 34 00:01:33,610 --> 00:01:34,580 elég erős. 35 00:01:34,580 --> 00:01:37,350 >> Sőt, az egyik téma megbeszéljük Az elkövetkező hetekben, hogy a 36 00:01:37,350 --> 00:01:41,130 a biztonság, és hogyan lehet valóban kihasználni gépek módon 37 00:01:41,130 --> 00:01:42,320 hogy nem szánták. 38 00:01:42,320 --> 00:01:45,850 És ezek a kitermelés általában az eredmény a hibák, a hibák, hogy 39 00:01:45,850 --> 00:01:49,740 az emberek, hogy az nem érti, néhány Az alapul szolgáló végrehajtási 40 00:01:49,740 --> 00:01:52,250 részletek keresztül mely programok készülnek. 41 00:01:52,250 --> 00:01:55,410 >> Most, hogy ez úgy tűnik, annál is inkább felhasználó barátságos, gondoltam játszani 10 42 00:01:55,410 --> 00:01:59,680 második preview egy kis claymation alak neve Muci, aki hozta 43 00:01:59,680 --> 00:02:03,020 élet egy barátunk a Stanford, professzor Nick Parlante. 44 00:02:03,020 --> 00:02:06,753 Szóval, engedjék meg, hogy ezt teaser a Muci itt. 45 00:02:06,753 --> 00:02:09,520 >> [VIDEÓ LEJÁTSZÁS] 46 00:02:09,520 --> 00:02:10,380 >> -Hé, Muci. 47 00:02:10,380 --> 00:02:11,050 Kelj fel. 48 00:02:11,050 --> 00:02:13,610 Itt az ideje a mutató móka. 49 00:02:13,610 --> 00:02:14,741 >> -Mi az? 50 00:02:14,741 --> 00:02:16,440 Ismerje meg a mutatók? 51 00:02:16,440 --> 00:02:17,928 Ó, Komámasszony. 52 00:02:17,928 --> 00:02:18,920 >> [END VIDEÓ LEJÁTSZÁS] 53 00:02:18,920 --> 00:02:20,670 >> DAVID MALAN: Ez Stanford számítástechnika. 54 00:02:20,670 --> 00:02:23,194 Így bővebben jönni. 55 00:02:23,194 --> 00:02:24,930 >> [Taps] 56 00:02:24,930 --> 00:02:26,660 >> DAVID MALAN: Sajnálom, Nick. 57 00:02:26,660 --> 00:02:30,680 >> Így emlékszem, hogy az utolsó alkalom, hogy véget ért ez igazán izgalmas filmsorozat 58 00:02:30,680 --> 00:02:32,960 amely ezt a funkciót egyszerűen nem működik. 59 00:02:32,960 --> 00:02:34,960 Legalábbis ösztönösen, úgy éreztem, mint meg kell dolgozni. 60 00:02:34,960 --> 00:02:37,600 Egyszerűen csere az értékeket A két egész szám. 61 00:02:37,600 --> 00:02:40,915 De emlékszem, hogy amikor kinyomtatható a eredeti értékek main, egy és 62 00:02:40,915 --> 00:02:44,210 kettő, hogy még mindig egy és kettő és nem kettő, egy. 63 00:02:44,210 --> 00:02:46,070 >> Hadd valóban váltani át a készülék. 64 00:02:46,070 --> 00:02:50,180 És írtam egy kis csontváz kód előre itt, ahol azt állítják, hogy x 65 00:02:50,180 --> 00:02:52,500 1 lesz, y lesz 2. 66 00:02:52,500 --> 00:02:54,810 Én majd nyomtassa ki mind a értékeket print f. 67 00:02:54,810 --> 00:02:57,540 >> Aztán azt állítják le, hogy itt fogjuk cserélni őket. 68 00:02:57,540 --> 00:03:00,800 Hagytam egy üres hely itt, hogy töltse ki a ma csak egy pillanat. 69 00:03:00,800 --> 00:03:03,380 Akkor fogom azt állítani, hogy a két változó is cserélték. 70 00:03:03,380 --> 00:03:04,770 Aztán megyek nyomtatni őket újra. 71 00:03:04,770 --> 00:03:07,090 És remélhetőleg, azt kell látni az 1., 2.. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 Ez a végtelenül egyszerű, cél most. 74 00:03:09,830 --> 00:03:12,430 >> Szóval hogyan megy a csere két változó? 75 00:03:12,430 --> 00:03:17,220 Nos, ha azt javaslom, hogy ezek az csésze jelenthet memória a számítógép. 76 00:03:17,220 --> 00:03:19,070 Ez egy pár falatot, ez egy másik pár falatot. 77 00:03:19,070 --> 00:03:23,260 Lehet, hogy van egy önkéntes gyere fel, és mix nekünk italt, ha ismerős? 78 00:03:23,260 --> 00:03:23,920 Gyere fel. 79 00:03:23,920 --> 00:03:24,815 Mi a neve? 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 Gyere fel, Jess. 83 00:03:26,540 --> 00:03:29,180 Ha nem bánod, meg kell tenni a Google Glass rád így tudjuk 84 00:03:29,180 --> 00:03:30,430 halhatatlanná ezt. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 OK, üveg. 87 00:03:34,670 --> 00:03:37,250 Videofelvétel készíthető. 88 00:03:37,250 --> 00:03:43,103 És OK, mi jó megy Jess itt. 89 00:03:43,103 --> 00:03:43,810 Rendben van. 90 00:03:43,810 --> 00:03:45,120 Örülök, hogy megismerhetem. 91 00:03:45,120 --> 00:03:47,720 >> Tehát mi azt szeretném, ha nem itt - ha lehet, elég gyorsan - 92 00:03:47,720 --> 00:03:51,040 csak tölt minket fél pohár narancs juice és egy fél pohár tejet, 93 00:03:51,040 --> 00:03:55,710 ami gyakorlatilag az 1 egy csésze, és 2, a másik kupát. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> Ez lesz jó felvételeket. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> JESS: Bocsánat. 98 00:04:05,860 --> 00:04:06,330 >> DAVID MALAN: Nem, nem. 99 00:04:06,330 --> 00:04:08,703 Semmi gond. 100 00:04:08,703 --> 00:04:10,120 Szép. 101 00:04:10,120 --> 00:04:12,950 Rendben, így már négy bájt értékű narancslé. 102 00:04:12,950 --> 00:04:14,460 Majd nevezte az 1 értéket. 103 00:04:14,460 --> 00:04:16,579 Most újabb négy bájt értékű tejet. 104 00:04:16,579 --> 00:04:18,519 Hívja az érték 2. 105 00:04:18,519 --> 00:04:20,440 Tehát x és y, ill. 106 00:04:20,440 --> 00:04:23,450 >> Rendben, most, ha a feladathoz - neked, Jess, előtte minden 107 00:04:23,450 --> 00:04:24,270 az osztálytársaival - 108 00:04:24,270 --> 00:04:28,510 hogy swap az értékeket az x és y az ilyen hogy szeretnénk a narancslé, a 109 00:04:28,510 --> 00:04:32,070 egyéb csésze és a tej a pohár, hogy Lehet, hogy Ön - mielőtt ténylegesen 110 00:04:32,070 --> 00:04:34,020 it - járni ezt? 111 00:04:34,020 --> 00:04:35,220 >> OK, bölcs döntés. 112 00:04:35,220 --> 00:04:36,340 Tehát szükség van egy kicsit több memóriát. 113 00:04:36,340 --> 00:04:38,190 Akkor most ki egy ideiglenes csésze, ha úgy tetszik. 114 00:04:38,190 --> 00:04:40,540 És most folytassa cserélni x és y. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> Kiváló. 117 00:04:53,530 --> 00:04:54,420 Így nagyon jól sikerült. 118 00:04:54,420 --> 00:04:55,670 Nagyon köszönöm, Jess. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 Tessék. 121 00:05:00,020 --> 00:05:01,950 Egy kis ajándék. 122 00:05:01,950 --> 00:05:04,350 >> OK, így nyilvánvaló, hogy rendkívül egyszerű ötlet. 123 00:05:04,350 --> 00:05:07,500 Teljesen intuitív, hogy szükségünk van egy kicsit több tárhely - ebben a formában, 124 00:05:07,500 --> 00:05:09,750 egy csésze -, ha valóban szeretnénk csere a két változó. 125 00:05:09,750 --> 00:05:11,110 Tehát lássuk, hogy pontosan. 126 00:05:11,110 --> 00:05:14,330 Itt fenn a kettő között, ahol azt állítják, én vagyok lesz csinál valami csere, én 127 00:05:14,330 --> 00:05:15,720 megy előre, és kijelentik temp. 128 00:05:15,720 --> 00:05:17,980 És én meg azt egyenlő, mondjuk, x. 129 00:05:17,980 --> 00:05:21,110 >> Aztán megyek értékének módosításához x akárcsak Jess volt itt a 130 00:05:21,110 --> 00:05:23,200 tej és narancslé hogy egyenlő y. 131 00:05:23,200 --> 00:05:27,460 És fogok változtatni y, hogy egyenlő hogy ne x, mert most mi lenne 132 00:05:27,460 --> 00:05:29,530 megragadt egy kört, hanem temp. 133 00:05:29,530 --> 00:05:33,170 Hol átmenetileg - vagy ahol Jess átmenetileg fel a narancslé 134 00:05:33,170 --> 00:05:35,460 azelőtt, hogy felülírja pohár tejet. 135 00:05:35,460 --> 00:05:37,250 >> Hadd megy előre, és most ezt. 136 00:05:37,250 --> 00:05:39,210 Úgy hívják noswap.c. 137 00:05:39,210 --> 00:05:41,190 És most hadd futni nincs csere. 138 00:05:41,190 --> 00:05:43,910 És valóban látom, ha bővíteni a ablak egy kicsit, hogy a 139 00:05:43,910 --> 00:05:45,160 x értéke 1, y értéke 2. 140 00:05:45,160 --> 00:05:47,230 És akkor x értéke 2, y értéke 1. 141 00:05:47,230 --> 00:05:51,910 >> De emlékszem, hogy hétfőn mi mindent egy kicsit másképp, amelyben azt 142 00:05:51,910 --> 00:05:56,760 helyett végre egy segítő funkció ha úgy tetszik, hogy valójában semmis. 143 00:05:56,760 --> 00:05:58,010 Hívtam cserélni. 144 00:05:58,010 --> 00:06:01,600 Én adtam két paramétert, és hívtam őket, és felhívtam őket b. 145 00:06:01,600 --> 00:06:04,380 >> Őszintén szólva, nem tudtam hívni őket, x és y. 146 00:06:04,380 --> 00:06:06,040 Nincs semmi megállás nekem csinálja. 147 00:06:06,040 --> 00:06:08,140 De azt állítják, hogy ez akkor egy kicsit félreérthető. 148 00:06:08,140 --> 00:06:11,910 Mivel a visszahívás hétfőn, hogy mi azt állította, hogy ezek a paraméterek 149 00:06:11,910 --> 00:06:13,650 példányban értékeket át be 150 00:06:13,650 --> 00:06:15,640 Tehát csak szórakozik a szem előtt tartva, azt hiszem, ha használja 151 00:06:15,640 --> 00:06:17,370 pontosan ugyanazokat a változókat. 152 00:06:17,370 --> 00:06:20,150 >> Úgyhogy ahelyett, hogy hívom őket a és b, csak az érthetőség kedvéért. 153 00:06:20,150 --> 00:06:21,840 De nevezhetjük őket leginkább , amit csak akarunk. 154 00:06:21,840 --> 00:06:26,280 És fogok másolás és beillesztés hatékonyan ezt a kódot onnan fentről 155 00:06:26,280 --> 00:06:27,170 le itt. 156 00:06:27,170 --> 00:06:29,110 Mert most láttam, hogy működik. 157 00:06:29,110 --> 00:06:30,790 Szóval ez elég jó formában. 158 00:06:30,790 --> 00:06:37,390 És én megváltoztatni a x egy, az x egy, az y a b és az én y b. 159 00:06:37,390 --> 00:06:39,130 >> Más szóval, pontosan ugyanaz a logika. 160 00:06:39,130 --> 00:06:40,850 Pontosan ugyanaz a dolog, hogy Jess volt. 161 00:06:40,850 --> 00:06:44,350 És akkor az egyik dolog, amit meg kell tennie, akár Itt, persze, most hivatkozhatnak erre 162 00:06:44,350 --> 00:06:45,990 funkció, vagy hívja ezt a funkciót. 163 00:06:45,990 --> 00:06:50,430 Így fogom hívni ezt a funkciót két bemenet, x és y, és a hit a Mentés gombra. 164 00:06:50,430 --> 00:06:52,300 >> Rendben, tehát alapvetően ugyanaz a dolog. 165 00:06:52,300 --> 00:06:55,570 Ami azt illeti, már valószínűleg készül a program szükségtelenül bonyolult a 166 00:06:55,570 --> 00:07:00,820 írás egy függvény, ami csak bevétel mintegy hat sornyi kódot míg én 167 00:07:00,820 --> 00:07:02,970 korábban hajtott végre ez mindössze három. 168 00:07:02,970 --> 00:07:06,230 >> Hadd megy előre, és most remake ez, hogy nincs csere. 169 00:07:06,230 --> 00:07:07,920 Rendben, elcsesztem itt. 170 00:07:07,920 --> 00:07:11,290 Ez kell egy hiba, hogy lehet, hogy lásd egyre gyakrabban, mint a 171 00:07:11,290 --> 00:07:12,380 programok kap bonyolultabb. 172 00:07:12,380 --> 00:07:13,470 De van egy könnyű megoldás. 173 00:07:13,470 --> 00:07:15,650 Hadd lépjünk vissza ide. 174 00:07:15,650 --> 00:07:18,190 >> És mi az első hiba látok? 175 00:07:18,190 --> 00:07:19,520 Implicit nyilatkozat. 176 00:07:19,520 --> 00:07:21,466 Mit jelent, hogy általában azt jelzi? 177 00:07:21,466 --> 00:07:22,830 Elfelejtettem a prototípus. 178 00:07:22,830 --> 00:07:26,900 Elfelejtettem, hogy megtanítsa a fordítónak, hogy csere fog létezni annak ellenére, hogy 179 00:07:26,900 --> 00:07:28,920 nem létezik a kezdet kezdetén a program. 180 00:07:28,920 --> 00:07:35,780 Szóval, én csak mondani érvénytelen, csere, int egy int b, pontosvessző. 181 00:07:35,780 --> 00:07:37,280 >> Szóval nem fogom újraimplementálni azt. 182 00:07:37,280 --> 00:07:39,140 De most ez egyezik azzal, amit itt lent. 183 00:07:39,140 --> 00:07:42,530 És vegyük észre, hiányzik a pontosvessző itt, ami nem szükséges, ha 184 00:07:42,530 --> 00:07:43,200 megvalósítani. 185 00:07:43,200 --> 00:07:46,010 >> Hadd remake ez, hogy nincs csere. 186 00:07:46,010 --> 00:07:46,910 Sokkal jobb formában. 187 00:07:46,910 --> 00:07:48,130 Fuss nincs csere. 188 00:07:48,130 --> 00:07:48,740 És a fenébe is. 189 00:07:48,740 --> 00:07:51,650 Most újra itt vagyunk, ahol voltunk hétfőn, ahol a dolog nem cserélhető. 190 00:07:51,650 --> 00:07:55,410 >> És mi az intuitív magyarázat , hogy miért ez a helyzet? 191 00:07:55,410 --> 00:07:56,380 Igen? 192 00:07:56,380 --> 00:07:57,630 >> DIÁK: [hangtalan]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> DAVID MALAN: Pontosan. 195 00:08:05,230 --> 00:08:07,330 Tehát a és b másolatai x és y. 196 00:08:07,330 --> 00:08:10,680 És valóban, minden alkalommal, amikor már hívás funkció eddig, hogy 197 00:08:10,680 --> 00:08:12,540 halad változók, mint a ints - 198 00:08:12,540 --> 00:08:14,470 mint csere vár itt - 199 00:08:14,470 --> 00:08:16,270 srácok már halad példányban. 200 00:08:16,270 --> 00:08:19,150 >> Most, hogy azt jelenti, hogy tart egy kicsit az idő, egy pillanatra, hogy a 201 00:08:19,150 --> 00:08:23,270 számítógép másolni a biteket az egyik változót a biteket egy másik. 202 00:08:23,270 --> 00:08:24,610 De ez nem olyan nagy dolog. 203 00:08:24,610 --> 00:08:25,920 De ők mégis egy példányt. 204 00:08:25,920 --> 00:08:30,020 >> És most, összefüggésben a swap, Én valójában sikeres 205 00:08:30,020 --> 00:08:31,180 változó a és b. 206 00:08:31,180 --> 00:08:33,000 Sőt, most egy gyors józanság ellenőrzés. 207 00:08:33,000 --> 00:08:36,830 Print f a nem% i, az új vonal. 208 00:08:36,830 --> 00:08:38,770 És nézzünk csatlakoztassa a. 209 00:08:38,770 --> 00:08:41,830 Most tegye ugyanezt b. 210 00:08:41,830 --> 00:08:43,640 És lássuk ugyanezt itt. 211 00:08:43,640 --> 00:08:47,260 >> És most hadd másolja ugyanezen sorokat Ismét alján a függvény 212 00:08:47,260 --> 00:08:51,250 miután a három sor érdekes volna végre, és 213 00:08:51,250 --> 00:08:53,270 nyomtatása és b ismét. 214 00:08:53,270 --> 00:08:56,030 Tehát most nézzük, hogy ez, hogy nincs csere. 215 00:08:56,030 --> 00:08:58,430 Engedjék meg, hogy a terminál ablakot kicsit magasabb, hogy látjuk 216 00:08:58,430 --> 00:08:59,520 több is egyszerre. 217 00:08:59,520 --> 00:09:00,860 >> És futni nem csere. 218 00:09:00,860 --> 00:09:04,000 x értéke 1, y értéke 2. a értéke 1, b értéke 2. 219 00:09:04,000 --> 00:09:06,070 Aztán, a értéke 2, b értéke 1. 220 00:09:06,070 --> 00:09:09,390 Így működik, mint Jess volt itt belül csere. 221 00:09:09,390 --> 00:09:13,090 De persze, ez nem volt hatással A változók fő. 222 00:09:13,090 --> 00:09:15,360 >> Így láttunk egy trükk, amely által is rögzíti, ugye? 223 00:09:15,360 --> 00:09:19,560 Amikor szembe ezzel a kör kérdés, akkor is csak punt és x 224 00:09:19,560 --> 00:09:22,400 és y milyen változók helyett? 225 00:09:22,400 --> 00:09:23,390 >> Lehet, hogy azok a globális. 226 00:09:23,390 --> 00:09:27,560 Tedd legtetején a fájl mint mi, még a játék a 15. 227 00:09:27,560 --> 00:09:28,890 Mi egy globális változót. 228 00:09:28,890 --> 00:09:32,420 De az összefüggésben a játék egy 15, ez indokolt, hogy a globális 229 00:09:32,420 --> 00:09:37,170 változó, amely a fórumon, mert egészét 15.c minden 230 00:09:37,170 --> 00:09:38,650 végre akarja hajtani, hogy a játék. 231 00:09:38,650 --> 00:09:41,470 Ez az, amit a fájl létezik, hogy nem. 232 00:09:41,470 --> 00:09:44,170 >> De ebben az esetben is, én vagyok hívás funkció csere. 233 00:09:44,170 --> 00:09:45,380 Azt akarom, hogy cserélni két változó között. 234 00:09:45,380 --> 00:09:48,950 És meg kell kezdeni, hogy úgy érzi, csak hanyag ha az oldat minden kedves 235 00:09:48,950 --> 00:09:51,300 probléma, amikor befut hatály kérdés, hogy ez a globális. 236 00:09:51,300 --> 00:09:54,730 Mivel nagyon gyorsan a program majd lesz elég a rendetlenség. 237 00:09:54,730 --> 00:09:57,760 És mi volt, hogy nagyon takarékosan Ennek eredményeként 15.c. 238 00:09:57,760 --> 00:10:00,470 >> De kiderül, hogy van egy jobb út összesen. 239 00:10:00,470 --> 00:10:05,600 Hadd valóban vissza és törölje a nyomtatás F-nek, csak azért, hogy egyszerűsítse a kódot. 240 00:10:05,600 --> 00:10:09,160 És hadd javasoljuk, hogy ez valóban rossz. 241 00:10:09,160 --> 00:10:15,990 De ha inkább adjunk hozzá néhány csillag és a csillagok, én ehelyett viszont ez 242 00:10:15,990 --> 00:10:18,670 funkció az egyik, hogy ez valóban működőképes. 243 00:10:18,670 --> 00:10:25,020 >> Hadd menjen vissza, és elismerem azt csillagok mindig nehéz, 244 00:10:25,020 --> 00:10:26,170 így azt mondom csillagok. 245 00:10:26,170 --> 00:10:27,660 Én csak fess fel, hogy az egyik. 246 00:10:27,660 --> 00:10:28,190 Rendben van. 247 00:10:28,190 --> 00:10:30,190 És most, mit fogok tenni helyette? 248 00:10:30,190 --> 00:10:34,130 >> Tehát először is, fogom megadni hogy ahelyett, hogy továbbítaná egy int a 249 00:10:34,130 --> 00:10:37,980 A swap funkció, én inkább A mondani int csillag. 250 00:10:37,980 --> 00:10:39,170 Nos, mit jelent a csillag jelzi? 251 00:10:39,170 --> 00:10:41,970 Ez az a fogalom, amely a mutató Muci, a claymation karakter volt, 252 00:10:41,970 --> 00:10:43,465 hivatkozva egy perce. 253 00:10:43,465 --> 00:10:47,610 >> Tehát, ha azt mondjuk, int csillag, a jelentését ez most az, hogy a nem lesz 254 00:10:47,610 --> 00:10:49,110 telt annak értékét. 255 00:10:49,110 --> 00:10:50,350 Ez nem fogja másolni be 256 00:10:50,350 --> 00:10:54,700 Inkább a címét is fog át be 257 00:10:54,700 --> 00:10:57,840 >> Így emlékeztet arra, hogy a számítógép belsejében egy csomó memóriát, különben 258 00:10:57,840 --> 00:10:58,760 néven RAM. 259 00:10:58,760 --> 00:11:00,520 És ez csak egy RAM csomó bájt. 260 00:11:00,520 --> 00:11:03,320 Tehát, ha a Mac vagy a PC két gigabájt, van 2 261 00:11:03,320 --> 00:11:05,760 milliárd bájt memóriát. 262 00:11:05,760 --> 00:11:08,440 >> Most csak tegyük fel, hogy csak a a dolgok szép és rendezett, mi 263 00:11:08,440 --> 00:11:09,450 hozzá egy címet - 264 00:11:09,450 --> 00:11:10,170 a szám - 265 00:11:10,170 --> 00:11:12,270 minden byte RAM a számítógép. 266 00:11:12,270 --> 00:11:15,410 Az első byte-ja a 2 milliárd a szám nulla. 267 00:11:15,410 --> 00:11:18,572 A következő egy byte számú, szám két, egészen akár, pont pont 268 00:11:18,572 --> 00:11:20,530 dot, hogy mintegy 2 milliárd euróra. 269 00:11:20,530 --> 00:11:23,640 >> Így számát bájtok A memória méretét a számítógépében. 270 00:11:23,640 --> 00:11:26,460 Tehát tegyük fel, hogy ez az, ami értünk egy címet. 271 00:11:26,460 --> 00:11:31,360 Tehát, ha látom int csillag, mi folyik itt hogy átment csere most a 272 00:11:31,360 --> 00:11:32,830 címét. 273 00:11:32,830 --> 00:11:37,150 Nem az érték, de függetlenül a postai cím, hogy úgy mondjam - 274 00:11:37,150 --> 00:11:38,810 helyét a RAM-ban. 275 00:11:38,810 --> 00:11:41,250 >> És hasonlóan b, megyek mondani ugyanezt. 276 00:11:41,250 --> 00:11:42,720 Int, csillag, b. 277 00:11:42,720 --> 00:11:46,350 Mellesleg, technikailag a csillag mehet más helyeken. 278 00:11:46,350 --> 00:11:50,140 De majd egységesíteni a csillag, hogy közvetlenül az adattípus. 279 00:11:50,140 --> 00:11:54,080 >> Tehát csere aláírás most azt jelenti, hogy nekem címét egy int, és a hívás 280 00:11:54,080 --> 00:11:55,400 a címet a. 281 00:11:55,400 --> 00:11:58,690 És adj egy címe egy int, és hívja a címet b. 282 00:11:58,690 --> 00:12:01,120 >> De most én ide a kódot meg kell változtatni. 283 00:12:01,120 --> 00:12:03,470 Mert ha kijelentem int temp - 284 00:12:03,470 --> 00:12:05,580 amely még mindig az int típusú - 285 00:12:05,580 --> 00:12:08,700 de tárolja benne egy, milyen érték? 286 00:12:08,700 --> 00:12:12,870 Ahhoz, hogy tiszta, jól vagyok véget egy a a kódot írt most? 287 00:12:12,870 --> 00:12:14,360 >> Teszem a helyét a. 288 00:12:14,360 --> 00:12:16,500 De nem érdekel a hely, ugye? 289 00:12:16,500 --> 00:12:21,940 Temp létezik csak Jess harmadik csésze létezett, milyen célból? 290 00:12:21,940 --> 00:12:23,090 Tárolásához egy értéket. 291 00:12:23,090 --> 00:12:24,830 Tej vagy narancslé. 292 00:12:24,830 --> 00:12:28,520 Nem valóban tárolja a címét vagy olyan dolog, amely úgy érzi, a 293 00:12:28,520 --> 00:12:31,200 kis értelmetlen ebben a valós nemzetközi környezethez egyébként. 294 00:12:31,200 --> 00:12:34,990 >> Szóval tényleg, mit akarok tenni a temp nem a címét egy, de a 295 00:12:34,990 --> 00:12:36,180 tartalmának. 296 00:12:36,180 --> 00:12:41,930 Tehát ha egy olyan szám, mint 123, ez 123. byte memóriát, hogy az igazságos 297 00:12:41,930 --> 00:12:45,090 történetesen megszálló, hogy az érték Egy történetesen megszálló. 298 00:12:45,090 --> 00:12:49,040 >> Ha akarok menni arra a címre, Azt kell mondani, a csillag. 299 00:12:49,040 --> 00:12:52,610 Hasonlóképpen, ha én változtatni, mi A cím egy, tudom megváltoztatni 300 00:12:52,610 --> 00:12:53,570 ezt kezdeni. 301 00:12:53,570 --> 00:12:58,185 Ha azt akarom, hogy tárolni, mi a helyen, és mi a helyszínen 302 00:12:58,185 --> 00:13:02,180 A b, b csillag csillag. 303 00:13:02,180 --> 00:13:05,340 >> Tehát a rövid, akkor is, ha ez nem elég süllyed még -, és én nem számíthat 304 00:13:05,340 --> 00:13:06,560 , hogy ez ilyen gyorsan - 305 00:13:06,560 --> 00:13:11,100 észre, hogy minden, amit csinálok raksz ezek a csillagok az én változók 306 00:13:11,100 --> 00:13:13,350 mondás, ne fogd az értékeket. 307 00:13:13,350 --> 00:13:14,520 Ne változtassa meg az értékeket. 308 00:13:14,520 --> 00:13:17,600 Hanem menj azokra a címekre és kap az értéket. 309 00:13:17,600 --> 00:13:21,430 Megy, hogy a cím és a változás az értéket is. 310 00:13:21,430 --> 00:13:25,500 >> Tehát most hadd lépjünk vissza a csúcsra, csak rögzíti ezt a sort itt, hogy 311 00:13:25,500 --> 00:13:27,690 változtassa meg a prototípus, hogy megfeleljen. 312 00:13:27,690 --> 00:13:30,280 De most meg kell tennie, még valami. 313 00:13:30,280 --> 00:13:35,500 Ösztönösen, ha már megváltoztatta a típus azokat az érveket, csere vár, 314 00:13:35,500 --> 00:13:37,245 mit kell tennem, hogy változást a kódot? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> Amikor hívás csere. 317 00:13:40,840 --> 00:13:43,340 Mert most, mi vagyok Úgy halad, hogy a csere még? 318 00:13:43,340 --> 00:13:47,450 Az érték x és y értékét, vagy A tej és a narancslevet. 319 00:13:47,450 --> 00:13:48,510 De én nem akarom. 320 00:13:48,510 --> 00:13:51,060 Én inkább szeretnék átadni, mi? 321 00:13:51,060 --> 00:13:53,050 A helyszín és az x a helyét y. 322 00:13:53,050 --> 00:13:55,300 Mi a postai címek, hogy úgy mondjam. 323 00:13:55,300 --> 00:13:57,600 >> Így kell csinálni, hogy van egy jelet. 324 00:13:57,600 --> 00:13:59,260 Jel hangzik, mint a cím. 325 00:13:59,260 --> 00:14:03,240 így n jel, a cím Az x és az y címét. 326 00:14:03,240 --> 00:14:06,790 Tehát szándékos, hogy használjuk ampersands hívásakor a függvény, 327 00:14:06,790 --> 00:14:10,230 és a csillagok, amikor kijelentette, és mikor végrehajtó funkciót. 328 00:14:10,230 --> 00:14:14,220 >> És gondoljunk csak a jel, mint a címét, operátor, és a csillag, mint a 329 00:14:14,220 --> 00:14:15,490 ott operátor - 330 00:14:15,490 --> 00:14:18,640 vagy még pontosabban, a dereference üzemeltető. 331 00:14:18,640 --> 00:14:23,480 Szóval ez egy csomó szó, csak hogy azt mondják, hogy most, remélhetőleg, csere lesz 332 00:14:23,480 --> 00:14:24,440 helyesnek. 333 00:14:24,440 --> 00:14:26,550 >> Hadd menjek előre, és - 334 00:14:26,550 --> 00:14:30,940 nézzük valóban nevezze át a fájlt, nehogy a program még mindig nem nevezhető csere. 335 00:14:30,940 --> 00:14:33,240 Azt állítom, hogy hívjuk meg swap.c most. 336 00:14:33,240 --> 00:14:35,670 Tehát, hogy, csere. 337 00:14:35,670 --> 00:14:37,520 Dot, slash, csere. 338 00:14:37,520 --> 00:14:40,210 >> És most valóban, x értéke 1, y értéke 2. 339 00:14:40,210 --> 00:14:44,040 És aztán, x értéke 2, y értéke egy. 340 00:14:44,040 --> 00:14:46,500 Nos, nézzük meg, ha nem tudjuk ezt a kicsit másképp, mint hogy mi a 341 00:14:46,500 --> 00:14:47,180 folyik itt. 342 00:14:47,180 --> 00:14:51,250 Először is, hadd nagyítani a mi rajz képernyő itt. 343 00:14:51,250 --> 00:14:54,160 És hadd javaslatot egy pillanatra -, és amikor rajzolok itt is tükrözi 344 00:14:54,160 --> 00:14:58,660 ott már - hadd javasoljuk, hogy itt van egy csomó memóriát, vagy 345 00:14:58,660 --> 00:15:00,540 RAM, belül a számítógépet. 346 00:15:00,540 --> 00:15:04,140 >> És ez lesz a harapás szám, mondjuk, 1. 347 00:15:04,140 --> 00:15:05,720 Ez lesz a byte 2-es szám. 348 00:15:05,720 --> 00:15:08,220 És fogok csinálni egy csomó nagyobb, és akkor egy csomó pont pont pont a 349 00:15:08,220 --> 00:15:10,880 azt mutatják, hogy ez a 2 milliárd ezeket a dolgokat. 350 00:15:10,880 --> 00:15:13,520 4, 5, és így tovább. 351 00:15:13,520 --> 00:15:17,055 >> Tehát az első öt byte az én számítógép memóriájában. 352 00:15:17,055 --> 00:15:17,560 Minden rendben? 353 00:15:17,560 --> 00:15:19,060 Nagyon kevés az a 2 milliárd. 354 00:15:19,060 --> 00:15:21,120 De most fogok javasolni a következő. 355 00:15:21,120 --> 00:15:27,490 Fogom javasolni, hogy x fog tárolja az 1-es szám, és y megy 356 00:15:27,490 --> 00:15:29,690 tárolja a 2-es szám. 357 00:15:29,690 --> 00:15:35,000 És hadd menjen előre, és most jelent ezeket az értékeket az alábbiak szerint. 358 00:15:35,000 --> 00:15:41,510 >> Csináljuk ezt az alábbiak szerint. 359 00:15:41,510 --> 00:15:42,870 Csak adj egy percet. 360 00:15:42,870 --> 00:15:44,150 Egy pillanat. 361 00:15:44,150 --> 00:15:45,680 OK. 362 00:15:45,680 --> 00:15:47,560 Azt szeretnénk, hogy ez egy kicsit - 363 00:15:47,560 --> 00:15:50,440 csináljuk újra. 364 00:15:50,440 --> 00:15:53,250 Egyébként én megyek, és a ugyanazt a számot, akaratlanul, 365 00:15:53,250 --> 00:15:54,230 többszöri alkalommal. 366 00:15:54,230 --> 00:15:57,320 >> Tehát csak így különböző számú beszélni, mondjuk ez a bájt 367 00:15:57,320 --> 00:16:03,391 szám 123., 124., 125., 126., és pont pont pont. 368 00:16:03,391 --> 00:16:08,400 És hadd állítják, most, hogy fogok fel az 1 értéket itt, és az érték 2 369 00:16:08,400 --> 00:16:11,990 itt, vagy más néven az x és y. 370 00:16:11,990 --> 00:16:15,300 Tehát ez csak azért történik, hogy ez x, y ez. 371 00:16:15,300 --> 00:16:18,180 >> És csak néhány Véletlen, a számítógépet, az operációs rendszer, 372 00:16:18,180 --> 00:16:21,890 történt, hogy x a következő helyen: 123-as. 373 00:16:21,890 --> 00:16:25,590 És y végül a helyszínen 124 - 374 00:16:25,590 --> 00:16:26,330 a fenébe is. 375 00:16:26,330 --> 00:16:28,700 Kellett volna rögzíteni ezt. 376 00:16:28,700 --> 00:16:34,040 Ó, ember, nem igazán akarom ezt? 377 00:16:34,040 --> 00:16:37,340 Igen, szeretném rögzíteni ezt, és b megfelelő erről ma. 378 00:16:37,340 --> 00:16:39,950 Sajnos az új ebben. 379 00:16:39,950 --> 00:16:45,020 >> 127., 131., és én nem akarom, hogy ez a bonyolult, de miért kellett megváltoztatni a 380 00:16:45,020 --> 00:16:46,340 számok ott? 381 00:16:46,340 --> 00:16:48,360 Mert azt akarom, hogy a ints valójában négy bájt. 382 00:16:48,360 --> 00:16:49,810 Szóval szuper anális erről. 383 00:16:49,810 --> 00:16:53,800 Tehát, hogy ha 1 történetesen foglalkozni 123, a 2 lesz címre 384 00:16:53,800 --> 00:16:55,730 127, mert csak 4 búcsú van. 385 00:16:55,730 --> 00:16:56,210 Ez minden. 386 00:16:56,210 --> 00:16:58,640 És majd felejtsd el az összes egyéb címek a világon. 387 00:16:58,640 --> 00:17:03,320 >> Tehát x van hely 123, y helyen lévő 127. 388 00:17:03,320 --> 00:17:05,770 És most, mit valójában akar csinálni? 389 00:17:05,770 --> 00:17:10,099 Amikor hívásváltáshoz most mi tényleg folyik itt? 390 00:17:10,099 --> 00:17:14,920 Nos, amikor hívom csere, én elhaladó címét x és az y címét. 391 00:17:14,920 --> 00:17:18,540 Így például, ha ez a két darab a papír már képviselik a két 392 00:17:18,540 --> 00:17:23,510 érveket a és b cserélni, mi vagyok én fog írni az első ilyen, 393 00:17:23,510 --> 00:17:27,720 amely fogom hívni hivatkozni, mint a? 394 00:17:27,720 --> 00:17:30,610 >> Pontosan 123. 395 00:17:30,610 --> 00:17:31,905 Szóval ez azt állítják, a. 396 00:17:31,905 --> 00:17:32,955 Ez a paraméter a. 397 00:17:32,955 --> 00:17:35,856 Leteszem a címét x ott. 398 00:17:35,856 --> 00:17:38,152 >> Mi ez? 399 00:17:38,152 --> 00:17:40,890 >> Mi ez? 400 00:17:40,890 --> 00:17:41,190 >> Nem, nem. 401 00:17:41,190 --> 00:17:41,720 Ez rendben van. 402 00:17:41,720 --> 00:17:42,570 Még mindig jó, még mindig jó. 403 00:17:42,570 --> 00:17:43,530 Tehát ez a. 404 00:17:43,530 --> 00:17:46,240 És most a második darab papír, ez lesz b, és mi vagyok én 405 00:17:46,240 --> 00:17:49,010 lesz írásban ez a darab papír? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> Tehát az egyetlen dolog, ami változott, mivel korábbi sokatmondó ez a történet, 408 00:17:53,720 --> 00:17:58,590 hanem szó szerint az 1. és 2., én vagyok majd át a 123. és 127.. 409 00:17:58,590 --> 00:18:02,130 És én most fogja ezen belül ezt a rovatot, rendben? 410 00:18:02,130 --> 00:18:04,640 Tehát, hogy a fekete doboz képviseli jelenleg a swap funkciót. 411 00:18:04,640 --> 00:18:07,230 >> Közben, most már van valaki, végrehajtja a csere funkciót. 412 00:18:07,230 --> 00:18:09,090 Vajon valaki itt mint az önkéntes? 413 00:18:09,090 --> 00:18:09,560 Gyere fel. 414 00:18:09,560 --> 00:18:11,080 Mi a neve? 415 00:18:11,080 --> 00:18:11,460 Charlie-t. 416 00:18:11,460 --> 00:18:12,080 Rendben, Charlie. 417 00:18:12,080 --> 00:18:14,810 Gyere fel. 418 00:18:14,810 --> 00:18:17,310 >> Tehát Charlie fog játszani szerepét a fekete doboz. 419 00:18:17,310 --> 00:18:21,460 És Charlie, mit szeretnék, hogy nem most végre csere oly módon 420 00:18:21,460 --> 00:18:25,320 hogy mivel a két címet, te valóban megy 421 00:18:25,320 --> 00:18:26,330 megváltoztatni az értékeket. 422 00:18:26,330 --> 00:18:28,290 És én suttogni a fülébe hogyan kell futtatni a TV itt. 423 00:18:28,290 --> 00:18:29,930 >> Így megy előre, és te vagy a fekete doboz. 424 00:18:29,930 --> 00:18:30,920 Reach ott. 425 00:18:30,920 --> 00:18:34,054 Milyen értékeket látsz egy, és Milyen értékeket látsz az b? 426 00:18:34,054 --> 00:18:36,740 >> CHARLIE: a 123 és 127 b. 427 00:18:36,740 --> 00:18:37,530 >> DAVID MALAN: OK, pontosan. 428 00:18:37,530 --> 00:18:38,940 Most szünet van egy pillanatra. 429 00:18:38,940 --> 00:18:41,680 Az első dolog, amit most tenni, szerint a kód - ami 430 00:18:41,680 --> 00:18:43,220 Én akkor most húzza fel a képernyőn - 431 00:18:43,220 --> 00:18:46,750 lesz, hogy jelöljenek ki egy kis bit memória nevű temp. 432 00:18:46,750 --> 00:18:48,850 Szóval megyek előre, és Önnek, hogy a memória. 433 00:18:48,850 --> 00:18:52,210 >> Tehát ez lesz egy harmadik változó hogy van hozzáférhető 434 00:18:52,210 --> 00:18:54,080 hívtál temp. 435 00:18:54,080 --> 00:18:57,120 És mit fogsz írni a temp papírra? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> CHARLIE: mutatók, igaz? 438 00:19:03,470 --> 00:19:04,790 >> DAVID MALAN: OK, ne is feltétlenül mutatók. 439 00:19:04,790 --> 00:19:07,230 Így a sort, hogy én már kiemelte a jobb oldalon, 440 00:19:07,230 --> 00:19:07,900 kezdjük ott. 441 00:19:07,900 --> 00:19:08,890 Azt mondja, a csillag. 442 00:19:08,890 --> 00:19:11,670 Így a jelenleg tároló a 123-as. 443 00:19:11,670 --> 00:19:16,660 És csak ösztönösen, milyen nem csillag 123 jelent? 444 00:19:16,660 --> 00:19:21,630 >> De konkrétan, ha a értéke 123 csillag mit jelent? 445 00:19:21,630 --> 00:19:22,560 Az érték a. 446 00:19:22,560 --> 00:19:24,580 Vagy még véletlenül, ott. 447 00:19:24,580 --> 00:19:28,620 Hadd javaslom, hogy a gazdaság az a a kezét, megy előre, és kezelni, hogy 448 00:19:28,620 --> 00:19:29,430 mintha egy térkép. 449 00:19:29,430 --> 00:19:32,940 És sétáljon át magát a számítógép memória, és megtalálni, mi a 450 00:19:32,940 --> 00:19:36,520 a helyszínen 123. 451 00:19:36,520 --> 00:19:37,720 Pontosan. 452 00:19:37,720 --> 00:19:41,100 >> Tehát azt látjuk, a helyszínen 123 mi, természetesen? 453 00:19:41,100 --> 00:19:44,240 OK, akkor mi értéke most már te megy, hogy a temp? 454 00:19:44,240 --> 00:19:44,750 Pontosan. 455 00:19:44,750 --> 00:19:45,600 Így megy előre, és csinálni. 456 00:19:45,600 --> 00:19:51,280 És írjuk be a 1-es szám a darab papír, ami jelenleg című temp. 457 00:19:51,280 --> 00:19:53,540 >> És most a következő lépés, hogy az fogsz végrehajtani 458 00:19:53,540 --> 00:19:54,310 lesz mit. 459 00:19:54,310 --> 00:19:57,820 Nos, a jobb oldali következő sor kód csillag b. b, a 460 00:19:57,820 --> 00:19:59,260 Természetesen tárol egy címet. 461 00:19:59,260 --> 00:20:02,270 Amely foglalkozik 127.. 462 00:20:02,270 --> 00:20:06,620 Csillagok b mit jelent véletlenül beszél? 463 00:20:06,620 --> 00:20:08,700 >> Ugrás az adott helyre. 464 00:20:08,700 --> 00:20:14,988 Így megy előre, és talál meg minket, mi a helyszínen 127. 465 00:20:14,988 --> 00:20:15,480 OK. 466 00:20:15,480 --> 00:20:19,170 Természetesen, a helyszínen 127, még mindig a 2 értéket. 467 00:20:19,170 --> 00:20:24,060 Szóval mit fogsz most tárolja a bármi a helyen egy? 468 00:20:24,060 --> 00:20:26,860 Tehát csillag azt jelenti, menj a helyszínre a. 469 00:20:26,860 --> 00:20:29,770 Mi az a hely a? 470 00:20:29,770 --> 00:20:30,430 >> Pontosan. 471 00:20:30,430 --> 00:20:34,190 Tehát most, ha meg akarja változtatni mi az adott helyen - 472 00:20:34,190 --> 00:20:36,470 Én megyek előre, és fuss A radír itt. 473 00:20:36,470 --> 00:20:37,760 És most tegye vissza a kefe. 474 00:20:37,760 --> 00:20:42,190 Milyen számot fogsz írni az, hogy az üres doboz? 475 00:20:42,190 --> 00:20:42,850 >> Pontosan. 476 00:20:42,850 --> 00:20:46,470 Tehát ezt a kódsort, hogy világos - legyen el szünetet, mit csinál, és Charlie 477 00:20:46,470 --> 00:20:51,730 pont itt, amit ő csak tett, írni a dobozba a következő helyen: 123 478 00:20:51,730 --> 00:20:55,150 az értéket, amelyet korábban a b. 479 00:20:55,150 --> 00:20:59,140 És így már most a valóban ez a második sort. 480 00:20:59,140 --> 00:21:01,920 >> Most sajnos ott van még mindig az egyik sorra, ami megmaradt. 481 00:21:01,920 --> 00:21:04,900 Most mi van a hőmérséklet, a szó szoros értelmében? 482 00:21:04,900 --> 00:21:06,200 Ez nyilvánvalóan az első számú. 483 00:21:06,200 --> 00:21:07,020 Ez nem a cím. 484 00:21:07,020 --> 00:21:09,380 Ez csak egy szám, egyfajta változó az első héten. 485 00:21:09,380 --> 00:21:13,520 >> És most, amikor azt mondod csillag b, azt jelenti, hogy megy a B címzéssel, amely a 486 00:21:13,520 --> 00:21:15,090 Természetesen itt. 487 00:21:15,090 --> 00:21:16,020 Szóval, ha egyszer oda - 488 00:21:16,020 --> 00:21:18,320 Én megyek előre, és törölje mi valójában ott - és mit 489 00:21:18,320 --> 00:21:20,820 fog írni most helyre 127? 490 00:21:20,820 --> 00:21:22,010 >> CHARLIE: Temp, amely az egyik. 491 00:21:22,010 --> 00:21:23,430 >> DAVID MALAN: Temp, amely az egyik. 492 00:21:23,430 --> 00:21:25,670 És mi történik a temp a végén? 493 00:21:25,670 --> 00:21:26,600 Nos, nem igazán tudom. 494 00:21:26,600 --> 00:21:27,420 Nem igazán érdekel. 495 00:21:27,420 --> 00:21:31,090 Minden alkalom, hogy végre egy funkciót eddig, a helyi változókat van 496 00:21:31,090 --> 00:21:31,890 valóban a helyi. 497 00:21:31,890 --> 00:21:33,060 És csak úgy eltűnik. 498 00:21:33,060 --> 00:21:35,040 Ők visszakövetelte az operációs rendszer végül. 499 00:21:35,040 --> 00:21:39,800 >> Tehát az a tény, hogy a hőmérséklet még mindig a értéke 1 a fajta alapvetően 500 00:21:39,800 --> 00:21:41,150 érdektelen számunkra. 501 00:21:41,150 --> 00:21:43,100 Rendben, a tapsot ha lehet Charlie. 502 00:21:43,100 --> 00:21:46,400 Nagyon jól sikerült. 503 00:21:46,400 --> 00:21:51,520 >> Rendben, akkor mi még nem ez azt jelenti, amit tehetünk? 504 00:21:51,520 --> 00:21:54,400 Így kiderül, hogy már mondja egy pár fehér hazugság 505 00:21:54,400 --> 00:21:55,540 jó ideje. 506 00:21:55,540 --> 00:21:59,990 Sőt, kiderült, hogy egy string, mindez idő, nem igazán 507 00:21:59,990 --> 00:22:02,190 karaktersorozat önmagában. 508 00:22:02,190 --> 00:22:03,980 Ez a fajta az, hogy ösztönösen. 509 00:22:03,980 --> 00:22:08,270 >> De technikailag szólva, string egy adattípus, hogy kijelentette belül 510 00:22:08,270 --> 00:22:12,170 A CS50 könyvtár, hogy egyszerűsítse a világ Az első néhány hét osztály. 511 00:22:12,170 --> 00:22:20,130 Milyen a szöveg valóban a címe egy karakter valahol RAM. 512 00:22:20,130 --> 00:22:25,530 A string valóban több, mint 123 és 127, ami történik, hogy meghatározza 513 00:22:25,530 --> 00:22:28,420 ahol string kezdődik a számítógép memóriáját. 514 00:22:28,420 --> 00:22:31,870 >> De ez nem jelenti a string, önmagában is. 515 00:22:31,870 --> 00:22:33,460 És láthatjuk ezt az alábbiak szerint. 516 00:22:33,460 --> 00:22:35,980 Hadd menjek előre, és nyissa meg egy kódot, ami között 517 00:22:35,980 --> 00:22:38,340 mai forráskód példák. 518 00:22:38,340 --> 00:22:42,225 És én megyek előre, és nyitott fel, mondjuk, hasonlítsa össze-0.c. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 Ez egy hibás program, ami megy a következők szerint kell végrehajtani. 521 00:22:48,790 --> 00:22:49,040 >> Első. 522 00:22:49,040 --> 00:22:50,420 Fogok mondani valamit. 523 00:22:50,420 --> 00:22:52,660 Akkor én megyek előre, és kap egy karakterláncot a felhasználó 524 00:22:52,660 --> 00:22:53,750 az, hogy a következő sorban. 525 00:22:53,750 --> 00:22:55,370 Aztán fogom mondani újra. 526 00:22:55,370 --> 00:22:57,540 Akkor én megyek, hogy egy másik húr a felhasználó. 527 00:22:57,540 --> 00:23:00,390 >> És vegyük észre, én bemutatja az egyik string változó nevű s, és 528 00:23:00,390 --> 00:23:03,040 másik ezen karakterláncok A változó nevű t. 529 00:23:03,040 --> 00:23:07,480 És most fogok igényt, nagyon ésszerűen, hogy ha s értéke egyenlő t, 530 00:23:07,480 --> 00:23:08,940 A húrok ugyanaz. 531 00:23:08,940 --> 00:23:09,970 Azt írja ugyanezt. 532 00:23:09,970 --> 00:23:11,830 Más, a húrok nem ugyanaz a dolog. 533 00:23:11,830 --> 00:23:15,440 >> Végül is, ha két bemenet ints, két karakter, két úszó, két páros, bármelyik 534 00:23:15,440 --> 00:23:18,400 az adattípusok beszéltünk eddig összehasonlítani őket - 535 00:23:18,400 --> 00:23:22,070 emlékszem mi nagyon világosan egy ideje hogy nem ezt, mert a 536 00:23:22,070 --> 00:23:25,840 egy egyenlőségjel természetesen az értékadó operátor. 537 00:23:25,840 --> 00:23:26,820 Szóval ez lenne a hiba. 538 00:23:26,820 --> 00:23:29,260 >> Használjuk az egyenlő egyenlőségjel, amely valóban összehasonlítja 539 00:23:29,260 --> 00:23:31,050 dolgokat valódi egyenlőség. 540 00:23:31,050 --> 00:23:32,275 De azt állítják, hogy ez hibás. 541 00:23:32,275 --> 00:23:37,400 Ha megyek előre, és összehasonlítani nulla, majd tegye dot slash összehasonlítani nulla. 542 00:23:37,400 --> 00:23:39,700 És írja be, mondjuk, helló. 543 00:23:39,700 --> 00:23:41,590 És akkor mondjuk helló újra. 544 00:23:41,590 --> 00:23:46,040 Szó szerint ugyanaz a dolog, a számítógép igények beírtam különböző dolog. 545 00:23:46,040 --> 00:23:47,640 >> Most már talán csak elgépelt valamit. 546 00:23:47,640 --> 00:23:49,910 Majd írja a nevemet ebben az időben. 547 00:23:49,910 --> 00:23:52,580 Úgy értem, helló. 548 00:23:52,580 --> 00:23:54,770 Hello. 549 00:23:54,770 --> 00:23:57,360 Ez más minden egyes alkalommal. 550 00:23:57,360 --> 00:23:58,430 >> Nos, miért van ez? 551 00:23:58,430 --> 00:24:00,140 Mi folyik valójában a motorháztető alatt? 552 00:24:00,140 --> 00:24:03,270 Nos, mi folyik valójában alatta A motorháztető a húr, akkor 553 00:24:03,270 --> 00:24:07,410 Aztán beírtam, hogy első alkalommal például a szó hello, természetesen. 554 00:24:07,410 --> 00:24:11,660 De ha ez a képviselt alatt A motorháztető, emlékeztetnek arra, hogy a 555 00:24:11,660 --> 00:24:13,470 string tömbben. 556 00:24:13,470 --> 00:24:15,040 És már azt mondta annyira a múltban. 557 00:24:15,040 --> 00:24:20,200 >> Tehát, ha úgy rajzolni, hogy tömb, mint ez, én vagyok fogja képviselni valami egészen 558 00:24:20,200 --> 00:24:23,030 hasonló ahhoz, amit csináltunk egy perce. 559 00:24:23,030 --> 00:24:25,390 És ott valóban valami külön itt is. 560 00:24:25,390 --> 00:24:28,090 Mit tudtunk meg volt a végén minden húr? 561 00:24:28,090 --> 00:24:30,760 Igen, ez a backslash nulla, ami ahogy a képviselő, 562 00:24:30,760 --> 00:24:33,610 szó, 00000000. 563 00:24:33,610 --> 00:24:35,680 Nyolc 0 bitek a sorban. 564 00:24:35,680 --> 00:24:37,610 >> Nem tudom, őszintén szólva, mi után. 565 00:24:37,610 --> 00:24:40,090 Ez csak egy csomó több RAM belül a számítógépet. 566 00:24:40,090 --> 00:24:40,970 De ez egy tömb. 567 00:24:40,970 --> 00:24:42,260 Beszélgettünk tömbök előtt. 568 00:24:42,260 --> 00:24:45,010 És általában beszélünk tömbök mint nulla hely, 569 00:24:45,010 --> 00:24:46,580 majd egy, majd két. 570 00:24:46,580 --> 00:24:47,950 De ez csak a kényelem. 571 00:24:47,950 --> 00:24:49,380 És ez teljesen relatív. 572 00:24:49,380 --> 00:24:53,010 >> Amikor valóban egyre emlék a számítógép, ez persze minden 573 00:24:53,010 --> 00:24:55,450 2000000000 néhány furcsa bájt, esetleg. 574 00:24:55,450 --> 00:24:59,100 Így valóban a motorháztető alatt, egész idő alatt, igen. 575 00:24:59,100 --> 00:25:01,670 Ez is nagyon jól lehet konzol nulla. 576 00:25:01,670 --> 00:25:04,780 De ha még mélyebbre ásni alatta a motorháztetőt, hogy tényleg 577 00:25:04,780 --> 00:25:07,000 cím száma 123.. 578 00:25:07,000 --> 00:25:09,150 Ez a cím 124. 579 00:25:09,150 --> 00:25:11,040 Ez a cím 125. 580 00:25:11,040 --> 00:25:12,540 >> És nem csavarja fel ebben az időben. 581 00:25:12,540 --> 00:25:15,840 Ezek most egy bájt mellett milyen okból? 582 00:25:15,840 --> 00:25:17,930 Mekkora egy char? 583 00:25:17,930 --> 00:25:19,170 A karakter csak egy byte. 584 00:25:19,170 --> 00:25:20,570 Az int általában négy bájt. 585 00:25:20,570 --> 00:25:24,850 Szóval ezért csináltam 123, 127, 131, és így tovább. 586 00:25:24,850 --> 00:25:27,560 Most már tudom tartani a matematika egyszerűbb és csak a plusz 1. 587 00:25:27,560 --> 00:25:30,510 És ez most mi is folyik az a motorháztető alatt. 588 00:25:30,510 --> 00:25:37,760 >> Tehát, ha kijelenti valami ilyesmit, karakterlánc s ez valójában - 589 00:25:37,760 --> 00:25:39,170 kiderül - 590 00:25:39,170 --> 00:25:41,190 char csillag. 591 00:25:41,190 --> 00:25:44,640 Star, természetesen azt jelenti, cím, más néven mutató. 592 00:25:44,640 --> 00:25:46,200 Tehát a cím valamit. 593 00:25:46,200 --> 00:25:47,510 Mi ez a címe? 594 00:25:47,510 --> 00:25:47,760 >> Nos - 595 00:25:47,760 --> 00:25:51,680 Én vagyok az egyetlen, aki látja a nagyon fontos pont csinálok, vagy úgy gondolja, 596 00:25:51,680 --> 00:25:52,560 Csinálok. 597 00:25:52,560 --> 00:25:55,270 Így húr - 598 00:25:55,270 --> 00:25:57,180 A szomorú dolog az, van egy monitor ott, ahol 599 00:25:57,180 --> 00:25:58,100 láthatta volna, hogy az. 600 00:25:58,100 --> 00:26:00,990 >> Rendben, húr s ami Kijelentettem korábban. 601 00:26:00,990 --> 00:26:04,600 De kiderült, hála egy kis mágia a CS50 könyvtárban, mindezt 602 00:26:04,600 --> 00:26:08,780 időkarakterlánc szó szerint volt char csillag. 603 00:26:08,780 --> 00:26:11,310 A csillag is azt jelenti, mutató vagy cím. 604 00:26:11,310 --> 00:26:14,180 Az a tény, hogy ez a kísérő szó char azt jelenti, hogy a 605 00:26:14,180 --> 00:26:15,970 címét egy karaktert. 606 00:26:15,970 --> 00:26:23,100 >> Tehát, ha kap karakterlánc hívják, és azt írja A H-E-L-L-O, javaslatot már mi kap 607 00:26:23,100 --> 00:26:27,330 szöveg szó szerint vissza minden Ebben az időben, bár most már inkább 608 00:26:27,330 --> 00:26:29,980 leegyszerűsítve a világot? 609 00:26:29,980 --> 00:26:33,310 Mit kap karaktersorozat ténylegesen vissza, mint a visszatérési érték? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> Ebben az esetben a 123, például. 612 00:26:38,720 --> 00:26:42,630 Már korábban azt mondta, hogy kap húr egyszerűen visszaadja a string, egy sorozat 613 00:26:42,630 --> 00:26:43,300 karakter. 614 00:26:43,300 --> 00:26:44,790 De ez egy kicsit kegyes hazugság. 615 00:26:44,790 --> 00:26:48,010 Az út, hogy szöveg tényleg működik a motorháztető alatt ez lesz a 616 00:26:48,010 --> 00:26:48,930 húr a felhasználó. 617 00:26:48,930 --> 00:26:51,530 Ez Plops a karaktereket ő típusokat a memóriában. 618 00:26:51,530 --> 00:26:54,680 A csomag egy backslash végén nulla olyan karaktersorozat. 619 00:26:54,680 --> 00:26:57,310 >> De akkor mit kap karakterlánc szó szerint vissza? 620 00:26:57,310 --> 00:27:02,710 Ez szó szerint adja vissza a címét első bájt a RAM 621 00:27:02,710 --> 00:27:04,130 esetén alkalmazható, hogy az erő. 622 00:27:04,130 --> 00:27:07,500 És kiderül, hogy csak a visszatérő Egyetlen címe 623 00:27:07,500 --> 00:27:12,120 első karaktere, azaz a elegendő megtalálni a teljes egészében 624 00:27:12,120 --> 00:27:12,630 a húr. 625 00:27:12,630 --> 00:27:16,930 >> Más szóval, hogy nem rendelkezik húr vissza a 123. és 124. és 125.. 626 00:27:16,930 --> 00:27:19,950 Nem kell, hogy adjon nekem egy hosszú listát az összes a bájtok 627 00:27:19,950 --> 00:27:20,740 a szöveg használ. 628 00:27:20,740 --> 00:27:22,670 Mert az egyik, ők mind háttal. 629 00:27:22,670 --> 00:27:28,160 És kettő alapján az első címet, I tudja kitalálni, ahol a szöveg véget ér. 630 00:27:28,160 --> 00:27:29,910 Hogyan? 631 00:27:29,910 --> 00:27:33,490 >> A speciális null karakter, a backslash nulla a végén. 632 00:27:33,490 --> 00:27:35,430 Tehát más szavakkal, ha át körbe - 633 00:27:35,430 --> 00:27:36,530 belső változók - 634 00:27:36,530 --> 00:27:41,300 a címét egy char, valamint vállalja , hogy a végén minden húr, minden 635 00:27:41,300 --> 00:27:45,040 karaktersorozat, mint mi, emberek Szerintem húrok, ha feltételezzük, hogy 636 00:27:45,040 --> 00:27:48,600 a végén minden ilyen karakterlánc van a backslash nulla, akkor arany. 637 00:27:48,600 --> 00:27:52,430 Mert mindig talál a végén egy string. 638 00:27:52,430 --> 00:27:54,870 >> Most mi igazán majd megy az ebben a programban? 639 00:27:54,870 --> 00:27:59,990 Miért ez a program, Összehasonlításhoz 0.c, hibás? 640 00:27:59,990 --> 00:28:01,690 Amit ténylegesen képest? 641 00:28:01,690 --> 00:28:02,420 Igen? 642 00:28:02,420 --> 00:28:05,000 >> DIÁK: [hangtalan]. 643 00:28:05,000 --> 00:28:05,730 >> DAVID MALAN: Pontosan. 644 00:28:05,730 --> 00:28:08,350 Ez összehasonlítva a helyszínen a húrok. 645 00:28:08,350 --> 00:28:12,420 Tehát, ha a felhasználó beírt helló egyszer, , mint én, a memória, hogy végül 646 00:28:12,420 --> 00:28:13,430 néz ki, mint ez. 647 00:28:13,430 --> 00:28:18,210 Ha a felhasználó, akkor típusok Helló újra, hanem hívja kap szöveg újabb c 648 00:28:18,210 --> 00:28:21,800 nem különösebben okos, ha tanítani , hogy legyen okos írásban kódot. 649 00:28:21,800 --> 00:28:22,430 >> C - 650 00:28:22,430 --> 00:28:23,860 és a számítógépek általában - 651 00:28:23,860 --> 00:28:27,370 Ha beírja a szót Helló újra, tudod, hogy mit fogsz kapni. 652 00:28:27,370 --> 00:28:31,480 Te csak megy, hogy egy másik tömb memória, hogy igen, előfordul, hogy 653 00:28:31,480 --> 00:28:35,510 tárolására H-E-L-L-O-és így tovább. 654 00:28:35,510 --> 00:28:38,240 >> Ez lesz ugyanúgy néz ki, hogy mi emberek, de ez a cím 655 00:28:38,240 --> 00:28:39,460 lehet, hogy nem 123. 656 00:28:39,460 --> 00:28:42,470 Lehet, hogy csak azért történik, hogy a operációs rendszer néhány rendelkezésre álló 657 00:28:42,470 --> 00:28:45,430 hely például a helyszínen - 658 00:28:45,430 --> 00:28:49,820 mondjuk valami önkényes, mint ez a hely 200. 659 00:28:49,820 --> 00:28:51,620 És ez hely 201. 660 00:28:51,620 --> 00:28:53,060 És ez hely 202. 661 00:28:53,060 --> 00:28:55,730 Fogalmunk sincs, hol ez lesz a memóriában. 662 00:28:55,730 --> 00:28:59,110 >> De hogy ez mit jelent az, hogy ami majd tárolni végső soron s? 663 00:28:59,110 --> 00:29:00,750 A 123-as. 664 00:29:00,750 --> 00:29:04,860 Mi lesz tárolható t, ebben önkényes példa? 665 00:29:04,860 --> 00:29:06,300 A szám 200-at. 666 00:29:06,300 --> 00:29:11,410 És minden, ami azt jelenti, akkor nyilván, 123 nem egyenlő 200-at. 667 00:29:11,410 --> 00:29:14,940 És ez, ha a feltétel nem értéke igaz. 668 00:29:14,940 --> 00:29:18,430 Mivel get sztring különböző darabokat a memória minden egyes alkalommal. 669 00:29:18,430 --> 00:29:20,360 >> Most már látjuk ezt újra egy másik példa. 670 00:29:20,360 --> 00:29:23,764 Hadd menjek előre, és nyissa meg copy-0.c. 671 00:29:23,764 --> 00:29:28,770 Azt állítom, hogy ez a példa lesz próbálja ki - de nem - a másolni két húr 672 00:29:28,770 --> 00:29:29,910 az alábbiak szerint. 673 00:29:29,910 --> 00:29:31,730 >> Fogok mondani valamit a felhasználónak. 674 00:29:31,730 --> 00:29:34,490 Én majd megy, hogy egy húr, és hívják s. 675 00:29:34,490 --> 00:29:36,400 És most, én ezt csekket. 676 00:29:36,400 --> 00:29:37,990 Már említettük ez egy kicsit vissza. 677 00:29:37,990 --> 00:29:42,490 De amikor lehet, hogy sor return null, egy különleges karakter, vagy speciális 678 00:29:42,490 --> 00:29:45,050 szimbólum mondjuk. 679 00:29:45,050 --> 00:29:45,900 Ha ez a memória. 680 00:29:45,900 --> 00:29:48,970 >> Például, ha a felhasználó valóban nehéz és típusok egy kegyetlen 681 00:29:48,970 --> 00:29:51,220 karakterek száma a billentyűzet és találat Enter. 682 00:29:51,220 --> 00:29:54,580 Ha ez a szám karakterek egyszerűen nem illeszkedik RAM bármilyen őrült 683 00:29:54,580 --> 00:29:57,820 Ezért is kap húr talán nagyon jól vissza null. 684 00:29:57,820 --> 00:30:01,080 >> Vagy ha a program maga sokat tesz más dolog, és csak 685 00:30:01,080 --> 00:30:03,790 nincs elég memória A string sikeres, talán vége 686 00:30:03,790 --> 00:30:05,240 fel vissza null. 687 00:30:05,240 --> 00:30:07,160 De nézzük pontosabban , hogy mi ez az egész. 688 00:30:07,160 --> 00:30:10,280 Mi s az adattípus tényleg? 689 00:30:10,280 --> 00:30:11,610 Char csillag. 690 00:30:11,610 --> 00:30:14,560 >> Így kiderül, most már tudod szedni vissza a réteg a null. 691 00:30:14,560 --> 00:30:17,500 Kiderült, null - igen, természetesen egy speciális szimbólum. 692 00:30:17,500 --> 00:30:19,190 De mi is ez valójában? 693 00:30:19,190 --> 00:30:25,220 Tényleg, null csak egy szimbólum, amely azt az emberek használják, hogy képviselje nullára is. 694 00:30:25,220 --> 00:30:29,010 >> Így a szerzők a C, és a számítógépek általában úgy döntött évvel ezelőtt 695 00:30:29,010 --> 00:30:30,010 , hogy tudod, mit. 696 00:30:30,010 --> 00:30:34,850 Miért nem tudjuk biztosítani, hogy egyetlen felhasználó adatok soha, soha, soha 697 00:30:34,850 --> 00:30:36,730 tárolt bye nulla? 698 00:30:36,730 --> 00:30:39,610 Sőt, még az én önkényes példában előtt, nem indul a számozás 699 00:30:39,610 --> 00:30:40,390 byte nulla. 700 00:30:40,390 --> 00:30:41,540 Elkezdtem egy. 701 00:30:41,540 --> 00:30:44,950 Mert tudtam, hogy az emberek a világ úgy döntött, hogy fenntartja a nulla 702 00:30:44,950 --> 00:30:47,970 byte bárki RAM valami különleges. 703 00:30:47,970 --> 00:30:52,020 >> Az ok pedig, amikor csak akar jelzi, hogy valami baj 704 00:30:52,020 --> 00:30:55,960 tekintettel a címeket, akkor vissza null - más néven nulla - 705 00:30:55,960 --> 00:30:59,410 és mert tudja, hogy nincs legális adatok címre nulla, egyértelműen 706 00:30:59,410 --> 00:31:00,400 azt jelenti, hogy hiba történt. 707 00:31:00,400 --> 00:31:04,080 És ezért mi, a konvenció, ellenőrizze A null-és visszaút valamit 708 00:31:04,080 --> 00:31:06,260 , mint az egyik ezekben az esetekben. 709 00:31:06,260 --> 00:31:09,300 >> Tehát, ha lapozás most, ez csak majd néhány hiba ellenőrzése, csak abban az esetben 710 00:31:09,300 --> 00:31:10,610 valami baj a [? óvadékot?] 711 00:31:10,610 --> 00:31:13,470 összesen és kilép a programból a hazatérés. 712 00:31:13,470 --> 00:31:19,030 Ez a sor most lehet újraírni mint ez, ami azt jelenti, hogy mi? 713 00:31:19,030 --> 00:31:23,155 A bal oldali, adj még egy mutató egy karaktert, és hívja meg t. 714 00:31:23,155 --> 00:31:26,935 Mit tárolása belül t, amely ez az egy sort? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> Én tárolása helyre. 717 00:31:32,170 --> 00:31:34,742 Konkrétan a helyet ez volt s. 718 00:31:34,742 --> 00:31:39,000 Tehát, ha a felhasználó beírt hello, és hogy az első Hello történik, hogy a végén 719 00:31:39,000 --> 00:31:42,567 Itt, majd a szám 123 majd jött vissza, hogy 720 00:31:42,567 --> 00:31:43,810 húr, és tárolható - 721 00:31:43,810 --> 00:31:44,780 ahogy korábban említettem - 722 00:31:44,780 --> 00:31:45,440 A s. 723 00:31:45,440 --> 00:31:50,560 >> Amikor Ezennel egy mutatót a char és hívjuk t, mi a szám 724 00:31:50,560 --> 00:31:53,940 szó lesz a végén t a történet szerint? 725 00:31:53,940 --> 00:31:55,420 Így 123.. 726 00:31:55,420 --> 00:32:00,310 >> Szóval technikailag most is s t mutat a pontos 727 00:32:00,310 --> 00:32:02,410 azonos darabokat memóriát. 728 00:32:02,410 --> 00:32:06,140 Tehát észre, mit fogok csinálni a bizonyítják, hogy ez a program hibás. 729 00:32:06,140 --> 00:32:08,820 >> Először fogok állítani, és Nyomtatási f, kihasználva 730 00:32:08,820 --> 00:32:10,080 a másolatot a húr. 731 00:32:10,080 --> 00:32:11,660 Aztán fogok egy kicsit hibaellenőrzés. 732 00:32:11,660 --> 00:32:12,160 Megyek, hogy megbizonyosodjon arról. 733 00:32:12,160 --> 00:32:16,710 Bizonyosodjunk meg arról, hogy a húr t van legalábbis nagyobb, mint nulla hosszúságú, 734 00:32:16,710 --> 00:32:19,190 így van néhány karakter van ténylegesen kihasználni. 735 00:32:19,190 --> 00:32:22,840 >> És akkor lehet, hogy visszahívja ezt a korábbi példa. 736 00:32:22,840 --> 00:32:25,630 2 felső - ami A ctype.h fájlt. 737 00:32:25,630 --> 00:32:30,800 T tartó nulla ad nekem a nulla karakter a string t. 738 00:32:30,800 --> 00:32:34,360 És 2 felső ugyanezen érték, az Természetesen, átalakítja a nagybetűs. 739 00:32:34,360 --> 00:32:38,230 >> Tehát ösztönösen, ez kiemelt sor A kód kihasználva az első 740 00:32:38,230 --> 00:32:40,250 levél t. 741 00:32:40,250 --> 00:32:44,485 De nem kihasználva, ösztönösen, Az első levelet s. 742 00:32:44,485 --> 00:32:48,130 De ha előre gondolkodni, mi vagyok én arról, hogy amikor elindul a program 743 00:32:48,130 --> 00:32:54,220 és nyomtassa ki mind az eredeti, s, és az úgynevezett másolás, t? 744 00:32:54,220 --> 00:32:55,350 >> Ők valóban lesz ugyanaz. 745 00:32:55,350 --> 00:32:56,600 És miért akarnak ugyanaz? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 Ők mindketten mutat pontosan ugyanaz a dolog. 748 00:33:01,020 --> 00:33:01,610 Szóval erre. 749 00:33:01,610 --> 00:33:03,160 >> Legyen másolatot nulla. 750 00:33:03,160 --> 00:33:04,070 Ez rendben elkészül. 751 00:33:04,070 --> 00:33:06,500 Engedik példányt nulla. 752 00:33:06,500 --> 00:33:10,110 Hadd írja ilyesmit hello csupa kisbetűvel, majd nyomja meg az Enter billentyűt. 753 00:33:10,110 --> 00:33:16,520 És azt állítja, hogy mind az eredeti s és a másolat valóban azonosak. 754 00:33:16,520 --> 00:33:17,920 >> Szóval, mi is történt itt? 755 00:33:17,920 --> 00:33:20,100 Hadd dolgozza át ezt a képet, csak hogy elmondja a történetet 756 00:33:20,100 --> 00:33:21,340 kissé eltérő módon. 757 00:33:21,340 --> 00:33:26,060 Mi folyik valójában alatta Hood, amikor kijelentem, valami hasonló 758 00:33:26,060 --> 00:33:30,410 char kezdet s, vagy karakterlánc s, Kapok egy mutatót - 759 00:33:30,410 --> 00:33:33,090 amely történetesen négy bájt A CS50 készülék 760 00:33:33,090 --> 00:33:34,410 és a sok számítógép. 761 00:33:34,410 --> 00:33:36,008 És én fogom hívni ezt a s. 762 00:33:36,008 --> 00:33:39,810 És ez jelenleg egy ismeretlen érték. 763 00:33:39,810 --> 00:33:43,900 >> Amikor, hogy egy változót, hacsak nem magát hogy egy értéket ott, aki 764 00:33:43,900 --> 00:33:44,570 tudja, hogy mi van ott. 765 00:33:44,570 --> 00:33:48,110 Ez lehet néhány random sorozata bit az előző végrehajtás. 766 00:33:48,110 --> 00:33:52,490 Tehát, amikor az én kódsor nem kap string, majd tárolja a visszatérési 767 00:33:52,490 --> 00:33:54,800 értéket kap karakterlánc valahogy - 768 00:33:54,800 --> 00:33:58,520 és mi végül húzza vissza, hogy kap szöveg működik, valahogy lefoglal egy 769 00:33:58,520 --> 00:34:00,480 tömb, talán úgy néz ki, Egy kicsit olyan, mint ez. 770 00:34:00,480 --> 00:34:05,390 H-E-L-L-O, backslash nulla. 771 00:34:05,390 --> 00:34:09,510 >> Tegyük fel, hogy ez a cím 123 csak az első a következetesség. 772 00:34:09,510 --> 00:34:13,000 Szóval karakterlánc visszatér, a kiemelt sorban van, visszatér a 773 00:34:13,000 --> 00:34:15,000 szám azt mondtuk, 123.. 774 00:34:15,000 --> 00:34:17,420 Szóval, mi folyik belül van itt? 775 00:34:17,420 --> 00:34:26,590 >> Nos, ami igazán megy belül s 123. 776 00:34:26,590 --> 00:34:29,250 De őszintén szólva, én kapok egy kis zavarba összes ilyen címek, 777 00:34:29,250 --> 00:34:30,320 mindezek tetszőleges számokat. 778 00:34:30,320 --> 00:34:32,290 123., 124., 127.. 779 00:34:32,290 --> 00:34:34,570 Szóval valóban egyszerűsíti a világ egy kicsit. 780 00:34:34,570 --> 00:34:38,800 >> Amikor beszélünk mutatók, őszintén szólva, a mi emberek, ki a fene törődik, ahol 781 00:34:38,800 --> 00:34:39,870 a dolgok a memóriában? 782 00:34:39,870 --> 00:34:41,080 Ez teljesen önkényes. 783 00:34:41,080 --> 00:34:43,370 Meg fog attól függ, hogyan mennyi RAM a felhasználó. 784 00:34:43,370 --> 00:34:46,590 Ez lesz akire számíthatok, mikor a nap futtatja a programot, talán, és 785 00:34:46,590 --> 00:34:48,250 milyen bemenet a felhasználó ad. 786 00:34:48,250 --> 00:34:50,060 Vagyunk lakás a lényegtelen részleteket. 787 00:34:50,060 --> 00:34:54,230 >> Úgyhogy elvonatkoztatni, és azt mondják, hogy, ha fut egy sor kódot, mint ez, 788 00:34:54,230 --> 00:34:57,320 char s csillag lesz a visszatérő értéke get string. 789 00:34:57,320 --> 00:35:02,720 Miért nem inkább csak felhívni, amit folyamatosan hív olyan mutatót, mintha ez 790 00:35:02,720 --> 00:35:04,140 mutatott valamit? 791 00:35:04,140 --> 00:35:07,000 Szóval, most, hogy azt állítják, s akár van egy mutató - 792 00:35:07,000 --> 00:35:08,480 a motorháztető alatt, hogy ez a cím. 793 00:35:08,480 --> 00:35:11,330 De ez csak mutat az első bájt a 794 00:35:11,330 --> 00:35:12,780 karakterlánc, ami már visszatért. 795 00:35:12,780 --> 00:35:16,710 >> Ha most vissza a kódot itt mi folyik ebben a sorban? 796 00:35:16,710 --> 00:35:20,020 Nos, ebben a kiemelt sor most, Én kijelentette látszólag egy másik 797 00:35:20,020 --> 00:35:21,070 nevű változó t. 798 00:35:21,070 --> 00:35:25,700 De ez is egy mutató, úgyhogy megyek felhívni azt, elméletileg a pontos 799 00:35:25,700 --> 00:35:26,710 azonos méretű dobozban. 800 00:35:26,710 --> 00:35:28,160 És fogom nevezni t. 801 00:35:28,160 --> 00:35:33,500 >> És most, ha megyünk vissza újra a kódot, amikor Store belül t, 802 00:35:33,500 --> 00:35:36,920 mi vagyok én műszaki amivel belül t? 803 00:35:36,920 --> 00:35:39,350 Nos Technikailag ez volt a 123-as. 804 00:35:39,350 --> 00:35:42,270 Szóval tényleg azt kell írni A 123-as is. 805 00:35:42,270 --> 00:35:43,900 De nézzük, hogy magasabb szinten. 806 00:35:43,900 --> 00:35:48,090 t, ha ez csak egy mutató, ösztönösen, csak ezt. 807 00:35:48,090 --> 00:35:49,800 Ez minden, amit most tárolják ott. 808 00:35:49,800 --> 00:35:54,970 >> Tehát most az utolsó érdekes vonalak kódot, amikor valóban jár-kel 809 00:35:54,970 --> 00:36:00,680 kihasználva a nulla karakter t, hogy mi folyik itt? 810 00:36:00,680 --> 00:36:06,310 Nos, t tartó nulla most mutat hogy milyen karakter, feltehetőleg? 811 00:36:06,310 --> 00:36:07,460 >> Ez mutat h. 812 00:36:07,460 --> 00:36:08,870 Mivel t tartó nulla - 813 00:36:08,870 --> 00:36:12,490 emlékszem, ez a régi szintaxis. t tartó nulla, csak azt jelenti, ha t egy string, t 814 00:36:12,490 --> 00:36:15,590 konzol nulla azt jelenti, egyre a nulla karaktert az erejét. 815 00:36:15,590 --> 00:36:18,650 Tehát, hogy ez mit is jelent , hogy megy ez a tömb - 816 00:36:18,650 --> 00:36:21,520 és igen, ez lehet 123, ez lehet 124. 817 00:36:21,520 --> 00:36:22,790 De minden relatív, emlékszem. 818 00:36:22,790 --> 00:36:25,640 Amikor beszélünk, egy sor, van Az előnye, hogy beszél 819 00:36:25,640 --> 00:36:27,000 relatív mutatók. 820 00:36:27,000 --> 00:36:31,120 >> Így most már csak fel hogy t tartó nulla óra. 821 00:36:31,120 --> 00:36:35,090 Tehát, ha hívom 2 felső rajta, hogy mi ez Tényleg csinál kihasználva 822 00:36:35,090 --> 00:36:38,290 A kisbetűs h nagybetű H. De persze, mi s? 823 00:36:38,290 --> 00:36:41,010 Ez ugyanannak az értéknek két rohadt string. 824 00:36:41,010 --> 00:36:44,200 >> Szóval ez minden, ami történt ezt a kódot eddig. 825 00:36:44,200 --> 00:36:45,960 Szóval mi akkor a hatása? 826 00:36:45,960 --> 00:36:48,300 Hogyan lehet megjavítani a két problémát? 827 00:36:48,300 --> 00:36:50,870 Hogyan összehasonlítani a tényleges húrok? 828 00:36:50,870 --> 00:36:53,720 >> Nos ösztönösen, hogyan megy a kettő összehasonlítása 829 00:36:53,720 --> 00:36:55,090 húrok valódi egyenlőség? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> Mit jelent, ha két húrok egyenlő? 832 00:37:00,750 --> 00:37:04,330 Nyilvánvalóan nem, hogy a címek egyenlő a memóriában, mert ez egy kis 833 00:37:04,330 --> 00:37:06,590 szintű végrehajtás részletesen. 834 00:37:06,590 --> 00:37:08,360 Minden karakter ugyanaz. 835 00:37:08,360 --> 00:37:12,810 Hadd javaslatot, és hadd mutassam be változat egy compare.c 836 00:37:12,810 --> 00:37:14,970 itt, így összehasonlítani-1.c. 837 00:37:14,970 --> 00:37:19,590 >> Hadd javaslom, hogy még mindig a mutató hívott s, és tárolja azt a 838 00:37:19,590 --> 00:37:20,610 visszatérési érték A string. 839 00:37:20,610 --> 00:37:21,750 Csináljuk ugyanezt t. 840 00:37:21,750 --> 00:37:23,230 Tehát sem a kód eltér. 841 00:37:23,230 --> 00:37:25,420 Megyek, hogy adjunk egy kis több hiba ellenőrzése most. 842 00:37:25,420 --> 00:37:29,390 Most, hogy mi vagyunk a fajta bontsa fel ez a réteg CS50, amit egy húr 843 00:37:29,390 --> 00:37:33,520 valójában, meg kell, hogy legyen az anális arról, hogy róla, hogy ne vissza 844 00:37:33,520 --> 00:37:35,330 érvénytelen értékek, mint a null. 845 00:37:35,330 --> 00:37:36,440 >> Szóval csak úgy, hogy ellenőrizze. 846 00:37:36,440 --> 00:37:41,490 Ha s nem egyenlő nulla, és t nem egyenlő null, ez azt jelenti, hogy jól vagy. 847 00:37:41,490 --> 00:37:44,460 A string nem csavarja kapok bármelyik ezek szálakat. 848 00:37:44,460 --> 00:37:51,270 És akkor talán hiszem, most, hogy mi nem STR CMP feltehetően csinálni? 849 00:37:51,270 --> 00:37:52,000 Karakterlánc összehasonlítása. 850 00:37:52,000 --> 00:37:55,470 >> Tehát, ha már programot java előtt, ez olyan, mint az egyenlő módszer a 851 00:37:55,470 --> 00:37:56,490 karakterlánc osztály. 852 00:37:56,490 --> 00:37:57,890 De azok számára, akik még nem beprogramozott, 853 00:37:57,890 --> 00:37:59,320 ez csak egy C függvényt. 854 00:37:59,320 --> 00:38:02,180 Előfordul, hogy jöjjön a nevű fájlt string.h. 855 00:38:02,180 --> 00:38:03,830 Ez az, ahol ez deklarált. 856 00:38:03,830 --> 00:38:05,110 >> És string összehasonlítása - 857 00:38:05,110 --> 00:38:07,530 Igazából elfelejteni a használat, de mindegy, hogy. 858 00:38:07,530 --> 00:38:10,470 Emlékezzünk vissza, hogy nem tehetünk férfi, keverjük összehasonlítani. 859 00:38:10,470 --> 00:38:12,590 És ez lesz, hogy ki a Linux programozók kézi. 860 00:38:12,590 --> 00:38:14,060 És, őszintén szólva, egy kicsit rejtélyes. 861 00:38:14,060 --> 00:38:15,270 De látom, hogy itt, igen. 862 00:38:15,270 --> 00:38:17,570 Meg kell is string.h. 863 00:38:17,570 --> 00:38:20,590 >> És azt mondja, itt, a leírás, a " sztring Compare függvény 864 00:38:20,590 --> 00:38:24,560 a két szöveget S1 és S2. "és S1 és S2 látszólag a két 865 00:38:24,560 --> 00:38:26,120 argumentumokat hüvelyk 866 00:38:26,120 --> 00:38:28,650 Nem igazán emlékszem, mit const van, de most észre - 867 00:38:28,650 --> 00:38:31,480 és lehet, hogy már látta ezt, amikor már használja a man lapokat, ha 868 00:38:31,480 --> 00:38:32,390 ez minden - 869 00:38:32,390 --> 00:38:36,220 hogy char csillag csak egyet zsinórral. 870 00:38:36,220 --> 00:38:40,440 >> Így összehasonlítja a két szöveget, S1 és S2, és visszatér egy egész kisebb 871 00:38:40,440 --> 00:38:44,930 mint, vagy egyenlő vagy nagyobb, mint nulla S1, ha megállapítást nyer, illetve, hogy legyen 872 00:38:44,930 --> 00:38:47,450 kevesebb, vagy a mérkőzés, vagy lehet nagyobb, mint az S2. 873 00:38:47,450 --> 00:38:51,220 Ez csak egy nagyon összetett szóval hogy karakterlánc összehasonlítása visszatér 874 00:38:51,220 --> 00:38:55,760 nulla, ha két sztring ösztönösen azonos karakter 875 00:38:55,760 --> 00:38:57,120 karaktert a karakter. 876 00:38:57,120 --> 00:38:59,970 >> Ez visszaadja a negatív szám, ha s, ABC, állítólag 877 00:38:59,970 --> 00:39:01,010 az elé t. 878 00:39:01,010 --> 00:39:05,300 Vagy vissza pozitív szám, ha s állítólag üldözni t 879 00:39:05,300 --> 00:39:06,170 ABC. 880 00:39:06,170 --> 00:39:08,360 Így ezzel az egyszerű funkcióval lehetne te pl rendezze 881 00:39:08,360 --> 00:39:09,770 csomó a szavak? 882 00:39:09,770 --> 00:39:13,984 >> Tehát ebben az új változatban, megyek megy előre, és compare1. 883 00:39:13,984 --> 00:39:15,750 Dot slash összehasonlítására ez. 884 00:39:15,750 --> 00:39:18,030 Majd írja hello minden kisbetűs. 885 00:39:18,030 --> 00:39:20,300 Megyek, hogy írja a Hello minden kisbetűvel újra. 886 00:39:20,300 --> 00:39:23,340 És szerencsére most rájön Beírtam ugyanezt. 887 00:39:23,340 --> 00:39:27,520 >> Közben, ha azt írja a Hello alacsonyabb ügy HELLO nagybetűvel és 888 00:39:27,520 --> 00:39:29,710 hasonlítsa össze őket, beírtam különböző dolog. 889 00:39:29,710 --> 00:39:32,530 Mivel nem csak a címeket más, de mi összehasonlítása 890 00:39:32,530 --> 00:39:35,350 különböző karakterek újra és újra. 891 00:39:35,350 --> 00:39:37,320 >> Nos, menjünk, és rögzítse egy más probléma most. 892 00:39:37,320 --> 00:39:41,590 Hadd nyit változatát egy példány, amely most foglalkozik 893 00:39:41,590 --> 00:39:42,900 ezt a kérdést az alábbiak szerint. 894 00:39:42,900 --> 00:39:45,650 És ez fog kinézni egy kicsit bonyolultabb. 895 00:39:45,650 --> 00:39:49,320 De ha úgy gondolja, hogy mi problémánk kell megoldani, remélhetőleg ez lesz 896 00:39:49,320 --> 00:39:51,870 világos csak egy pillanatban. 897 00:39:51,870 --> 00:39:57,280 >> Tehát ez az első sorban, kezdőkarakter t, a laikus szempontból tudna valaki javasolni 898 00:39:57,280 --> 00:39:59,450 mi ez a vonal itt azt jelenti? 899 00:39:59,450 --> 00:40:01,050 Char csillag t, mi az, hogy csinálsz? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> Jó. 902 00:40:07,210 --> 00:40:09,500 Létrehozása mutató néhány hely a memóriában. 903 00:40:09,500 --> 00:40:10,930 És hadd finomítani egy kicsit. 904 00:40:10,930 --> 00:40:17,180 Hogy egy változót, amely tárolja a cím bizonyos char a memóriában, csak 905 00:40:17,180 --> 00:40:18,480 , hogy egy kicsit több megfelelő. 906 00:40:18,480 --> 00:40:21,210 >> OK, így most már a jobb oldalon, én már soha nem láttam egy ilyen funkció 907 00:40:21,210 --> 00:40:22,660 előtt, malloc. 908 00:40:22,660 --> 00:40:26,980 De mit is jelent ez? 909 00:40:26,980 --> 00:40:28,050 Elosztása a memória. 910 00:40:28,050 --> 00:40:29,410 Memória allokáció. 911 00:40:29,410 --> 00:40:33,050 >> Így kiderül, eddig, akkor nem igazán volt hatékony módszer a 912 00:40:33,050 --> 00:40:36,210 kéri az operációs rendszer, adj egy kis memória. 913 00:40:36,210 --> 00:40:39,980 Inkább most már van egy függvényt nevű malloc, amely pontosan ezt. 914 00:40:39,980 --> 00:40:42,960 Annak ellenére, hogy ez egy kicsit figyelemelterelés most észre, hogy a 915 00:40:42,960 --> 00:40:46,200 a két zárójel csak lesz egy számot. 916 00:40:46,200 --> 00:40:48,510 Ahol már beírt szóban forgó jelek lehet szám. 917 00:40:48,510 --> 00:40:51,020 >> És ez a szám azt jelenti, hogy adjon 10 bájt. 918 00:40:51,020 --> 00:40:52,320 Adj 20 bájt. 919 00:40:52,320 --> 00:40:53,820 Adj 100 byte. 920 00:40:53,820 --> 00:40:56,500 És malloc mindent megtesz annak érdekében, hogy fel az operációs rendszer - 921 00:40:56,500 --> 00:40:57,630 Linux, ebben az esetben - 922 00:40:57,630 --> 00:40:59,630 Hé, a 100 byte RAM áll rendelkezésre? 923 00:40:59,630 --> 00:41:04,320 Ha igen, visszafordítására bytes nekem vissza a címet, amelynek a 924 00:41:04,320 --> 00:41:06,610 a bájt, talán? 925 00:41:06,610 --> 00:41:07,610 A legelső. 926 00:41:07,610 --> 00:41:10,460 >> Tehát itt is - és ez az uralkodó C, minden alkalommal, amikor 927 00:41:10,460 --> 00:41:11,680 foglalkozó címeket? 928 00:41:11,680 --> 00:41:15,830 Te szinte mindig foglalkozik a első ilyen cím, nem számít, mekkora 929 00:41:15,830 --> 00:41:19,490 egy darab memória kerülnek adta vissza, hogy úgy mondjam. 930 00:41:19,490 --> 00:41:20,880 >> Úgyhogy merülni itt. 931 00:41:20,880 --> 00:41:23,940 Próbálom lefoglalni hogyan hány bájt pontosan? 932 00:41:23,940 --> 00:41:24,080 Jól. 933 00:41:24,080 --> 00:41:26,090 String hossza s - hadd nem egy konkrét példát. 934 00:41:26,090 --> 00:41:30,700 Ha s hello, H-E-L-L-O, mi a húr hossza s nyilván? 935 00:41:30,700 --> 00:41:32,010 Tehát öt. 936 00:41:32,010 --> 00:41:34,590 De én ezt a plusz 1 az, hogy miért? 937 00:41:34,590 --> 00:41:37,700 Miért akarok hat bájt öt helyett? 938 00:41:37,700 --> 00:41:38,790 A null karakter. 939 00:41:38,790 --> 00:41:41,210 >> Nem akarom, hogy hagyja ki ezt a speciális null karakter. 940 00:41:41,210 --> 00:41:45,160 Mert ha egy másolatot Hello and csak nem H-E-L-L-O, de nem tesz 941 00:41:45,160 --> 00:41:50,160 hogy a speciális karaktert, a számítógép Lehet, hogy nem, véletlenül, egy backslash 942 00:41:50,160 --> 00:41:51,730 nulla ott nekem. 943 00:41:51,730 --> 00:41:55,570 És ha én próbálom kitalálni, hogy a hossza a másolat, azt gondolhatja, hogy 944 00:41:55,570 --> 00:41:59,360 ez 20 karakter hosszú, vagy egy millió karakter hosszú, ha csak nem történik 945 00:41:59,360 --> 00:42:01,050 hogy megüt egy backslash nulla. 946 00:42:01,050 --> 00:42:05,780 >> Tehát meg kell hat byte tárolására H-E-L-L-O, backslash nulla. 947 00:42:05,780 --> 00:42:07,870 És akkor ez csak hogy szuper anális. 948 00:42:07,870 --> 00:42:10,700 Tegyük fel, hogy emlékszem, mi akkora, mint egy char. 949 00:42:10,700 --> 00:42:12,020 Azt mondogatom ez egy byte. 950 00:42:12,020 --> 00:42:12,860 És ez általában. 951 00:42:12,860 --> 00:42:15,425 Elméletileg lehet valami más, egy másik Mac vagy 952 00:42:15,425 --> 00:42:16,250 más PC. 953 00:42:16,250 --> 00:42:19,650 >> Így kiderül, itt van ez a szolgáltató nevű sizeof hogy ha átadni a 954 00:42:19,650 --> 00:42:22,680 nevét adattípus - például char vagy int vagy float - 955 00:42:22,680 --> 00:42:26,930 ez megmondja, dinamikusan, hány bájt a karakter veszi fel ezt a 956 00:42:26,930 --> 00:42:28,090 adott számítógépen. 957 00:42:28,090 --> 00:42:31,360 >> Tehát ez gyakorlatilag csak mintha azt mondanánk szer 1 vagy 958 00:42:31,360 --> 00:42:32,440 alkalommal semmit. 959 00:42:32,440 --> 00:42:36,340 De én csinálom, csak hogy szuper anális, hogy csak abban az esetben, char különbözik 960 00:42:36,340 --> 00:42:40,610 a számítógép versus az enyém, így a matek mindig megy, hogy nézd meg. 961 00:42:40,610 --> 00:42:43,720 >> Végül ide megnézem for null, ami mindig jó gyakorlat - ismét 962 00:42:43,720 --> 00:42:44,920 bármikor dolgunk mutatók. 963 00:42:44,920 --> 00:42:47,520 Ha a malloc nem volt képes, hogy nekem hat byes - ami 964 00:42:47,520 --> 00:42:49,210 valószínűtlen, de csak abban az esetben - 965 00:42:49,210 --> 00:42:50,730 vissza egy azonnal. 966 00:42:50,730 --> 00:42:53,290 És most, megy előre, és másolja a húr az alábbiak szerint. 967 00:42:53,290 --> 00:42:57,240 És ez ismerős szintaxist, bár egy másik szerepet. 968 00:42:57,240 --> 00:43:01,210 >> Én megyek előre, és kap a húr hossza s és tárolja a n. 969 00:43:01,210 --> 00:43:06,620 Én aztán majd megismételni az i értéke nullára ig, beleértve az n, 970 00:43:06,620 --> 00:43:08,410 nagyobb vagy egyenlő. 971 00:43:08,410 --> 00:43:13,540 Annak érdekében, hogy minden iterációban tettem a i-edik karaktere s az i-edik 972 00:43:13,540 --> 00:43:15,380 jellegét t. 973 00:43:15,380 --> 00:43:18,190 >> Szóval, mi folyik valójában alatta a motorháztető itt? 974 00:43:18,190 --> 00:43:22,140 Nos, ha ez, például, s - 975 00:43:22,140 --> 00:43:26,400 és én beírtam a szót H-E-L-L-O és van egy backslash nulla. 976 00:43:26,400 --> 00:43:29,020 És ismét, ez s mutat itt. 977 00:43:29,020 --> 00:43:30,830 És itt most t. 978 00:43:30,830 --> 00:43:34,860 >> És ez mutat most egy példányt a memória, nem igaz? 979 00:43:34,860 --> 00:43:37,340 Malloc adott nekem egy egész darab memória. 980 00:43:37,340 --> 00:43:41,440 Nem tudom, eredetileg mi bármelyik ezeken a helyeken. 981 00:43:41,440 --> 00:43:44,340 Így fogom gondolni ezeket egy csomó kérdőjel. 982 00:43:44,340 --> 00:43:50,190 >> De amint elkezdek loop nulláról akár a hossza révén s, t 983 00:43:50,190 --> 00:43:52,790 konzol nulla és t tartó 1 - 984 00:43:52,790 --> 00:43:55,080 és teszem ezt most a felső - 985 00:43:55,080 --> 00:44:04,190 t tartó nulla és s konzol nulla jelenti , hogy én leszek másolás 986 00:44:04,190 --> 00:44:09,875 iteratív h itt, az E-L-L-O. Plusz, mert én a plusz 987 00:44:09,875 --> 00:44:12,370 1 backslash nulla. 988 00:44:12,370 --> 00:44:19,060 >> Tehát most abban az esetben, összehasonlítani, 1.c, a végén, ha kinyomtatja a 989 00:44:19,060 --> 00:44:24,760 kapitalizációja t, meg kell látni, hogy s változatlan. 990 00:44:24,760 --> 00:44:26,090 Hadd menjek előre, és most ezt. 991 00:44:26,090 --> 00:44:28,630 Tehát, hogy Copy1. 992 00:44:28,630 --> 00:44:30,860 Dot slash Copy1. 993 00:44:30,860 --> 00:44:33,670 Megyek, hogy írja be hello, Enter. 994 00:44:33,670 --> 00:44:37,430 És most észre, csak a másolás került aktiválásra. 995 00:44:37,430 --> 00:44:40,890 Mert valóban van két darabokban a memóriát. 996 00:44:40,890 --> 00:44:44,390 >> Sajnos, meg tudod csinálni néhány szép rossz és nagyon veszélyes dolgokat. 997 00:44:44,390 --> 00:44:49,290 Hadd húzza fel egy példát itt, hogy ad nekünk példát néhány 998 00:44:49,290 --> 00:44:51,540 különböző vonalak. 999 00:44:51,540 --> 00:44:56,040 Tehát csak ösztönösen itt, az első sorban A kód, int csillag x, nyilatkozik, 1000 00:44:56,040 --> 00:44:57,340 változó nevű x. 1001 00:44:57,340 --> 00:44:58,810 És mi az adattípust , hogy a változó? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 Mi a adattípusa, hogy a változó? 1004 00:45:04,290 --> 00:45:06,980 Nem ez volt a Cliffhanger. 1005 00:45:06,980 --> 00:45:08,350 >> Az adattípus int csillag. 1006 00:45:08,350 --> 00:45:12,600 Tehát mit jelent ez? x lesz tárolja a címét egy int. 1007 00:45:12,600 --> 00:45:13,520 Egyszerű. 1008 00:45:13,520 --> 00:45:16,220 Y fogja tárolni a címét egy int. 1009 00:45:16,220 --> 00:45:18,390 Mi a harmadik sor kód csinál ott? 1010 00:45:18,390 --> 00:45:21,850 Ez kiosztása hány bájt, a legvalószínűbb? 1011 00:45:21,850 --> 00:45:22,350 Négy. 1012 00:45:22,350 --> 00:45:25,460 Mivel a mérete egy int általában négy, malloc négy ad 1013 00:45:25,460 --> 00:45:29,950 vissza nekem a címét egy darab memória, amelynek az első bájt 1014 00:45:29,950 --> 00:45:32,110 tárolt most x. 1015 00:45:32,110 --> 00:45:34,410 >> Most már mozog egy kicsit gyorsan. 1016 00:45:34,410 --> 00:45:35,760 Csillagok x mit jelent? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 Ez azt jelenti, megy, hogy a címre és tedd, amit számot ott? 1019 00:45:42,590 --> 00:45:43,870 Tegye a szám 42 van. 1020 00:45:43,870 --> 00:45:47,590 Csillagok y azt megy, mi az y és tegye a 13-as szám is. 1021 00:45:47,590 --> 00:45:48,600 >> De várjunk csak egy percet. 1022 00:45:48,600 --> 00:45:51,640 Mi van y a pillanatban? 1023 00:45:51,640 --> 00:45:54,950 Milyen cím y tárolására? 1024 00:45:54,950 --> 00:45:55,770 Nem tudjuk, nem igaz? 1025 00:45:55,770 --> 00:45:59,230 Még egyszer sem használja a feladat operátor bevonásával y. 1026 00:45:59,230 --> 00:46:03,370 Tehát y deklarált a második sor kód csak néhány szemét érték, nagy 1027 00:46:03,370 --> 00:46:04,760 kérdőjel hogy úgy mondjam. 1028 00:46:04,760 --> 00:46:07,230 Meg lehetne mutat véletlenszerűen bármit a memóriában, ami 1029 00:46:07,230 --> 00:46:08,340 általában rossz. 1030 00:46:08,340 --> 00:46:13,540 >> Tehát, amint hit, hogy a sorban van, csillag y értéke 13, valami rossz, 1031 00:46:13,540 --> 00:46:17,220 valami nagyon rossz fog történni Muci. 1032 00:46:17,220 --> 00:46:25,810 Tehát lássuk, mi a végén történt Muci itt ebben a pillanatban 1033 00:46:25,810 --> 00:46:26,200 vagy úgy néz. 1034 00:46:26,200 --> 00:46:26,490 >> [VIDEÓ LEJÁTSZÁS] 1035 00:46:26,490 --> 00:46:26,745 >> -Hé, Muci. 1036 00:46:26,745 --> 00:46:27,000 Kelj fel. 1037 00:46:27,000 --> 00:46:29,296 Itt az ideje a mutató móka. 1038 00:46:29,296 --> 00:46:30,680 >> -Mi az? 1039 00:46:30,680 --> 00:46:31,980 Ismerje meg a mutatók? 1040 00:46:31,980 --> 00:46:34,010 Ó, Komámasszony. 1041 00:46:34,010 --> 00:46:37,220 >> -Nos, az induláshoz, azt hiszem vagyunk Szükségem lesz egy pár mutatók. 1042 00:46:37,220 --> 00:46:37,930 >> -OK. 1043 00:46:37,930 --> 00:46:41,650 Ez a kód mellé két mutató ami pont egész. 1044 00:46:41,650 --> 00:46:43,760 >> -Oké, látom a két mutató. 1045 00:46:43,760 --> 00:46:45,850 De nem úgy tűnik, hogy mutat semmit. 1046 00:46:45,850 --> 00:46:46,490 >> -Így van. 1047 00:46:46,490 --> 00:46:48,630 Kezdetben mutatók nem mutatnak semmit. 1048 00:46:48,630 --> 00:46:51,700 A dolgokat mutatnak nevezik pointees, és beállítása őket egy 1049 00:46:51,700 --> 00:46:52,850 külön lépésben. 1050 00:46:52,850 --> 00:46:53,740 >> -Oh, igaz, igaz. 1051 00:46:53,740 --> 00:46:54,500 Tudtam, hogy. 1052 00:46:54,500 --> 00:46:56,270 A pointees külön. 1053 00:46:56,270 --> 00:46:58,553 Szóval hogyan osztja a pointee? 1054 00:46:58,553 --> 00:46:59,480 >> -OK. 1055 00:46:59,480 --> 00:47:03,707 Nos, ezt a kódot oszt egy új egész pointee, és ez a rész pedig x 1056 00:47:03,707 --> 00:47:05,520 mutasson rá. 1057 00:47:05,520 --> 00:47:06,760 >> -Hé, ez jobban néz ki. 1058 00:47:06,760 --> 00:47:08,520 Tehát, hogy csinál valamit. 1059 00:47:08,520 --> 00:47:09,530 >> -OK. 1060 00:47:09,530 --> 00:47:14,110 Én dereference a mutatót x tárolására A szám 42 bele pointee. 1061 00:47:14,110 --> 00:47:17,660 Mert ez a trükk, szükségem lesz a varázslat pálcája dereferencing. 1062 00:47:17,660 --> 00:47:20,695 >> -A varázspálca a dereferencing? 1063 00:47:20,695 --> 00:47:22,632 Uh, ez nagyszerű. 1064 00:47:22,632 --> 00:47:24,620 >> -Ez az, amit a kód így néz ki. 1065 00:47:24,620 --> 00:47:27,526 Én csak meg a számot, és - 1066 00:47:27,526 --> 00:47:28,250 >> -Hé, nézd. 1067 00:47:28,250 --> 00:47:29,680 Ott megy. 1068 00:47:29,680 --> 00:47:34,520 Ezzel a hivatkozás feloldási be x következő A nyilat a pointee. 1069 00:47:34,520 --> 00:47:36,690 Ebben az esetben a 42., hogy tárolja ott. 1070 00:47:36,690 --> 00:47:40,890 Hé, próbálja meg, hogy tárolja a számot 13. a másik mutató, y. 1071 00:47:40,890 --> 00:47:42,125 >> -OK. 1072 00:47:42,125 --> 00:47:46,810 Megyek ide, hogy y és Szerezd meg a 13-as szám létrehozni. 1073 00:47:46,810 --> 00:47:50,890 És akkor, hogy a pálcája dereferencing és csak - 1074 00:47:50,890 --> 00:47:52,430 Hűha! 1075 00:47:52,430 --> 00:47:53,030 >> -Oh, hé. 1076 00:47:53,030 --> 00:47:54,610 Ez nem működik. 1077 00:47:54,610 --> 00:47:58,200 Mondd, Muci, nem hiszem, hogy a dereferencing y egy jó ötlet, 1078 00:47:58,200 --> 00:48:01,370 mert felállítása pointee egy külön lépésben. 1079 00:48:01,370 --> 00:48:03,460 És nem hiszem, hogy valaha is tette. 1080 00:48:03,460 --> 00:48:03,810 >> -Hmm. 1081 00:48:03,810 --> 00:48:05,160 Jó kérdés. 1082 00:48:05,160 --> 00:48:07,410 >> -Igen, osztják a mutató y. 1083 00:48:07,410 --> 00:48:10,045 De soha meg azt, hogy pont egy pointee. 1084 00:48:10,045 --> 00:48:10,490 >> -Hmm. 1085 00:48:10,490 --> 00:48:12,170 Nagyon figyelmes. 1086 00:48:12,170 --> 00:48:13,790 >> -Hé, keres jó van, Muci. 1087 00:48:13,790 --> 00:48:16,920 Meg tudod javítani úgy, hogy y pontokat ugyanarra pointee mint x? 1088 00:48:16,920 --> 00:48:17,810 >> -Persze. 1089 00:48:17,810 --> 00:48:20,300 Fogom használni a varázspálcát a mutató feladat. 1090 00:48:20,300 --> 00:48:22,240 >> -Az, hogy lesz egy probléma, mint korábban? 1091 00:48:22,240 --> 00:48:22,665 >> -No. 1092 00:48:22,665 --> 00:48:24,300 Ez nem érinti a pointees. 1093 00:48:24,300 --> 00:48:27,880 Ez csak az egyik változik mutató pont az ugyanaz, mint a másik. 1094 00:48:27,880 --> 00:48:28,970 >> -Oh, értem. 1095 00:48:28,970 --> 00:48:31,730 Most y pont ugyanazon a helyen, mint x. 1096 00:48:31,730 --> 00:48:32,450 Várj. 1097 00:48:32,450 --> 00:48:33,490 Most y rögzített. 1098 00:48:33,490 --> 00:48:34,630 Ez egy pointee. 1099 00:48:34,630 --> 00:48:36,520 Így próbálja a pálca A dereferencing újra 1100 00:48:36,520 --> 00:48:39,200 küldeni a 13-át. 1101 00:48:39,200 --> 00:48:39,840 >> -OK. 1102 00:48:39,840 --> 00:48:41,570 Itt megy. 1103 00:48:41,570 --> 00:48:42,870 >> -Hé, ezt nézd meg. 1104 00:48:42,870 --> 00:48:44,320 Most dereferencing működik y. 1105 00:48:44,320 --> 00:48:47,020 És mivel a mutató a megosztott hogy az egyik pointee, akkor 1106 00:48:47,020 --> 00:48:48,585 mind látni a 13.. 1107 00:48:48,585 --> 00:48:49,040 >> Ja. 1108 00:48:49,040 --> 00:48:49,670 Megosztása. 1109 00:48:49,670 --> 00:48:50,380 Mindegy. 1110 00:48:50,380 --> 00:48:52,290 Így megyünk helyet cserélnek most? 1111 00:48:52,290 --> 00:48:52,970 >> -Oh, nézd. 1112 00:48:52,970 --> 00:48:54,150 Vagyunk az időből. 1113 00:48:54,150 --> 00:48:55,200 >> -De - 1114 00:48:55,200 --> 00:48:57,060 >> -Ne feledd, a három mutató szabályokat. 1115 00:48:57,060 --> 00:49:00,100 Először is, az alapvető szerkezete az, hogy van egy mutató. 1116 00:49:00,100 --> 00:49:02,170 És pont felett a pointee. 1117 00:49:02,170 --> 00:49:04,160 De a mutató és pointee külön. 1118 00:49:04,160 --> 00:49:06,460 És a gyakori hiba, hogy létrehozott egy mutatót, de a 1119 00:49:06,460 --> 00:49:08,540 felejtsd el, hogy adott egy pointee. 1120 00:49:08,540 --> 00:49:12,460 >> A kettes, mutató dereferencing kezdődik A mutató és követi a 1121 00:49:12,460 --> 00:49:14,570 nyíl, hogy hozzáférjen az pointee. 1122 00:49:14,570 --> 00:49:18,640 Mint mindannyian tudjuk, ez csak akkor működik, ha a egy pointee, ami lesz vissza 1123 00:49:18,640 --> 00:49:19,790 szabály. 1124 00:49:19,790 --> 00:49:23,670 >> A hármas számú, mutató feladat kerül egy mutató és a változások azt, hogy pont 1125 00:49:23,670 --> 00:49:25,850 ugyanaz, mint a másik pointee mutató. 1126 00:49:25,850 --> 00:49:27,840 Így aztán a feladat, A két mutató akarat 1127 00:49:27,840 --> 00:49:29,430 pont ugyanaz pointee. 1128 00:49:29,430 --> 00:49:31,600 Néha ez az úgynevezett megosztását. 1129 00:49:31,600 --> 00:49:33,430 És ez minden van, tényleg. 1130 00:49:33,430 --> 00:49:33,840 Bye bye most. 1131 00:49:33,840 --> 00:49:34,300 >> [END VIDEÓ LEJÁTSZÁS] 1132 00:49:34,300 --> 00:49:36,940 >> DAVID MALAN: Szóval inkább a mutatók, többet Muci jövő héten. 1133 00:49:36,940 --> 00:49:38,190 Találkozunk hétfőn. 1134 00:49:38,190 --> 00:49:42,187