1 00:00:00,000 --> 00:00:02,670 >> [Zenéje] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Szia, mindenki. 4 00:00:13,365 --> 00:00:14,365 Üdv újra a szakasz. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Szép nap out-- ezért vagyok biztos, már csak négy itt 7 00:00:18,700 --> 00:00:21,180 és nem a szokásos csomagot. 8 00:00:21,180 --> 00:00:22,670 Én már rosszul ezen a hétvégén. 9 00:00:22,670 --> 00:00:24,294 Szóval nem kell csillagdendrimer srácok. 10 00:00:24,294 --> 00:00:26,400 És kezdődhet köhögés Rettenetesen ez alatt. 11 00:00:26,400 --> 00:00:27,790 Szóval, csak medve velem. 12 00:00:27,790 --> 00:00:30,624 Fogom igazán kipróbálni és átjutni az első, 13 00:00:30,624 --> 00:00:32,290 bár, mielőtt egy köhögési roham. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 De könnyen be nekem kis bit-- ez minden kérem. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Így a menetrendje today-- csak egy reminder-- a kvíz a jövő héten. 18 00:00:44,289 --> 00:00:46,830 Mondtam, hogy ez a múlt héten, így nem elkapni ki őr. 19 00:00:46,830 --> 00:00:47,954 Szóval emlékeztető újra. 20 00:00:47,954 --> 00:00:49,180 Jövő héten a kvíz. 21 00:00:49,180 --> 00:00:52,730 Ebből a célból a jövő heti szakasz lesz sokkal 22 00:00:52,730 --> 00:00:55,180 of-- Megpróbálom munka egyes felülvizsgálat. 23 00:00:55,180 --> 00:00:58,130 Tehát, ha ti is segítsen nekem ki küldött engem 24 00:00:58,130 --> 00:01:00,990 dolog, hogy te vagy a kényelmes az, hogy aggódsz, 25 00:01:00,990 --> 00:01:03,530 téma, hogy szeretném, nekem, hogy fedezze, hogy nagyszerű lenne. 26 00:01:03,530 --> 00:01:05,740 Szóval lehet próbálni, és dolgozni őket a mi oldalunkon a jövő hétre 27 00:01:05,740 --> 00:01:11,540 vagy küldjön extra anyag vagy prep hogy talán nem kap máshol. 28 00:01:11,540 --> 00:01:12,150 >> Igen! 29 00:01:12,150 --> 00:01:13,520 Egyre többen jönnek! 30 00:01:13,520 --> 00:01:17,320 Azt hittem, nem én, hogy rosszul utolsó hét, hogy senki sem akar, hogy jöjjön vissza? 31 00:01:17,320 --> 00:01:18,065 Félek. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Így a másik három dolog hogy fogunk menni át 34 00:01:21,100 --> 00:01:24,850 vannak átirányítás, file I / O, és majd mutatók és dinamikus memóriát. 35 00:01:24,850 --> 00:01:29,160 Biztos vagyok benne, mindannyian szuper izgatottak pointers-- mindenki kedvenc téma, 36 00:01:29,160 --> 00:01:31,310 annyira egyszerű megérteni. 37 00:01:31,310 --> 00:01:33,130 Biztos vagyok benne, a srácok minden van, igaz? 38 00:01:33,130 --> 00:01:39,510 >> Tehát az első dolog az első, redirection-- ez alapvetően csak egy módja 39 00:01:39,510 --> 00:01:42,920 hogy ellenőrizzék, hogyan bemenet dolgokat a programban, 40 00:01:42,920 --> 00:01:44,606 hogyan kimenet dolgokat a programban. 41 00:01:44,606 --> 00:01:46,980 A fő módja, hogy a srácok már kölcsönhatásban vannak vele 42 00:01:46,980 --> 00:01:51,650 csak a szabványos ki A nyomtatási képernyő itt. 43 00:01:51,650 --> 00:01:55,940 De vannak olyan módon, hogy pipe-- mint látjuk itt 44 00:01:55,940 --> 00:01:58,980 az egyik kedves words-- cső, hogy az információ 45 00:01:58,980 --> 00:02:02,850 vagy az adat egy fájlt egy fájlt. 46 00:02:02,850 --> 00:02:05,820 Ez csak különböző módon hogy a dolgok a programba 47 00:02:05,820 --> 00:02:10,681 és ki a programot, hanem az csak a nyomtatást, hogy a képernyő 48 00:02:10,681 --> 00:02:12,430 vagy bevitele dolgok a parancssorból. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Tehát először egy kicsi nagyobb, mint caret. 51 00:02:18,030 --> 00:02:22,085 Így output-- ez csak kiírja a kimenetet fájlba ahelyett, hogy a képernyő. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Tehát, ha volt valami, ami a nyomtatott "Helló, világ!" a képernyőre, 54 00:02:29,500 --> 00:02:32,400 ha inkább helyette a output.text, hogy 55 00:02:32,400 --> 00:02:35,220 létrehozza ezt a fájlt nevű output.text. 56 00:02:35,220 --> 00:02:38,550 És amikor megnyitja, akkor az mondják, hogy "Helló, világ!" ott. 57 00:02:38,550 --> 00:02:41,410 Ez lehet szuper hasznos ha van egy csomó hibát 58 00:02:41,410 --> 00:02:43,430 valójában, ahogy látjuk ezt. 59 00:02:43,430 --> 00:02:46,810 Ha mégis két kalap, azt is megtudhatod nyomtassa ki a hibaüzeneteket. 60 00:02:46,810 --> 00:02:52,090 >> Tehát, ha egy probléma, összeállítása, van egy csomó hibát 61 00:02:52,090 --> 00:02:56,770 és te, hogy leragadt a kipróbálás lapozhat a parancssorban 62 00:02:56,770 --> 00:02:59,110 az összes őket, akkor csak nyomtatni egy fájlba, 63 00:02:59,110 --> 00:03:02,130 megnyitja a fájlt úgy, hogy lapozhatunk könnyebb. 64 00:03:02,130 --> 00:03:05,160 Én ténylegesen felhasznált, hogy a tétel mikor hibakeresés 65 00:03:05,160 --> 00:03:07,970 én 181 psets gépi tanulás. 66 00:03:07,970 --> 00:03:10,000 Így lehet szuper hasznos később. 67 00:03:10,000 --> 00:03:18,370 Az is hasznos, ha van egy program hogy talán generál könyvtár 68 00:03:18,370 --> 00:03:20,430 vagy képességeik bizonyos készlet húrok, és 69 00:03:20,430 --> 00:03:22,846 kell látni, hogy ez generál őket megfelelően. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Ez a módja, hogy. 72 00:03:25,160 --> 00:03:28,280 >> Tehát, ha nyomtatni egy fájlba, akkor könnyebben vizsgálja meg, igaz? 73 00:03:28,280 --> 00:03:30,930 Versus próbál görgetni keresztül parancssorban. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 És akkor egy dolgot megjegyezni az, hogy csak a nagyobb 76 00:03:35,820 --> 00:03:40,090 mint kalap, ha írunk hogy a fájlt már exists-- 77 00:03:40,090 --> 00:03:44,990 így, mint ha ez az első futott idő, rakjuk a output.text, 78 00:03:44,990 --> 00:03:49,970 aztán volt egy másik program hogy ezt a programot a nyomtatott két 79 00:03:49,970 --> 00:03:54,250 és nem nagyobb, mint output.text, felülírja hogy-- így 80 00:03:54,250 --> 00:03:56,715 felülírja mi volt valaha a fájl kezdeni. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Tehát, ha azt szeretnénk hozzáfűzni fájlba, mint látjuk itt, 83 00:04:00,750 --> 00:04:04,779 csak nem két nagyobb, mint jelek. 84 00:04:04,779 --> 00:04:05,820 És akkor csatolja azt. 85 00:04:05,820 --> 00:04:06,750 Ez nem írja felül. 86 00:04:06,750 --> 00:04:09,770 Tehát, ha kell futtatni több programok és a fajta folyamatosan 87 00:04:09,770 --> 00:04:13,170 pálya, amit mindegyik visszatér hozzád egy fájlt, 88 00:04:13,170 --> 00:04:14,190 ez egy módja annak, hogy csináld. 89 00:04:14,190 --> 00:04:17,231 Ha nem érdekel, mi van a fájlban és ez lehetővé tette, hogy felülírja, 90 00:04:17,231 --> 00:04:19,204 akkor csak használ egy-nál nagyobb. 91 00:04:19,204 --> 00:04:20,600 Van ennek értelme mindenki? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> KÖZÖNSÉG: Mint a pont perjel helló nagyobb mint output dot szöveg, mint a kétszer, 94 00:04:31,140 --> 00:04:34,030 akkor csak csak azt mutatják, a teljesítmény pont szövege a második time-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Jobb. 96 00:04:34,810 --> 00:04:40,450 Tehát lenne alapvetően csak teljesen felülírja mi volt ott, hogy kezdődik. 97 00:04:40,450 --> 00:04:44,260 Ha ez a fájl itt, a output.text már 98 00:04:44,260 --> 00:04:48,230 létezik, alapvetően minek hívják hogy ismét egy nagyobb 99 00:04:48,230 --> 00:04:51,920 mint ha csak belegondolok úgy, mint azt a fájlt cserélni. 100 00:04:51,920 --> 00:04:54,824 Mint amikor te megtakarítás egy Word dokumentum és akkor menteni, 101 00:04:54,824 --> 00:04:57,365 és tartsa ugyanazt a nevet, és teljesen felülírja it-- 102 00:04:57,365 --> 00:04:58,680 ez ugyanaz a fajta dolog. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Bárki bármilyen további kérdése van csak kimenetre fájlba? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Félelmetes. 107 00:05:05,550 --> 00:05:11,440 >> Tehát nyilvánvaló, hogy ha a fordított nyíl irányába, meg tudja csinálni bemenet. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Tehát, ha a srácok már mint Caesar vagy Visioneer 110 00:05:19,960 --> 00:05:23,195 és meg kellett input valami, volt egy parancssori argumentum 111 00:05:23,195 --> 00:05:24,960 hogy valóban azt bemenet. 112 00:05:24,960 --> 00:05:27,410 Ez egy másik módja, hogy. 113 00:05:27,410 --> 00:05:30,520 Tehát ahelyett, hogy megvárná a parancssorba, 114 00:05:30,520 --> 00:05:33,800 mint amikor azt kérte, hogy üzenet Caesar vagy Visioneer, 115 00:05:33,800 --> 00:05:36,490 ha volt egy szöveges fájlt hogy már az üzenetet, 116 00:05:36,490 --> 00:05:38,280 akkor csak írja be azt. 117 00:05:38,280 --> 00:05:44,930 >> Szóval, ha ez olyan volt, mint pont perjel Caesar Kevesebb, mint 3 nyilat beviteli, amely 118 00:05:44,930 --> 00:05:47,240 az az üzenet, hogy fog futni csak finom. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Amikor a program valóban Caesar kérte a felhasználóhoz, 121 00:05:54,020 --> 00:05:57,360 akkor már, mert beírt ebben a fájlban. 122 00:05:57,360 --> 00:05:58,830 Ez csak egy módja. 123 00:05:58,830 --> 00:06:02,445 Csak egy fordított output-- csak meg kell adni az adatokat. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> És akkor az utolsó egy cső. 126 00:06:06,680 --> 00:06:07,780 Szóval ez az ember elég jó. 127 00:06:07,780 --> 00:06:09,890 Mert lehetővé teszi, hogy veszi az egyik kimenetét a másik 128 00:06:09,890 --> 00:06:13,695 programot, és tedd a bemenet egy másik program. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Nem tudom, ha valakinek játszott a megfejtés 131 00:06:18,630 --> 00:06:20,590 hogy CS50 volna adott neked, de ez 132 00:06:20,590 --> 00:06:27,380 lehetővé teszi, hogy néhány minta fájlt, írja be a titkosítást, 133 00:06:27,380 --> 00:06:30,350 és majd onnan írja hogy be dekódolás 134 00:06:30,350 --> 00:06:32,470 hogy megbizonyosodjon arról, hogy kiderült, az ugyanaz. 135 00:06:32,470 --> 00:06:34,050 Szóval ez olyan, mint a három-utas hurok. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Megy ez. 138 00:06:39,423 --> 00:06:41,785 >> KÖZÖNSÉG: Ha egy program többszörös bemenet, 139 00:06:41,785 --> 00:06:47,646 van egy módja, hogy elmondja, hogy melyik bemenet használja a szöveges fájlt, vagy a kimenet? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Ez több bemenettel rendelkezik. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Bármilyen fájlt a input-- ha ez kér bemenet az első alkalom, hogy 143 00:07:00,430 --> 00:07:03,240 fog feltételezni, azt hiszem, ez megy cső a teljes fájlt. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Tehát, ha több bemenet, akkor fog csővezeték több fájl. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Tehát, ha kér üzenetek háromszor a kódot, 148 00:07:12,390 --> 00:07:15,230 fogsz kell üzembe három különböző fájlokat. 149 00:07:15,230 --> 00:07:15,980 És ez lesz őrült. 150 00:07:15,980 --> 00:07:18,188 És nem kell aggódni, hogy most. 151 00:07:18,188 --> 00:07:19,150 De ez az ötlet. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Szóval igen, csak cső kimenete egy program a bemenő a másik. 154 00:07:26,822 --> 00:07:27,665 Mindenki jó ott? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Cool. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 159 00:07:30,932 --> 00:07:32,890 Valószínűleg nem lesz hogy túl sokat vele. 160 00:07:32,890 --> 00:07:35,670 De meg kell értenie, módon használhatja ezt. 161 00:07:35,670 --> 00:07:38,910 És vannak olyan esetek, hogy érdemes használni. 162 00:07:38,910 --> 00:07:44,590 >> Szóval fájl I / O- tudom, mit te saying-- vagyunk használni olvasás 163 00:07:44,590 --> 00:07:50,500 és írásban a képernyőn van, melyik a szabvány az szabvány, és ki. 164 00:07:50,500 --> 00:07:54,370 És ez az, amit a srácok már Ennek kezdete óta osztály itt. 165 00:07:54,370 --> 00:07:58,220 De akkor is olvasni és írni fájlokat, amely minden file I / O- olyan fájlt bemenet, 166 00:07:58,220 --> 00:07:59,850 kimenet minden képvisel. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Tehát ez alapvetően azt jelenti, hogy tudod tárolni az adatokat most. 169 00:08:04,360 --> 00:08:08,460 >> Ha csak nyomtatni a képernyő, ez alapvetően ment, ugye? 170 00:08:08,460 --> 00:08:12,507 Amint csinál "Hello világ "és fuss" Helló világ " 171 00:08:12,507 --> 00:08:14,090 nyomtat "Helló világ", hogy a képernyőre. 172 00:08:14,090 --> 00:08:16,370 De nem igazán semmit onnan. 173 00:08:16,370 --> 00:08:18,950 Ha tárolni a szövegben fájlt, majd hirtelen 174 00:08:18,950 --> 00:08:22,789 akkor ezeket az adatokat, hogy te szabad manipulálni vagy tedd egy fájlba, 175 00:08:22,789 --> 00:08:24,080 vagy tedd be egy programot később. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Az egyik oka Ezért ezt csak 178 00:08:29,290 --> 00:08:31,560 olyan módon, hogy az adatok tárolására későbbi felhasználás céljából. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Nekem van egy pár lépést itt Csak séta szabvány 181 00:08:37,279 --> 00:08:39,450 I / O. Az első lépésben, akkor létre kell hozni egy referencia 182 00:08:39,450 --> 00:08:43,480 A fájl minden sapkák FÁJL csillag fájlt. 183 00:08:43,480 --> 00:08:45,740 Ahhoz, hogy létrehoz egy mutató egy fájlba. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Tehát azt szeretnénk, hogy nyissa meg. 186 00:08:49,650 --> 00:08:52,940 És azt mondja, szó szerint, csak a fájl egyenlő fopen. 187 00:08:52,940 --> 00:08:57,400 És ez fog vissza mutató a fájl csak nyitva. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Láttam egy pár, srácok a munkaidő. 190 00:09:01,460 --> 00:09:07,400 >> De az egyik dolog, az remember-- mutatók 191 00:09:07,400 --> 00:09:10,409 lehet néhány cím vagy null, ugye? 192 00:09:10,409 --> 00:09:12,700 Ha valaha is olyan eset, amikor valami visszatérhet null, 193 00:09:12,700 --> 00:09:14,990 mit kell tennünk mielőtt valaha használni? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Meg kell, hogy ellenőrizze, ez null vagy nem, ugye? 196 00:09:19,000 --> 00:09:23,600 Mivel néhányan talán volt a kérdés, ahol bármilyen tárgy 197 00:09:23,600 --> 00:09:26,110 volt, hogy vissza kitörés volt null. 198 00:09:26,110 --> 00:09:28,170 Próbált végrehajtani néhány függvényt. 199 00:09:28,170 --> 00:09:29,770 És a számítógép webhely hibázott. 200 00:09:29,770 --> 00:09:30,725 Jobb? 201 00:09:30,725 --> 00:09:33,640 Fogadok, egy pár, Lehet, hogy volt ebben a kérdésben. 202 00:09:33,640 --> 00:09:38,890 >> Tehát fopen, fopen lesz vagy vissza a mutatót a fájl, 203 00:09:38,890 --> 00:09:41,200 vagy, ha valami elromlik, ez fog visszatérni null. 204 00:09:41,200 --> 00:09:45,980 Így mindig ellenőrizni kell hogy nem tért vissza null 205 00:09:45,980 --> 00:09:47,880 mielőtt megkísérli mást csinálni. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Ez olyan, mint egy standard paradigma hogy fogsz szüksége van. 208 00:09:51,974 --> 00:09:54,390 Ha van rá esély, hogy valaha valami is vissza null, 209 00:09:54,390 --> 00:09:56,590 győződjön meg róla, hogy Nem, mielőtt belekezd. 210 00:09:56,590 --> 00:09:58,911 Ellenkező esetben, ha mész hogy szép hely hibákat. 211 00:09:58,911 --> 00:10:00,410 És senki sem szeret foglalkozni az. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Szóval mint látjuk itt, az első érv csak az a fájl elérési útját. 214 00:10:06,410 --> 00:10:09,380 Ha ez a fájl nem létezik, ez meg fog létrehozni, hogy a fájl. 215 00:10:09,380 --> 00:10:10,713 És ez csak lesz üres. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 És akkor a második érv az a mód, amit akar. 218 00:10:13,080 --> 00:10:14,610 Nem szeretnénk olvasni ezt a fájlt? 219 00:10:14,610 --> 00:10:15,560 Szeretné, hogy írjon belőle? 220 00:10:15,560 --> 00:10:16,476 Szeretné hozzáfűzni? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Tehát tulajdonképpen mi csak said-- Ha a fájl nem létezik 223 00:10:20,670 --> 00:10:23,400 és próbál olvasni , ez fog dobni egy hiba. 224 00:10:23,400 --> 00:10:26,890 Ha a fájl name--, mint ha file.text még nem létezik 225 00:10:26,890 --> 00:10:29,250 és akarsz írni hozzá, akkor teremt 226 00:10:29,250 --> 00:10:33,110 egy üres fájl hívott file.text az Ön számára. 227 00:10:33,110 --> 00:10:36,612 És ha azt szeretnénk hozzáfűzni, akkor nem ugyanaz a dolog. 228 00:10:36,612 --> 00:10:38,081 Van ennek értelme? 229 00:10:38,081 --> 00:10:40,580 Ha akarsz olvasni a fájl még nem létezik, 230 00:10:40,580 --> 00:10:41,590 ez lesz dobni egy hiba. 231 00:10:41,590 --> 00:10:44,340 Ellenkező esetben, akkor hozza létre a fájlt mert azt teszed, amit akarsz azt. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Cool. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Most már tudja olvasni a fájlt. 236 00:10:48,880 --> 00:10:52,570 És ez csak egyfajta megy egymás után különböző funkciókat 237 00:10:52,570 --> 00:10:58,980 hogy van file I / O. Ez az akarat szükséges az e heti PSET, 238 00:10:58,980 --> 00:11:00,505 ha jól emlékszem. 239 00:11:00,505 --> 00:11:02,880 Igen, feltétlenül lesz szükséges az e heti PSET. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Így fgetc visszatér a következő karakter. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets csak vissza sort. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Vissza fog térni, ami akár egy új sort, és lesz szünet. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Tehát fread olvas egy bizonyos bájtok száma és hely őket 248 00:11:18,700 --> 00:11:20,700 egy tömb, amely az, amit lehet 249 00:11:20,700 --> 00:11:25,485 akar csinálni újra size-- hasznos lehet. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Hány ember olvas A PSET spec, mellesleg? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 OK. 254 00:11:32,261 --> 00:11:32,760 [Hallható] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: OK. 257 00:11:36,580 --> 00:11:37,530 Rendben van. 258 00:11:37,530 --> 00:11:41,940 Határozottan olvasd hogy-- ez egy szórakoztató PSET. 259 00:11:41,940 --> 00:11:51,320 Kapsz, hogy visszaszerezze a törölt memória card-- igazán izgalmas, ha működik. 260 00:11:51,320 --> 00:11:54,100 De biztosan, hogy kezdje el olvasni. 261 00:11:54,100 --> 00:11:56,280 Gyere beszélgetni velem, ha kérdései vannak róla. 262 00:11:56,280 --> 00:11:59,290 >> OK, így mondtam, fread olvas egy bizonyos számú bájt. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Ez valami tetszőleges számú hogy fogsz beállítani. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 És akkor csak mozog fseek egy bizonyos helyzetben. 267 00:12:08,260 --> 00:12:11,150 Szóval lehet, hogy nem érdekel a következő 10 bájt. 268 00:12:11,150 --> 00:12:12,880 Csak azt, hogy ugorjon. 269 00:12:12,880 --> 00:12:14,030 Nem érdekel azokat. 270 00:12:14,030 --> 00:12:16,280 Azt akarod, hogy olvasni kezdődő 11 byte. 271 00:12:16,280 --> 00:12:18,252 fseek lehetővé teszi, hogy ezt tegyük. 272 00:12:18,252 --> 00:12:20,710 Így lehetővé teszi, hogy szelektív arról, amit olvas. 273 00:12:20,710 --> 00:12:25,880 Mert fgetc, fgets, és fread olvasni egy bizonyos helyen a fájlt. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> A módja annak, hogy gondolni ezt, ha ez mi a fájl, amikor először kinyitni, 276 00:12:35,090 --> 00:12:41,140 van ebben a helyzetben a fájlban hogy kezdődik az elején. 277 00:12:41,140 --> 00:12:45,040 Valahányszor hívsz fgetc, fgetf, vagy fread, 278 00:12:45,040 --> 00:12:48,875 ez fog kezdeni ezt a pozíciót jelző. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Tegyük fel, hogy csak azt, hogy olvasni ez a darab memória itt. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Nem lehet csak hívni. 283 00:12:57,960 --> 00:13:02,430 Meg kell keresni itt majd olvasd el onnan 284 00:13:02,430 --> 00:13:06,540 vagy olvasni, lesz, vagy getc, attól függően, hogy mit akarsz. 285 00:13:06,540 --> 00:13:09,310 Így keresnek csak lehetővé teszi, hogy Átugrani adag memóriát. 286 00:13:09,310 --> 00:13:11,590 És ez az egyetlen Így hagyja a dolgokat 287 00:13:11,590 --> 00:13:14,012 anélkül, hogy elolvasná őket a puffer. 288 00:13:14,012 --> 00:13:15,470 Van ennek értelme mindenki? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Nyilvánvaló, hogy egy Sok párhuzamos here-- 291 00:13:24,780 --> 00:13:27,780 a kimenet, vagy bemenet átirányítása, már írni és olvasni. 292 00:13:27,780 --> 00:13:31,800 Szóval fputc csak ír karaktert a fájl. 293 00:13:31,800 --> 00:13:33,655 fputs ír egy sort. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf nyomtat formázott kimenetet. 296 00:13:37,420 --> 00:13:41,190 Tehát, ha van tabok, vagy hely, vagy miegymás. 297 00:13:41,190 --> 00:13:44,180 Aztán fwrite írja egyes tömb byte fájlba. 298 00:13:44,180 --> 00:13:48,860 Így ez ugyanúgy fwrite és fread analóg 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs, és akkor fputc és fgetc-- tételek 300 00:13:57,550 --> 00:14:00,710 Az őrült, gyorsan a dolgok. 301 00:14:00,710 --> 00:14:05,300 >> Csak egyfajta tartani ezt handy-- akkor különböző időkben 302 00:14:05,300 --> 00:14:08,680 ahol talán csak azt, egy karaktert egy időben. 303 00:14:08,680 --> 00:14:09,890 Lehet, hogy szeretne egy egész sor. 304 00:14:09,890 --> 00:14:14,320 Miközben a szótár pset-- amely két psets, 305 00:14:14,320 --> 00:14:19,690 Úgy vélem, akkor kapsz egy egész szótár szöveges formátumban 306 00:14:19,690 --> 00:14:22,252 amely minden szó elválasztva egy vonalat. 307 00:14:22,252 --> 00:14:24,210 Tehát, ha akart olvasni egyszóval egy időben, 308 00:14:24,210 --> 00:14:31,769 mi használ, ha olvasod és ezek mind elválasztjuk az új vonalakon, 309 00:14:31,769 --> 00:14:33,310 , és csak azt egy szót egy időben? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> KÖZÖNSÉG: fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Jobb. 313 00:14:36,748 --> 00:14:39,960 Fgets-- mert azt vissza bármi is van egy sorban. 314 00:14:39,960 --> 00:14:42,750 És ha minden szó a saját vonal, tudjuk használni fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Cool. 317 00:14:45,010 --> 00:14:47,290 Van ennek értelme, mindenki? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Igen, fogunk eljutni A szórakoztató része a mutató 320 00:14:50,020 --> 00:14:51,728 nagyon hamar, ahol kap, hogy némi matek. 321 00:14:51,728 --> 00:14:52,776 És ez lesz jó. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Utolsó step-- zárja be a fájlt. 324 00:14:57,740 --> 00:15:01,090 Oly sok dolog van, egyik paradigmák 325 00:15:01,090 --> 00:15:03,550 , ha az visszatérhet null, null ellenőrizze. 326 00:15:03,550 --> 00:15:06,160 Ha kinyitja valami, jobb lenne, ha bezárja azt. 327 00:15:06,160 --> 00:15:10,419 OK, szóval nincs elvégezve, amíg te történik, kivéve, ha már bezárta. 328 00:15:10,419 --> 00:15:12,585 Olyan, mintha nem ért véget amíg a kövér hölgy énekel. 329 00:15:12,585 --> 00:15:14,130 Ez olyan, mintha a fájl bezárása. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Mint mondja, itt, csak megismételni, mindig 332 00:15:19,190 --> 00:15:21,750 nyissa meg a fájlt, mielőtt te olvasás vagy írás hozzá. 333 00:15:21,750 --> 00:15:24,450 És mindig zárja be, ha már kinyitotta. 334 00:15:24,450 --> 00:15:25,460 Minden rendben? 335 00:15:25,460 --> 00:15:25,960 Cool. 336 00:15:25,960 --> 00:15:26,835 >> Tehát itt egy példa. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Szóval tiny-- Nem tudom, ha Láthatjuk, hogy a srácok nagyon jól. 339 00:15:34,330 --> 00:15:36,805 Bárcsak növelni a fényerő valahogy. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Hadd valójában ezt, ha tudok. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, srácok nem igazán láthatjuk, hogy minden, ugye? 344 00:15:51,470 --> 00:15:52,905 OK, mi fogja ezt, akkor. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Hallható] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Feltételezem, hogy ez sokkal jobb látni. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Tud valaki látni, ahol a egér ment ez a kérdés? 351 00:17:19,455 --> 00:17:22,837 Ah, ott ez-- mit küzd! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> OK. 354 00:17:49,520 --> 00:17:53,845 Alapvetően, srácok kellene fajta az ötlet, hogy mi ez csinál. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Nem tökéletes. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 De én inkább megmagyarázni, mint költeni több időt próbál formázni rendesen. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Alapvetően, ahogy itt látsz, kezdjük fájl megnyitásakor. 361 00:18:07,280 --> 00:18:09,620 És van néhány adatbázis fájlt, hogy mi vagyunk 362 00:18:09,620 --> 00:18:12,300 megnyitása azt mondja, hogy ez a diákok. 363 00:18:12,300 --> 00:18:14,020 És meg fogjuk írni. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Így persze, vissza null. 366 00:18:17,720 --> 00:18:19,650 Tehát, hogy ellenőrizze a null. 367 00:18:19,650 --> 00:18:22,930 És akkor, ha ez nem null, megyünk át. 368 00:18:22,930 --> 00:18:25,660 És mint látod, vagyunk áthurkolást itt. 369 00:18:25,660 --> 00:18:26,960 Vannak diákok. 370 00:18:26,960 --> 00:18:30,520 A diákok a hash definiált három. 371 00:18:30,520 --> 00:18:34,060 És mit csinálunk is mi vagyunk nyomtatni a fájlt, ugye? 372 00:18:34,060 --> 00:18:36,975 Szóval mit nyomtat ki, hogy a fájlt? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> KÖZÖNSÉG: A pontszámok amelyek a tömbben? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Igen. 376 00:18:49,680 --> 00:18:50,980 Az eredmények, amelyek a a array-- pontosan. 377 00:18:50,980 --> 00:18:53,050 Tehát ezt megnyitása adatbázis fájl, amely 378 00:18:53,050 --> 00:18:56,040 Feltételezem, valamiféle fokozatok adatbázisban. 379 00:18:56,040 --> 00:19:01,100 És mi csak kinyomtatott rengeteg minden diák, hogy a fájl. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Jó. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Félelmetes. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Menjünk vissza to-- 386 00:19:06,950 --> 00:19:08,646 >> KÖZÖNSÉG: Van egy gyors kérdés. 387 00:19:08,646 --> 00:19:11,570 A printf nem az a hurok? 388 00:19:11,570 --> 00:19:12,870 Ez csak a hurok, ha? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Nem, ez a for ciklus. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Nem látom az egér nagyon jól fel itt. 392 00:19:18,810 --> 00:19:21,359 Szóval küzd formátum megfelelően. 393 00:19:21,359 --> 00:19:22,525 Ezt a konzol nem lesz ott. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Meg kell itt. 396 00:19:25,130 --> 00:19:26,605 Ez az, amit a hurok. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Ott. 399 00:20:11,180 --> 00:20:12,160 Most már elég. 400 00:20:12,160 --> 00:20:16,720 Szóval így kell be-- kivéve az, hogy az utolsó konzol, amit elutasította. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Van ennek értelme mindenki? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Megyünk lépni A következő dolog then-- 405 00:20:23,750 --> 00:20:26,180 amely valójában, mész hogy kell, hogy a kódot. 406 00:20:26,180 --> 00:20:28,370 Szóval csak fog másolja át most. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 OK. 409 00:20:32,000 --> 00:20:35,110 Szóval fogom mutatni nektek ezt a kódot. 410 00:20:35,110 --> 00:20:38,240 És azt akarom, hogy próbálja ki, és a szám ki mit kéne csinálni. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Tehát adott hogy-- hogy egy perc múlva. 413 00:20:52,480 --> 00:20:54,440 Próbáld ki, és kitalálni, hogy mi folyik itt. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Van ötleted? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Tudjuk, hogy van legalább két érveket a parancssor, ugye? 418 00:22:12,470 --> 00:22:16,270 Azt feltételezzük, amelyek közül az egyik lesz hogy [hallható] a mi program 419 00:22:16,270 --> 00:22:17,530 majd valami mást. 420 00:22:17,530 --> 00:22:19,980 Mert ha [hallható] kevesebb kettőnél azt kiabálni rájuk. 421 00:22:19,980 --> 00:22:21,140 Jobb? 422 00:22:21,140 --> 00:22:25,300 És a használat, úgy néz ki, mint ez lesz valamilyen fájlt. 423 00:22:25,300 --> 00:22:26,260 Mindannyian egyetértünk abban, hogy hogy? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Szóval most, mi a hurok csinál? 426 00:22:31,570 --> 00:22:32,570 Mi megy át? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> KÖZÖNSÉG: Minden a fájlokat. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Pontosan. 430 00:22:37,240 --> 00:22:39,650 Ez megy végig a fájlok voltunk ott bemenet. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Tehát minden fájl, akkor megnyitása néhány húr ott. 433 00:22:46,040 --> 00:22:47,560 Ez megnyitja a fájlt. 434 00:22:47,560 --> 00:22:48,060 Jobb? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 És ez az olvasáskor. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Persze, ellenőrzése, ha ez nulla. 439 00:22:55,540 --> 00:22:57,220 És akkor ez a nyomtatás. 440 00:22:57,220 --> 00:23:01,460 Ha ez nulla, ez csak mondja hogy ez nem egy fájlt, ami létezik. 441 00:23:01,460 --> 00:23:04,290 Mert emlékszem, a olvassa el fájl létezik. 442 00:23:04,290 --> 00:23:04,810 Jobb? 443 00:23:04,810 --> 00:23:06,870 Az írási és append, akkor megússza. 444 00:23:06,870 --> 00:23:08,970 De olvasni, a fájl létezik. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> És ha ez nem létezik, mit csinálunk itt? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Nézzük csak itt kezdődnek. 449 00:23:15,780 --> 00:23:18,815 Mi ez do-- az első karaktert. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Mit csinál? 452 00:23:21,790 --> 00:23:24,100 Ő kap egy karaktert, ugye? 453 00:23:24,100 --> 00:23:25,400 Szóval, mit csinál ez? 454 00:23:25,400 --> 00:23:26,775 Kezd az első karakter. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Bárki, aki tudja EOF? 457 00:23:30,200 --> 00:23:31,170 >> KÖZÖNSÉG: vége a fájl? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: vége file-- pontosan. 459 00:23:32,680 --> 00:23:35,310 Így fog átmenni az egész fájlt, ugye? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 És akkor lesz frissíteni a szerzés minden későbbi karaktert. 462 00:23:40,780 --> 00:23:41,565 Jobb? 463 00:23:41,565 --> 00:23:43,636 És mit csinál? 464 00:23:43,636 --> 00:23:44,760 KÖZÖNSÉG: Putting hogy in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: Putchar nyomtat a képernyővédő. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Hallható] a karaktert. 469 00:23:51,950 --> 00:23:54,300 És akkor, amikor [hallható] ez bezárja a fájlt. 470 00:23:54,300 --> 00:23:57,370 >> KÖZÖNSÉG: Hát nem szükség [? mást? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Nem feltétlenül. 472 00:23:59,005 --> 00:24:01,480 Úgy értem, ez a fajta hallgatólagos ebben. 473 00:24:01,480 --> 00:24:06,780 Mert ez vissza, bár, mint a hosszú mivel ez nem elkapni ezt, akkor minden rendben van. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Úgy értem, ez talán jó gyakorlat, hogy nem egy mást. 476 00:24:10,250 --> 00:24:15,755 De mást nem mindig szükséges különösen 477 00:24:15,755 --> 00:24:17,610 ha van valami mint a visszatérés, amely 478 00:24:17,610 --> 00:24:20,640 azt jelenti, hogy ebben az esetben, ha ez megfog meg, a programot fog végződni 479 00:24:20,640 --> 00:24:21,850 és soha nem kap erre. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Sokkal inkább arra az esetre, ha Ön Nem feltétlenül vissza valamit. 482 00:24:29,190 --> 00:24:31,370 Mert ha ez a nem volt visszatérő semmit, 483 00:24:31,370 --> 00:24:34,430 ez azt jelentené, hogy ha ez igaz, A többi már az is futni. 484 00:24:34,430 --> 00:24:36,138 És ebben az esetben, ha szeretne hamis. 485 00:24:36,138 --> 00:24:38,240 Ha ez visszatérő, és A program vége, 486 00:24:38,240 --> 00:24:41,960 Egy más nem szükséges, minden Az idő, a környezettől függően. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, te kérdésed van? 489 00:24:44,375 --> 00:24:46,100 KÖZÖNSÉG: Igen. 490 00:24:46,100 --> 00:24:49,300 Tehát nem fgetc kap a következő karakter? 491 00:24:49,300 --> 00:24:50,734 Hogyan növeli a karakter? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Igen. 493 00:24:51,400 --> 00:24:52,774 Így fgetc kap a következő karakter. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Gondoljon úgy rá, mint a C ++ értelemben. 496 00:24:56,866 --> 00:24:58,350 >> KÖZÖNSÉG: Mi volt EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF a fájl vége. 498 00:25:00,877 --> 00:25:03,960 Ez csak egy markert, amely lehetővé teszi, hogy tudja, hogy te vagy a végén a fájl. 499 00:25:03,960 --> 00:25:06,742 Tehát ez fog nyomtatni a szokásos ki. 500 00:25:06,742 --> 00:25:08,950 És akkor fog zárni a fájlt, ha kész. 501 00:25:08,950 --> 00:25:10,700 És akkor menjünk A következő kép, ugye? 502 00:25:10,700 --> 00:25:12,660 Tehát összességében, mit jelent ez a program nem? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Hallható] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Igen. 506 00:25:16,900 --> 00:25:18,770 Csak kiírja mindent. 507 00:25:18,770 --> 00:25:23,270 Tehát, ha a srácok valaha használt CAT majd a nevét egyes file-- 508 00:25:23,270 --> 00:25:26,240 Nem tudom, ha valakinek van valaha is, hogy a terminálon. 509 00:25:26,240 --> 00:25:29,630 De ha valaha is használni a parancs CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 majd bármilyen fájl Ön azt there-- 511 00:25:31,880 --> 00:25:37,260 nyomtat ki a terminál, amely lehet szuper hasznos néhány dolgot. 512 00:25:37,260 --> 00:25:38,746 Használom sokat. 513 00:25:38,746 --> 00:25:40,120 Van ennek értelme mindenki? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Cool? 516 00:25:42,100 --> 00:25:46,530 >> OK, így a feladat now-- akár magad vagy az emberek you-- 517 00:25:46,530 --> 00:25:54,930 az, hogy csak írni egy egyszerű program hogy majd csak írni "Helló, világ!" 518 00:25:54,930 --> 00:25:56,255 ki egy fájlt. 519 00:25:56,255 --> 00:26:00,215 >> [Hallható] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Hallható] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: én, mint volt Én, hogy rosszul a múlt héten? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Én nem hiszem, hogy volt olyan rossz. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Örülök, hogy mind itt. 527 00:27:03,520 --> 00:27:04,655 Ez igazán boldoggá tesz. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Én vagyok a lány az egyszerű örömöket. 530 00:27:10,160 --> 00:27:11,688 Én csak azt szeretném, ha a rész jár. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Szóval csak most kezdődött ez a srácok, hogy mi is együtt kódot. 533 00:27:18,270 --> 00:27:22,290 Nem szeretem üzembe bárki a helyszínen, hacsak nem akarja, hogy legyen. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> KÖZÖNSÉG: A kvíz, nem meg kell írni a programot? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Lehet, hogy az egyszerű programok megírásához kézzel. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Aha. 539 00:27:36,590 --> 00:27:38,510 >> KÖZÖNSÉG: A teszt a jövő héten, ugye? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: A kvíz jövő szerdán. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Ez azt jelenti, van egy szép [? CSE?] osztályozás party utána, amely 543 00:27:43,730 --> 00:27:50,390 azt jelenti, hogy kapsz a pontjaid vissza, hogy a night-- mikor? 544 00:27:50,390 --> 00:27:50,890 Ki tudja? 545 00:27:50,890 --> 00:27:51,973 De az lesz, hogy este. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Rendben van. 548 00:28:02,855 --> 00:28:04,250 Hogyan szeretnénk kezdeni ezt? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Adok egy hint-- kezdődik ezzel. 551 00:28:09,630 --> 00:28:11,455 >> KÖZÖNSÉG: Meg kell nyitni a fájlt. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Igen. 553 00:28:12,250 --> 00:28:14,060 Szóval, mit akarsz, hogy hívják ezt? 554 00:28:14,060 --> 00:28:16,150 Nem csak azt, hogy hívják "file"? 555 00:28:16,150 --> 00:28:17,480 Nézzük könnyen. 556 00:28:17,480 --> 00:28:26,752 Szóval, mi a fopen-- kimenet teszt lesz? 557 00:28:26,752 --> 00:28:36,130 Nevezzük "Hello". 558 00:28:36,130 --> 00:28:37,810 És mi a mód? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Mit teszünk, hogy ezt a fájlt? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> KÖZÖNSÉG: Olvasd el. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Írás. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Azért írunk rá. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lovely. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, így már most ezt a fájlt. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Mit kell tenni? 572 00:28:56,212 --> 00:28:57,420 KÖZÖNSÉG: Ellenőrizze, hogy null. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1. Ellenőrizze, hogy null-- pontosan. 574 00:28:59,820 --> 00:29:01,980 Ez az, amit én szeretnék hallani. 575 00:29:01,980 --> 00:29:05,930 Ez automatikusnak kell lennie, különösen nagyjából ettől kezdve. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Ha elkezd segfaulting, akkor valószínűleg Nem ellenőrzi a null valahol. 578 00:29:10,950 --> 00:29:12,480 Kilenc alkalommal tízből, ami lesz a hiba. 579 00:29:12,480 --> 00:29:15,400 Tehát, ha tudna csak bejutni a szokás, mindig ellenőrizze, ha ez nulla, 580 00:29:15,400 --> 00:29:18,150 életed lesz szép és easy-- vagy könnyebb. 581 00:29:18,150 --> 00:29:19,480 >> Így nézze meg, ha ez a null. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Tehát, ha nem null, ami amit a bumm egyenlő 584 00:29:24,820 --> 00:29:26,784 means-- nem null-- ez érvényes. 585 00:29:26,784 --> 00:29:27,700 Mit akarunk csinálni? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Mi csak szeretnénk nyomtatni , hogy a fájl, ugye? 588 00:29:31,570 --> 00:29:32,923 Szóval, mit fogunk használni? 589 00:29:32,923 --> 00:29:34,092 >> KÖZÖNSÉG: fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- szép. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 És fprintf úgy két arguments-- ahol ez megy, és mit akarunk nyomtatni. 593 00:29:44,000 --> 00:29:45,820 Tehát mi az első? 594 00:29:45,820 --> 00:29:46,570 Ha megy? 595 00:29:46,570 --> 00:29:47,490 >> KÖZÖNSÉG: Fájlok. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Ez lesz a fájl. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 És mit akar nyomtatni? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Helló, világ!" 601 00:29:58,065 --> 00:29:58,565 Rendben van. 602 00:29:58,565 --> 00:30:03,670 Van egy utolsó thing-- másik nagy paradigma itt. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 KÖZÖNSÉG: Bezárás. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Bezár. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Tessék. 608 00:30:10,540 --> 00:30:13,384 >> KÖZÖNSÉG: Ez történik ha a fájl null? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Nem, ez ha nem null. 610 00:30:15,050 --> 00:30:16,881 KÖZÖNSÉG Ó, ha ez rendben van nem--. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 A fopen, majd az Két érv, hogy menj be, 613 00:30:25,410 --> 00:30:27,655 Mit jelent az első érv megint? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: Az érvelés mint a fájl neve 615 00:30:30,392 --> 00:30:31,350 hogy szeretne menni. 616 00:30:31,350 --> 00:30:36,020 Így aztán ez fut, akkor lenne néhány fájlt úgynevezett "hello" 617 00:30:36,020 --> 00:30:38,320 hogy már "Hello, world" belül. 618 00:30:38,320 --> 00:30:38,820 Ez minden. 619 00:30:38,820 --> 00:30:39,500 Csak a neve. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> KÖZÖNSÉG És mivel ez az írás, a fájl nem kell már létezik. 622 00:30:48,650 --> 00:30:49,675 Ez az, amit mondott? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Jobb. 624 00:30:50,410 --> 00:30:50,910 Pontosan. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Ha a "Hello", mint egy fájlt még nem létezik, akkor 627 00:30:55,839 --> 00:30:58,380 létre fog hozni egy fájlt úgynevezett Hello "és írjon neked. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> KÖZÖNSÉG: Ha azt mondod a program írt a fájlt, 630 00:31:03,610 --> 00:31:08,075 miért írsz "file" helyett a fájl nevét és fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Mivel ebben az esetben van hogy a nagy FILE-- minden caps-- csillag, 632 00:31:13,600 --> 00:31:14,260 fájl. 633 00:31:14,260 --> 00:31:17,370 Tehát ez a mutató a fájl hogy te beszélsz. 634 00:31:17,370 --> 00:31:19,930 Ez a módja, hogy a mi csak hivatkoznak rá. 635 00:31:19,930 --> 00:31:24,850 Tehát ebben az esetben, ha hiszem file-- aha, 636 00:31:24,850 --> 00:31:31,271 tudjuk használni this-- fájlt itt utal, hogy a megnyitása "Hello" 637 00:31:31,271 --> 00:31:32,145 és hagyta, hogy írjon. 638 00:31:32,145 --> 00:31:34,728 >> KÖZÖNSÉG: Vajon mi tesz egy "Hello" helyett [? csupán?] f fájlt? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Nem, mert a "Hello" kell, hogy nyitott és írható. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Fájl itt olyan, mint egy jelölés, amely azt mondja OK, 642 00:31:45,980 --> 00:31:49,190 ezt file-- hello-- hogy keresünk. 643 00:31:49,190 --> 00:31:50,680 Már bontott. 644 00:31:50,680 --> 00:31:52,140 És fogunk írni. 645 00:31:52,140 --> 00:31:55,130 Ha csak használja a "Hello", mely kapszulázott benne. 646 00:31:55,130 --> 00:31:56,846 Így fog kiborulni. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Úgy értem, akkor is nevezték el. 649 00:32:00,300 --> 00:32:03,960 Tehetett volna fájlt, csillag, "Hello", megegyezik. 650 00:32:03,960 --> 00:32:07,840 De a lényeg az, hogy szüksége van egy fájlt csillag pointer érdekében 651 00:32:07,840 --> 00:32:09,281 hogy képes legyen használni ezeket a funkciókat. 652 00:32:09,281 --> 00:32:11,280 KÖZÖNSÉG: Meg tudná csinálni fájl, csillag, reszelő, "Hello" 653 00:32:11,280 --> 00:32:13,113 vagy mit kell tenni fájl csillag, fájlt is? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: tudtál do fájl, csillag, "Hello". 655 00:32:16,330 --> 00:32:19,790 Meg tudod változtatni ezt a bármilyen nevet. 656 00:32:19,790 --> 00:32:22,114 Teljesen önkényes mi ez a név is. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Akkor nevezd meg semmit. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Nevezd meg repülő spagetti, ha akarta. 661 00:32:28,020 --> 00:32:29,690 >> KÖZÖNSÉG: Mi az a "w" idézőjelbe az? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: A "w" csak a mód. 663 00:32:31,540 --> 00:32:33,170 Szóval írásban ezt a fájlt. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Mindenki jó? 666 00:32:35,320 --> 00:32:36,227 Tiszta? 667 00:32:36,227 --> 00:32:36,981 Igen. 668 00:32:36,981 --> 00:32:40,365 >> KÖZÖNSÉG: Tehát, ha ezt írja fájl, ahol tudjuk majd meg, hogy a fájlt? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: Ez lesz az azonos könyvtárat, hogy te éppen. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Ha a három és PSET futtatása, az Ön PSET 672 00:32:48,880 --> 00:32:52,600 három mappa lesz ezt a fájlt a "Helló." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Mindenki jó? 675 00:32:53,757 --> 00:32:55,840 Úgy érzem, hogy mind kapok, ami nagyszerű. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 OK. 678 00:32:57,790 --> 00:33:05,960 Szóval vissza a dia show-- Én szeretem, ha a dolgok működnek. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- vagytok izgatott? 680 00:33:08,674 --> 00:33:09,465 Mutatók nagyok. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Vesznek egy kicsit hogy tekerje a fejét. 683 00:33:13,580 --> 00:33:15,288 Ez a második év tanítás mutatók. 684 00:33:15,288 --> 00:33:16,850 És azt hiszem, végre megvan. 685 00:33:16,850 --> 00:33:18,650 Tehát, ha harc, ez rendben van. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Mint már mondtam, rajzolás sokat segít a dolgok a CS, 688 00:33:24,070 --> 00:33:27,400 mint azt hiszem, az emberek hajlamosak gondolkodni ó, vagyunk egy számítógép. 689 00:33:27,400 --> 00:33:28,399 Mi kéne kódot. 690 00:33:28,399 --> 00:33:30,190 No-- rajz képek valóban segít. 691 00:33:30,190 --> 00:33:32,773 És én tényleg javasoljuk, hogy bekapcsolódjanak az óvodás oldalra 692 00:33:32,773 --> 00:33:35,010 és hogy ki ceruzák vagy markerei és rajzolni. 693 00:33:35,010 --> 00:33:36,110 Mert ez segít. 694 00:33:36,110 --> 00:33:39,380 És ha látsz engem munkaidejében én lesz könyv körül halom papír 695 00:33:39,380 --> 00:33:41,580 A tollak rajz dolgokat. 696 00:33:41,580 --> 00:33:44,370 >> Így különösen pointers-- rajzolni. 697 00:33:44,370 --> 00:33:47,970 És biztos vagyok benne, hogy tényleg lesz lehet rajz néhány képet itt is. 698 00:33:47,970 --> 00:33:51,270 >> Szóval ti minden van, hogy Muci, ezt a hűvös claymation dolog. 699 00:33:51,270 --> 00:33:54,720 És azt hiszem, ez tényleg vicces, amikor ő felrobban egy csomó darab. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Ez valami komikus osztály. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [hallható] ez a nagy képesség hogy képes legyen irányítani memória. 704 00:34:05,900 --> 00:34:10,090 És ez az egyik dolog, ami igazán teszi, hogy egy ilyen hatalmas nyelv. 705 00:34:10,090 --> 00:34:13,469 De a nagy hatalommal nagy felelősség. 706 00:34:13,469 --> 00:34:16,230 És őrült dolog történhet ha nem vigyáz. 707 00:34:16,230 --> 00:34:18,560 Tehát, ha az Ön által használt mutatók, azt szeretnénk, hogy 708 00:34:18,560 --> 00:34:21,440 benne, hogy tényleg érti pontosan, hogy mit csinálsz. 709 00:34:21,440 --> 00:34:25,530 Remélhetőleg a következő kis idő segít igazán értem 710 00:34:25,530 --> 00:34:27,850 mutatók, hogyan kell használni őket, és hogyan kell manipulálni őket. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Szóval memory-- vagyok benne voltunk láttam ezt a diagram előtt. 713 00:34:33,460 --> 00:34:38,540 Tehát ez csak egy egyszerű diagram hogy a dolgok hogyan lehet tárolni memóriájában. 714 00:34:38,540 --> 00:34:43,145 Szóval alapvetően ezek hatalmas tömbök egy byte tömb 715 00:34:43,145 --> 00:34:46,000 amit mi here-- enyhe egyesével minden egyes alkalommal. 716 00:34:46,000 --> 00:34:51,810 Ez hex [hallható] így nyolc-bites blokkokat. 717 00:34:51,810 --> 00:34:55,510 És minden mondat társul Néhány hexadecimális címet. 718 00:34:55,510 --> 00:34:58,750 Tehát, ha valaha is látni a 0x, ami csak notating 719 00:34:58,750 --> 00:35:00,670 hogy ez egy hexadecimális címet. 720 00:35:00,670 --> 00:35:03,970 Akkor ez azt jelenti, feltételezni Néhány cím a memóriában. 721 00:35:03,970 --> 00:35:06,935 Beszélünk memória címek ha látsz hexadecimális. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Van ints változók, úszók változók tárolására. 724 00:35:14,630 --> 00:35:16,260 Így ints bolt ints. 725 00:35:16,260 --> 00:35:17,430 Úszók bolt lebeg. 726 00:35:17,430 --> 00:35:20,260 Tehát mi is mutató hogy tárolja a memória címeket. 727 00:35:20,260 --> 00:35:21,660 Ez egyfajta leképezés. 728 00:35:21,660 --> 00:35:24,240 Mutatók kizárólag memória címeket. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Szóval ez, mint a típus is. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 A készülék 32 bites, ami azt jelenti, hogy a memória cím négy bájt. 733 00:35:34,470 --> 00:35:37,830 Tehát minden olyan mutató, hogy van is lesz négy bájt. 734 00:35:37,830 --> 00:35:43,200 Vagy pedig, ha ez a négy bájt, memória négy bájt. 735 00:35:43,200 --> 00:35:44,790 Mutatók bolt memória. 736 00:35:44,790 --> 00:35:46,430 Ezért ők négy bájt. 737 00:35:46,430 --> 00:35:48,460 Cool-- csak azt szeretném megerősíteni azt. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Önnek kellene kap ez vicces most. 740 00:35:52,220 --> 00:35:55,040 Én nem tudom, hogy sokan közületek a xkcd rajongók, de én szeretem xkcd. 741 00:35:55,040 --> 00:35:55,780 Nagyon jó. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Rendben van. 744 00:35:57,790 --> 00:36:01,640 Így teremt pointers-- mint mondtam, ez elég sok, mint bármi más. 745 00:36:01,640 --> 00:36:02,930 Van egy típus. 746 00:36:02,930 --> 00:36:04,050 Van egy név. 747 00:36:04,050 --> 00:36:04,810 Jobb? 748 00:36:04,810 --> 00:36:10,410 Ez az, amit mi ott. [? Hex?] Csillag azt jelenti, hogy a mutató, 749 00:36:10,410 --> 00:36:12,250 és akkor amit akarsz nevezni. 750 00:36:12,250 --> 00:36:15,770 Így a típus képviseli mit lehet tárolni. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Minden rendben? 753 00:36:17,990 --> 00:36:24,350 Ugyanígy, ha mi ints, tudjuk, hogy mi tárolja egy int ott. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 A mutató, az tart memória címet. 756 00:36:30,280 --> 00:36:34,240 De mit jelent az, hogy-- itt, ahol rajz fog jól jön. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Tehát ebben az esetben van néhány value-- mondjuk négy. 759 00:36:45,980 --> 00:36:49,306 Négy címen egy. 760 00:36:49,306 --> 00:36:49,805 OK? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Ez az első itt azt jelenti, hogy ez a mutató 2x. 763 00:36:56,170 --> 00:36:56,740 Jobb? 764 00:36:56,740 --> 00:36:57,628 Ez valami mutató x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x lehet valami, bármi. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Bármit x ez-- mondjuk x négy. 769 00:37:05,130 --> 00:37:07,280 Meg fog tárolni a memória címét. 770 00:37:07,280 --> 00:37:12,260 Így int, csillag, X- ez más slot memory-- 771 00:37:12,260 --> 00:37:13,590 ki tudja, mi is ez. 772 00:37:13,590 --> 00:37:15,430 De ez meg fog tárolni egy címet. 773 00:37:15,430 --> 00:37:27,040 Szóval ez lenne a like-- ebben az esetben Bármi, 774 00:37:27,040 --> 00:37:32,630 tárolják 0x1-- bármilyen tárolják címen, hogy a mutató rendelkezik, 775 00:37:32,630 --> 00:37:35,280 van, hogy egyeznek meg amit mi már kijelölt. 776 00:37:35,280 --> 00:37:40,330 Így a 0x1, ebben az esetben, ez az x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Ez mindig csak egy int míg mi ezt a. 779 00:37:49,340 --> 00:37:52,950 >> Hasonlóképpen, ha van másik 1y, bármi 780 00:37:52,950 --> 00:37:59,130 cím tárolja egy y hogy egy char-- ugyanezt z. 781 00:37:59,130 --> 00:38:05,840 Ugyanúgy, amikor csak próbálja meg, és nem intx egyenlő 0,4, 782 00:38:05,840 --> 00:38:09,275 ez meg fog kiabálni veled, és mint nem, azt mondta volna egy int. 783 00:38:09,275 --> 00:38:10,525 Ez állítólag egy int. 784 00:38:10,525 --> 00:38:11,900 Ne próbálj, hogy ez egy úszó. 785 00:38:11,900 --> 00:38:14,150 >> Tehát a dolgok, amit ők akarnak lenni. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Legyen dolgok legyenek önmaguk. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Olyan nagy dolog csak bármilyen típusú mutató 790 00:38:23,450 --> 00:38:26,101 azt, hogy ez az egyetlen dolog tárolhat ott. 791 00:38:26,101 --> 00:38:26,600 OK? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 A gyakorlat, mint a a múlt héten, minden 794 00:38:31,160 --> 00:38:32,817 Úgy tűnik, tényleg ilyen elvont. 795 00:38:32,817 --> 00:38:34,150 Megyünk, hogy némi gyakorlat. 796 00:38:34,150 --> 00:38:36,760 Meg kell, hogy több értelme van. 797 00:38:36,760 --> 00:38:44,580 >> Így referenciái és dereferencing-- ez Nagyon fontos, hogy ezeket a dolgokat. 798 00:38:44,580 --> 00:38:46,630 Még mindig van, hogy frissíteni hébe-hóba. 799 00:38:46,630 --> 00:38:48,450 És én, mint várni, melyik akarok? 800 00:38:48,450 --> 00:38:56,080 Így a jelet ténylegesen ad Ön a referencia vagy címe. 801 00:38:56,080 --> 00:39:00,100 Így tér vissza a címet memória, amely változó tárolja. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Így fog ténylegesen vissza hozzád hexadecimális, míg azt dereferencing 804 00:39:07,020 --> 00:39:10,641 valóban fog adni A tárolt adatok ott. 805 00:39:10,641 --> 00:39:11,140 OK? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Szóval megyünk nézni egy példát nagyon gyors, illetve a ténylegesen mellé. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> OK. 810 00:39:19,150 --> 00:39:21,790 Tehát, hogy hiszem, tényleg figyelmesen ezt. 811 00:39:21,790 --> 00:39:23,860 Tehát itt van néhány egész x. 812 00:39:23,860 --> 00:39:26,485 Fogom próbálni, és felhívni a ki a legjobb tudásom szerint. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Szóval megy, hogy ezt nyílás x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 És ez az öt tároló. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 A címe 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Cool? 821 00:39:43,160 --> 00:39:44,100 Minden jó. 822 00:39:44,100 --> 00:39:45,470 >> Tehát most itt van ez a mutató. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Ez volt itt. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 És jelet ad A címe valami. 827 00:39:57,560 --> 00:40:00,780 Így, ebben az esetben, ez az x címét. 828 00:40:00,780 --> 00:40:01,875 Mi a címe az x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- és ez a mutató is a 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Cool? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Így gondol erről mutató, 04, csak kiemeli itt. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 És hívják mutatók mert ahogy egyre inkább ezt, 837 00:40:25,740 --> 00:40:28,450 fogsz látni a dolgokat mutat. 838 00:40:28,450 --> 00:40:31,470 És egy másik blokkot mutat blokk, hogy sokkal több értelme van. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Tehát itt van kettő. 841 00:40:33,890 --> 00:40:38,230 Aztán van néhány példány, ami what-- 0x0C. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 És ez lesz a dereference a mutatót. 844 00:40:43,420 --> 00:40:46,790 >> Szóval, mi ez mond OK, itt van a mi mutató. 845 00:40:46,790 --> 00:40:53,090 Az érték tárolja a 0x04, és mi azt mondja, hogy megy erre a címre 846 00:40:53,090 --> 00:40:54,300 és mondd el, mi van benne. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Szóval ez hatékonyan mi ez a nyíl csinál. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Azt hiszem ezt, mint a csillag. 851 00:41:01,280 --> 00:41:05,410 Szóval OK, mikor mi csillag, az azt jelenti, követni. 852 00:41:05,410 --> 00:41:06,810 Ugrás erre a címre. 853 00:41:06,810 --> 00:41:11,430 És ez alapvetően csak a következő A nyílra ezt a memóriát darab. 854 00:41:11,430 --> 00:41:15,380 És nekünk, mi van benne, ami 5. 855 00:41:15,380 --> 00:41:18,840 Ez az, amiért a másolat egyenlő 5. 856 00:41:18,840 --> 00:41:20,120 Van ennek értelme? 857 00:41:20,120 --> 00:41:22,769 Valaki kell, hogy menjek át hogy újra, vagy lassabban? 858 00:41:22,769 --> 00:41:24,560 Azt akarod, hogy menjek keresztül meg még egyszer? 859 00:41:24,560 --> 00:41:25,060 OK. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Fogunk dolgozza át újra. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Ha elkezdünk, mindannyian egyetértünk abban, hogy van néhány darab memória, ami a változó 864 00:41:37,205 --> 00:41:40,890 x, hogy egyenlővé tenni 5. 865 00:41:40,890 --> 00:41:42,910 Mi nem ellenőrizzük, hol van a memóriában. 866 00:41:42,910 --> 00:41:45,520 Szóval ez a hely nem csak önkényesen. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Jó ott? 869 00:41:48,731 --> 00:41:49,230 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Aztán inicializálni a mutató egy int. 872 00:41:53,330 --> 00:41:56,900 Ezért ez lehetővé tette, hogy pont x mert van egy int itt. 873 00:41:56,900 --> 00:42:00,840 Van még egy darab memória mert ez a mutató 874 00:42:00,840 --> 00:42:03,485 olyan változó, mint bármi más. 875 00:42:03,485 --> 00:42:06,615 Ez önkényesen néhány helyet a memóriában. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 És mi tárolja az x címét. 878 00:42:10,830 --> 00:42:13,200 Jelet olyan x címét. 879 00:42:13,200 --> 00:42:14,575 Tehát mi az x címét? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> KÖZÖNSÉG: Ez zero-- 882 00:42:20,614 --> 00:42:21,280 SPEAKER 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Tehát then-- utolsó. 885 00:42:25,940 --> 00:42:30,650 Van néhány copy-- újra csak egy másik változó. 886 00:42:30,650 --> 00:42:32,520 Szóval rendelni valami önkényes helyen. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 És mi a pointer dereference. 889 00:42:38,080 --> 00:42:42,490 A csillag azt jelenti, megy a cím alatt az a mutató. 890 00:42:42,490 --> 00:42:44,480 Mondd el, mi van ott. 891 00:42:44,480 --> 00:42:47,290 Így a cím tárolt a mi mutató 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Így megy arra a címre. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Ez rámutat arra a címre. 896 00:42:54,590 --> 00:42:57,481 Mi van benne ez a memória blokk? 897 00:42:57,481 --> 00:42:57,980 Ez egy öt. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Szóval, ez az, amit rendelni a másolat. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Mindenki jó? 902 00:43:04,860 --> 00:43:05,360 Cool. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- kép. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Így nyomon értékek here-- vagyok hagyom, hogy a srácok gondol erről. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Vonhatunk másik képet. 909 00:43:27,750 --> 00:43:31,260 De azt akarom, hogy megpróbálja, és értelem ezen keresztül a saját egy percre. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Mivel ők nem adnak nekünk egy példa cím, 912 00:44:04,149 --> 00:44:06,940 Én csak csinálni ampersand X- amely segít vezetni haza. 913 00:44:06,940 --> 00:44:07,950 Jelet jelent címét. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Tehát az első, mindenki megy az első sorban. 916 00:44:12,360 --> 00:44:15,690 Néhány x set a five-- egyes véletlen slot a memóriában. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int csillag mutató egyenlő hogy az x címét, ugye? 919 00:44:23,200 --> 00:44:28,180 Int csillag mutató teremt ez a blokk, hívja mutatót, 920 00:44:28,180 --> 00:44:30,650 és hozzárendeli az x címét. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Én borzasztó és jel. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Most mit csinálunk azt mondjuk OK, a mutató hivatkozás feloldási. 925 00:44:40,550 --> 00:44:42,760 Így megy OK, mi van a mutató? 926 00:44:42,760 --> 00:44:44,820 Ez ampersand x. 927 00:44:44,820 --> 00:44:49,400 Tovább a jelet az x és újra ki kell jelölni. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Szóval most, x-jel lesz a 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Tehát alapvetően, ha éppen dereferencing, menj az OK gombra. 932 00:45:05,174 --> 00:45:07,090 Meg leszel rajz képek, mint ez. 933 00:45:07,090 --> 00:45:09,423 Meg leszel rajz a nyilak felett, hol van. 934 00:45:09,423 --> 00:45:16,030 Így megy ez a nyílás a memóriában, és vagy ad nekem, hogy visszatérítést, vagy változtassa meg. 935 00:45:16,030 --> 00:45:21,620 Ebben az esetben, mivel ebben vagyunk érték, mi hozzárendelése, hogy legyen 35. 936 00:45:21,620 --> 00:45:24,700 Míg az utolsó egy, ha azt veszi észre, mi 937 00:45:24,700 --> 00:45:27,680 arra hozzárendelése mi volt itt valami másra. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Így van ez a félelmetes táblázat. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Ez nem olyan rossz. 942 00:45:36,890 --> 00:45:37,970 Srácok dolgozni rajta. 943 00:45:37,970 --> 00:45:39,640 Megyek dolgozzon ki a táblára. 944 00:45:39,640 --> 00:45:41,306 Fogunk töltse ki együtt, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Tehát megragad néhány papírt, megragad Egy partner, munkába. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Megyek, hogy egy nagyobb darab krétát. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Mert lesz egy csomó. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 EGYETEMI TANÁR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Kezdjük az első sorban. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Kezdjük ott, akkor, srácok akkor talán a munka révén egy kicsit. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 a egyenlő b c alkalommal így mi a? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Ez nem egy trükkös kérdés, ígérem. 963 00:48:23,260 --> 00:48:24,440 >> Diák: 4-szer 5. 964 00:48:24,440 --> 00:48:25,420 >> EGYETEMI TANÁR: 4-szer 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Tehát mi b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 STUDENT: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> EGYETEMI TANÁR: És c? 971 00:48:31,043 --> 00:48:31,542 STUDENT 5. 972 00:48:31,542 --> 00:48:32,083 EGYETEMI TANÁR: 5. 973 00:48:32,083 --> 00:48:35,960 És akkor ez csak fog kell a jelet, ampersand b, 974 00:48:35,960 --> 00:48:38,575 c jelet, ugye? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Nem rossz. 977 00:48:40,596 --> 00:48:42,081 Ez elég egyszerű. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Így a következő alkalommal. 980 00:48:44,300 --> 00:48:48,725 A valós érték megegyezik egy alkalommal c, abban az esetben, valaki nem ismerte azt. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Mindenki ismerős a korral értéke? 983 00:48:53,300 --> 00:49:00,105 OK, mindez means-- ez gyorsírás egy egyenlő egy alkalommal c. 984 00:49:00,105 --> 00:49:04,840 Megteheti azt részlege, hozzáadásával, a kivonás. 985 00:49:04,840 --> 00:49:12,130 Meg tudod csinálni egy egyenlő, vagy a plusz egyenlő c olyan egyenlő egy plusz c mínusz egyenlő 986 00:49:12,130 --> 00:49:15,190 c lenne egyenlő a mínusz c. 987 00:49:15,190 --> 00:49:16,690 Ez csak szintaktikai cukor. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Így, ebben az esetben a egyenlő Egy alkalommal c adna nekünk, mi? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Ismét nem egy trükkös kérdés. 992 00:49:28,186 --> 00:49:28,965 >> STUDENT: 100. 993 00:49:28,965 --> 00:49:29,300 >> EGYETEMI TANÁR: 100. 994 00:49:29,300 --> 00:49:30,383 Van bármi más változás? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Nem. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Talán végre kap jobb az én és jel. 999 00:49:39,850 --> 00:49:42,047 >> Diák: OK, bocs, hogy kerültél 100? 1000 00:49:42,047 --> 00:49:42,630 EGYETEMI TANÁR: OK. 1001 00:49:42,630 --> 00:49:46,594 Így a értéke egyenlő a c alkalommal, így egy alkalommal kb. 1002 00:49:46,594 --> 00:49:48,510 Diák: Ó, te használ Egy a previous-- 1003 00:49:48,510 --> 00:49:49,135 EGYETEMI TANÁR: Igen. 1004 00:49:49,135 --> 00:49:51,450 Tehát ezek a legfrissebb értékeket. 1005 00:49:51,450 --> 00:49:53,990 Ezek mit kellene használva haladunk lefelé, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Szóval, b az egyetlen dolog változik, ugye? 1008 00:50:01,520 --> 00:50:02,910 Szóval kitölteni minden mást. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Mi b lesz? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Lenni vagy nem lenni. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Szóval, mit csinál ez? 1015 00:50:20,240 --> 00:50:21,605 Mi az a csillag pa csinál? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> DIÁK: Kód a helyét pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> Diák: Nem, nem egészen. 1020 00:50:27,480 --> 00:50:29,470 Tehát ez egy d hivatkozást. 1021 00:50:29,470 --> 00:50:31,580 >> Diák: Szóval b átadható érték pa. 1022 00:50:31,580 --> 00:50:37,340 >> EGYETEMI TANÁR: Igen, így pa a címe, ugye? 1023 00:50:37,340 --> 00:50:42,430 Így mondja megy, ahol a nem tárolt és adja meg ezt az értéket. 1024 00:50:42,430 --> 00:50:43,884 Tehát mi b? 1025 00:50:43,884 --> 00:50:44,425 STUDENT: 100. 1026 00:50:44,425 --> 00:50:46,534 EGYETEMI TANÁR: 100. 1027 00:50:46,534 --> 00:50:47,450 Tökéletes. 1028 00:50:47,450 --> 00:50:49,879 OK, így pc, mi változik. 1029 00:50:49,879 --> 00:50:51,170 Minden más marad. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Mi pc lesz? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Egyszerű feladat. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc egyenlő pa, pa és mi? 1036 00:51:05,990 --> 00:51:07,049 >> Diák: ampersand a. 1037 00:51:07,049 --> 00:51:07,840 EGYETEMI TANÁR: Tökéletes. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Most már kezd érdekes. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 Oké, szünet ezt le. 1042 00:51:15,230 --> 00:51:21,110 Először is, mi a b c-szer, mert ez az a könnyű része ez, ugye? 1043 00:51:21,110 --> 00:51:22,360 B idők c ez-- 1044 00:51:22,360 --> 00:51:23,320 >> STUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> EGYETEMI TANÁR: Igen, így mit csinál ez, 1046 00:51:28,880 --> 00:51:33,705 ha a csillag pb, mi változik? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> Diák: Mi van a-- 1049 00:51:37,242 --> 00:51:38,200 EGYETEMI TANÁR: Mi van b? 1050 00:51:38,200 --> 00:51:41,340 Diák: Mi van a térben hogy pb mutat. 1051 00:51:41,340 --> 00:51:43,406 EGYETEMI TANÁR: És pb mutat to-- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 EGYETEMI TANÁR: B. Így az egyetlen változó dolog az b, helyes. 1054 00:51:46,740 --> 00:51:50,800 Szóval b idők c 500. 1055 00:51:50,800 --> 00:51:52,367 Szóval, ez az, amit most változik. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Cool. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lovely. 1060 00:52:00,840 --> 00:52:01,905 Srácok csinálja. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Rendben, megtörve ezt le. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C változik, ugye? 1065 00:52:09,630 --> 00:52:11,530 Így tudjuk kitölteni minden mást. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Lássuk. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 OK. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Tudjuk, hogy ac lesz a termék két szám, ugye? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Mi a két szám, igaz? 1074 00:52:27,980 --> 00:52:28,970 >> Diák: A és C? 1075 00:52:28,970 --> 00:52:31,930 >> EGYETEMI TANÁR: Tehát egy olyan igaz, hogy az első. 1076 00:52:31,930 --> 00:52:34,385 Szóval d Az hivatkozva p egy, igaz? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P a pontot egy, így tudjuk, hogy ez lesz a 100-szor, mi? 1079 00:52:42,870 --> 00:52:46,232 Times mit pc pont? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Rámutat, hogy a. 1082 00:52:48,740 --> 00:52:55,038 Így 100-szor 100 10.000. 1083 00:52:55,038 --> 00:52:56,170 Van ennek értelme? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Cool. 1086 00:52:58,200 --> 00:53:00,500 Otthon szakaszon, srácok, utolsó sor. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Mi változik itt? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> STUDENT: A. 1091 00:53:06,935 --> 00:53:09,435 EGYETEMI TANÁR: A. Perfect, így minden más is ugyanaz marad. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 1094 00:53:16,710 --> 00:53:17,970 És mi a? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Tehát ez egy alkalommal mi? 1097 00:53:26,060 --> 00:53:27,120 Ez a csillag pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Tehát csillag pb azt itt pb, pb pontot b. 1100 00:53:34,490 --> 00:53:35,370 >> STUDENT: 500. 1101 00:53:35,370 --> 00:53:36,230 >> EGYETEMI TANÁR: 500. 1102 00:53:36,230 --> 00:53:39,236 Tehát 500-szor 100. 1103 00:53:39,236 --> 00:53:41,758 Ez 50.000. 1104 00:53:41,758 --> 00:53:43,216 Hűha! 1105 00:53:43,216 --> 00:53:45,646 Nézd csak. 1106 00:53:45,646 --> 00:53:47,982 >> Diák: Miért van A & c az last-- 1107 00:53:47,982 --> 00:53:48,690 EGYETEMI TANÁR: Sajnálom. 1108 00:53:48,690 --> 00:53:50,080 Diák: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 EGYETEMI TANÁR: Az én hibám. 1110 00:53:51,600 --> 00:53:52,890 Sok írás. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Mindenki jó? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Nem rossz, ugye? 1115 00:53:56,660 --> 00:53:58,490 Csak vesz egy kis miközben a munka révén. 1116 00:53:58,490 --> 00:54:01,080 Ha lebontani, megérteni, mi az egyes részek 1117 00:54:01,080 --> 00:54:03,197 utal to-- mint mindent ez, 1118 00:54:03,197 --> 00:54:05,780 yes-- lebontani a kis problémákat, és újra összekapcsolódnak 1119 00:54:05,780 --> 00:54:07,345 és meg tudod csinálni valami félelmetes dolog. 1120 00:54:07,345 --> 00:54:08,970 Itt vannak a válaszok, de ezt tettük. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Pointer aritmetika. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 A kezem minden fakó. 1126 00:54:15,510 --> 00:54:17,970 Így hozzáadásával vagy kivonásával int beállítja a mutató 1127 00:54:17,970 --> 00:54:21,890 által a méret a típusú mutató. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Ne feledje, hogy minden típus más a méret? 1130 00:54:28,390 --> 00:54:34,890 Szóval, mint egy dupla, vagy hosszú ideig Nyolc és int négy karakter de egy. 1131 00:54:34,890 --> 00:54:38,360 >> Szóval, mit akarsz csinálni ez-- egy dolog, hogy emlékezzen 1132 00:54:38,360 --> 00:54:44,080 csak az, hogy mennyi a mutató értéke valóban változik 1133 00:54:44,080 --> 00:54:46,550 függ a típusú mutató van. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Mindenki jó ez? 1136 00:54:51,820 --> 00:54:52,760 Tudok kitörölni? 1137 00:54:52,760 --> 00:54:53,440 Mi a jó? 1138 00:54:53,440 --> 00:54:53,940 Félelmetes. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Tehát, ha van néhány mutató hogy-- ez fog be-- vagyok 1141 00:55:07,501 --> 00:55:08,834 megy, hogy egy int pointer. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Ez tárolja ezt. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Ha azt mondaná mutató plusz egy, hogy mit fog csinálni 1146 00:55:20,170 --> 00:55:23,420 van, hogy fog frissíteni ez a méret egy int 1147 00:55:23,420 --> 00:55:25,950 mert ez a típusú mutató van. 1148 00:55:25,950 --> 00:55:28,260 >> C, minden nagyon szigorú és szabályozott. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 A mutató int fog frissíteni az az összeg a tér int tartana. 1151 00:55:35,260 --> 00:55:36,260 Egy int négy bájt. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Tehát mi ezt alakulnak? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Te csak hozzá négy erre. 1156 00:55:44,390 --> 00:55:50,040 Most a mutató is be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Tehát, ha ez a char és mi mutató plusz egy, mi lenne most? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Ha úgy tesz, mintha mi started-- started-- most ez 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Nézzük most azt mondják, hogy ez volt a char mutatót, és adtunk egy. 1163 00:56:10,850 --> 00:56:11,850 Mi lenne váltani? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Hány bájt egy char? 1166 00:56:16,030 --> 00:56:16,680 >> KÖZÖNSÉG: Egy. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: Egy. 1168 00:56:17,304 --> 00:56:18,309 KÖZÖNSÉG: Tehát 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Szóval lenne kilenc. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Szóval, csak valamit, hogy emlékezzen. 1172 00:56:23,820 --> 00:56:28,340 Csak ha egyet, akkor nem eggyel hacsak nem egy karakter. 1173 00:56:28,340 --> 00:56:34,190 Ez hozzá hány byte a típus, amely azt jelenti, 1174 00:56:34,190 --> 00:56:36,960 ezért is van ezt az egyenletet itt. 1175 00:56:36,960 --> 00:56:40,190 Tehát int akkora típusának mutatót. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Tehát a példa itt. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y jelöltek ki, hogy az érték, 0x4, amikor nem y plusz egy egyenlő. 1180 00:56:54,430 --> 00:56:56,830 Mi van benne, mi x, nem változik. 1181 00:56:56,830 --> 00:56:58,610 Mit változás az, ami az y. 1182 00:56:58,610 --> 00:57:04,980 A címen tárolt y aktualizálja négy mert van négy bájt egy int 1183 00:57:04,980 --> 00:57:06,097 és ez egy int pointer. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Rendben van. 1186 00:57:07,790 --> 00:57:09,123 Így most van egy másik gyakorlat. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 A kérdés tehát az, hogy mi fog nyomtatni. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Van ötleted? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> KÖZÖNSÉG: száma karakterek boldog macska? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Pontosan. 1194 00:57:44,490 --> 00:57:45,531 Így szeretné a húr. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Mindenki kap valamit? 1197 00:57:48,260 --> 00:57:49,509 Nem akarjuk járni rajta? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Igen, az OK gombra. 1200 00:57:52,010 --> 00:57:57,385 Szóval mi van here-- I így sokkal több. 1201 00:57:57,385 --> 00:57:59,340 Nem kell [Hallható] nevetségesen. 1202 00:57:59,340 --> 00:58:01,690 >> Tehát a húr itt, boldog macska. 1203 00:58:01,690 --> 00:58:02,950 Lovely. 1204 00:58:02,950 --> 00:58:05,080 Van néhány számláló mi nyomon követése. 1205 00:58:05,080 --> 00:58:11,430 Tehát néhány char * mutató hogy csak egyenlőre van beállítva str. 1206 00:58:11,430 --> 00:58:14,320 Mi ez tesz, hogy hozzárendelése néhány mutató 1207 00:58:14,320 --> 00:58:16,380 Az elején a húr. 1208 00:58:16,380 --> 00:58:19,840 Mert biztos vagyok benne, hiszen ban említik előadás, 1209 00:58:19,840 --> 00:58:22,290 amit adott nektek ezt adattípus nevű karakterlánc. 1210 00:58:22,290 --> 00:58:29,070 >> De tényleg csak húrok tömb of-- mint char *. 1211 00:58:29,070 --> 00:58:32,330 Ez egy mutató egy csomó karaktert hogy összefüggőek a memóriában. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Szóval ez csak azt állítja egyenlő a húr 1214 00:58:36,280 --> 00:58:38,980 azonosított, ahol az első karakter. 1215 00:58:38,980 --> 00:58:42,710 Szóval ez csak beállítás valamikor megegyezik a sor elejére. 1216 00:58:42,710 --> 00:58:44,130 Mindenki jó ott? 1217 00:58:44,130 --> 00:58:44,960 Cool. 1218 00:58:44,960 --> 00:58:49,840 >> Szóval ez a mi dereferencing mutató. 1219 00:58:49,840 --> 00:58:53,760 Szóval ez tényleg fog ad nekünk néhány érték itt, 1220 00:58:53,760 --> 00:58:55,610 a mi karakterlánc hogy beszélünk. 1221 00:58:55,610 --> 00:58:58,342 És mondja, ameddig ez nem null terminátor. 1222 00:58:58,342 --> 00:59:00,550 Tehát menj, amíg nem kap a végén a húr. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Frissítse mutató eggyel. 1225 00:59:04,190 --> 00:59:09,250 Tehát r, akkor valóban frissíteni egy minden alkalommal, mert ez egy char, 1226 00:59:09,250 --> 00:59:09,820 a char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Így fog átmenni. 1229 00:59:12,340 --> 00:59:13,290 Meg fog frissíteni. 1230 00:59:13,290 --> 00:59:16,705 Tehát az első alkalommal ez fut, ez lesz itt h. 1231 00:59:16,705 --> 00:59:17,590 Meg fog frissíteni. 1232 00:59:17,590 --> 00:59:18,185 >> Ez lesz az a. 1233 00:59:18,185 --> 00:59:21,310 Hogy lesz egy p, y, és így tovább és így tovább. 1234 00:59:21,310 --> 00:59:22,300 Majd frissíteni számláló. 1235 00:59:22,300 --> 00:59:26,160 Amikor eléri a végén, ez Csak kiírja, hogy milyen mértékben ütött. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Igen. 1238 00:59:28,050 --> 00:59:31,475 >> KÖZÖNSÉG: Tehát azt számít a hely, mint egy, igaz? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 1: hiszem. 1242 00:59:35,222 --> 00:59:36,830 Ez a question-- 1243 00:59:36,830 --> 00:59:37,746 >> KÖZÖNSÉG: [hallható]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: nincs gond. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Ez az én csinálni. 1248 00:59:42,736 --> 00:59:47,710 Jól van, egy dolgot megérteni, hogy egy sor, 1249 00:59:47,710 --> 00:59:51,736 akkor is kezelni, mint a mutató tömbök mert csak 1250 00:59:51,736 --> 00:59:52,860 folyamatos foltok memória. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Szóval lehet kezelni ugyanúgy. 1253 00:59:56,380 --> 00:59:59,000 Tudod manipulálni őket A mutatók is. 1254 00:59:59,000 --> 01:00:04,770 Így ahelyett, hogy a jelen esetben a hasonló dolog 1255 01:00:04,770 --> 01:00:07,490 lenne array 0értéke 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> De az azonos módon, hogy a karakterlánc határozza 1258 01:00:15,210 --> 01:00:18,740 által a kezdete, ahol az első karakter, 1259 01:00:18,740 --> 01:00:22,270 tömb határozza meg ahol az első eleme. 1260 01:00:22,270 --> 01:00:25,120 Mert mi tudjuk, mi garantált, hogy ezek a 1261 01:00:25,120 --> 01:00:27,985 lesznek folyamatos blokkok memória. 1262 01:00:27,985 --> 01:00:29,360 Ez az, ami lehetővé teszi számunkra, hogy ezt. 1263 01:00:29,360 --> 01:00:31,193 Tudjuk, hogy ők folyamatos blokkok memória. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Így ebben az esetben, a dereferencing Csak tömb, ami azt mondja, 1266 01:00:36,500 --> 01:00:40,800 OK, menj a kezdete a tömb, ami itt van. 1267 01:00:40,800 --> 01:00:42,640 Szóval lehet beállítani, hogy egyenlő egy. 1268 01:00:42,640 --> 01:00:48,610 És ebben az esetben, amit a tömb típus, amikor frissíti azt egy, 1269 01:00:48,610 --> 01:00:50,830 ez csak mint frissítése azt, hogy a következő index. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Meg tudod csinálni, mert te tudja, mi van a tömbben. 1272 01:00:56,360 --> 01:00:59,770 Tehát tudja, hogy mennyit kell frissítse a mutatót, 1273 01:00:59,770 --> 01:01:02,925 milyen címre frissíteni, hogy ilyen hogy te vagy a következő slot. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Tehát ez csak egy másik út Az írás array 0értéke 1 1276 01:01:09,400 --> 01:01:15,114 array 1 = 2, tömb konzol 2 = 3. 1277 01:01:15,114 --> 01:01:16,780 Ez csak egy újabb módja annak, hogy gondolni. 1278 01:01:16,780 --> 01:01:19,600 Azért, mert a folyamatos blokkok a memóriában, 1279 01:01:19,600 --> 01:01:21,830 akkor nézze meg őket sem A tömb notation-- 1280 01:01:21,830 --> 01:01:24,390 amit én személy szerint talál easier-- de talán 1281 01:01:24,390 --> 01:01:27,347 meg kell manipulálni szigorúan memória címeket. 1282 01:01:27,347 --> 01:01:28,930 És ez az az út, amit csinálni. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Kicsit több, mint egy klassz dolog, amit csinálni 1285 01:01:32,630 --> 01:01:35,213 szemben talán nem az, amit te ténylegesen végre fog hajtani. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> ÉN használ ez a 61. 1288 01:01:38,630 --> 01:01:41,710 Srácok valószínűleg nem kell aggódni, hogy túl sok. 1289 01:01:41,710 --> 01:01:43,693 De ha érdekel, 61. vesz a következő évben. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Mi vagyunk a célegyenesben srácok. 1292 01:01:46,560 --> 01:01:47,510 Tudom, hogy hosszú. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic Memory Allocation-- így tudjuk, hogy az egyik 1295 01:01:58,880 --> 01:02:01,790 dolog, amikor beszélgettünk közben az első rész együtt, 1296 01:02:01,790 --> 01:02:04,560 megnéztük a csere funkció, ahol volt 1297 01:02:04,560 --> 01:02:08,010 hatályán kívül esik a fő funkciója. 1298 01:02:08,010 --> 01:02:14,370 És mi is halad ezen értékek amelyek hatékonyan példányban. 1299 01:02:14,370 --> 01:02:20,570 >> És ha egyszer csere kész végrehajtó, csak maradt egy halom. 1300 01:02:20,570 --> 01:02:22,830 Ne feledje, hogy van egy verem keret csere. 1301 01:02:22,830 --> 01:02:26,070 A levelek és a értékeket hagyja vele. 1302 01:02:26,070 --> 01:02:27,050 És elmentek. 1303 01:02:27,050 --> 01:02:28,615 Mi nem tehetett semmit velük, és mi volt szomorú 1304 01:02:28,615 --> 01:02:29,989 mert nem tudjuk cserélni értékeinket. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> De C, mint említettem, te van egy csomó hatalmat memória. 1307 01:02:36,560 --> 01:02:43,310 Szóval, mit tehetünk, akkor osztja a dolgokat a kupac itt 1308 01:02:43,310 --> 01:02:46,830 hogy marad ott, amíg mondd nekik másképp. 1309 01:02:46,830 --> 01:02:48,280 >> Olyanok, mint a jó gyerekek. 1310 01:02:48,280 --> 01:02:49,150 Ők ott maradni. 1311 01:02:49,150 --> 01:02:50,270 Nem hagyják. 1312 01:02:50,270 --> 01:02:52,750 Ők maradnak ott, amíg te mint, OK, akkor elmegy. 1313 01:02:52,750 --> 01:02:55,920 >> Mivel a dolgok a stack, who-- ők, mint a rossz gyerekek. 1314 01:02:55,920 --> 01:02:59,160 Ők csak fuss el, ha azt szeretné, ott lenni, és majd ők elmentek. 1315 01:02:59,160 --> 01:03:00,160 Ha nem kap vissza. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Így a kupac ez-- fogunk beszélni malloc és free, amely 1318 01:03:07,187 --> 01:03:08,895 Biztos vagyok benne, a srácok hallott az előadás. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 És ez alapvetően egy módja hogy nagyon perzisztens adatokat. 1321 01:03:14,210 --> 01:03:18,920 Így tarthatjuk az adatokat körül, ameddig csak akar. 1322 01:03:18,920 --> 01:03:19,546 MHM. 1323 01:03:19,546 --> 01:03:21,475 >> KÖZÖNSÉG: Lehet itt a halom, és verem? 1324 01:03:21,475 --> 01:03:24,030 Vajon szeretnek hely, hogy a dolgokat? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Tehát ők alapvetően Csak-- ők 1326 01:03:26,630 --> 01:03:29,530 ahogy csak utalunk a memóriába. 1327 01:03:29,530 --> 01:03:37,300 Szóval kupac csak helyek, ahol memóriát dinamikusan, 1328 01:03:37,300 --> 01:03:40,960 mivel a stack kifejezés több verem keret 1329 01:03:40,960 --> 01:03:45,950 amelyek jobban a központi a funkciók, amelyek ténylegesen fut. 1330 01:03:45,950 --> 01:03:47,200 Nem igazán van ellenőrzés. 1331 01:03:47,200 --> 01:03:50,690 >> A nagy különbség, akkor ellenőrzés mint a halom, ha szeretné. 1332 01:03:50,690 --> 01:03:52,710 Kevesebb felett a halom. 1333 01:03:52,710 --> 01:03:55,030 A verem függ funkciók futnak, 1334 01:03:55,030 --> 01:03:58,320 és a sorrendet, amely szerint azok futni, és hogy a dolgok vissza. 1335 01:03:58,320 --> 01:04:01,290 Mivel a kupac, mint fogjuk látni, akkor azt mondják, 1336 01:04:01,290 --> 01:04:06,639 OK, szeretném ezt az értéket körül, amíg én mondom másképp. 1337 01:04:06,639 --> 01:04:08,180 Ön nem megszabadulni tőle. 1338 01:04:08,180 --> 01:04:09,300 Te nem szabad felülírni azt. 1339 01:04:09,300 --> 01:04:11,675 Fogsz tartani körül ameddig én mondom. 1340 01:04:11,675 --> 01:04:15,780 Te leszel a főnök a kupac, mivel a stack-- talán ha 1341 01:04:15,780 --> 01:04:18,080 mint csal az utat lehet a főnök. 1342 01:04:18,080 --> 01:04:19,340 De nem egészen. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 És ez tényleg csak emlék. 1345 01:04:22,070 --> 01:04:24,260 Ez csak különböző módokon Az utaló memória. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Cool. 1348 01:04:26,400 --> 01:04:28,630 Tehát azt, hogy hogyan irányítani a memória. 1349 01:04:28,630 --> 01:04:32,070 Ez a malloc, amely fogsz kapni a használata. 1350 01:04:32,070 --> 01:04:37,100 Szóval ez csak rövid memória kiosztás. 1351 01:04:37,100 --> 01:04:38,459 Ez minden. 1352 01:04:38,459 --> 01:04:41,250 Van egy csomó más jó funkciókat, amelyek alloc a végén, 1353 01:04:41,250 --> 01:04:42,750 és ők állnak a különböző dolgokat. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Tehát, ha szüksége van tároló, hogy szüksége , mint ameddig a jelenlegi funkció úgy 1356 01:04:49,050 --> 01:04:51,010 hogy ha a jelenlegi függvény fut el, 1357 01:04:51,010 --> 01:04:55,774 még mindig az adatokat, hogy kapott belőle, a használni kívánt malloc. 1358 01:04:55,774 --> 01:04:57,190 Ez majd inicializálni azt a kupac. 1359 01:04:57,190 --> 01:05:00,140 És mint mondtam, és folyamatosan mondván, akkor tartsa ott 1360 01:05:00,140 --> 01:05:03,050 amíg el nem mondja el másképp, ami a lényeg itt. 1361 01:05:03,050 --> 01:05:08,450 >> Tehát az egyik dolog, hogy észre, és ez általában nagyon fontos, 1362 01:05:08,450 --> 01:05:13,620 az, hogy ez sizeof szuper hasznos lehet használni 1363 01:05:13,620 --> 01:05:16,440 mert típusától függően A gép futsz, 1364 01:05:16,440 --> 01:05:22,470 lehet, hogy változó mennyiségű A memória tart. 1365 01:05:22,470 --> 01:05:26,870 Így mindig a használni kívánt méretétől így hogy te nem gép függő, 1366 01:05:26,870 --> 01:05:30,300 így a kód fut minden gépen. 1367 01:05:30,300 --> 01:05:32,360 >> És ez csak egy része az írás jó kódot. 1368 01:05:32,360 --> 01:05:34,610 Ha működik egy gépen, de nem olyan a mások, 1369 01:05:34,610 --> 01:05:36,440 mennyire hasznos volt a műsor? 1370 01:05:36,440 --> 01:05:38,420 Szóval mindig akar győződjön meg róla, és használja sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> KÖZÖNSÉG: Tehát az, hogy mint a mérete 10 hüvelyk [hallható]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Ez a méret 10 ints. 1373 01:05:43,698 --> 01:05:44,197 igen. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Így mérete ints visszatér mennyit vesz egy int. 1376 01:05:48,830 --> 01:05:51,530 Vagy mérete char, hogyan Mennyibe kerül egy char venni. 1377 01:05:51,530 --> 01:05:54,150 És akkor hány blokk Az, hogy mit akar? 1378 01:05:54,150 --> 01:05:57,590 >> Tehát ebben az esetben, hogy akarunk valamit tudjuk tárolni a 10 ints. 1379 01:05:57,590 --> 01:06:00,240 És ez működni fog, függetlenül A gép, ami jó. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Szóval, hány bájt hogy valóban így van? 1382 01:06:04,846 --> 01:06:06,190 Gyors matek. 1383 01:06:06,190 --> 01:06:06,787 >> KÖZÖNSÉG: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Pontosan. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Tehát még egy nagy dolog. 1388 01:06:12,030 --> 01:06:14,840 Pointer vagy malloc visszatérhet null. 1389 01:06:14,840 --> 01:06:17,910 >> Szóval megint, mindig ellenőrizze, nézze meg, hogy vissza null 1390 01:06:17,910 --> 01:06:19,620 mielőtt megpróbálja vele mit csinálni. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Ha megpróbálja, és feloldási ez mutató most, 1393 01:06:27,350 --> 01:06:29,720 ez csak fog segfault mert elment, és megpróbálta 1394 01:06:29,720 --> 01:06:31,730 megérinteni null, ha nem kellett volna. 1395 01:06:31,730 --> 01:06:34,000 Így mindig ellenőrizze a null. 1396 01:06:34,000 --> 01:06:36,075 Ismét, minden, amit tehetünk. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Lehet, hogy vissza null. 1399 01:06:39,720 --> 01:06:42,740 Ez lesz vissza null, ha te vagy ki a tér, vagy bármilyen okból 1400 01:06:42,740 --> 01:06:44,350 futott bele memóriát bug. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Ez néha csak vissza null. 1403 01:06:47,510 --> 01:06:48,990 Szóval csak azt kell ellenőrizni azt. 1404 01:06:48,990 --> 01:06:51,050 Hogy ez az egész dia mond. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 És akkor mi van itt van egy hívás, hogy szabad. 1407 01:06:55,240 --> 01:07:00,550 Tehát ugyanúgy, ha Fájl megnyitásához be kell zárni egy fájlt, 1408 01:07:00,550 --> 01:07:04,340 ha malloc memóriával, kell, akkor azt szabad memóriát. 1409 01:07:04,340 --> 01:07:06,530 És ti kap hogy nem igazán jó dolgok. 1410 01:07:06,530 --> 01:07:09,624 >> És van egy olyan program futtatásával hogy ha valaha is szivárog a memória. 1411 01:07:09,624 --> 01:07:11,040 De nem akar a szivárgás memória. 1412 01:07:11,040 --> 01:07:11,820 Ez nagyon rossz. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Csak rendetlenség a dolgokat. 1415 01:07:15,020 --> 01:07:20,939 >> Ez rossz, hogy nem csak mint programozás bölcs tervezés hatékonyságát. 1416 01:07:20,939 --> 01:07:22,980 De ez is csak ilyen A rossz a számítógép. 1417 01:07:22,980 --> 01:07:26,780 Tehát csak ingyenes dolgokat ha malloc őket. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Látjátok a szimmetriák itt. 1420 01:07:30,210 --> 01:07:31,180 Szuper egyszerű. 1421 01:07:31,180 --> 01:07:33,010 Csak szabad majd amit a mutató, 1422 01:07:33,010 --> 01:07:34,843 függetlenül a nevét a mutató, és azt 1423 01:07:34,843 --> 01:07:36,710 vigyázni fog felszabadítani az Ön számára. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Cool. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Aztán itt van ez. 1428 01:07:42,530 --> 01:07:44,770 Szóval csak lesz séta a program. 1429 01:07:44,770 --> 01:07:46,560 És akkor ti kész. 1430 01:07:46,560 --> 01:07:50,240 >> Tehát [hallható] csak fő. 1431 01:07:50,240 --> 01:07:51,690 Tehát néhány int * mutató. 1432 01:07:51,690 --> 01:07:53,648 Tehát van egy mutató hogy fog tartani ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 És hány ints fog ez tartani? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Csak egy. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Mérete egy int. 1439 01:08:01,100 --> 01:08:03,900 >> Megnézzük, hogy ha mutató null, mert 1440 01:08:03,900 --> 01:08:06,130 van, azt akarom mondani, nem csinál semmit. 1441 01:08:06,130 --> 01:08:07,065 Ez rossz. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Tehát nyomtasson ki néhány hibát ki memória, a legtöbb gyakran visszatér 1, 1444 01:08:12,130 --> 01:08:14,260 ahogy a srácok használnak. 1445 01:08:14,260 --> 01:08:17,390 >> És akkor mi van itt, mi dereference a mutatót. 1446 01:08:17,390 --> 01:08:22,840 Tehát ez azt jelenti, megyünk tárolni valamit a hely adott nekünk. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * mutató, vagy malloc, vissza a címe, ahol hatályon kívül helyezte ezt a 1449 01:08:30,830 --> 01:08:31,750 memória az Ön számára. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Tehát alapvetően így like-- ha 1452 01:08:34,800 --> 01:08:38,149 gondoljon egy csomó házak a környéken 1453 01:08:38,149 --> 01:08:40,640 hogy el kívánja helyezni A bútorok, malloc 1454 01:08:40,640 --> 01:08:43,850 mint rendben van, akkor kap menni, hogy a ház három. 1455 01:08:43,850 --> 01:08:45,800 És ez adja a címét ház három. 1456 01:08:45,800 --> 01:08:48,775 >> Szóval ez most, ez mutató üzletek egy címet, 1457 01:08:48,775 --> 01:08:50,149 tárolja a címet a ház. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * Ptr eszközök, OK, én vagyok a házamban. 1460 01:08:54,640 --> 01:08:55,326 Cool. 1461 01:08:55,326 --> 01:08:56,580 Azt kell, hogy néhány egész. 1462 01:08:56,580 --> 01:08:59,229 >> Szóval kér valaki hogy az Ön bútorokat most. 1463 01:08:59,229 --> 01:09:00,430 Szóval egy kis int. 1464 01:09:00,430 --> 01:09:05,100 És mondja a mutató ahol ez a mutató. 1465 01:09:05,100 --> 01:09:08,670 >> És akkor ez csak nyomtat ki, a beírt bárhol. 1466 01:09:08,670 --> 01:09:11,060 És ismét, a referencia. 1467 01:09:11,060 --> 01:09:15,649 Tehát ez olyan, mint te elment a kezelésére és láttad, mi van ott. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Cool? 1470 01:09:17,630 --> 01:09:20,174 >> És akkor persze szabad a mutató. 1471 01:09:20,174 --> 01:09:21,590 Ne felejtsd el, hogy szabad a mutatót. 1472 01:09:21,590 --> 01:09:22,933 Ne felejtsd el, hogy ellenőrizze a null. 1473 01:09:22,933 --> 01:09:24,349 Ne felejtsd el, hogy szabad a mutatót. 1474 01:09:24,349 --> 01:09:27,270 Van két dolog, amit emlékezni ezt, vagy azt, hogy meg kell emlékezni. 1475 01:09:27,270 --> 01:09:27,770 Igen. 1476 01:09:27,770 --> 01:09:31,590 KÖZÖNSÉG: [hallható] dolog mint, hogy a char * s. 1477 01:09:31,590 --> 01:09:33,760 Hogy lehet, hogy soha nem szabad azokat? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> KÖZÖNSÉG: Azok, mint a húrok? 1480 01:09:36,450 --> 01:09:39,160 Azt mondta húrok mint char * s, ugye? 1481 01:09:39,160 --> 01:09:41,200 Szóval, miért nem szabad húrok? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: Csak a ingyenes ha mallocing. 1483 01:09:43,204 --> 01:09:44,620 KÖZÖNSÉG: Ó, ha mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Tehát malloc ingyenes két dolog 1485 01:09:47,399 --> 01:09:49,000 hogy mindig van együtt. 1486 01:09:49,000 --> 01:09:51,630 f nyitott, f zárt, két dolog meg kellett volna együtt. 1487 01:09:51,630 --> 01:09:54,471 E két esetben ellenőrizze a null. 1488 01:09:54,471 --> 01:09:54,971 Igen. 1489 01:09:54,971 --> 01:09:57,130 >> KÖZÖNSÉG: Tehát szabad csak így valami más 1490 01:09:57,130 --> 01:09:59,690 kell tárolni után ott ez a program használta? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: Ez csak azt mondom, OK, én végeztem ezzel. 1492 01:10:01,946 --> 01:10:03,320 Nem kell tartani körül. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Ellenkező esetben a számítógép Csakúgy, mint megpróbál, és tartsa ott. 1495 01:10:08,190 --> 01:10:10,910 És akkor can't-- fut memóriába kérdések később. 1496 01:10:10,910 --> 01:10:13,660 Mindig szeretne felszabadítani, mert azt mondja a számítógép, OK, én vagyok 1497 01:10:13,660 --> 01:10:15,190 történik ezen a helyen a memóriát. 1498 01:10:15,190 --> 01:10:17,190 Akkor lehet, hogy vissza számomra, hogy a későbbiekben. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Cool? 1501 01:10:20,500 --> 01:10:21,320 Igen. 1502 01:10:21,320 --> 01:10:26,950 >> KÖZÖNSÉG: Tehát használtuk% d csak mert a duplája jön vissza, 1503 01:10:26,950 --> 01:10:28,330 vagy miért ez-- [hallható]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> KÖZÖNSÉG: Tudod használni% i? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Használhatja% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Minden last minute kérdése? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Rajta. 1511 01:10:38,985 --> 01:10:40,610 KÖZÖNSÉG: Csak egy gyors kérdés. 1512 01:10:40,610 --> 01:10:50,200 Így a ptr változót, that's-- mint az int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 ez csak azt mondja, hogy az mutat egy helyet memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Szeretnéd [hallható]? 1515 01:10:55,600 --> 01:10:58,050 KÖZÖNSÉG: --that az a méret of-- nem, ez rendben van. 1516 01:10:58,050 --> 01:11:01,292 De ez csak mutat egy helyet memória olyan, mint négy bájt. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Jobb. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Így malloc mérete int mond, OK, én megyek el futni, 1520 01:11:07,070 --> 01:11:08,780 további négy bájt memóriát az Ön számára. 1521 01:11:08,780 --> 01:11:10,700 Ha azt tapasztalja, hogy a négy bájt memóriát, akkor 1522 01:11:10,700 --> 01:11:14,030 adja vissza a címet hol kezdődik, 1523 01:11:14,030 --> 01:11:16,160 és ez az, ami a tárolt a mutató, vagy ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Jó. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Srácok, meg kevésbé zavaros, mint a legtöbb emberek, amikor beszélek mutató, 1528 01:11:21,700 --> 01:11:23,670 így érzem magam elég jó most. 1529 01:11:23,670 --> 01:11:24,520 >> Rendben van. 1530 01:11:24,520 --> 01:11:27,960 Mint mindig, nektek kell minden ütött meg pset2 évfolyamon már. 1531 01:11:27,960 --> 01:11:32,769 Tudom, hogy volt néhány rozoga dolgok, ha azt mondja, képlet nem érvényes 1532 01:11:32,769 --> 01:11:33,310 vagy valami. 1533 01:11:33,310 --> 01:11:36,166 Ha kapok, hogy az összes A fokozatok érvényesek az én oldalamon. 1534 01:11:36,166 --> 01:11:38,040 Így tudok küldeni screenshotok a fokozatok. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Csak hadd tudjam meg, illetve, ha hiányzik minden fokozat vagy valami 1537 01:11:41,760 --> 01:11:43,060 nem úgy tűnik, hogy van értelme. 1538 01:11:43,060 --> 01:11:43,720 Gyere hozzám. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Voltam szuper büszke rád srácok már, úgyhogy csak így tovább. 1541 01:11:48,830 --> 01:11:50,640 És jó pihenést a hét. 1542 01:11:50,640 --> 01:11:53,440 Biztos vagyok benne, fogok látni néhány Az Önnek munkaidőben. 1543 01:11:53,440 --> 01:11:55,414