1 00:00:00,000 --> 00:00:00,960 2 00:00:00,960 --> 00:00:03,360 >> [Zenelejátszó] 3 00:00:03,360 --> 00:00:11,050 4 00:00:11,050 --> 00:00:12,065 >> DAVIN: Rendben, srácok. 5 00:00:12,065 --> 00:00:13,642 6 00:00:13,642 --> 00:00:15,350 Tehát ez a felülvizsgálat az első teszt. 7 00:00:15,350 --> 00:00:17,751 Mindenki készen áll A teszt szerdán? 8 00:00:17,751 --> 00:00:18,292 ALLISON: Woo! 9 00:00:18,292 --> 00:00:18,743 Diák: Woo! 10 00:00:18,743 --> 00:00:19,242 DAVIN: Igen. 11 00:00:19,242 --> 00:00:19,920 ALLISON: Igen! 12 00:00:19,920 --> 00:00:20,920 DAVIN: Ez a fickó kész. 13 00:00:20,920 --> 00:00:22,200 Az a srác, két kézzel, szép. 14 00:00:22,200 --> 00:00:23,234 15 00:00:23,234 --> 00:00:25,900 Így kvíz felülvizsgálat ma, ez lesz hogy körülbelül egy óra és fél. 16 00:00:25,900 --> 00:00:27,940 Megyünk, hogy menjen át az összes jelentős fogalom, amit érdemes tudni a kvíz. 17 00:00:27,940 --> 00:00:31,434 Fogunk menjen át bizonyos kódolást kéz példák, amelyek minden teszt. 18 00:00:31,434 --> 00:00:34,350 Ha kérdésed van, nyugodtan hogy emelje fel a kezét, és minden 19 00:00:34,350 --> 00:00:34,945 mint azt. 20 00:00:34,945 --> 00:00:36,695 Nos, körülbelül logisztika A kvíz online. 21 00:00:36,695 --> 00:00:38,450 Így fogunk megosztani az embereket fel különböző helyiségek. 22 00:00:38,450 --> 00:00:39,491 Ez alapján a nevüket. 23 00:00:39,491 --> 00:00:43,630 Tehát, ha bármilyen kérdése van arról, hogy hol hogy menjen, vagy arról, hogy mi az anyag, mint a, 24 00:00:43,630 --> 00:00:46,810 A hivatalos szó, hogy mi folyik hogy a kvíz, ellenőrizze online. 25 00:00:46,810 --> 00:00:48,420 És ez minden naprakész. 26 00:00:48,420 --> 00:00:51,280 Tehát, ha nincsenek kérdések Kezdjük azzal, hogy fogunk kezdeni. 27 00:00:51,280 --> 00:00:52,790 28 00:00:52,790 --> 00:00:53,710 És itt Allison. 29 00:00:53,710 --> 00:00:56,060 30 00:00:56,060 --> 00:00:57,000 >> [Tapsol] 31 00:00:57,000 --> 00:00:59,300 >> ALLISON: OK, köszönöm, Rob. 32 00:00:59,300 --> 00:01:00,280 Értékelem. 33 00:01:00,280 --> 00:01:01,350 34 00:01:01,350 --> 00:01:03,050 Davin kellett volna lapozott ezt. 35 00:01:03,050 --> 00:01:07,240 Ez a nem kimerítő listája témák, mint mindig, ahogy Davin mondott. 36 00:01:07,240 --> 00:01:10,860 Tekintse meg a dokumentáció Online kvíz körülbelül nulla. 37 00:01:10,860 --> 00:01:13,680 De ez elég much-- ez a tananyag 38 00:01:13,680 --> 00:01:15,550 mindent, amit ment át eddig. 39 00:01:15,550 --> 00:01:18,290 Itt minden tisztességes játék, valamint minden más 40 00:01:18,290 --> 00:01:21,380 amely már említett előadás. 41 00:01:21,380 --> 00:01:25,070 >> My rész, itt, csak egy csomó felülvizsgálat. 42 00:01:25,070 --> 00:01:27,775 Van egy pár gyakorlatok hogy ti is dolgozni. 43 00:01:27,775 --> 00:01:30,650 De a legtöbb, valóban akar eljutni Davin e kód 44 00:01:30,650 --> 00:01:31,710 kézzel gyakorlatok. 45 00:01:31,710 --> 00:01:33,940 >> Így fogok repülni ezzel. 46 00:01:33,940 --> 00:01:36,330 Ha bármilyen kérdése van, megállítani. 47 00:01:36,330 --> 00:01:37,270 Emelje fel a kezét. 48 00:01:37,270 --> 00:01:39,250 Ígérem, talán találkozunk. 49 00:01:39,250 --> 00:01:41,042 Ha nem, csak hullám körül. 50 00:01:41,042 --> 00:01:42,250 Fogok beszélni gyorsan. 51 00:01:42,250 --> 00:01:43,950 Remélem, mindenki rendben van, hogy. 52 00:01:43,950 --> 00:01:48,020 >> OK, különleges szó, nyilvánvalóan Davin Elfelejtettem a flip keresztül ezeket a diákat. 53 00:01:48,020 --> 00:01:51,880 [Nevet] Te bajban, ember. 54 00:01:51,880 --> 00:01:55,770 Így tippek kvíz nulla, gyakorlat kódolási papíron. 55 00:01:55,770 --> 00:01:58,950 Srácok lesz, hogy bizonyos gyakorolni, hogy most Davin, 56 00:01:58,950 --> 00:02:00,655 így nem lesz teljesen egyedül. 57 00:02:00,655 --> 00:02:03,030 Azt hiszem, valóban megy át a két funkciót. 58 00:02:03,030 --> 00:02:04,500 Így lesz jól felkészült ott. 59 00:02:04,500 --> 00:02:05,958 >> Legyen tisztában az Önre probléma készletek. 60 00:02:05,958 --> 00:02:08,150 Voltak kérdések korábbi vetélkedők 61 00:02:08,150 --> 00:02:12,680 hogy meg fogja kérdezni, például, a kódot valamit nagyon hasonlít a Mario. 62 00:02:12,680 --> 00:02:15,060 Tehát, hogy nagyon jól ismeri a a problémát állítja, valamint 63 00:02:15,060 --> 00:02:17,827 mivel a kérdések azt kérjük, az elején az űrlap 64 00:02:17,827 --> 00:02:19,660 hogy töltse ki, majd szolgálni nagyon jól. 65 00:02:19,660 --> 00:02:20,940 66 00:02:20,940 --> 00:02:23,380 >> Van egy korábbi teszt alatt az idő rövidsége. 67 00:02:23,380 --> 00:02:25,430 Ezek a vetélkedők hosszú. 68 00:02:25,430 --> 00:02:26,850 Az idő megy nagyon gyorsan. 69 00:02:26,850 --> 00:02:30,480 És gyakran, akkor nem veszik észre, milyen gyorsan megy, amíg ténylegesen 70 00:02:30,480 --> 00:02:32,180 tedd magad alá ezek a korlátok. 71 00:02:32,180 --> 00:02:36,500 Tehát, ha csak faragni, tudod, 75 perc, vagy ma este vagy holnap 72 00:02:36,500 --> 00:02:41,020 hogy egy ilyen vetélkedők alatt hogy akkor sokkal jobb állapotban. 73 00:02:41,020 --> 00:02:43,060 >> És azt is, ami a referencia lemez. 74 00:02:43,060 --> 00:02:45,290 Ne feledje, hogy kap egy oldal elöl és hátul 75 00:02:45,290 --> 00:02:47,040 referenciaként a kvíz szerdán. 76 00:02:47,040 --> 00:02:49,074 Létrehozása, amely egy nagyszerű módja annak, hogy tanulni. 77 00:02:49,074 --> 00:02:51,990 Bármi, gondjai akadtak A felvenni kívánt ott. 78 00:02:51,990 --> 00:02:55,627 Bármi, ami a TF volt, tetszik, ez nagyon fontos. 79 00:02:55,627 --> 00:02:57,960 Tudnia kell ezt a talán dolgokat, akkor ott 80 00:02:57,960 --> 00:02:59,931 ha nem kell őket megjegyzett. 81 00:02:59,931 --> 00:03:02,680 Akkor is, ha tudom őket igazán nos, néha azonban az ott 82 00:03:02,680 --> 00:03:07,030 csak egyfajta kényelem az Ön számára, ami tudom, vetélkedők stresszt. 83 00:03:07,030 --> 00:03:09,260 Szóval minden kényelem kapsz segíthet. 84 00:03:09,260 --> 00:03:13,072 Rendben, is, kap alvás és enni, és szeretem a normális dolog 85 00:03:13,072 --> 00:03:14,280 hogy azt mondjuk nektek, a vetélkedők. 86 00:03:14,280 --> 00:03:16,320 87 00:03:16,320 --> 00:03:18,890 >> Így kezdés egyszerű, adattípusok és méretben. 88 00:03:18,890 --> 00:03:22,720 Mint mondtam, ez csak megy kell nekem dobott egy csomó dolog 89 00:03:22,720 --> 00:03:24,320 itt, amit tudnia kell. 90 00:03:24,320 --> 00:03:27,600 Tehát a karakter amelyek egy bájt, ints 91 00:03:27,600 --> 00:03:30,390 hogy négy bájt hosszú hosszú, amelyek nyolc byte. 92 00:03:30,390 --> 00:03:33,280 Alapvetően, csak te kíván tartani a nagyobb egészek. 93 00:03:33,280 --> 00:03:35,490 Úszók, amelyek négy, páros, amelyek a nyolc. 94 00:03:35,490 --> 00:03:38,150 Ismét, csak ad még helyet a úszók. 95 00:03:38,150 --> 00:03:41,290 Majd írja csillag, így minden mutató 32 bites gép, 96 00:03:41,290 --> 00:03:44,650 amely minden, amire szüksége van srácok tudni, négy bájt. 97 00:03:44,650 --> 00:03:46,542 >> Tehát az összes dolgot, amit kellene tudom, talán a dolgok 98 00:03:46,542 --> 00:03:48,250 azt szeretné, hogy a A referencia lap. 99 00:03:48,250 --> 00:03:50,350 100 00:03:50,350 --> 00:03:53,520 OK, bináris átalakítás bináris, átalakítás 101 00:03:53,520 --> 00:03:56,860 a hexadecimális, oda-vissza, mindent, amit tudnia kell. 102 00:03:56,860 --> 00:03:59,480 Tehát bináris decimális. 103 00:03:59,480 --> 00:04:03,309 Akartok egy gyors perc és megpróbálja kitalálni, mindegyik 104 00:04:03,309 --> 00:04:04,600 majd mondd el, mit ők? 105 00:04:04,600 --> 00:04:06,500 106 00:04:06,500 --> 00:04:10,240 >> Nekem is van cukorka a táskámban, így bárki aki válaszol kap édességet, mellesleg. 107 00:04:10,240 --> 00:04:13,560 108 00:04:13,560 --> 00:04:14,480 És van rengeteg. 109 00:04:14,480 --> 00:04:15,760 110 00:04:15,760 --> 00:04:16,870 Hadd fogd ezt. 111 00:04:16,870 --> 00:04:18,480 Fogom adni ezt a Gabe. 112 00:04:18,480 --> 00:04:21,829 Így viszont ki édességet aki kedves és együttműködő. 113 00:04:21,829 --> 00:04:23,490 >> OK, láttam egy kéz ott hátul. 114 00:04:23,490 --> 00:04:26,418 115 00:04:26,418 --> 00:04:28,370 >> Diák: Igen, az első 42. 116 00:04:28,370 --> 00:04:30,280 >> ALLISON: Igen, először az egyik 42, a helyes. 117 00:04:30,280 --> 00:04:31,163 118 00:04:31,163 --> 00:04:32,038 Diák: [hallható]. 119 00:04:32,038 --> 00:04:34,810 [Nevetés] 120 00:04:34,810 --> 00:04:37,030 ALLISON: Second egy, ott vissza sárga? 121 00:04:37,030 --> 00:04:38,910 STUDENT: 110.010. 122 00:04:38,910 --> 00:04:43,410 ALLISON: helyes, és ez utolsó, itt lent az alján? 123 00:04:43,410 --> 00:04:44,570 Továbbá, igen, tudod akar? 124 00:04:44,570 --> 00:04:45,550 Csak dobd ki cukorkát. 125 00:04:45,550 --> 00:04:46,483 Mit szólnál édességet mindenki számára? 126 00:04:46,483 --> 00:04:47,510 >> Diák: [hallható], amikor kész. 127 00:04:47,510 --> 00:04:48,051 >> ALLISON: Pszt. 128 00:04:48,051 --> 00:04:49,380 129 00:04:49,380 --> 00:04:50,910 És akkor az utolsó. 130 00:04:50,910 --> 00:04:52,000 Ki akar válaszolni? 131 00:04:52,000 --> 00:04:52,744 Ott van. 132 00:04:52,744 --> 00:04:54,480 >> STUDENT: 11100-. 133 00:04:54,480 --> 00:04:56,820 >> ALLISON: 11.100, nézd meg ezt. 134 00:04:56,820 --> 00:04:58,790 Gratulálok, remek munka, mindenki. 135 00:04:58,790 --> 00:05:03,370 OK, mindenki egyfajta érthető az eljárás ezt? 136 00:05:03,370 --> 00:05:08,700 Ön, megy a bináris decimális ahogy én inkább csinálni, ír ki 137 00:05:08,700 --> 00:05:09,920 hatáskörét 2. 138 00:05:09,920 --> 00:05:18,350 Szóval azt mondom, OK, 0 alkalommal 2-0, így ez 0, 1 alkalommal 2 az első, 139 00:05:18,350 --> 00:05:21,400 2-től megy így. 140 00:05:21,400 --> 00:05:25,790 Akar valaki engem kifejezetten megy keresztül egy példa a bináris? 141 00:05:25,790 --> 00:05:26,840 142 00:05:26,840 --> 00:05:28,140 OK, hűvös. 143 00:05:28,140 --> 00:05:30,390 >> Tizedes bináris nagyon hasonló. 144 00:05:30,390 --> 00:05:31,550 145 00:05:31,550 --> 00:05:33,630 Én inkább, hogy írjon ki a 2 hatványai. 146 00:05:33,630 --> 00:05:38,660 Kezdje az egyik, hogy a legnagyobb, de nem megy a tizedes 147 00:05:38,660 --> 00:05:39,710 amit keres. 148 00:05:39,710 --> 00:05:42,870 És akkor milyen a munka az utat hátra összeadjuk a dolgokat, ha szükséges. 149 00:05:42,870 --> 00:05:45,200 >> És akkor kívül, ez mint a normál mellett. 150 00:05:45,200 --> 00:05:51,110 Ha valaha is az esetben, ha Ön hozzátéve, két 1s, nyilvánvalóan lesz 2. 151 00:05:51,110 --> 00:05:56,875 2. bináris jelenleg 1 0, így meg kell folytatni a 1 a következő oszlopra. 152 00:05:56,875 --> 00:05:57,375 Cool. 153 00:05:57,375 --> 00:05:59,220 154 00:05:59,220 --> 00:06:03,240 >> Hexadecimális, ez lehet, hogy valami hogy valamivel kevésbé ismert. 155 00:06:03,240 --> 00:06:06,600 Szóval mint Rob épp azt mondta nekem előzetesen, a trükk erre 156 00:06:06,600 --> 00:06:10,210 az, hogy csak feldarabolja négy byte darabokat, OK? 157 00:06:10,210 --> 00:06:11,050 Bits, sajnálom. 158 00:06:11,050 --> 00:06:11,720 Látod? 159 00:06:11,720 --> 00:06:12,220 Köszönöm Rob. 160 00:06:12,220 --> 00:06:15,874 Ez az oka annak, hogy itt vagy. [NOISE] OK, így csak törni fel 161 00:06:15,874 --> 00:06:16,790 négy bit darabokban. 162 00:06:16,790 --> 00:06:21,570 Tehát bináris hexadecimális, nézzük az első 4, 163 00:06:21,570 --> 00:06:25,573 ami ha van négy 1-esek a sor, mit jelent, hogy szimbolizálja szám? 164 00:06:25,573 --> 00:06:26,540 >> STUDENT: F. 165 00:06:26,540 --> 00:06:32,751 >> ALLISON: Tehát ebben az esetben, mi 11111111 or-- igen? 166 00:06:32,751 --> 00:06:33,250 STUDENT: FF. 167 00:06:33,250 --> 00:06:34,600 ALLISON: Tökéletes, FF. 168 00:06:34,600 --> 00:06:36,900 Olyan nagy, édességet az Ön számára. 169 00:06:36,900 --> 00:06:41,100 Most, hogyan hexadecimális bináris, mi Csak gondolj bele milyen fordított. 170 00:06:41,100 --> 00:06:46,420 Minden szám vagy betű mi van a mi hexadecimális, 171 00:06:46,420 --> 00:06:53,930 csak átalakítani, hogy a négy bit [Nevet], hogy a négy bit konverzió. 172 00:06:53,930 --> 00:06:58,696 Így 5, ebben az esetben, ha mi 5 mi képviselő a négy bit? 173 00:06:58,696 --> 00:06:59,608 >> Diák: 010? 174 00:06:59,608 --> 00:07:00,520 Mm-hm. 175 00:07:00,520 --> 00:07:03,605 És akkor A, amely tulajdonképpen a 10, lenne? 176 00:07:03,605 --> 00:07:06,230 177 00:07:06,230 --> 00:07:08,040 1010. 178 00:07:08,040 --> 00:07:09,670 Tehát, hogy itt. 179 00:07:09,670 --> 00:07:13,990 Így átváltására hexadecimális és bináris valójában nem is olyan rossz. 180 00:07:13,990 --> 00:07:16,565 Ha megnézi azt a négy bit darabokat, lesz arany. 181 00:07:16,565 --> 00:07:18,330 182 00:07:18,330 --> 00:07:19,300 Everyone-- igen? 183 00:07:19,300 --> 00:07:21,903 >> ROB: Ez butaság, de én mindig emlékezni 184 00:07:21,903 --> 00:07:23,500 A, mert A feltételezett, hogy 10. 185 00:07:23,500 --> 00:07:26,230 És csak bináris 10 10, so-- 186 00:07:26,230 --> 00:07:27,310 >> ALLISON: Ah, ott megyünk. 187 00:07:27,310 --> 00:07:28,615 >> ROB: Hey. 188 00:07:28,615 --> 00:07:30,020 >> ALLISON: Hé, cukorka Rob. 189 00:07:30,020 --> 00:07:31,707 190 00:07:31,707 --> 00:07:33,290 Van nem csokoládé cucc ott. 191 00:07:33,290 --> 00:07:34,180 Így van néhány. 192 00:07:34,180 --> 00:07:35,790 193 00:07:35,790 --> 00:07:36,760 Így ASCII matek. 194 00:07:36,760 --> 00:07:38,206 195 00:07:38,206 --> 00:07:38,705 Viselkedj. 196 00:07:38,705 --> 00:07:40,630 197 00:07:40,630 --> 00:07:44,720 Szóval ASCII matek, ahogy ti Valószínűleg jól emlékszem 198 00:07:44,720 --> 00:07:48,480 p beállított 2 Visioneer és Caesar, te sok ez. 199 00:07:48,480 --> 00:07:49,610 200 00:07:49,610 --> 00:07:51,980 Ne feledje, hogy a karakterek alapvetően csak számok. 201 00:07:51,980 --> 00:07:54,780 Így nem tehetünk matek velük, mint mi a matek ints. 202 00:07:54,780 --> 00:07:58,090 >> Tehát csak egy kicsit egyszerű dolog itt. 203 00:07:58,090 --> 00:08:00,940 Van néhány, ami az A inicializálja 65. 204 00:08:00,940 --> 00:08:07,440 És B egyenlő ASCII értéke A plusz 1, char C egyenlő D mínusz 1, 205 00:08:07,440 --> 00:08:09,060 és faszén D egyenlő 68. 206 00:08:09,060 --> 00:08:13,130 Akkor fogunk print mindegyiket, mint látjuk itt. 207 00:08:13,130 --> 00:08:15,650 És valaki meg tudja mondani nekem mi ez nyomtassa ki? 208 00:08:15,650 --> 00:08:17,335 209 00:08:17,335 --> 00:08:18,210 Diák: [hallható]. 210 00:08:18,210 --> 00:08:20,540 ALLISON: Pontosan, így egy dolog, hogy észre is 211 00:08:20,540 --> 00:08:22,900 hogy nyomtat ki karakterek minden alkalommal itt. 212 00:08:22,900 --> 00:08:28,290 Mi kijelölő noha az A és a B a ints amikor kijelentette fölé. 213 00:08:28,290 --> 00:08:32,870 Mi nyomtatni őket karakter A százalékos C és a printf nyilatkozat, 214 00:08:32,870 --> 00:08:34,610 így azok minden nyomtatni, mint karaktert. 215 00:08:34,610 --> 00:08:40,730 És persze, az ASCII érték 65 akaratát kinyomtatni A. ASCII értéke A plusz 1 216 00:08:40,730 --> 00:08:43,669 lenne 66 között, ami büszke arra, hogy B. Tehát valójában, mi 217 00:08:43,669 --> 00:08:49,107 kap A B C D Mindenki jól van? 218 00:08:49,107 --> 00:08:49,690 Van még kérdése? 219 00:08:49,690 --> 00:08:50,721 220 00:08:50,721 --> 00:08:51,220 Félelmetes. 221 00:08:51,220 --> 00:08:52,500 222 00:08:52,500 --> 00:08:53,455 >> OK, hatály. 223 00:08:53,455 --> 00:08:55,090 224 00:08:55,090 --> 00:08:59,950 Tehát hatály nyilvánvalóan nagyon Fontos dolog, hogy megértsük, itt. 225 00:08:59,950 --> 00:09:03,250 Sok van, ha Van összeállítása hibák, 226 00:09:03,250 --> 00:09:06,085 és azt mondja, nem kell hozzáférést néhány változó, 227 00:09:06,085 --> 00:09:08,540 ez valószínűleg azért, mert határozta meg egy hurok 228 00:09:08,540 --> 00:09:12,210 majd megpróbált hozzáférni belőle, vagy fordítva. 229 00:09:12,210 --> 00:09:16,410 >> Így körbe a fő, ez csak határozza meg, 230 00:09:16,410 --> 00:09:20,800 mondjuk a változó létezik, ahol lehet változtatni, ahol tudunk hozzáférni. 231 00:09:20,800 --> 00:09:24,550 Ez csak egyfajta tartja azokat Az egyetlen hely, ahol lehetőséged van 232 00:09:24,550 --> 00:09:26,060 hogy ezt a változót. 233 00:09:26,060 --> 00:09:30,080 >> Így a két körök, hogy beszélünk órákon globális és lokális. 234 00:09:30,080 --> 00:09:35,080 Így a globális változók beszélünk ha meghatározzák azokat a fő felett. 235 00:09:35,080 --> 00:09:38,390 Ez azt jelenti, hogy a teljes program hozzáférést, 236 00:09:38,390 --> 00:09:42,090 és létezik, ameddig a program fut, OK? 237 00:09:42,090 --> 00:09:45,100 Helyi azt jelenti, hogy inkább korlátozódik a régióban. 238 00:09:45,100 --> 00:09:50,520 Tehát, ha van speciális funkciók mint csere, mindig beszélünk. 239 00:09:50,520 --> 00:09:54,380 Mindig beszélünk csere A és B. A és B léteznek ezt a funkciót. 240 00:09:54,380 --> 00:09:55,690 Nem létezik sehol máshol. 241 00:09:55,690 --> 00:09:56,860 242 00:09:56,860 --> 00:10:00,610 >> Valamint, ha van, ha nyilatkozatok vagy hurkok. 243 00:10:00,610 --> 00:10:04,670 Amikor mi, például a a for ciklus van int I értéke 0. 244 00:10:04,670 --> 00:10:06,630 Van néhány feltétel, és frissíti azt. 245 00:10:06,630 --> 00:10:10,270 Én csak azért létezik, a nadrágtartó az, hogy hurok. 246 00:10:10,270 --> 00:10:13,270 Ha megpróbálja elérni máshol, a fordító azt kiabálni veled. 247 00:10:13,270 --> 00:10:14,560 Olyan, mintha, mit akar csinálni? 248 00:10:14,560 --> 00:10:15,400 Ez nem létezik. 249 00:10:15,400 --> 00:10:16,644 250 00:10:16,644 --> 00:10:18,435 Szóval ez a két különböző hatály. 251 00:10:18,435 --> 00:10:19,486 252 00:10:19,486 --> 00:10:20,860 Van ennek értelme mindenki? 253 00:10:20,860 --> 00:10:23,870 254 00:10:23,870 --> 00:10:27,890 >> Így például itt, ez csak néhány egyszerű program. 255 00:10:27,890 --> 00:10:29,120 256 00:10:29,120 --> 00:10:32,890 Mit gondolsz, srácok fog történni minden ponton 257 00:10:32,890 --> 00:10:34,210 hogy próbáljon nyomtatni? 258 00:10:34,210 --> 00:10:40,150 Tehát ez itt, mi fog történni? 259 00:10:40,150 --> 00:10:43,047 260 00:10:43,047 --> 00:10:44,255 DIÁK: Ez nyomtatni három. 261 00:10:44,255 --> 00:10:44,880 ALLISON: Így van. 262 00:10:44,880 --> 00:10:45,930 Nem lesz nyomtatni három. 263 00:10:45,930 --> 00:10:47,272 Mi van itt? 264 00:10:47,272 --> 00:10:48,230 DIÁK: Ez nem fog működni. 265 00:10:48,230 --> 00:10:48,910 ALLISON: Ez nem fog működni. 266 00:10:48,910 --> 00:10:50,290 Te ki a hatálya alól, igaz? 267 00:10:50,290 --> 00:10:55,160 A helyi változó nem létezik kívül ezek nadrágtartó, rendben? 268 00:10:55,160 --> 00:10:56,462 És akkor mi van itt? 269 00:10:56,462 --> 00:10:57,850 >> Diák: [hallható]. 270 00:10:57,850 --> 00:10:59,210 >> ALLISON: Mi? 271 00:10:59,210 --> 00:10:59,900 Rob, menj. 272 00:10:59,900 --> 00:11:00,854 >> ROB: Én csak azt mondta. 273 00:11:00,854 --> 00:11:04,200 A globális változók legyen globális aláhúzás változó. 274 00:11:04,200 --> 00:11:05,660 >> ALLISON: Ah, igen, sajnálom. 275 00:11:05,660 --> 00:11:06,200 Köszönöm, Rob. 276 00:11:06,200 --> 00:11:07,480 277 00:11:07,480 --> 00:11:10,170 Rob, mint a rezidens fordító. 278 00:11:10,170 --> 00:11:12,684 Majd csak kiabálni nekünk, amikor szüksége van rá. [Nevet] Igen, 279 00:11:12,684 --> 00:11:14,225 legyen globális aláhúzás változó. 280 00:11:14,225 --> 00:11:15,760 281 00:11:15,760 --> 00:11:18,430 Tehát feltételezve, hogy ez a volt globális aláhúzás 282 00:11:18,430 --> 00:11:20,260 változó, mi fog történni itt? 283 00:11:20,260 --> 00:11:21,260 Diák: Erről fog működni. 284 00:11:21,260 --> 00:11:22,093 ALLISON: Ez lesz a munka. 285 00:11:22,093 --> 00:11:24,655 Így fog nyomtatni, így csak egy nagyon egyszerű példát. 286 00:11:24,655 --> 00:11:27,650 287 00:11:27,650 --> 00:11:29,870 OK, prototípusok. 288 00:11:29,870 --> 00:11:33,680 Tehát nyilvánvaló, hogy valóban hangsúlyozzák a srácok 289 00:11:33,680 --> 00:11:36,460 hogy működik, ha az értelme a programokban. 290 00:11:36,460 --> 00:11:38,460 De persze, ha hogy a saját funkcióját, 291 00:11:38,460 --> 00:11:40,930 általában akkor határozza meg, ezek után a fő. 292 00:11:40,930 --> 00:11:42,430 És megpróbálom felhívni őket fő. 293 00:11:42,430 --> 00:11:46,030 És ha nem használ a prototípus, A fordító kiabálni veled. 294 00:11:46,030 --> 00:11:49,590 >> Prototype alapvetően csak mondja a fordító 295 00:11:49,590 --> 00:11:52,400 hogy én ezt a funkciót az alábbi fő. 296 00:11:52,400 --> 00:11:54,970 Fogom hívni mielőtt meghatározni. 297 00:11:54,970 --> 00:11:56,360 Csak tarts ki. 298 00:11:56,360 --> 00:12:00,660 Megígérem, hogy ez határozza meg, és majd mindent, amire szüksége van. 299 00:12:00,660 --> 00:12:05,900 >> Tehát az, ahogy mi is csak a visszatérés típusát, a függvény nevét, a bemenet 300 00:12:05,900 --> 00:12:06,400 lista. 301 00:12:06,400 --> 00:12:09,760 Ez alapvetően az első sorban a függvény nyilatkozat. 302 00:12:09,760 --> 00:12:11,510 Ez tényleg minden van. 303 00:12:11,510 --> 00:12:14,440 De ez csak egy általános fajta formátumot. 304 00:12:14,440 --> 00:12:17,220 >> Így a példánkban itt, amely srácok kellene 305 00:12:17,220 --> 00:12:19,700 láttam szakaszban egy bizonyos ponton, mi 306 00:12:19,700 --> 00:12:23,220 néhány kocka int, hogy némi int bemenet. 307 00:12:23,220 --> 00:12:25,870 És mi van a fő funkció, amely felszólítja kocka. 308 00:12:25,870 --> 00:12:28,670 És kocka meghatározása után a tényt. 309 00:12:28,670 --> 00:12:34,450 >> Tehát, ha nem is int kocka bemenet tetején, amikor az úgynevezett kocka 310 00:12:34,450 --> 00:12:36,620 belül a fő, a fordítóprogram akkor dühös ránk. 311 00:12:36,620 --> 00:12:38,890 Olyan, mintha mi beszél? 312 00:12:38,890 --> 00:12:40,360 Kocka nem létezik. 313 00:12:40,360 --> 00:12:41,910 Nem tudom, mit kér. 314 00:12:41,910 --> 00:12:43,490 És én csak úgy megáll. 315 00:12:43,490 --> 00:12:47,330 >> De mivel mi a prototípus A felső, azt mondtam, 316 00:12:47,330 --> 00:12:49,800 tudod, ha látod kocka, ne aggódj. 317 00:12:49,800 --> 00:12:51,990 Ígérem, ez határozza meg később. 318 00:12:51,990 --> 00:12:53,750 És ez lesz hadd tegye, amit akar. 319 00:12:53,750 --> 00:12:57,750 Tehát, ha valaha is egy függvény hogy a bejelentett után hívják 320 00:12:57,750 --> 00:13:00,570 az első alkalommal, meg kell hogy azt prototípusa a tetején. 321 00:13:00,570 --> 00:13:01,640 322 00:13:01,640 --> 00:13:02,720 >> Igen? 323 00:13:02,720 --> 00:13:04,412 >> ROB: Ez a négyzeten, nem kocka. 324 00:13:04,412 --> 00:13:05,855 >> ALLISON: Istenem. 325 00:13:05,855 --> 00:13:09,435 Nem have-- Gabe, azt hittem, voltál a lektor. 326 00:13:09,435 --> 00:13:10,740 327 00:13:10,740 --> 00:13:12,760 OK srácok, medve velem, itt. 328 00:13:12,760 --> 00:13:14,440 Remélem, mindenki kezd az ötlet. 329 00:13:14,440 --> 00:13:15,560 330 00:13:15,560 --> 00:13:20,380 OK, ez van lett faragva, nem CubeD. 331 00:13:20,380 --> 00:13:22,700 De az ötlet ugyanaz marad. 332 00:13:22,700 --> 00:13:23,702 333 00:13:23,702 --> 00:13:26,660 Minden olyan funkció, hogy mi hívás után az a tény, kell egy prototípus. 334 00:13:26,660 --> 00:13:27,730 335 00:13:27,730 --> 00:13:28,970 Mindenki jó ez? 336 00:13:28,970 --> 00:13:30,730 337 00:13:30,730 --> 00:13:32,310 Minden más elírás? 338 00:13:32,310 --> 00:13:32,810 OK. 339 00:13:32,810 --> 00:13:34,730 340 00:13:34,730 --> 00:13:36,230 Minden elírás itt mielőtt elkezdjük, Rob? 341 00:13:36,230 --> 00:13:37,356 342 00:13:37,356 --> 00:13:42,380 [Nevet] OK, így struktúrákat. 343 00:13:42,380 --> 00:13:45,040 Alapvetően, struktúrákat lehetővé teszi hogy saját adattípus. 344 00:13:45,040 --> 00:13:49,264 Annyi, mint egy int vagy char vagy úszó, ez csak egy másik típusú. 345 00:13:49,264 --> 00:13:51,680 Szeretek úgy gondolni rá, mint, például, létre saját adattípus. 346 00:13:51,680 --> 00:13:53,740 Így lehetővé teszi, hogy ezt tegyük. 347 00:13:53,740 --> 00:13:56,160 És ez tart a különböző típusú adatok. 348 00:13:56,160 --> 00:14:01,030 >> Tehát, ha eszébe jut, hogy egy tömb, mi csak tartani a dolgokat a hasonló típusú. 349 00:14:01,030 --> 00:14:04,660 Struktúrák lehetővé teszi számunkra, hogy tartsa több dolgok különböző. 350 00:14:04,660 --> 00:14:08,944 Tehát ebben az esetben itt, mi Van egy struct Student nevű, 351 00:14:08,944 --> 00:14:10,650 megnevezett itt alul. 352 00:14:10,650 --> 00:14:13,540 És van néhány int id és néhány karakterlánc nevét. 353 00:14:13,540 --> 00:14:14,620 354 00:14:14,620 --> 00:14:17,300 Szóval ez is csak egy adat típusát. 355 00:14:17,300 --> 00:14:18,950 Most már van egy adat típusú úgynevezett Student. 356 00:14:18,950 --> 00:14:20,330 357 00:14:20,330 --> 00:14:24,750 >> Így, mivel tudunk gondolni ez csak egy újabb adattípus, 358 00:14:24,750 --> 00:14:27,760 kijelenthetjük változókat ahogy bármely más. 359 00:14:27,760 --> 00:14:32,680 Tehát ahelyett, hogy csak úgy, mint egy int diák, csak van egy diák, 360 00:14:32,680 --> 00:14:33,390 diák 1. 361 00:14:33,390 --> 00:14:33,560 Ó, nézd. 362 00:14:33,560 --> 00:14:34,059 Ez Rob. 363 00:14:34,059 --> 00:14:35,750 364 00:14:35,750 --> 00:14:38,880 Tehát itt vagyunk nyilvánításáról a struct, vagy a változó 365 00:14:38,880 --> 00:14:40,940 az úgynevezett diák 1. típusú diák. 366 00:14:40,940 --> 00:14:45,370 Szóval ez megy, hogy id és neve társul hozzá. 367 00:14:45,370 --> 00:14:48,430 >> És ahogy mi hozzá ezekhez elemei a struktúra 368 00:14:48,430 --> 00:14:50,100 van az a pont operátor, itt. 369 00:14:50,100 --> 00:14:51,910 370 00:14:51,910 --> 00:14:54,660 Így ebben az esetben, mi kijelentette, néhány diák 1. 371 00:14:54,660 --> 00:14:57,080 Mi rendelt az azonosító értékét 1. 372 00:14:57,080 --> 00:14:58,840 És mi rendelt a nevét, hogy Rob. 373 00:14:58,840 --> 00:15:03,010 374 00:15:03,010 --> 00:15:04,960 OK, mindenki jó ez? 375 00:15:04,960 --> 00:15:06,787 Használja csak like-- igen? 376 00:15:06,787 --> 00:15:09,530 >> Diák: Igen, amikor typedef-- van szükségünk kezelhető typedef? 377 00:15:09,530 --> 00:15:13,190 >> ALLISON: Szóval csak typedef mondja hogy-- Rob, te 378 00:15:13,190 --> 00:15:16,990 korrigálni tudja nekem ezt, ha én vagyok wrong-- de valójában csak typedef nyilvánításáról 379 00:15:16,990 --> 00:15:19,330 azt a típust, hogy tudod használni, ugye? 380 00:15:19,330 --> 00:15:22,550 >> ROB: Igen, alapvetően, így ez csak létre 381 00:15:22,550 --> 00:15:24,215 egy alias, vagy becenevet típus. 382 00:15:24,215 --> 00:15:25,590 Így írja, hogy a [hallható]. 383 00:15:25,590 --> 00:15:27,140 384 00:15:27,140 --> 00:15:30,350 Tehát [hallható] létezik, és most már csak meg 385 00:15:30,350 --> 00:15:32,090 [Hallható] eszközök pontosan ugyanaz a dolog. 386 00:15:32,090 --> 00:15:37,210 És így van, mi gépelt, azt hiszem, néhány struct típus 2 [hallható]. 387 00:15:37,210 --> 00:15:40,680 Szóval ez csak egy becenév egy adott típusát. 388 00:15:40,680 --> 00:15:44,344 >> Diák: String [hallható] könyvtár beírt fel, mint char csillag. 389 00:15:44,344 --> 00:15:51,380 390 00:15:51,380 --> 00:15:54,390 >> ALLISON: A mi szempontunkból itt, ha nyilvánító struct, 391 00:15:54,390 --> 00:15:55,600 csak nem typedef struct. 392 00:15:55,600 --> 00:15:57,680 393 00:15:57,680 --> 00:16:04,490 OK, így előzetesen, ez csak egy normális változó itt. 394 00:16:04,490 --> 00:16:06,390 Mi hozzáférhet egy ponttal. 395 00:16:06,390 --> 00:16:08,580 ha van egy mutatót a struct, tudjuk valójában 396 00:16:08,580 --> 00:16:10,700 használjon egy nyíl, ami elég jó. 397 00:16:10,700 --> 00:16:17,130 >> Tehát ebben az esetben van egy mutatót egy diák, amely 1-típusú diák. 398 00:16:17,130 --> 00:16:19,020 Ne feledje, hogy az Ön mutató építés, 399 00:16:19,020 --> 00:16:23,710 azt szeretné, amit írja a mutatót mutat, hogy az elején. 400 00:16:23,710 --> 00:16:25,960 Tehát van néhány diák 1, itt. 401 00:16:25,960 --> 00:16:27,370 402 00:16:27,370 --> 00:16:31,050 És mivel ez a diák 1. most egy hegyes, 403 00:16:31,050 --> 00:16:36,520 akkor valóban megy hallgató 1 arrow név pont helyett, mert ez egy mutató, 404 00:16:36,520 --> 00:16:37,640 és rendeljen Rob. 405 00:16:37,640 --> 00:16:40,720 És most, ha azt akarjuk, hogy Rob változik a Davin, 406 00:16:40,720 --> 00:16:43,570 ez csak megmutatja másképp kell csinálni. 407 00:16:43,570 --> 00:16:48,850 >> Így ahelyett, hogy a nyíl, akkor lehet also-- fogom befejezni ezt majd 408 00:16:48,850 --> 00:16:52,860 hogy ezt meg tudná question-- is csinál referencia diák 1. 409 00:16:52,860 --> 00:16:56,170 Ezt mondja szeret menni bármi van diák 1, amely 410 00:16:56,170 --> 00:16:58,840 lenne a hallgatói struktúra. 411 00:16:58,840 --> 00:17:03,910 Kapcsolódás az egy pont és az elem amit akar, és akkor újra ki kell jelölni. 412 00:17:03,910 --> 00:17:05,326 Volt egy kérdés. 413 00:17:05,326 --> 00:17:08,034 Diák: Igen, tehát hogy hogy van használni [nem hallható], ha éppen 414 00:17:08,034 --> 00:17:10,367 Ennek hallgató csillag nélkül [Hallható] diák? 415 00:17:10,367 --> 00:17:12,200 ALLISON: Mivel ez a teremt a mutató. 416 00:17:12,200 --> 00:17:13,616 ROB: fogunk beszélni róla. 417 00:17:13,616 --> 00:17:16,119 ALLISON: fogunk beszélni erről később a felülvizsgálat. 418 00:17:16,119 --> 00:17:17,660 Szóval, csak kapaszkodni a gondolatot. 419 00:17:17,660 --> 00:17:20,560 Ha még mindig zavar a Végül jön beszéljen egy közülünk. 420 00:17:20,560 --> 00:17:23,380 >> Tehát ezek nem pontosan ugyanaz a dolog. 421 00:17:23,380 --> 00:17:25,579 Mi csak mutatja meg két különböző módon kell csinálni. 422 00:17:25,579 --> 00:17:29,470 Diák 1 most egy mutató, így el tudja érni a Név elem 423 00:17:29,470 --> 00:17:30,960 a struct egy nyíllal. 424 00:17:30,960 --> 00:17:36,440 Vagy akkor a mutató hivatkozás feloldási, és akkor hozzáférhet a szokásos módon. 425 00:17:36,440 --> 00:17:38,430 Van ennek értelme mindenki? 426 00:17:38,430 --> 00:17:39,480 427 00:17:39,480 --> 00:17:43,890 Ha az egész mutató dolgok egy kicsit zavaros, Gabe fog beszélni, hogy 428 00:17:43,890 --> 00:17:45,740 és akkor talán ez sokkal jobban fogja érteni. 429 00:17:45,740 --> 00:17:46,240 Igen? 430 00:17:46,240 --> 00:17:48,387 >> Diák: Igen, így hogyan ez eltér a? 431 00:17:48,387 --> 00:17:49,470 ALLISON: az előzőt? 432 00:17:49,470 --> 00:17:52,330 Így a diák 1 e esetben nem a mutató. 433 00:17:52,330 --> 00:17:54,380 Ez csak a tényleges struktúra. 434 00:17:54,380 --> 00:17:55,400 >> STUDENT: OK. 435 00:17:55,400 --> 00:17:57,645 >> ALLISON: mivel ez egy egy mutató a struct. 436 00:17:57,645 --> 00:17:58,910 437 00:17:58,910 --> 00:18:02,060 >> Diák: OK, de nem ez a fajta végén ugyanazokon a [hallható]. 438 00:18:02,060 --> 00:18:03,310 >> ALLISON: Hatékonyan működik ugyanaz. 439 00:18:03,310 --> 00:18:04,560 A szintaxis csak más. 440 00:18:04,560 --> 00:18:05,185 STUDENT: OK. 441 00:18:05,185 --> 00:18:07,600 >> ALLISON: Igen, vannak hatékonyan ugyanaz. 442 00:18:07,600 --> 00:18:11,321 Ez csak attól a környezettől, érdemes egyik a másik fölött. 443 00:18:11,321 --> 00:18:11,820 Igen? 444 00:18:11,820 --> 00:18:13,956 >> DIÁK: Ha nem hivatkozás a 1-- 445 00:18:13,956 --> 00:18:14,580 ALLISON: Mm-hm? 446 00:18:14,580 --> 00:18:16,880 DIÁK: Miért van a zárójelben? 447 00:18:16,880 --> 00:18:19,575 ALLISON: Mivel diák 1 a mutató. 448 00:18:19,575 --> 00:18:22,200 Így meg kell, hogy győződjön meg róla, csak dereferencing a mutató. 449 00:18:22,200 --> 00:18:23,380 >> STUDENT: OK. 450 00:18:23,380 --> 00:18:26,700 >> ALLISON: Tehát ebben az esetben itt, a zárójelek körül 451 00:18:26,700 --> 00:18:29,875 azt jelenti, te dereferencing diák 1. 452 00:18:29,875 --> 00:18:35,390 Szóval megy, ahol a diákok 1. pont, ami a struktúra. 453 00:18:35,390 --> 00:18:38,010 Így most már tudod gondolja róla, mint hogy struct, 454 00:18:38,010 --> 00:18:39,785 így tudjuk használni a normális működés pontot. 455 00:18:39,785 --> 00:18:42,752 456 00:18:42,752 --> 00:18:43,585 Más kérdés? 457 00:18:43,585 --> 00:18:45,840 458 00:18:45,840 --> 00:18:48,120 Cool, félelmetes. 459 00:18:48,120 --> 00:18:51,359 >> Szóval az utolsó dolog, azt hiszem, az utolsó slide, woo! 460 00:18:51,359 --> 00:18:52,775 OK, tehát lebegőpontos pontatlanság. 461 00:18:52,775 --> 00:18:54,090 462 00:18:54,090 --> 00:18:56,820 Beszéltünk röviden ez alatt előadás. 463 00:18:56,820 --> 00:19:00,030 Alapvetően, mi végtelen sok valós számok. 464 00:19:00,030 --> 00:19:02,237 És ha a srácok szerelem matek, van 465 00:19:02,237 --> 00:19:03,570 mindenféle jó dolgok velünk. 466 00:19:03,570 --> 00:19:05,010 467 00:19:05,010 --> 00:19:07,190 >> De vannak végtelen sok valós számok. 468 00:19:07,190 --> 00:19:09,850 De ők csak véges sok bitet, hogy van. 469 00:19:09,850 --> 00:19:13,240 Szóval mindig lesz van pontatlanság, ez minden. 470 00:19:13,240 --> 00:19:16,269 És ez az, hogy csak ilyen mint valami, amit tudnia kell. 471 00:19:16,269 --> 00:19:19,060 Olyan, mint a mi lehet kérdezni, hogy miért nem lebegőpontos pontatlanság létezik? 472 00:19:19,060 --> 00:19:20,004 473 00:19:20,004 --> 00:19:21,420 Szóval, csak valami, amit tudnia kell. 474 00:19:21,420 --> 00:19:23,770 És, hogy én fordult át a mutatók. 475 00:19:23,770 --> 00:19:27,720 476 00:19:27,720 --> 00:19:28,520 >> Muci: Helló, srácok. 477 00:19:28,520 --> 00:19:29,616 A nevem Muci. 478 00:19:29,616 --> 00:19:30,990 Fogok beszélni mutatók. 479 00:19:30,990 --> 00:19:33,247 480 00:19:33,247 --> 00:19:35,830 Igen, így mutatók valójában kedvencem ez a tanfolyam. 481 00:19:35,830 --> 00:19:39,740 Szóval csak azért, hogy világos, hogy mi Allison beszélt itt, így az ok 482 00:19:39,740 --> 00:19:43,810 why-- az egyetlen különbség, A nagy különbség volt az út 483 00:19:43,810 --> 00:19:44,760 kijelentjük dolgokat. 484 00:19:44,760 --> 00:19:47,560 Így hallgató csillag: ez a egy mutató egy diák. 485 00:19:47,560 --> 00:19:52,960 Mivel a csúszda előtt, diák az tényleges struct, mint a tényleges hallgatói, 486 00:19:52,960 --> 00:19:54,400 tartalmaz semmilyen olyan dolog. 487 00:19:54,400 --> 00:19:57,050 >> És hogy miért is akar to-- igen, Davin? 488 00:19:57,050 --> 00:19:58,630 >> DAVIN: Mit jelent a nyíl? 489 00:19:58,630 --> 00:20:04,240 >> Muci: A nyíl eszköz pontosan ugyanaz, mint ezt. 490 00:20:04,240 --> 00:20:06,150 Szóval nem igazán kell a nyíl. 491 00:20:06,150 --> 00:20:11,060 Mint, ha csak a program C, akkor csak ezt használja. 492 00:20:11,060 --> 00:20:12,850 Sajnálom, én nem, hogy mi az. 493 00:20:12,850 --> 00:20:14,920 Tudod csak használja ezt a szintaxist. 494 00:20:14,920 --> 00:20:17,430 >> De néhány ember, amikor azok tervezése C, 495 00:20:17,430 --> 00:20:19,870 úgy gondoltam, hogy az emberek használta ezt a szintaxis annyira, 496 00:20:19,870 --> 00:20:23,970 hogy tetszeni fog csak jön szintaktikai struktúrát is. 497 00:20:23,970 --> 00:20:26,820 És ez került sor a formájában ez a nyíl. 498 00:20:26,820 --> 00:20:29,210 És ez nagyon jó, mert jelképezi valami 499 00:20:29,210 --> 00:20:33,670 mint mi valójában a következő A nyílra, ez a mutató, 500 00:20:33,670 --> 00:20:35,300 felé némi helyet a memóriában. 501 00:20:35,300 --> 00:20:40,410 És amikor odaérünk, azt akarjuk, hogy látod a nevét, hogy a hallgató, 502 00:20:40,410 --> 00:20:42,150 ha van értelme. 503 00:20:42,150 --> 00:20:43,000 OK? 504 00:20:43,000 --> 00:20:44,290 >> Tehát ez pontosan ugyanaz. 505 00:20:44,290 --> 00:20:46,310 Ez pontosan ugyanaz, mint ez. 506 00:20:46,310 --> 00:20:48,130 Kapnak össze pontosan ugyanaz, OK? 507 00:20:48,130 --> 00:20:50,100 508 00:20:50,100 --> 00:20:55,580 És az ok, amiért itt malloc valami, azért van, mert ebben az esetben, 509 00:20:55,580 --> 00:20:59,120 a változó valójában Csak egy pointer változó. 510 00:20:59,120 --> 00:21:02,900 Tehát csak néhány hely memória, ami tartja a mutató. 511 00:21:02,900 --> 00:21:06,570 Nem igazán van olyan hely hogy tartja a tényleges struct. 512 00:21:06,570 --> 00:21:08,660 >> Tehát ezt meg kell tenni két lépésben. 513 00:21:08,660 --> 00:21:11,545 Meg kell teremtenünk a memória, hogy a struct a. 514 00:21:11,545 --> 00:21:14,445 És mi van, hogy megteremtse a memória, hogy a mutatót. 515 00:21:14,445 --> 00:21:16,570 Így ők alapvetően két különböző változók itt. 516 00:21:16,570 --> 00:21:19,730 Ezek közül az egyik típusú diák, kivéve, hogy nem igazán van neve. 517 00:21:19,730 --> 00:21:21,900 És a másik típusú hallgató csillag. 518 00:21:21,900 --> 00:21:24,900 Aztán diák 1 pont ott, ha van értelme. 519 00:21:24,900 --> 00:21:25,871 520 00:21:25,871 --> 00:21:26,370 OK? 521 00:21:26,370 --> 00:21:28,160 522 00:21:28,160 --> 00:21:31,860 >> Szóval, hogy miért is használjuk mutatók azért van, mert minden 523 00:21:31,860 --> 00:21:35,510 egy számítógépes, minden változó Egy számítógép két dolgot. 524 00:21:35,510 --> 00:21:36,580 Ez megvan a maga értéke. 525 00:21:36,580 --> 00:21:38,420 És azt a címét. 526 00:21:38,420 --> 00:21:41,390 És egy jó módja annak, hogy fogalmat, ez van 527 00:21:41,390 --> 00:21:44,230 sok probléma, ha próbálja használni funkciókat. 528 00:21:44,230 --> 00:21:47,200 És fogunk megpróbálni vizsgálja meg egy ilyen. 529 00:21:47,200 --> 00:21:50,370 Nevezetesen, ez lesz a gondolom, memória dobozok. 530 00:21:50,370 --> 00:21:52,810 >> Mindig gondoltam változók amikor azt mondja, na = 5. 531 00:21:52,810 --> 00:21:54,430 Azt hiszem, az üzembe 5 egy dobozba. 532 00:21:54,430 --> 00:21:55,520 533 00:21:55,520 --> 00:22:00,030 Mi van, ha azt szeretné, hogy adja át hogy int egy függvény? 534 00:22:00,030 --> 00:22:03,230 Csak pass-- én nem tudom-- x egy függvény. 535 00:22:03,230 --> 00:22:06,090 De mi történik, általában, mint az emberek, akkor 536 00:22:06,090 --> 00:22:09,050 azt hiszem, valami hasonló vagyok halad a dobozt egy személy. 537 00:22:09,050 --> 00:22:12,070 És ez nem igazán történik a számítógépek. 538 00:22:12,070 --> 00:22:17,770 Mi történik, másolja az értéket A doboz a személy mezőbe. 539 00:22:17,770 --> 00:22:22,440 >> Szóval, mit akarok mondani, hogy ha van egy function-- sorry-- itt, 540 00:22:22,440 --> 00:22:27,700 ha van egy függvény, mint öt fel ott, ha megpróbálja átadni a változó, 541 00:22:27,700 --> 00:22:29,450 ez csak fog másolni. 542 00:22:29,450 --> 00:22:35,771 Ha inicializálása nx = 3, ez lesz másolni ezt az értéket, hogy a változó a 543 00:22:35,771 --> 00:22:36,270 ott. 544 00:22:36,270 --> 00:22:37,005 545 00:22:37,005 --> 00:22:39,630 OK, és ez a fajta az oka Ezért szeretnénk használni mutatók. 546 00:22:39,630 --> 00:22:42,550 Mert ahelyett, hogy így csak az érték, 547 00:22:42,550 --> 00:22:44,850 ahelyett, hogy csak múló csak az értéket a függvény, 548 00:22:44,850 --> 00:22:46,530 szeretnénk átadni a referencia. 549 00:22:46,530 --> 00:22:50,630 Mit nevezünk szerint átadott kedves hogy megszerezze a mezőbe funkció, 550 00:22:50,630 --> 00:22:53,890 annak érdekében, hogy a funkció is Az értékek módosításával belül a dobozt. 551 00:22:53,890 --> 00:22:57,280 >> OK, így csak néhány alapvető mutató dolog az, hogy létrehozzanak mutatók, 552 00:22:57,280 --> 00:23:00,300 csak nyilváníthatja a típusát, és tesz egy csillag után is. 553 00:23:00,300 --> 00:23:02,307 És a típus csak amit mutatott. 554 00:23:02,307 --> 00:23:04,390 Tehát, ha ez egy int csillag, te mutatva egy int. 555 00:23:04,390 --> 00:23:05,940 Ha ez egy char csillag, te mutatott a chart. 556 00:23:05,940 --> 00:23:07,790 És ha ez egy diák csillag, te mutatott egy diák. 557 00:23:07,790 --> 00:23:08,770 OK? 558 00:23:08,770 --> 00:23:10,510 >> És ők mind a 4 bájt hosszú. 559 00:23:10,510 --> 00:23:13,010 Mivel ez a változó ez valójában nem 560 00:23:13,010 --> 00:23:15,380 kell tartani a char, int, vagy a diák. 561 00:23:15,380 --> 00:23:16,890 Csak meg kell tartani egy címet. 562 00:23:16,890 --> 00:23:21,390 Ezért ők a 4 bájt hosszú a normál 32 bites gép. 563 00:23:21,390 --> 00:23:21,890 OK? 564 00:23:21,890 --> 00:23:25,600 Tehát itt, x egy változó, amely egy int. y pontokat a karakter. z pontok 565 00:23:25,600 --> 00:23:26,580 Egy úszó. 566 00:23:26,580 --> 00:23:27,480 Bármilyen kérdése van? 567 00:23:27,480 --> 00:23:29,841 568 00:23:29,841 --> 00:23:30,340 Cool. 569 00:23:30,340 --> 00:23:32,550 És van két különböző szimbólumok vannak 570 00:23:32,550 --> 00:23:34,341 szem előtt tartani, amikor jön a mutató. 571 00:23:34,341 --> 00:23:36,540 Így referenciái és dereferencing a nagyok. 572 00:23:36,540 --> 00:23:38,100 573 00:23:38,100 --> 00:23:41,602 Így a jelet a változó nevét adja az? 574 00:23:41,602 --> 00:23:42,310 STUDENT: cím. 575 00:23:42,310 --> 00:23:43,380 Muci: cím. 576 00:23:43,380 --> 00:23:47,330 Tehát, ha kijelentem, int a = 5, akkor ampersand 577 00:23:47,330 --> 00:23:49,214 Egy fog adni a címet. 578 00:23:49,214 --> 00:23:51,130 És akkor valóban megpróbál nyomtatni, és látni, hogy a 579 00:23:51,130 --> 00:23:54,640 milyen cím a memóriában A változó. 580 00:23:54,640 --> 00:23:57,380 És akkor dereferencing-- így volt hivatkozó, 581 00:23:57,380 --> 00:24:00,380 szerzés a address-- dereferencing pont az ellenkezője. 582 00:24:00,380 --> 00:24:04,120 OK, csak mint az idők szemben a szétválás, 583 00:24:04,120 --> 00:24:06,060 csillag az ellentéte jelet. 584 00:24:06,060 --> 00:24:09,710 Így dereferencing eszközök ott. 585 00:24:09,710 --> 00:24:14,280 Tehát, ha adsz star-- I Nem tudom-- 50, ez 586 00:24:14,280 --> 00:24:20,320 megpróbálom menni címére száma 50 számítógép belsejében. 587 00:24:20,320 --> 00:24:22,840 OK, és miért nem látjuk hogy ezek az ellentétek? 588 00:24:22,840 --> 00:24:27,320 Mert mi történik, ha nem olyasmi, mint a csillag-jel? 589 00:24:27,320 --> 00:24:28,470 590 00:24:28,470 --> 00:24:33,460 Nos, egy jelet ad a címet egy változó, a címét. 591 00:24:33,460 --> 00:24:35,830 De csillag azt jelenti, hogy ott. 592 00:24:35,830 --> 00:24:38,930 >> És mi történik, ha megy a címét? 593 00:24:38,930 --> 00:24:40,400 Csak kap egy, igaz? 594 00:24:40,400 --> 00:24:41,410 595 00:24:41,410 --> 00:24:43,600 Így lesz a címe Egy az ugyanaz, mint a. 596 00:24:43,600 --> 00:24:47,580 Ezért ők általában hivatkozott a same-- ezt 597 00:24:47,580 --> 00:24:50,480 és ezt nevezzük mivel ellentétes piaci szereplők. 598 00:24:50,480 --> 00:24:50,980 OK? 599 00:24:50,980 --> 00:24:52,780 600 00:24:52,780 --> 00:24:53,790 Így jó. 601 00:24:53,790 --> 00:24:57,240 >> A motorháztető alatt, például, ha kijelentjük int x = 5, 602 00:24:57,240 --> 00:24:58,040 van egy változó. 603 00:24:58,040 --> 00:25:00,790 És ne feledjük, hogy azt mondta, minden változó-- és ez egy jó dolog 604 00:25:00,790 --> 00:25:03,820 tartani mind-- van két különböző dolgokat társítva. 605 00:25:03,820 --> 00:25:06,460 Meg van egy címzett és egy értéket. 606 00:25:06,460 --> 00:25:07,140 OK? 607 00:25:07,140 --> 00:25:09,180 >> Így az érték ebben az esetben 5. 608 00:25:09,180 --> 00:25:12,140 És a cím ez-- mondjuk, én vagyok hogy valami up-- hogy 0x04. 609 00:25:12,140 --> 00:25:13,180 610 00:25:13,180 --> 00:25:17,200 És az egyetlen oka annak, hogy általában képviseli címek hexadecimális 611 00:25:17,200 --> 00:25:19,770 az egyik, mert ez olyan, mint a jó. 612 00:25:19,770 --> 00:25:21,600 Ez jól megy a bináris. 613 00:25:21,600 --> 00:25:23,500 Könnyen konvertálni és bináris. 614 00:25:23,500 --> 00:25:26,890 És ez nem lesz túl nagy, ha van egy nagyon nagy szám. 615 00:25:26,890 --> 00:25:29,990 Tehát szeretném használni hexadecimális nyomtatás címeket. 616 00:25:29,990 --> 00:25:31,890 De jelenthet ez egy egész szám. 617 00:25:31,890 --> 00:25:32,750 Ez rendben van. 618 00:25:32,750 --> 00:25:35,450 >> És ez így van egy cím 4 és 5 érték. 619 00:25:35,450 --> 00:25:38,080 És akkor azt mondtam int csillag mutató. 620 00:25:38,080 --> 00:25:40,070 Tehát ez egy más típusú, értesítés. 621 00:25:40,070 --> 00:25:43,220 Int csillag mutató értéke az x címét. 622 00:25:43,220 --> 00:25:46,425 Tehát mi lesz az értéke a ptr? 623 00:25:46,425 --> 00:25:47,710 624 00:25:47,710 --> 00:25:51,600 Ez lesz az címét x, idelent. 625 00:25:51,600 --> 00:25:54,190 OK, így az érték fog ugyanaz, mint a címet. 626 00:25:54,190 --> 00:25:56,130 Ez a feladat működik csinálok. 627 00:25:56,130 --> 00:25:59,380 És akkor ptr megy, hogy a saját címét, ami kiderül, 628 00:25:59,380 --> 00:26:02,050 ebben az esetben a 8, OK? 629 00:26:02,050 --> 00:26:03,850 630 00:26:03,850 --> 00:26:05,900 >> Aztán egy új egész példányt. 631 00:26:05,900 --> 00:26:08,790 És én azt mondom int másolat megegyezik menni. 632 00:26:08,790 --> 00:26:11,140 Így megy mi ptr mutat. 633 00:26:11,140 --> 00:26:13,940 Nos, mi ez a ptr van? 634 00:26:13,940 --> 00:26:14,740 PTR 0x04. 635 00:26:14,740 --> 00:26:16,060 636 00:26:16,060 --> 00:26:18,400 Mi történik, ha megpróbálok menni oda? 637 00:26:18,400 --> 00:26:23,650 Meg fogom találni a fickót, aki cím x és aki 4. cím. 638 00:26:23,650 --> 00:26:25,970 És aki négy, x. 639 00:26:25,970 --> 00:26:26,950 Van ennek értelme? 640 00:26:26,950 --> 00:26:28,295 641 00:26:28,295 --> 00:26:28,795 Igen? 642 00:26:28,795 --> 00:26:32,060 >> DIÁK: Ebben az esetben, az a mutató a verem? 643 00:26:32,060 --> 00:26:36,024 >> Muci: Ebben az esetben, it's-- jó kérdés. 644 00:26:36,024 --> 00:26:38,690 Nem igazán hiszem, ezt a ha így fel ezeket a címeket. 645 00:26:38,690 --> 00:26:42,570 De ha ez, mint, minden ezek lokális változók, 646 00:26:42,570 --> 00:26:46,372 akkor x fog élni in-- mindent fog élni a verem. 647 00:26:46,372 --> 00:26:48,330 Tehát minden rendben van hogy mutat verem. 648 00:26:48,330 --> 00:26:49,360 649 00:26:49,360 --> 00:26:52,700 Csak akkor kap a kupac, ha elkezdi használni malloc, ugye? 650 00:26:52,700 --> 00:26:59,430 >> Tehát, ha emlékszem köteg minden alkalommal hívás funkció a programban, 651 00:26:59,430 --> 00:27:02,800 mint, a fő például, vagy bármely más funkció, mint a printf. 652 00:27:02,800 --> 00:27:06,334 Minden helyi változók lesz, hogy betesz egy verem keret. 653 00:27:06,334 --> 00:27:08,500 És ők fognak kapni mint halmoztak fel a verem. 654 00:27:08,500 --> 00:27:09,930 Ezt hívják a verem. 655 00:27:09,930 --> 00:27:12,200 És azok a lokális változók lesznek ott. 656 00:27:12,200 --> 00:27:14,940 És heap-- és megyünk beszélni többet erről later-- 657 00:27:14,940 --> 00:27:19,050 A halom, ahol minden dinamikusan lefoglalt memória életét. 658 00:27:19,050 --> 00:27:20,270 Cool? 659 00:27:20,270 --> 00:27:21,680 >> Mi megy ez a dia. 660 00:27:21,680 --> 00:27:22,800 Igen? 661 00:27:22,800 --> 00:27:25,490 >> Diák: Miért nem int másolat visszatér 0x04? 662 00:27:25,490 --> 00:27:27,870 663 00:27:27,870 --> 00:27:30,066 >> Muci: Miért nem int másolat visszatér 0x04? 664 00:27:30,066 --> 00:27:32,450 >> Diák: Miért nem az, hogy [hallható]? 665 00:27:32,450 --> 00:27:35,530 >> Muci: Mert mi az értéke ptr? 666 00:27:35,530 --> 00:27:37,394 667 00:27:37,394 --> 00:27:38,370 >> STUDENT: 0x04. 668 00:27:38,370 --> 00:27:38,960 >> Muci: 0x04. 669 00:27:38,960 --> 00:27:40,910 Mi történik, ha megy a 0x04? 670 00:27:40,910 --> 00:27:41,620 Mit kap cserébe? 671 00:27:41,620 --> 00:27:42,371 >> Diák: Oh, OK. 672 00:27:42,371 --> 00:27:42,995 Muci: Látod? 673 00:27:42,995 --> 00:27:43,536 Diák: Igen. 674 00:27:43,536 --> 00:27:44,890 Muci: Így kapsz 5. 675 00:27:44,890 --> 00:27:49,170 Így másolat megy, hogy 5, ha van értelme. 676 00:27:49,170 --> 00:27:49,809 Igen? 677 00:27:49,809 --> 00:27:52,803 >> Diák: Lehet mi ütött 5. Az érték dobozban [hallható] 678 00:27:52,803 --> 00:27:55,300 ha teszünk int másolni [hallható]. 679 00:27:55,300 --> 00:27:56,710 >> Muci: Int-- mi lenne, igen. 680 00:27:56,710 --> 00:27:59,080 Ez volna nagyjából ugyanaz a dolog. 681 00:27:59,080 --> 00:28:02,080 De ez így, akkor át foglalkozik a funkciókat. 682 00:28:02,080 --> 00:28:05,050 És ez a jó dolog fogunk csinálni most. 683 00:28:05,050 --> 00:28:06,770 684 00:28:06,770 --> 00:28:13,090 >> Tehát ez a fajta gyakorlat mindig jön fel on-- igen akkor jön fel vetélkedők. 685 00:28:13,090 --> 00:28:15,870 Szóval nagyon jó, hogy megpróbálja Ehhez a fajta dolog magad. 686 00:28:15,870 --> 00:28:21,210 Így próbálja nyomon követni, hogy mi a címe van, és szeretné, hogy a változók értékét 687 00:28:21,210 --> 00:28:22,620 a minden ponton. 688 00:28:22,620 --> 00:28:24,370 Tehát ez pontosan mit fogunk csinálni. 689 00:28:24,370 --> 00:28:26,988 Itt van lépések, az egyik, két, három, négy, öt. 690 00:28:26,988 --> 00:28:30,530 Egy, kettő, három, négy, öt. 691 00:28:30,530 --> 00:28:33,330 És megyünk, hogy nyomon követhesse Az x értékei és a. 692 00:28:33,330 --> 00:28:34,650 693 00:28:34,650 --> 00:28:40,530 >> Szóval mi ez csinál, ha ez a hibás kód, próbálunk csinálni öt. 694 00:28:40,530 --> 00:28:43,610 Szóval próbálok egy változó értékének megváltoztatása 5-re. 695 00:28:43,610 --> 00:28:44,630 696 00:28:44,630 --> 00:28:49,900 És ne feledd, az én analógiát, amelynek doboz és átnyújtotta a dobozt valakinek? 697 00:28:49,900 --> 00:28:51,515 Így van ez a legfontosabb az úgynevezett doboz x. 698 00:28:51,515 --> 00:28:52,570 699 00:28:52,570 --> 00:28:54,170 És ez tartalmazza a 3 értéket. 700 00:28:54,170 --> 00:28:55,230 701 00:28:55,230 --> 00:28:57,455 És próbálom átadni ezt a rovatot, hogy az öt. 702 00:28:57,455 --> 00:28:58,560 703 00:28:58,560 --> 00:29:01,510 >> És azt akarom, hogy öt változtatni az értéke doboz 5. 704 00:29:01,510 --> 00:29:03,080 705 00:29:03,080 --> 00:29:05,120 És akkor én csak nyomtatni az x értékét. 706 00:29:05,120 --> 00:29:06,475 707 00:29:06,475 --> 00:29:08,850 Ez az, amit én function-- ez az, amit próbálok csinálni. 708 00:29:08,850 --> 00:29:12,450 Csak próbálom frissíteni az x értéke 5-re. 709 00:29:12,450 --> 00:29:13,512 710 00:29:13,512 --> 00:29:14,970 Ez világos, hogy mi a függvény? 711 00:29:14,970 --> 00:29:16,210 712 00:29:16,210 --> 00:29:21,440 >> OK, akkor mi is lesz a az x és az itt, 713 00:29:21,440 --> 00:29:27,734 az első sorban, jobbra, mielőtt az első line-- Szeretném say-- a program? 714 00:29:27,734 --> 00:29:28,940 >> Diák: Valószínűleg szemét. 715 00:29:28,940 --> 00:29:30,023 >> Muci: csak szemét dolog. 716 00:29:30,023 --> 00:29:32,590 Szóval csak hogy N / A. Így nem igazán tudom. 717 00:29:32,590 --> 00:29:37,400 Mint, a nem is létezik még, mert még nem hívott, hogy öt. 718 00:29:37,400 --> 00:29:38,980 Int a nem bejelentett. 719 00:29:38,980 --> 00:29:40,030 720 00:29:40,030 --> 00:29:42,920 X és fog létezni itt, de még nem igazán 721 00:29:42,920 --> 00:29:45,370 kijelölt bármely értéket, így rendben van? 722 00:29:45,370 --> 00:29:46,570 723 00:29:46,570 --> 00:29:52,340 >> És akkor, mi is lesz az az x és a második számú? 724 00:29:52,340 --> 00:29:54,530 725 00:29:54,530 --> 00:29:55,410 >> Diák: [hallható]. 726 00:29:55,410 --> 00:29:57,540 >> Muci: Szóval x lesz 3. 727 00:29:57,540 --> 00:29:59,650 Ez egyszerű, mert mi hozzárendelése 3 rá. 728 00:29:59,650 --> 00:30:03,500 És még mindig nem létezik mert csak él az öt. 729 00:30:03,500 --> 00:30:05,800 Szóval megyek, hogy a 3 és semmi. 730 00:30:05,800 --> 00:30:08,590 vagy mint a szemét, bármi, nem igazán definiált. 731 00:30:08,590 --> 00:30:11,640 732 00:30:11,640 --> 00:30:13,140 És most ez a fontos vonal. 733 00:30:13,140 --> 00:30:14,931 Itt fogunk valóban hívja öt. 734 00:30:14,931 --> 00:30:17,140 735 00:30:17,140 --> 00:30:18,680 És ne feledd, mit mondtam. 736 00:30:18,680 --> 00:30:20,240 Soha nem adja át a dobozban. 737 00:30:20,240 --> 00:30:23,110 Csak értékének másolása A doboz egy másik doboz. 738 00:30:23,110 --> 00:30:27,000 Ez minden számítógépen nem, másolja dolgok egyik helyről a másikra. 739 00:30:27,000 --> 00:30:33,550 >> Tehát öt, hogy valójában mire ez másolatot az x értéke egy. 740 00:30:33,550 --> 00:30:35,130 Szóval, mi lesz itt? 741 00:30:35,130 --> 00:30:36,210 X értékei és a. 742 00:30:36,210 --> 00:30:38,670 743 00:30:38,670 --> 00:30:43,360 3 és 3, akkor csak másolja át az x a. 744 00:30:43,360 --> 00:30:44,710 745 00:30:44,710 --> 00:30:45,320 Cool. 746 00:30:45,320 --> 00:30:46,140 >> Most, hogy itt vagyunk. 747 00:30:46,140 --> 00:30:47,610 748 00:30:47,610 --> 00:30:49,430 És most megyünk frissíteni a = 5. 749 00:30:49,430 --> 00:30:50,900 750 00:30:50,900 --> 00:30:53,070 Mi fog történni a sorban négy? 751 00:30:53,070 --> 00:30:55,120 752 00:30:55,120 --> 00:30:56,010 >> Diák: [hallható]. 753 00:30:56,010 --> 00:30:59,685 >> Muci: a frissül, de x nem frissülnek. 754 00:30:59,685 --> 00:31:02,050 755 00:31:02,050 --> 00:31:05,250 Mivel még mindig él x fő, ez a teljesen más blokk memória. 756 00:31:05,250 --> 00:31:06,970 Ez egy másik változót. 757 00:31:06,970 --> 00:31:07,900 Egy másik változó. 758 00:31:07,900 --> 00:31:10,000 Úgy történik, hogy a ugyanazt az értéket, mert 759 00:31:10,000 --> 00:31:13,980 másoltuk át az x értéke egy. 760 00:31:13,980 --> 00:31:20,070 De most, amikor én a = 5, akkor nem igazán befolyásolja x semmilyen módon. 761 00:31:20,070 --> 00:31:21,450 Ez a trükkösebb rész. 762 00:31:21,450 --> 00:31:23,380 Van-e értelme a mindenki? 763 00:31:23,380 --> 00:31:24,093 Igen? 764 00:31:24,093 --> 00:31:25,717 DIÁK: Még egy kérdés, van 3. 765 00:31:25,717 --> 00:31:27,741 Miért van already-- ó, nem, ez 3. 766 00:31:27,741 --> 00:31:28,490 Sajnáljuk, de sebaj. 767 00:31:28,490 --> 00:31:29,310 Olvastam 5. 768 00:31:29,310 --> 00:31:30,415 >> Muci: Igen, 3, 3. 769 00:31:30,415 --> 00:31:31,540 >> Diák: [hallható], igen. 770 00:31:31,540 --> 00:31:35,290 Muci: És akkor rendelni 5 a, de nem igazán változik x. 771 00:31:35,290 --> 00:31:36,369 Jó? 772 00:31:36,369 --> 00:31:36,910 Diák: Igen. 773 00:31:36,910 --> 00:31:37,410 Muci: Igen? 774 00:31:37,410 --> 00:31:42,330 El tudod magyarázni újra, hogy Egy lesz másolva [hallható]? 775 00:31:42,330 --> 00:31:48,480 >> Muci: OK, így amikor telefonál, hogy öt x, tehát ezt a kódsort itt. 776 00:31:48,480 --> 00:31:50,100 777 00:31:50,100 --> 00:31:52,340 öt, x, x, mi? 778 00:31:52,340 --> 00:31:55,160 779 00:31:55,160 --> 00:31:58,340 x mindössze 3 ezen a ponton, igaz? 780 00:31:58,340 --> 00:32:03,320 Szóval lehet, gondoljunk csak üzembe 3 ide, és elfelejti x. 781 00:32:03,320 --> 00:32:04,410 Csak hogy egy 3 itt. 782 00:32:04,410 --> 00:32:10,880 Mint, megyünk másold át a x értéke az int egy, ami ott. 783 00:32:10,880 --> 00:32:12,310 784 00:32:12,310 --> 00:32:13,630 OK? 785 00:32:13,630 --> 00:32:14,780 >> Így az x értéke 3 lehet. 786 00:32:14,780 --> 00:32:17,680 Fogunk másolni 3. át a. 787 00:32:17,680 --> 00:32:20,040 És ez a másik blokk memória, a másik változó 788 00:32:20,040 --> 00:32:22,640 úgynevezett lesz 3, is. 789 00:32:22,640 --> 00:32:23,580 Van ennek értelme? 790 00:32:23,580 --> 00:32:24,780 791 00:32:24,780 --> 00:32:25,794 Igen? 792 00:32:25,794 --> 00:32:31,008 >> DIÁK: Ha adsz öt hasonló van ez, mint egész x helyett, 793 00:32:31,008 --> 00:32:32,910 azt, hogy mindent megold? 794 00:32:32,910 --> 00:32:36,290 >> Muci: Ha ez egy integer-- nem, hogy nem mindent megold. 795 00:32:36,290 --> 00:32:37,590 Szóval ez egy nagyon jó kérdés. 796 00:32:37,590 --> 00:32:40,480 Nem igazán számít, hogy mit hívja azokat a változókat. 797 00:32:40,480 --> 00:32:44,510 Ismét lesz kérdés hatály, mert ők nem ugyanazokat az x. 798 00:32:44,510 --> 00:32:46,526 Ők teljesen különböző terek a memóriában. 799 00:32:46,526 --> 00:32:47,400 Diák: [hallható]. 800 00:32:47,400 --> 00:32:49,020 Muci: Tehát ez nem igazán számít, hogy hívják őket. 801 00:32:49,020 --> 00:32:50,480 Ez nem oldja meg a dolgokat, oké? 802 00:32:50,480 --> 00:32:53,390 803 00:32:53,390 --> 00:32:54,430 Több kérdés? 804 00:32:54,430 --> 00:32:55,762 Igen? 805 00:32:55,762 --> 00:32:58,498 >> Diák: Hogyan vissza szám öt [hallható]? 806 00:32:58,498 --> 00:32:59,661 807 00:32:59,661 --> 00:33:01,160 Muci: OK, mi nem történt meg, hogy még. 808 00:33:01,160 --> 00:33:03,432 Menjünk Number Five, majd. 809 00:33:03,432 --> 00:33:04,650 >> Diák: [hallható]? 810 00:33:04,650 --> 00:33:05,565 >> Muci: Mi? 811 00:33:05,565 --> 00:33:08,179 >> DIÁK: Van egy visszatérés egyáltalán? 812 00:33:08,179 --> 00:33:09,970 Muci: Nincs visszatérés, nem fő. 813 00:33:09,970 --> 00:33:12,940 De a fő tér vissza 0-ra ha nem tér vissza semmit. 814 00:33:12,940 --> 00:33:14,400 815 00:33:14,400 --> 00:33:15,188 Igen? 816 00:33:15,188 --> 00:33:22,658 >> DIÁK: Tudna csinál main-- vagy tudná, hogy öt a visszatérés? 817 00:33:22,658 --> 00:33:24,170 818 00:33:24,170 --> 00:33:27,990 >> Muci: Mi volna öt vissza, igen. 819 00:33:27,990 --> 00:33:32,527 De akkor mi lenne hozzárendelni x megegyezik a visszatérési értéke öt, 820 00:33:32,527 --> 00:33:34,360 ami egy kissé különböző programot. 821 00:33:34,360 --> 00:33:35,440 Ez működik. 822 00:33:35,440 --> 00:33:38,730 De mit akarunk csinálni az, ami hívott valami változás a helyén. 823 00:33:38,730 --> 00:33:41,690 Ezért szeretnénk, hogy valóban változtatni doboz, és ne aggódj 824 00:33:41,690 --> 00:33:44,390 amiatt, hogy visszatérjen értékeket, vagy ilyesmi. 825 00:33:44,390 --> 00:33:44,890 OK? 826 00:33:44,890 --> 00:33:46,490 827 00:33:46,490 --> 00:33:50,150 >> Ez olyan, mint a csere funkció David mutatott előadás, kivéve vagyok 828 00:33:50,150 --> 00:33:51,740 Csak kezeléséhez változó. 829 00:33:51,740 --> 00:33:55,960 És két használt, így int a és b és akkor az átmeneti változó és miegymás. 830 00:33:55,960 --> 00:33:57,020 OK? 831 00:33:57,020 --> 00:33:58,070 Tehát mi az utolsó sor? 832 00:33:58,070 --> 00:34:04,400 Miután öt visszatér, akkor csak az a fog menni. 833 00:34:04,400 --> 00:34:06,120 834 00:34:06,120 --> 00:34:10,179 Mi nem lesz többé, és csak x továbbra is él. 835 00:34:10,179 --> 00:34:12,130 >> És tudod mit? x nem változik az értéke, 836 00:34:12,130 --> 00:34:15,520 elvégre, mert vagyunk csak a változó értékét. 837 00:34:15,520 --> 00:34:17,370 Ezért x 3 volt az egész. 838 00:34:17,370 --> 00:34:17,870 OK? 839 00:34:17,870 --> 00:34:20,195 840 00:34:20,195 --> 00:34:21,130 Jó. 841 00:34:21,130 --> 00:34:23,560 Szóval ez a program nem elérni, amit akartunk. 842 00:34:23,560 --> 00:34:24,760 Most nézzük megjavítani. 843 00:34:24,760 --> 00:34:27,440 >> És a fix program segítségével mutatók. 844 00:34:27,440 --> 00:34:32,300 Mit csinálunk a mi három vonalak, amelyek különböző. 845 00:34:32,300 --> 00:34:34,020 Az elsők a mi nem halad x. 846 00:34:34,020 --> 00:34:35,535 Mi halad az x címét. 847 00:34:35,535 --> 00:34:37,330 848 00:34:37,330 --> 00:34:40,876 Tehát ahelyett, másolás felett a mező értéke, 849 00:34:40,876 --> 00:34:42,500 Én még mindig tart másolni át valamit. 850 00:34:42,500 --> 00:34:45,380 De én átmásoltad a címe a doboz. 851 00:34:45,380 --> 00:34:48,780 >> Tehát, ha elmegyek a címét doboz az öt, majd öt 852 00:34:48,780 --> 00:34:51,560 lesz képes megtalálni, hogy memória és változtassa meg az értéket. 853 00:34:51,560 --> 00:34:53,980 854 00:34:53,980 --> 00:34:59,580 >> Így aztán ott, én hogy a nem int többé. 855 00:34:59,580 --> 00:35:00,882 a egy int kategóriájú. 856 00:35:00,882 --> 00:35:02,090 Ez egy mutató egy egész. 857 00:35:02,090 --> 00:35:03,790 858 00:35:03,790 --> 00:35:07,310 És akkor, mert én halad a címet ide, és akkor mit csinálok 859 00:35:07,310 --> 00:35:10,530 nem egyenlő 5, mert Egy, aki olyan címet. 860 00:35:10,530 --> 00:35:16,710 Szóval, mit akarok csinálni az menjen oda, és frissíti a tartalmát a cím 861 00:35:16,710 --> 00:35:18,305 5. 862 00:35:18,305 --> 00:35:21,130 >> OK, menjünk át összes vonalak egyenként. 863 00:35:21,130 --> 00:35:22,410 864 00:35:22,410 --> 00:35:26,024 Tehát amikor elkezdem itt, én még N / A, N / A, N / A 865 00:35:26,024 --> 00:35:28,440 mindent az első sor, mert én még nem igazán 866 00:35:28,440 --> 00:35:29,390 bejelentett dolog még. 867 00:35:29,390 --> 00:35:30,980 868 00:35:30,980 --> 00:35:35,110 Aztán sorban két, már x = 3. 869 00:35:35,110 --> 00:35:38,020 Egy csillag int a nem léteznek, ugyanaz, mint korábban. 870 00:35:38,020 --> 00:35:39,160 871 00:35:39,160 --> 00:35:40,640 >> Most lesz érdekes. 872 00:35:40,640 --> 00:35:42,300 Szóval megyek át. 873 00:35:42,300 --> 00:35:45,720 És tegyük fel, hogy a cím x 12 hexadecimális. 874 00:35:45,720 --> 00:35:46,880 875 00:35:46,880 --> 00:35:48,420 Nézzük csak feltételezzük ezt. 876 00:35:48,420 --> 00:35:49,221 Tettem fel. 877 00:35:49,221 --> 00:35:51,680 878 00:35:51,680 --> 00:35:53,500 Szóval mit is halad itt egy öt. 879 00:35:53,500 --> 00:35:54,460 Én halad a 12. 880 00:35:54,460 --> 00:35:56,390 881 00:35:56,390 --> 00:35:58,610 >> Szóval, milyen értéket jelent a van? 882 00:35:58,610 --> 00:36:04,785 883 00:36:04,785 --> 00:36:06,210 >> Diák: [hallható]. 884 00:36:06,210 --> 00:36:06,950 >> Muci: Tessék? 885 00:36:06,950 --> 00:36:08,145 >> Diák: [hallható]. 886 00:36:08,145 --> 00:36:10,520 Muci: Igen, mint, hogy hagyja, hogy a Feltételezem, hogy itt vagyunk, most. 887 00:36:10,520 --> 00:36:11,540 888 00:36:11,540 --> 00:36:12,040 Kérek. 889 00:36:12,040 --> 00:36:12,915 >> Diák: [hallható]. 890 00:36:12,915 --> 00:36:13,590 891 00:36:13,590 --> 00:36:14,890 >> Muci: Ez kezdeményeztek. 892 00:36:14,890 --> 00:36:15,860 >> Diák: [hallható]. 893 00:36:15,860 --> 00:36:17,985 Muci: Mert át valamit a funkció. 894 00:36:17,985 --> 00:36:19,431 895 00:36:19,431 --> 00:36:19,930 Igen? 896 00:36:19,930 --> 00:36:20,899 >> Diák: Cím x. 897 00:36:20,899 --> 00:36:22,690 Muci: Meg fog van az x címét. 898 00:36:22,690 --> 00:36:25,800 És a címe x 12, jó. 899 00:36:25,800 --> 00:36:30,990 Így x lesz 3, mert már nem igazán változtak x még. 900 00:36:30,990 --> 00:36:36,700 És akkor egy lesz 0x12, így az x címét, mert ez 901 00:36:36,700 --> 00:36:38,840 amit átadott öt. 902 00:36:38,840 --> 00:36:40,940 >> És akkor mi történik ha megpróbáljuk ott? 903 00:36:40,940 --> 00:36:42,145 Mit fogunk találni? 904 00:36:42,145 --> 00:36:47,120 Tehát, ha próbál nyomtatni egy csillag, mi fogja követni ezt a címet 905 00:36:47,120 --> 00:36:48,620 és hogy az érték benne. 906 00:36:48,620 --> 00:36:50,470 És az érték csak ugyanazt az értéket, hogy x 907 00:36:50,470 --> 00:36:53,980 van, mert ez a x címét, melyik lesz 3. 908 00:36:53,980 --> 00:36:55,440 909 00:36:55,440 --> 00:36:56,930 Vagyunk jó? 910 00:36:56,930 --> 00:36:59,990 >> OK, és akkor most mi tényleg ott. 911 00:36:59,990 --> 00:37:05,510 És frissíteni bármi Ebben a 12 címet. 912 00:37:05,510 --> 00:37:07,390 Azt, hogy az 5. 913 00:37:07,390 --> 00:37:10,560 Tehát most X és csillag 5. 914 00:37:10,560 --> 00:37:13,170 915 00:37:13,170 --> 00:37:13,680 >> Miért van ez? 916 00:37:13,680 --> 00:37:17,070 Mivel az x címét 12. 917 00:37:17,070 --> 00:37:20,920 És szintén a 12, mint az értékét. 918 00:37:20,920 --> 00:37:23,780 Tehát, ha követjük a 12., vagyunk csak fog találni x. 919 00:37:23,780 --> 00:37:27,400 Tehát bármit teszünk csillag fog történni 920 00:37:27,400 --> 00:37:30,790 az x, mert tartalmaz az x címét. 921 00:37:30,790 --> 00:37:31,918 922 00:37:31,918 --> 00:37:32,418 OK? 923 00:37:32,418 --> 00:37:34,090 924 00:37:34,090 --> 00:37:37,750 >> És ez olyan, mint a kritikus pontja az fix. 925 00:37:37,750 --> 00:37:41,500 Tehát most már tudjuk, tól öt, valójában 926 00:37:41,500 --> 00:37:43,840 hozzáférés memória élt fő. 927 00:37:43,840 --> 00:37:47,980 Szóval ez a memória nem él a öt, mint korábban, ezt a címet a 12. 928 00:37:47,980 --> 00:37:50,980 És tudtuk, hogy ott értékének megváltoztatása 5-re. 929 00:37:50,980 --> 00:37:53,990 >> Aztán amikor visszatérünk, elfelejtjük a. 930 00:37:53,990 --> 00:37:55,720 Azt felejtsd el a csillag. 931 00:37:55,720 --> 00:37:57,020 És x még öt. 932 00:37:57,020 --> 00:37:58,327 933 00:37:58,327 --> 00:38:00,160 Tehát, ha azt akarjuk, végre a csere funkció, 934 00:38:00,160 --> 00:38:05,010 akkor csak nem pontosan ugyanaz a dolog, kivéve, ha kell int csillagok itt, 935 00:38:05,010 --> 00:38:06,140 és így tovább és így tovább. 936 00:38:06,140 --> 00:38:06,976 OK? 937 00:38:06,976 --> 00:38:07,475 Vagyunk jó? 938 00:38:07,475 --> 00:38:09,860 939 00:38:09,860 --> 00:38:10,610 Cool. 940 00:38:10,610 --> 00:38:12,410 >> Így pointer aritmetika. 941 00:38:12,410 --> 00:38:13,960 Ez egy kissé kényes téma. 942 00:38:13,960 --> 00:38:16,554 Így kiderül, hogy a mutatók csak egész számok. 943 00:38:16,554 --> 00:38:17,970 Azt hiszem őket egész. 944 00:38:17,970 --> 00:38:21,080 Mivel a memóriában, akkor tetszik memóriacím nulla, egy, kettő, három, 945 00:38:21,080 --> 00:38:21,900 négy, öt. 946 00:38:21,900 --> 00:38:23,900 Így tudjuk összefoglalni memória címeket. 947 00:38:23,900 --> 00:38:27,230 >> És ez általában mit csinálsz, ha te és tömb, pl. 948 00:38:27,230 --> 00:38:30,540 Egy sor olyan, mint egy szomszédos blokk memória, a rengeteg karakter, 949 00:38:30,540 --> 00:38:31,840 Például sok ints. 950 00:38:31,840 --> 00:38:34,420 Tehát ha azt akarjuk, hogy menjen a második int vagy a harmadik int, 951 00:38:34,420 --> 00:38:37,830 ha csak összefoglalni valamit az első cím, és fogsz eljutni oda. 952 00:38:37,830 --> 00:38:39,620 Szóval ez tényleg hasznos, hogy. 953 00:38:39,620 --> 00:38:41,850 >> És a dolog, hogy tartsa szem előtt tartva, de az, 954 00:38:41,850 --> 00:38:45,140 hogy ez nem csak, mint normál aritmetikai abban az értelemben, 955 00:38:45,140 --> 00:38:50,304 hogy ha van dolgunk, azt mondják, egy int csillag, és adjunk hozzá 1-et, 956 00:38:50,304 --> 00:38:52,220 akkor nem mész hozzá az 1-es címre, 957 00:38:52,220 --> 00:38:53,950 fogsz hozzá 4 címre. 958 00:38:53,950 --> 00:38:55,030 959 00:38:55,030 --> 00:38:56,670 Mivel az int 4 bájt. 960 00:38:56,670 --> 00:38:57,720 961 00:38:57,720 --> 00:38:59,540 >> Tehát ez olyan, mint séta egy tömb. 962 00:38:59,540 --> 00:39:05,260 Ha van egy sor sok ints és akkor igyekszünk menni a második, 963 00:39:05,260 --> 00:39:08,790 ez alapvetően csak az összegző címe az első plusz 1. 964 00:39:08,790 --> 00:39:10,040 965 00:39:10,040 --> 00:39:13,425 De ez nem csak be-- mondjuk hogy a címe az első 4 lehet. 966 00:39:13,425 --> 00:39:14,560 967 00:39:14,560 --> 00:39:16,250 Itt, ebben az esetben. 968 00:39:16,250 --> 00:39:19,780 969 00:39:19,780 --> 00:39:22,850 Ha összegezzük, így ez a az, hogy mi történik. 970 00:39:22,850 --> 00:39:23,530 Van egy int. 971 00:39:23,530 --> 00:39:25,640 Int x = 5. 972 00:39:25,640 --> 00:39:26,950 X értéke 5. 973 00:39:26,950 --> 00:39:31,240 És Inicializálni mutató, int y int csillag y egyenlő az x címét. 974 00:39:31,240 --> 00:39:33,660 >> Tegyük fel, hogy az x címét 4. 975 00:39:33,660 --> 00:39:36,960 Mi fog történni most ha összegzem hozzá 1 y? 976 00:39:36,960 --> 00:39:39,110 977 00:39:39,110 --> 00:39:44,790 Meg fog ténylegesen összege 4 helyett csak 1. 978 00:39:44,790 --> 00:39:50,920 Szóval hozzá egy 1, de ez valójában hozzáadunk 4, mert a számítógép okos. 979 00:39:50,920 --> 00:39:55,275 Így fog ténylegesen hozzá az i-szer a méret a típusát a mutatót. 980 00:39:55,275 --> 00:39:56,340 981 00:39:56,340 --> 00:39:56,840 OK? 982 00:39:56,840 --> 00:39:58,030 983 00:39:58,030 --> 00:40:02,440 >> Tehát, ha ez a karakter, például, ha ez a csillag char y, 984 00:40:02,440 --> 00:40:07,141 és ha hozzáadunk 1, akkor ez lenne legyen 5, mert char 1 byte hosszú. 985 00:40:07,141 --> 00:40:07,640 Jó? 986 00:40:07,640 --> 00:40:10,560 987 00:40:10,560 --> 00:40:13,190 >> És végül, mi van, hogy mutatók és tömbök. 988 00:40:13,190 --> 00:40:16,451 Kiderül, hogy minden alkalommal van dolgunk, egy sor, 989 00:40:16,451 --> 00:40:18,075 te tényleg foglalkozik a mutató. 990 00:40:18,075 --> 00:40:19,720 991 00:40:19,720 --> 00:40:24,777 A nagyon szép elvi oka az, hogy a tömbök igen nagy. 992 00:40:24,777 --> 00:40:27,360 Úgy emlékszem, hogy azt mondta, hogy Minden alkalommal, amikor át dolog körül, 993 00:40:27,360 --> 00:40:29,097 másolni mindent. 994 00:40:29,097 --> 00:40:31,180 Tehát, ha van egy tömb ez tényleg nagyon nagy, 995 00:40:31,180 --> 00:40:32,990 nem igazán akar másolni mindent minden alkalommal 996 00:40:32,990 --> 00:40:35,710 adja át körül a másik funkciót, mert ez csak 997 00:40:35,710 --> 00:40:37,190 hatalmas mennyiségű munkát. 998 00:40:37,190 --> 00:40:39,710 Szóval, mit csinálsz, csak múlt a címe az első byte. 999 00:40:39,710 --> 00:40:40,969 1000 00:40:40,969 --> 00:40:44,010 És akkor a függvény férhet az összes elemet a tömbben. 1001 00:40:44,010 --> 00:40:48,670 Szóval át a tömböt a címe, így a címe az első byte. 1002 00:40:48,670 --> 00:40:53,010 >> Tehát, ha kijelentjük int tömb 3, itt, tudjuk, 1003 00:40:53,010 --> 00:40:57,470 hogyan lehet hozzáférni az első elem a konzol jelölést. 1004 00:40:57,470 --> 00:41:02,410 Ha emlékszik a konzol jelölés, tömb tartó 0értéke 1. 1005 00:41:02,410 --> 00:41:06,330 Nos, ez pontosan az ugyanaz, mint most menj oda, és tegye 1. 1006 00:41:06,330 --> 00:41:07,370 1007 00:41:07,370 --> 00:41:09,110 OK, ez pontosan ugyanaz a dolog. 1008 00:41:09,110 --> 00:41:13,010 Így a konzol jelölés itt ugyanaz lesz, mint ezen a vonalon. 1009 00:41:13,010 --> 00:41:18,600 >> És tudod mit a konzol jelölés A tömb konzol 1 lesz? 1010 00:41:18,600 --> 00:41:20,440 Ez csak ugyanaz a dolog, mint ez. 1011 00:41:20,440 --> 00:41:22,500 Így hozzá egy tömb. 1012 00:41:22,500 --> 00:41:24,370 Mozgás egy végig a memóriában. 1013 00:41:24,370 --> 00:41:26,310 Menj oda, és tedd 2. 1014 00:41:26,310 --> 00:41:28,050 1015 00:41:28,050 --> 00:41:28,579 OK? 1016 00:41:28,579 --> 00:41:29,870 Ez a vonal ugyanaz a dolog. 1017 00:41:29,870 --> 00:41:34,860 Azt akarom, hogy a harmadik doboz, így tömb plusz 2. 1018 00:41:34,860 --> 00:41:37,465 Menj oda, és tedd 3. 1019 00:41:37,465 --> 00:41:39,340 Tehát a memóriában, mi fog történni vagyunk 1020 00:41:39,340 --> 00:41:44,400 megy, hogy az 1., 2., és 3-as a három eleme ennek a tömb. 1021 00:41:44,400 --> 00:41:46,970 >> Tudtuk volna ezt a ismerős konzol jelöléssel. 1022 00:41:46,970 --> 00:41:49,410 Csak azt akarom tudni, hogy a srácok hogy ezek az ugyanaz. 1023 00:41:49,410 --> 00:41:50,530 1024 00:41:50,530 --> 00:41:53,010 OK, ez kérdéseket? 1025 00:41:53,010 --> 00:41:56,115 1026 00:41:56,115 --> 00:41:56,615 Szép. 1027 00:41:56,615 --> 00:41:57,990 1028 00:41:57,990 --> 00:41:59,880 Most megyek, hogy kézzel át a Hannah, 1029 00:41:59,880 --> 00:42:00,330 >> HANNAH: Yay, Yee-galagonya. 1030 00:42:00,330 --> 00:42:02,246 >> Muci: Beszélgetés memória és a cikk dolgokat. 1031 00:42:02,246 --> 00:42:06,554 [Taps] 1032 00:42:06,554 --> 00:42:10,150 >> HANNAH: Szia, hűvös, így vagyunk fog beszélni egy kicsit 1033 00:42:10,150 --> 00:42:13,090 körülbelül memória, amit csak foglalkozott a mutatók. 1034 00:42:13,090 --> 00:42:16,060 Tehát két fő része memória vagyunk érintett. 1035 00:42:16,060 --> 00:42:18,830 Megvan a stack, amely növekszik fel az alsó, és a kupac, ami 1036 00:42:18,830 --> 00:42:20,600 megy le a tetején. 1037 00:42:20,600 --> 00:42:24,690 És verem fog tartani Minden példány változók. 1038 00:42:24,690 --> 00:42:28,860 Így mindegyik felhívja a funkciót kap saját kis keretben a verem. 1039 00:42:28,860 --> 00:42:32,160 Szóval mint Gabe korábban említettük, ha A funkciót újra és újra, 1040 00:42:32,160 --> 00:42:34,180 megyünk verem dolgokat a verem. 1041 00:42:34,180 --> 00:42:35,220 1042 00:42:35,220 --> 00:42:38,570 >> És hasonlóképpen, a kupac, kezdődik meg a felső 1043 00:42:38,570 --> 00:42:42,660 fog tartani az összes memóriát hogy dinamikusan osztja. 1044 00:42:42,660 --> 00:42:45,110 És ahogy dinamikusan memóriát kiosztani, 1045 00:42:45,110 --> 00:42:47,580 ez jön le az alja felé. 1046 00:42:47,580 --> 00:42:51,340 Pár dolog, hogy tudatában legyünk, ha mi a verem és a halom, 1047 00:42:51,340 --> 00:42:55,200 a verem, ha van is many-- nézzük say-- rekurzív hívások, 1048 00:42:55,200 --> 00:42:58,392 és mi a hívás funkció újra, és újra, és újra, és újra, 1049 00:42:58,392 --> 00:43:00,350 és ez anyagmozgató fel, anyagmozgató fel, anyagmozgató fel. 1050 00:43:00,350 --> 00:43:01,570 És ez megy, hogy összeomlik a kupac. 1051 00:43:01,570 --> 00:43:03,040 Fogunk elfogy a memória. 1052 00:43:03,040 --> 00:43:05,100 Ez fog okozni a probléma a számítógép. 1053 00:43:05,100 --> 00:43:06,770 És hogy hívják a verem túlcsordulás. 1054 00:43:06,770 --> 00:43:09,728 Szóval ez biztosan valami, amit tisztában kell lenniük, és próbálja elkerülni. 1055 00:43:09,728 --> 00:43:10,228 1056 00:43:10,228 --> 00:43:14,050 És a kupac, meg kell emlékezni Nem véletlenül szivárog a memória. 1057 00:43:14,050 --> 00:43:17,950 Minden alkalommal, amikor a malloc, nem elfelejtette, hogy szabad memóriát. 1058 00:43:17,950 --> 00:43:20,040 Ellenkező esetben, akkor csak legyen a kupac kárba, 1059 00:43:20,040 --> 00:43:23,230 és a számítógép nem tudja, hogy ez szabad használni, hogy a memóriát. 1060 00:43:23,230 --> 00:43:25,810 Tehát ezek a dolgok pár hogy legyen nagyon óvatos, ha 1061 00:43:25,810 --> 00:43:28,580 van dolgunk a verem és a kupac. 1062 00:43:28,580 --> 00:43:30,412 Bármilyen kérdése van ezzel? 1063 00:43:30,412 --> 00:43:31,304 Félelmetes. 1064 00:43:31,304 --> 00:43:31,900 >> OK, hűvös. 1065 00:43:31,900 --> 00:43:32,940 1066 00:43:32,940 --> 00:43:36,810 Így ez a fajta ugyanaz ötlet stack túlcsordulás, ahol 1067 00:43:36,810 --> 00:43:39,850 megyünk túl a keretein milyen memória 1068 00:43:39,850 --> 00:43:41,960 A mi kéne, hogy képes legyen használni. 1069 00:43:41,960 --> 00:43:45,077 Így veszi, például egy puffer, vagy Lehet, hogy csak gondol rá, mint egy tömb. 1070 00:43:45,077 --> 00:43:47,660 És mi azt mondtuk, rendben, megyünk létre ez a szép kis tömb. 1071 00:43:47,660 --> 00:43:49,140 Ez lesz a húr. 1072 00:43:49,140 --> 00:43:50,630 Vagy ez meg fog tárolni karaktereket. 1073 00:43:50,630 --> 00:43:51,720 És ez csak fog köszönni. 1074 00:43:51,720 --> 00:43:52,678 És ez határozatlan. 1075 00:43:52,678 --> 00:43:53,990 Ennyi. 1076 00:43:53,990 --> 00:43:58,240 >> De ha én lennék valaki gonosz, és azt akarta, hogy csinál valami rosszat ez a tömb, amit 1077 00:43:58,240 --> 00:44:02,310 Tehettem az megpróbál írni múlt a végén a húr. 1078 00:44:02,310 --> 00:44:04,490 És látni fogod, ha Írok elég messze, 1079 00:44:04,490 --> 00:44:06,980 Én ténylegesen befolyásolja a feladó címét. 1080 00:44:06,980 --> 00:44:09,530 És ha elkezdek befolyásolja a feladó címét, 1081 00:44:09,530 --> 00:44:11,730 Én befolyásolják a program valóban fut. 1082 00:44:11,730 --> 00:44:15,900 És ahelyett, hogy visszatért, akkor Tudod, egy boldog, mint a húr hello, én 1083 00:44:15,900 --> 00:44:19,460 tehetne valami rossz, mint menni máshol a számítógép, még mindig 1084 00:44:19,460 --> 00:44:22,146 memória, változtatni, amit én akarok. 1085 00:44:22,146 --> 00:44:25,020 Szóval, ez az, amit ez fog kinézni , ha én csak ilyen töltött fel 1086 00:44:25,020 --> 00:44:27,400 véletlenszerű szemét érték, ebben az esetben csak egy. 1087 00:44:27,400 --> 00:44:30,490 Aztán amikor tényleg van, hogy a memória cím, 1088 00:44:30,490 --> 00:44:33,740 Elkezdtem feltöltése valami hogy azt tette, amit én akartam csinálni. 1089 00:44:33,740 --> 00:44:34,952 1090 00:44:34,952 --> 00:44:36,410 Bármilyen kérdése a puffer túlcsordulás? 1091 00:44:36,410 --> 00:44:38,450 1092 00:44:38,450 --> 00:44:40,730 Félelmetes, repülő jobb keresztül ez a cucc. 1093 00:44:40,730 --> 00:44:43,530 >> OK, így sokat beszélgettünk a körülbelül pointer Gabe. 1094 00:44:43,530 --> 00:44:45,790 Hogyan tényleg kap egy mutatót? 1095 00:44:45,790 --> 00:44:48,070 Hogyan jutunk cím memóriában? 1096 00:44:48,070 --> 00:44:51,040 Nos, tudjuk használni ezt a szép függvényhívás malloc, amely 1097 00:44:51,040 --> 00:44:53,370 fog kapni a kis darab memória, 1098 00:44:53,370 --> 00:44:55,480 különösen a kupac, ahogy megbeszéltük, 1099 00:44:55,480 --> 00:44:59,780 és ez megy, hogy vissza a mutatót a címet a memóriában. 1100 00:44:59,780 --> 00:45:01,950 És az az érv, hogy kell adni malloc 1101 00:45:01,950 --> 00:45:04,280 hogy mennyi hely a memóriában akarunk. 1102 00:45:04,280 --> 00:45:06,100 >> Így látja a méretét byte. 1103 00:45:06,100 --> 00:45:08,670 Mondjuk, például, vagy valójában, ebben a példában, 1104 00:45:08,670 --> 00:45:12,040 osztjuk elég hely, 10 egész. 1105 00:45:12,040 --> 00:45:15,640 Tehát valószínűleg mi fogunk akar , hogy itt van egy sor 10 egész számok. 1106 00:45:15,640 --> 00:45:19,641 Szóval, hogy ez a méret ints, amely Megtanultuk, volt, hogy hány bájt? 1107 00:45:19,641 --> 00:45:20,140 STUDENT: 4. 1108 00:45:20,140 --> 00:45:22,920 HANNAH: 4, gyönyörű, és mi akar 10 e egy sorban, 1109 00:45:22,920 --> 00:45:28,050 így van elég hely, hogy tárolja mind a 10 egész szám, ebben az esetben. 1110 00:45:28,050 --> 00:45:31,290 Valami szuper fontos, bármikor hívja malloc, 1111 00:45:31,290 --> 00:45:32,880 van, hogy ellenőrizze a null. 1112 00:45:32,880 --> 00:45:37,310 Ha nem ellenőrzi null, nos, malloc ha elfogy a hely 1113 00:45:37,310 --> 00:45:40,400 és már nem ad semmiféle több memóriát, akkor vissza null. 1114 00:45:40,400 --> 00:45:42,060 1115 00:45:42,060 --> 00:45:45,630 Tehát, ha nem ellenőrzi, malloc visszatérhet null. 1116 00:45:45,630 --> 00:45:51,265 És aztán, ha megpróbáljuk követéssel, a null pointer, 1117 00:45:51,265 --> 00:45:54,960 megyünk, hogy egy szegmentációs hibát, amely fogunk beszélni most. 1118 00:45:54,960 --> 00:45:56,150 1119 00:45:56,150 --> 00:45:56,650 Félelmetes. 1120 00:45:56,650 --> 00:45:58,300 >> OK, kérdéseket malloc? 1121 00:45:58,300 --> 00:46:00,044 1122 00:46:00,044 --> 00:46:00,544 Igen? 1123 00:46:00,544 --> 00:46:05,460 >> Diák: Van ellenőrzése null [Hallható] ne csináld a kvízt? 1124 00:46:05,460 --> 00:46:08,100 >> HANNAH: Persze, a kérdés az volt, nem is matter-- a kvíz, 1125 00:46:08,100 --> 00:46:10,420 kapsz pontot, ha le Ön nem ellenőrzi null? 1126 00:46:10,420 --> 00:46:12,794 Igen, akkor kap pontot le ha nem ellenőrzi null. 1127 00:46:12,794 --> 00:46:16,030 Minden alkalommal, amikor hívást malloc, mind a kvíz, és a psets és a való életben, 1128 00:46:16,030 --> 00:46:17,155 van, hogy ellenőrizze a null. 1129 00:46:17,155 --> 00:46:18,330 Jó kérdés. 1130 00:46:18,330 --> 00:46:19,689 >> GABE: Mit tegyek, ha nem szabad? 1131 00:46:19,689 --> 00:46:21,730 HANNAH: Gabe akarja tudni, mi lenne, ha nem szabad. 1132 00:46:21,730 --> 00:46:25,030 Akkor mi lesz a memóriavesztés mi kupac. 1133 00:46:25,030 --> 00:46:26,140 Más kérdés? 1134 00:46:26,140 --> 00:46:27,550 Igen? 1135 00:46:27,550 --> 00:46:30,120 >> Diák: Lehet you-- megy át puffer túlcsordulás tényleg gyorsan újra? 1136 00:46:30,120 --> 00:46:30,530 >> HANNAH: Persze. 1137 00:46:30,530 --> 00:46:33,071 A kérdés az volt, mehetünk át puffer túlcsordulás nagyon gyors. 1138 00:46:33,071 --> 00:46:35,050 Térjünk vissza az említett diák. 1139 00:46:35,050 --> 00:46:37,430 Tehát egy puffer, akkor csak gondolok rá, mint egy tömb, ugye? 1140 00:46:37,430 --> 00:46:39,360 Van néhány hely a memóriában. 1141 00:46:39,360 --> 00:46:43,580 És amikor először létre a tömböt, tudjuk tömbök fix méret, 1142 00:46:43,580 --> 00:46:45,470 vagy a puffer mérete rögzített. 1143 00:46:45,470 --> 00:46:51,360 >> Mondjuk ebben az esetben már csak elég hely, hogy írjon a húr helló. 1144 00:46:51,360 --> 00:46:57,340 Ha megy, hogy a kötött, ha megy mi tömb mondtuk tarthatna, 1145 00:46:57,340 --> 00:46:59,780 A ténylegesen kezdeni írás a memóriába 1146 00:46:59,780 --> 00:47:01,780 hogy a számítógép nem azt akarják, hogy ültesse át. 1147 00:47:01,780 --> 00:47:02,810 1148 00:47:02,810 --> 00:47:05,580 És különösen, ha elérünk olyasmi, mint a visszatérés 1149 00:47:05,580 --> 00:47:08,700 foglalkozik a funkció, amely, mint bármely más darab memória, 1150 00:47:08,700 --> 00:47:11,420 csak valahol a számítógép, akkor valójában 1151 00:47:11,420 --> 00:47:14,080 változtatni, és elkezdi csinálni a gonoszokat. 1152 00:47:14,080 --> 00:47:15,272 Választ a kérdésére? 1153 00:47:15,272 --> 00:47:16,230 Félelmetes, bármi mást? 1154 00:47:16,230 --> 00:47:17,466 Igen? 1155 00:47:17,466 --> 00:47:21,948 >> Diák: Így verem [hallható], akkor mondta megy alulról felfelé megy. 1156 00:47:21,948 --> 00:47:25,434 Belül verem tartomány, nem a memória megy, mint, 1157 00:47:25,434 --> 00:47:27,230 felülről lefelé vonatkozó minden szünet? 1158 00:47:27,230 --> 00:47:28,646 1159 00:47:28,646 --> 00:47:32,100 >> HANNAH: Hogyan you-- elhalasztja a Rob ez. 1160 00:47:32,100 --> 00:47:35,370 1161 00:47:35,370 --> 00:47:38,213 >> ROB: Növekedni fog az azonos irányba, mint a stack növekszik. 1162 00:47:38,213 --> 00:47:38,712 HANNAH: OK. 1163 00:47:38,712 --> 00:47:40,967 ROB: Szóval összezavarodnak. 1164 00:47:40,967 --> 00:47:42,331 Ez lesz absztrakció. 1165 00:47:42,331 --> 00:47:42,831 HANNAH: OK. 1166 00:47:42,831 --> 00:47:44,000 ROB: Ez helyes. 1167 00:47:44,000 --> 00:47:49,420 Tehát, ha a verem növekszik fel, akkor azt generally-- 1168 00:47:49,420 --> 00:47:52,380 nem kell így lennie. de akkor nyilvánítja int x. 1169 00:47:52,380 --> 00:47:54,120 Akkor állapítsa int y. 1170 00:47:54,120 --> 00:47:57,300 Majd int x általában alacsonyabb, mint a stack int y. 1171 00:47:57,300 --> 00:47:59,300 De ez csak egy tény. 1172 00:47:59,300 --> 00:48:02,410 Ez nem olyan, mint egy fontos dolog mag. 1173 00:48:02,410 --> 00:48:06,800 >> ROB: Tehát a kérdés megint csak mi történik az egyes frame épít fel. 1174 00:48:06,800 --> 00:48:08,960 Így minden funkciót kap kis darab a verem. 1175 00:48:08,960 --> 00:48:13,030 És ahogy megy fel, ezen belül a kis darab, belül, hogy a keret, 1176 00:48:13,030 --> 00:48:16,710 azt fogjuk mondani, hogy a változók belül, hogy a keret is feljebb. 1177 00:48:16,710 --> 00:48:17,473 Kérdés? 1178 00:48:17,473 --> 00:48:18,688 >> ROB: Csak lenni mikrofon. 1179 00:48:18,688 --> 00:48:19,396 HANNAH: Ó, igen. 1180 00:48:19,396 --> 00:48:20,440 ROB: Beszélek beléd. 1181 00:48:20,440 --> 00:48:21,410 HANNAH: Ó, igen, az OK gombra. 1182 00:48:21,410 --> 00:48:24,150 ROB: A kivétel A tömbök és struktúrákat, 1183 00:48:24,150 --> 00:48:27,470 ahol tömbök, alacsonyabb index a tömbben, 1184 00:48:27,470 --> 00:48:29,930 és struktúrákat nagyobb területen a struktúrákat 1185 00:48:29,930 --> 00:48:35,040 garantáltan alacsonyabb címek mint a későbbi érték a tömbben. 1186 00:48:35,040 --> 00:48:36,720 Tehát azok garantált. 1187 00:48:36,720 --> 00:48:40,310 De minden egyes változók belül, mint int x és y int egy függvényen belül, 1188 00:48:40,310 --> 00:48:43,030 nincs szükség kapcsolat között a címüket. 1189 00:48:43,030 --> 00:48:44,882 1190 00:48:44,882 --> 00:48:46,340 HANNAH: Egy másik kérdés itt? 1191 00:48:46,340 --> 00:48:51,620 Diák: Így puffer flow, csak a puffer-túlcsordulás 1192 00:48:51,620 --> 00:48:54,980 Csak akkor történt, amikor is, mint kijelölt 1193 00:48:54,980 --> 00:49:01,056 mennyiségben egy tömb hogy akkor a nagyobb? 1194 00:49:01,056 --> 00:49:03,230 Mint, ugye? 1195 00:49:03,230 --> 00:49:05,435 Tehát, ha kér valamit a user-- 1196 00:49:05,435 --> 00:49:06,018 >> HANNAH: Mm-hm. 1197 00:49:06,018 --> 00:49:08,600 Diák: Can ők erőszakkal kapsz valamit vissza 1198 00:49:08,600 --> 00:49:11,777 ez nagyobb, mint bármi amit számukra biztosított? 1199 00:49:11,777 --> 00:49:13,610 HANNAH: Persze, így a kérdés alapvetően, 1200 00:49:13,610 --> 00:49:16,217 tudja a felhasználó adja meg többet, mint amennyit kér? 1201 00:49:16,217 --> 00:49:16,800 Diák: Igen. 1202 00:49:16,800 --> 00:49:18,480 HANNAH: Nos, megakadályozhatja a felhasználó csinálja. 1203 00:49:18,480 --> 00:49:21,350 Lehet mondani, különösen nem adj több mint x szám byte 1204 00:49:21,350 --> 00:49:24,330 Én csak adtam szoba x szám bájt, x karakterek számát. 1205 00:49:24,330 --> 00:49:25,700 Szóval ez az, amit szeretnénk elkerülni. 1206 00:49:25,700 --> 00:49:26,199 Igen? 1207 00:49:26,199 --> 00:49:30,270 Mi a különbség a között verem túlcsordulás és puffer túlcsordulás? 1208 00:49:30,270 --> 00:49:32,140 >> HANNAH: OK, így a verem overflow-- ó, milyen 1209 00:49:32,140 --> 00:49:34,790 a különbség a verem túlcsordulás és puffer túlcsordulás? 1210 00:49:34,790 --> 00:49:37,581 Ezért szeretnénk gondolni verem túlcsordulás történik, ha mi vagyunk valójában 1211 00:49:37,581 --> 00:49:39,530 anyagmozgató ezeket függvény hívások. 1212 00:49:39,530 --> 00:49:42,991 Tegyük fel, hogy van egy rekurzív függvény, mert tudjuk, hogy minden egyes alkalommal, amikor 1213 00:49:42,991 --> 00:49:45,240 hívja a funkció, ez lesz saját keret a verem. 1214 00:49:45,240 --> 00:49:47,950 >> Így verem túl magas, és akkor kezdjük túlcsordulás. 1215 00:49:47,950 --> 00:49:50,530 És túl sok memóriát használnak, és Nincs sehol maradt. 1216 00:49:50,530 --> 00:49:51,590 Azt kapjuk, hogy hiba. 1217 00:49:51,590 --> 00:49:53,930 >> Buffer túlcsordulás a programon belül. 1218 00:49:53,930 --> 00:49:57,180 Azt akarjuk, hogy nem feltétlenül elfogy a memória ugyanúgy 1219 00:49:57,180 --> 00:50:00,080 hogy talán ha már stack fel annyi függvényhívás, 1220 00:50:00,080 --> 00:50:04,540 de írni már a memória hogy tudjuk, tudjuk használni. 1221 00:50:04,540 --> 00:50:06,170 És ez lehetővé teszi számunkra, hogy rosszat tenni a dolgokat. 1222 00:50:06,170 --> 00:50:08,060 1223 00:50:08,060 --> 00:50:08,560 Igen? 1224 00:50:08,560 --> 00:50:10,950 >> ROB: Igen, érdemes hogy csak ismételd ezt, 1225 00:50:10,950 --> 00:50:12,699 de akkor is úgy gondolja, A verem túlcsordulás 1226 00:50:12,699 --> 00:50:15,374 úgy, mint egy bizonyos típusú puffer túlcsordulás. 1227 00:50:15,374 --> 00:50:17,665 Vagy gondoljunk csak a verem, mint egy igazán nagy puffer. 1228 00:50:17,665 --> 00:50:20,724 Akkor, amikor verem túlcsordulás, ez olyan, mint egy puffer túlcsordulás. 1229 00:50:20,724 --> 00:50:23,390 De egy verem túlcsordulás csak egy speciális kifejezést használják, ha a stack 1230 00:50:23,390 --> 00:50:24,310 maga túlcsordul. 1231 00:50:24,310 --> 00:50:27,500 >> HANNAH: Rendben, így ismételje meg a videót, 1232 00:50:27,500 --> 00:50:31,756 azt lehet gondolni, mint a verem túlcsordulás egy bizonyos típusú puffer túlcsordulás. 1233 00:50:31,756 --> 00:50:33,040 Cool? 1234 00:50:33,040 --> 00:50:34,562 Minden további kérdést, mielőtt megyünk tovább? 1235 00:50:34,562 --> 00:50:35,380 1236 00:50:35,380 --> 00:50:35,880 Félelmetes. 1237 00:50:35,880 --> 00:50:37,130 1238 00:50:37,130 --> 00:50:39,727 >> OK, hűvös, úgyhogy beszéljünk Néhány gyakori hiba üzenet. 1239 00:50:39,727 --> 00:50:42,060 Ez olyan dolog, hogy van mutatott fel több vetélkedők, 1240 00:50:42,060 --> 00:50:44,740 így valami, amit érdemes hogy egy második pillantást. 1241 00:50:44,740 --> 00:50:46,860 Biztos vagyok benne, hogy már találkozott legalább néhány ilyen 1242 00:50:46,860 --> 00:50:48,690 ahogy csinálod a problémát állítja. 1243 00:50:48,690 --> 00:50:50,980 Ügyeljen arra, hogy tud beszélni róluk a kvíz. 1244 00:50:50,980 --> 00:50:52,990 >> Tehát az első az a szegmentációs hiba. 1245 00:50:52,990 --> 00:50:55,250 És ez minden alkalommal, amikor megpróbálja elérni memória 1246 00:50:55,250 --> 00:50:57,130 hogy mi nem férhetnek hozzá. 1247 00:50:57,130 --> 00:51:00,280 Szóval migh látta ezt, például, a kitörés. 1248 00:51:00,280 --> 00:51:03,390 Ha észleli ütközés vissza null, és akkor 1249 00:51:03,390 --> 00:51:05,500 próbáltam csinálni valamit azzal, hogy a null értéket, 1250 00:51:05,500 --> 00:51:08,147 a számítógép adna Ön a szegmentációs hibát. 1251 00:51:08,147 --> 00:51:10,730 Tehát az egyik fontos dolog, hogy tenni annak érdekében, hogy megpróbálják elkerülni ezt 1252 00:51:10,730 --> 00:51:12,000 hogy mindig ellenőrizze a null. 1253 00:51:12,000 --> 00:51:13,300 1254 00:51:13,300 --> 00:51:16,180 >> Lehet is látni implicit nyilatkozat funkciót. 1255 00:51:16,180 --> 00:51:18,370 Szóval, ez az, ami történik amikor Allison mutatta meg 1256 00:51:18,370 --> 00:51:20,150 hogyan csinál egy prototípus, ugye? 1257 00:51:20,150 --> 00:51:23,440 Mondjuk van egy kis függvény, hogy meghatározzuk. 1258 00:51:23,440 --> 00:51:24,440 Tegyük fel, hogy kocka. 1259 00:51:24,440 --> 00:51:27,120 És hogy megy az alján mi funkció alatt fő. 1260 00:51:27,120 --> 00:51:35,205 >> Ha elfelejtette mondani a számítógépnek kocka, amikor a fő megpróbálja felhívni kocka, 1261 00:51:35,205 --> 00:51:36,830 a számítógép lesz, mint, oh istenem. 1262 00:51:36,830 --> 00:51:38,300 Fogalmam sincs, hogy ez mit jelent. 1263 00:51:38,300 --> 00:51:39,760 Nem tudom, mit tegyek, itt. 1264 00:51:39,760 --> 00:51:41,594 Így a prototípus mondja ne aggódj. 1265 00:51:41,594 --> 00:51:42,510 Meg fogom mondani. 1266 00:51:42,510 --> 00:51:43,132 >> Ez fog jönni. 1267 00:51:43,132 --> 00:51:43,840 Ne kiabálj velem. 1268 00:51:43,840 --> 00:51:46,697 Ne adj nekem egy implicit nyilatkozat függvény. 1269 00:51:46,697 --> 00:51:49,280 Tehát, ha ez a hiba, egy dolog, amit szeretne majd csinálni 1270 00:51:49,280 --> 00:51:50,821 az győződjön meg róla, hogy a prototípus. 1271 00:51:50,821 --> 00:51:52,320 1272 00:51:52,320 --> 00:51:53,230 OK? 1273 00:51:53,230 --> 00:51:55,680 >> És végül, de nem utolsósorban, be nem jelentett azonosító 1274 00:51:55,680 --> 00:52:00,570 lényegében amikor megpróbálja használni a változó, még nem bejelentett. 1275 00:52:00,570 --> 00:52:03,449 Így hirtelen elkezd mondván, mint n plus plus. 1276 00:52:03,449 --> 00:52:04,740 És a számítógép azt mondja, mi n? 1277 00:52:04,740 --> 00:52:06,660 Soha nem mondta, n volt a dolog. 1278 00:52:06,660 --> 00:52:10,930 >> Tehát az egyik dolog, amit meg kell győződjön meg róla, nem is mondja a számítógép, mi n. 1279 00:52:10,930 --> 00:52:13,320 Így például, az n egy egész szám lehet. 1280 00:52:13,320 --> 00:52:14,999 És akkor a hiba elkerülésére. 1281 00:52:14,999 --> 00:52:16,290 Minden kérdésre gyakori hibák? 1282 00:52:16,290 --> 00:52:17,260 Igen? 1283 00:52:17,260 --> 00:52:19,344 >> Diák: Az implicit nyilatkozat függvény, 1284 00:52:19,344 --> 00:52:22,343 lehet azt is, hogy kihagyott egy A könyvtárak azt is el kellett 1285 00:52:22,343 --> 00:52:24,400 hogy tartalmazza, nem pedig a prototípus? 1286 00:52:24,400 --> 00:52:26,359 >> HANNAH: Rendben, tehát a kérdés volt, tudnád 1287 00:52:26,359 --> 00:52:28,650 is kap ez a hiba, ha elfelejtettem, hogy könyvtár. 1288 00:52:28,650 --> 00:52:29,085 >> Diák: Igen. 1289 00:52:29,085 --> 00:52:30,876 >> HANNAH: Abszolút, mert ugyanúgy 1290 00:52:30,876 --> 00:52:33,540 hogy azt akarjuk, hogy a prototípusok mielőtt a fő funkciója, 1291 00:52:33,540 --> 00:52:37,717 ha van egy könyvtár, azok mennek lényegében magában foglalja a prototípusok, 1292 00:52:37,717 --> 00:52:39,425 között meghatározta a funkciókat. 1293 00:52:39,425 --> 00:52:40,585 Nagy kérdés. 1294 00:52:40,585 --> 00:52:43,230 >> DIÁK: Egy szegmentáció hiba lenne azt is 1295 00:52:43,230 --> 00:52:47,350 történik, ha mi, mint, próbáltam elérni egy változó, 1296 00:52:47,350 --> 00:52:51,947 mint például, egy másik [nem hallható] mint azt hirdettek? 1297 00:52:51,947 --> 00:52:54,030 HANNAH: Persze, így tennénk kap egy szegmentációs hiba 1298 00:52:54,030 --> 00:52:56,270 ha megpróbáltuk elérni a változó közül hatály? 1299 00:52:56,270 --> 00:52:57,104 Volt, hogy a kérdés? 1300 00:52:57,104 --> 00:52:57,645 Diák: Igen. 1301 00:52:57,645 --> 00:52:58,430 HANNAH: Beautiful. 1302 00:52:58,430 --> 00:53:01,840 Tehát valószínűleg, fogsz kapni egy be nem jelentett azonosító helyett tévedésből. 1303 00:53:01,840 --> 00:53:04,006 Szóval ez csak fog mondani Nem tudom, mi az. 1304 00:53:04,006 --> 00:53:04,920 1305 00:53:04,920 --> 00:53:05,920 Cool, bármi mást? 1306 00:53:05,920 --> 00:53:07,744 1307 00:53:07,744 --> 00:53:08,980 Ja, OK, gyönyörű. 1308 00:53:08,980 --> 00:53:10,330 1309 00:53:10,330 --> 00:53:12,400 >> Rendicsek, így rekurzió. 1310 00:53:12,400 --> 00:53:15,160 Szóval említettem egy-két alkalommal hogy lehet, hogy a verem túlcsordulás 1311 00:53:15,160 --> 00:53:17,919 mert mi vagyunk a hívás rekurzív függvény oly sokszor. 1312 00:53:17,919 --> 00:53:20,210 Mi megvagyunk mindezen stack keretek, bla, bla, bla. 1313 00:53:20,210 --> 00:53:22,420 Mi még a rekurzív függvény? 1314 00:53:22,420 --> 00:53:25,680 Nos, a rekurzív függvény minden olyan funkciót, amely magát. 1315 00:53:25,680 --> 00:53:26,820 1316 00:53:26,820 --> 00:53:30,160 >> Néhány dolog, hogy tudatában legyünk, ha hajtják végre rekurzív függvény, 1317 00:53:30,160 --> 00:53:31,940 ne felejtsd el, hogy tartalmaz egy alapeset. 1318 00:53:31,940 --> 00:53:34,010 A alapeset az a pont, ahol a végén. 1319 00:53:34,010 --> 00:53:38,740 Így például, ha már kódoló, , Mondjuk, Fibonacci rekurzív, 1320 00:53:38,740 --> 00:53:43,210 azt szeretnénk, hogy győződjön meg arról, hogy amikor megkapjuk a 0 vagy az első Fibonacci-szám, 1321 00:53:43,210 --> 00:53:46,220 E két szám van ezekben az esetekben, mert ezek nem függnek 1322 00:53:46,220 --> 00:53:47,700 a dolgokat, hogy elé került. 1323 00:53:47,700 --> 00:53:48,990 Ezek a saját értékeit. 1324 00:53:48,990 --> 00:53:51,270 1325 00:53:51,270 --> 00:53:55,320 >> Néhány előnye a rekurzió, amely egy kérdés láttunk a korábbi vetélkedők. 1326 00:53:55,320 --> 00:53:57,930 Vezethetnek, hogy több tömör, elegáns kódot. 1327 00:53:57,930 --> 00:54:00,510 És egy csomó funkció, a sok különböző algoritmusok, 1328 00:54:00,510 --> 00:54:02,350 valójában adnak arra, hogy a rekurzió. 1329 00:54:02,350 --> 00:54:05,510 A definíció lehet rekurzív önmagában. 1330 00:54:05,510 --> 00:54:06,980 Tehát Fibonacci egy. 1331 00:54:06,980 --> 00:54:07,860 Faktoriális egy. 1332 00:54:07,860 --> 00:54:10,480 Merge rendezés one-- összes dolog, akkor nézd meg. 1333 00:54:10,480 --> 00:54:12,650 1334 00:54:12,650 --> 00:54:13,460 OK, kérdés? 1335 00:54:13,460 --> 00:54:13,960 Igen? 1336 00:54:13,960 --> 00:54:15,644 1337 00:54:15,644 --> 00:54:19,612 >> Diák: Van egy sarok ügy hasonló a bázis ügy? 1338 00:54:19,612 --> 00:54:22,590 Vagy az, hogy valamilyen más fajta [hallható]? 1339 00:54:22,590 --> 00:54:25,170 >> HANNAH: Persze, így a sarok eset any-- olyan 1340 00:54:25,170 --> 00:54:27,580 a sarok esetében ugyanaz, mint alapeset? 1341 00:54:27,580 --> 00:54:32,825 A sarok eset van valami, hogy a kód viselkedhetnek egy kicsit másképp. 1342 00:54:32,825 --> 00:54:34,450 1343 00:54:34,450 --> 00:54:38,610 Alap esetben egyfajta kapcsolódó, a hogy ők, mint egyes esetekben 1344 00:54:38,610 --> 00:54:40,240 hogy szeretne nézni. 1345 00:54:40,240 --> 00:54:43,240 De az ötlet egy alapeset az, hogy szeretné, hogy a rekurzív függvény 1346 00:54:43,240 --> 00:54:44,870 megállítani egy bizonyos ponton. 1347 00:54:44,870 --> 00:54:46,490 Ez nem tart örökké nevezte magát. 1348 00:54:46,490 --> 00:54:47,781 Meg kell, hogy egy bizonyos ponton megáll. 1349 00:54:47,781 --> 00:54:49,340 1350 00:54:49,340 --> 00:54:53,460 >> ROB: Igen, gyakran, a bázis ügyek Lehet példákat sarok bázisok. 1351 00:54:53,460 --> 00:54:55,876 >> HANNAH: Jobb, hűvös, valami? 1352 00:54:55,876 --> 00:54:58,732 >> DIÁK: Meg tudná magyarázni alapozza, egy kicsit? 1353 00:54:58,732 --> 00:55:01,600 Én nem egészen értem [Hallható] alap esetben. 1354 00:55:01,600 --> 00:55:02,676 >> HANNAH: Az alap esetben? 1355 00:55:02,676 --> 00:55:03,140 >> Diák: Base esetben igen. 1356 00:55:03,140 --> 00:55:03,770 >> HANNAH: Ja, biztos. 1357 00:55:03,770 --> 00:55:04,270 Lássuk. 1358 00:55:04,270 --> 00:55:05,480 Nem mi kréta itt? 1359 00:55:05,480 --> 00:55:06,690 1360 00:55:06,690 --> 00:55:07,320 Igen, mi. 1361 00:55:07,320 --> 00:55:09,530 OK, így nagyon gyorsan, én megpróbál írni elég nagy 1362 00:55:09,530 --> 00:55:11,320 így láthatja a képernyőn. 1363 00:55:11,320 --> 00:55:13,490 Beszéljünk, tényleg gyorsan, Fibonacci. 1364 00:55:13,490 --> 00:55:15,550 Szóval kapsz a Fibonacci-sorozat. 1365 00:55:15,550 --> 00:55:17,090 Akkor nézz fel a meghatározás. 1366 00:55:17,090 --> 00:55:26,050 >> Lényegében minden szám a sorozat összege az előző két számot. 1367 00:55:26,050 --> 00:55:29,720 OK, így az is, hogy én imént leírt Fibonacci, 1368 00:55:29,720 --> 00:55:31,530 akkor lehetett hallani a rekurziót, ugye? 1369 00:55:31,530 --> 00:55:35,280 Amikor azt mondtam, minden szám a összege az előző két számot, 1370 00:55:35,280 --> 00:55:36,420 mondhatnánk az OK gombra. 1371 00:55:36,420 --> 00:55:38,570 Nos, az n-edik Fibonacci number-- úgyhogy 1372 00:55:38,570 --> 00:55:42,260 mondjuk, hogy ezt a funkciót úgynevezett fib-- fib n 1373 00:55:42,260 --> 00:55:48,260 lesz egyenlő fib n mínusz 1 plus-- sajnálom, 1374 00:55:48,260 --> 00:55:51,240 mi folyik a következő sorba felett here-- FIB n mínusz 2. 1375 00:55:51,240 --> 00:55:52,790 1376 00:55:52,790 --> 00:55:56,790 >> OK, így ez remekül működik, ha nézi, például, a nulla, egy, 1377 00:55:56,790 --> 00:55:59,410 két, három, négy, ötödik Fibonacci szám, 1378 00:55:59,410 --> 00:56:03,561 ahol lehet mondani, hogy 5 egyenlő 2 + 3. 1379 00:56:03,561 --> 00:56:05,060 De mi van, ha te vagy az elején? 1380 00:56:05,060 --> 00:56:07,184 Mi van, ha csak most üti az első két érték? 1381 00:56:07,184 --> 00:56:08,470 1382 00:56:08,470 --> 00:56:11,330 >> Ahhoz, hogy ez 1, akkor nem mondjuk hozzá az előző két, 1383 00:56:11,330 --> 00:56:13,930 mert ez nulla és-- nem tudom. 1384 00:56:13,930 --> 00:56:15,390 Tehát egy bizonyos ponton, meg kell állnunk. 1385 00:56:15,390 --> 00:56:21,250 Egy bizonyos ponton, meg kell mondani, hogy ezek a Csak két saját meghatározásokat. 1386 00:56:21,250 --> 00:56:23,890 A Fibonacci szám 0 0. 1387 00:56:23,890 --> 00:56:26,115 És az első Fibonacci szám 1. 1388 00:56:26,115 --> 00:56:34,120 >> Szóval, ahogy én is ezt a kódot, én azt mondják, ha az n érték kevesebb, mint két, 1389 00:56:34,120 --> 00:56:35,130 akkor csak vissza n. 1390 00:56:35,130 --> 00:56:36,494 És ez lenne az alapeset. 1391 00:56:36,494 --> 00:56:38,660 Így tudom, hogy hagyja abba egy rekurzív függvény. 1392 00:56:38,660 --> 00:56:40,640 1393 00:56:40,640 --> 00:56:41,410 Világos? 1394 00:56:41,410 --> 00:56:41,940 Félelmetes. 1395 00:56:41,940 --> 00:56:43,260 Még valami rekurzív? 1396 00:56:43,260 --> 00:56:44,890 1397 00:56:44,890 --> 00:56:45,930 Gyönyörű. 1398 00:56:45,930 --> 00:56:48,750 >> Menjünk gyorsan beszéljünk keresés és rendezés futási időket. 1399 00:56:48,750 --> 00:56:52,660 És akkor adok némi Davin ideje, hogy beszéljünk kódolási példák. 1400 00:56:52,660 --> 00:56:56,490 Tehát itt van a kereső és fajta, amit tudni kell. 1401 00:56:56,490 --> 00:56:59,500 Guarantee-- Nem tudom garantálni, mert én még nem láttam a quiz-- 1402 00:56:59,500 --> 00:57:01,940 de ez jön ki a kvízt miután kvíz után kilép. 1403 00:57:01,940 --> 00:57:04,050 Tehát feltétlenül használja ezt a táblázatot. 1404 00:57:04,050 --> 00:57:05,682 Mint ezt a chart. 1405 00:57:05,682 --> 00:57:06,890 Tedd rá a puskát. 1406 00:57:06,890 --> 00:57:07,931 Nem lesz boldog ember. 1407 00:57:07,931 --> 00:57:09,010 1408 00:57:09,010 --> 00:57:12,590 >> Ez azt mondja a futási idő az egyes Az ilyen fajta és keresési algoritmusok. 1409 00:57:12,590 --> 00:57:14,020 1410 00:57:14,020 --> 00:57:18,850 Szóval lineáris keresés, láthatjuk futás idő, és ugyanaz a bináris keresés. 1411 00:57:18,850 --> 00:57:21,490 Menj át mi ezeket az algoritmusokat igen, az alapötlet. 1412 00:57:21,490 --> 00:57:24,220 Nézd meg néhány pszeudokódja, ha nem kódot is. 1413 00:57:24,220 --> 00:57:25,610 1414 00:57:25,610 --> 00:57:30,380 >> Látni fogod, hogy buborék van egy fajta felső kötve a legrosszabb esetben, ha n négyzeten. 1415 00:57:30,380 --> 00:57:31,490 1416 00:57:31,490 --> 00:57:34,680 Tehát, ha a tömb teljesen visszafelé mielőtt akartunk rendezni, 1417 00:57:34,680 --> 00:57:37,090 azt mondanánk, hogy ez megy, hogy n négyzetes lépéseket. 1418 00:57:37,090 --> 00:57:38,160 1419 00:57:38,160 --> 00:57:41,730 De a legjobb esetben, így a alsó, a legjobb esetben 1420 00:57:41,730 --> 00:57:44,300 lesz, ha ez már tökéletesen rendezve. 1421 00:57:44,300 --> 00:57:46,671 Akkor minden, amit meg kell tennie, hogy ellenőrizze, hogy ez rendezett. 1422 00:57:46,671 --> 00:57:47,921 Van kérdés itt? 1423 00:57:47,921 --> 00:57:49,805 >> DIÁK: Ha lenne használni kívánt sort? 1424 00:57:49,805 --> 00:57:50,747 A sort. 1425 00:57:50,747 --> 00:57:52,160 Csak kíváncsi vagyok. 1426 00:57:52,160 --> 00:57:53,510 >> HANNAH: Ha azt szeretné használni kiválasztás sort? 1427 00:57:53,510 --> 00:57:54,010 Ez az? 1428 00:57:54,010 --> 00:57:55,705 Az egyik, hogy az n-négyzet mindkét esetben? 1429 00:57:55,705 --> 00:57:56,860 >> Diák: [hallható]. 1430 00:57:56,860 --> 00:57:58,151 >> HANNAH: Tehát ez nagyon más. 1431 00:57:58,151 --> 00:58:00,760 Ha konkrét követelmények a program 1432 00:58:00,760 --> 00:58:04,887 mint a dolgok, mint ha csak azt mondta: végrehajtása search-- sorry-- 1433 00:58:04,887 --> 00:58:06,720 végre egy sort, akkor érdemes menni 1434 00:58:06,720 --> 00:58:09,950 az egyik az is, hogy van egy legjobb esetben, ha n, 1435 00:58:09,950 --> 00:58:12,410 vagy az alsó határát a legjobb esetben n. 1436 00:58:12,410 --> 00:58:14,790 De lehet Bizonyos dolgok, mint, mondjuk, 1437 00:58:14,790 --> 00:58:16,767 swap tényleg drága valamilyen okból. 1438 00:58:16,767 --> 00:58:18,850 Akkor, amit szeretne csinálni buborék sort, mert 1439 00:58:18,850 --> 00:58:20,641 kell olyan sok csereügyletek, ilyesmi. 1440 00:58:20,641 --> 00:58:21,710 1441 00:58:21,710 --> 00:58:23,098 Minden other-- igen? 1442 00:58:23,098 --> 00:58:25,488 >> Diák: lenne [hallható] azt jelenti, hogy [hallható]? 1443 00:58:25,488 --> 00:58:30,077 1444 00:58:30,077 --> 00:58:31,910 HANNAH: Ez az egyik dolog hogy megmondja, 1445 00:58:31,910 --> 00:58:33,670 ha ránézünk a végrehajtás. 1446 00:58:33,670 --> 00:58:35,850 Az, hogy én valójában gondolni, hogy miért ez n 1447 00:58:35,850 --> 00:58:40,840 squared az, hogy meg kell futtatni keresztül tömb n hosszúságú, 1448 00:58:40,840 --> 00:58:42,765 minden egyes alkalommal, hogy legfeljebb n swap. 1449 00:58:42,765 --> 00:58:43,980 1450 00:58:43,980 --> 00:58:46,220 És mi van, hogy ezt a folyamat n-szer. 1451 00:58:46,220 --> 00:58:51,130 >> Tehát, ha van, hogy a legtöbb, n csereügyletek és n végigfut a tömb, 1452 00:58:51,130 --> 00:58:52,380 ott lesz, hogy n négyzeten. 1453 00:58:52,380 --> 00:58:55,480 De igen, ez látható lesz ezen keresztül a kettős hurok, 1454 00:58:55,480 --> 00:58:59,428 mivel a kérdés asked-- vagy egymásba ágyazott for ciklus, azt kell mondanom. 1455 00:58:59,428 --> 00:59:00,890 OK? 1456 00:59:00,890 --> 00:59:03,375 >> Aztán egyesíteni sort, amely a leggyorsabb fajta most, 1457 00:59:03,375 --> 00:59:07,560 vagy, hogy már tárgyalt CS50, tudjuk, hogy a legfontosabb algoritmus 1458 00:59:07,560 --> 00:59:10,150 ez az ötlet betörni rendezett darabokat, majd 1459 00:59:10,150 --> 00:59:11,980 összevonásával ezek sorrendje bit. 1460 00:59:11,980 --> 00:59:14,170 És lesz velünk log n log n. 1461 00:59:14,170 --> 00:59:17,110 Minden kérdésre keres és fajta mielőtt elmegyek azt? 1462 00:59:17,110 --> 00:59:19,840 1463 00:59:19,840 --> 00:59:21,040 Lássuk. 1464 00:59:21,040 --> 00:59:21,800 >> Oh, kapcsolt listák. 1465 00:59:21,800 --> 00:59:23,210 Bocsánat, én még egy témát. 1466 00:59:23,210 --> 00:59:25,000 OK, félelmetes, láncolt listák. 1467 00:59:25,000 --> 00:59:27,900 Probléma a tömbök, hogy van egy rögzített mérettel. 1468 00:59:27,900 --> 00:59:30,634 Tehát, ha nem tudod, milyen nagy A bemenet lesz, 1469 00:59:30,634 --> 00:59:32,050 nem szeretne létrehozni egy tömböt. 1470 00:59:32,050 --> 00:59:34,080 Mert ha létrehozunk egy tömb, hogy túl kicsi, 1471 00:59:34,080 --> 00:59:35,930 talán befut puffer túlcsordulás. 1472 00:59:35,930 --> 00:59:38,890 >> Tehát ahelyett, tudnánk tenni valamit A kapcsolt listák, amelyek 1473 00:59:38,890 --> 00:59:44,280 lehetővé teszi számunkra, hogy a dinamikusan méretű adatstruktúra 1474 00:59:44,280 --> 00:59:48,970 amely lehetővé teszi számunkra, hogy tárolja a rugalmasabb mennyiségű adat. 1475 00:59:48,970 --> 00:59:54,030 Így minden egyes csomópont a mi láncolt lista, van két darab. 1476 00:59:54,030 --> 00:59:56,820 Megvan a tényleges értéket tárolja. 1477 00:59:56,820 --> 00:59:59,530 Szóval ez csak a dolog, amit lásd a tömbben, például. 1478 00:59:59,530 --> 01:00:04,600 És akkor mi is nyomon követni a mutató a következő dolog a memóriában. 1479 01:00:04,600 --> 01:00:06,430 >> Ellentétben a tömbök, amely tudjuk, minden fog 1480 01:00:06,430 --> 01:00:10,890 a be-- tömb elemeit mind egy a másik után memory-- kapcsolódó 1481 01:00:10,890 --> 01:00:13,300 listák bárhol lehet a memóriában. 1482 01:00:13,300 --> 01:00:14,590 Ők tetszőleges helyre. 1483 01:00:14,590 --> 01:00:16,410 Tehát, ha mi voltunk a valóban megy megtalálni őket, 1484 01:00:16,410 --> 01:00:19,770 kell nyomon követni a következő dolog a listánkon. 1485 01:00:19,770 --> 01:00:22,840 >> És akkor, hogy megismerjék ha ez a lista egészében, 1486 01:00:22,840 --> 01:00:26,276 minden meg kell nyomon követni a első eleme a láncolt lista. 1487 01:00:26,276 --> 01:00:27,900 És hogy majd lehetővé teszik számunkra, hogy végigvigye. 1488 01:00:27,900 --> 01:00:31,020 1489 01:00:31,020 --> 01:00:33,070 >> Szóval, ez az, hogyan lehet meghatározni egy mód. 1490 01:00:33,070 --> 01:00:36,160 Ez egy nagyszerű lehetőség hogy kihasználják a struktúrákat. 1491 01:00:36,160 --> 01:00:39,660 Mert ezt az ötletet, nos, egy adott csomópont, van két darab. 1492 01:00:39,660 --> 01:00:41,770 Én a tényleges érték is. 1493 01:00:41,770 --> 01:00:45,610 És akkor van egy mutató a következő elem a láncolt lista. 1494 01:00:45,610 --> 01:00:49,150 Tudod, van egy n egész szám, ami lesz a tényleges érték, 1495 01:00:49,150 --> 01:00:53,150 majd a mutatót a csomópont, az úgynevezett a következő. 1496 01:00:53,150 --> 01:00:56,431 Annak érdekében, hogy ez lesz a következő eleme a láncolt lista. 1497 01:00:56,431 --> 01:00:56,972 Diák: Igen? 1498 01:00:56,972 --> 01:01:01,920 Van, hogy meghatározza, hogy a csillag, mint egy struktúra? 1499 01:01:01,920 --> 01:01:05,620 >> HANNAH: Igen, így van, mivel ez a majdnem olyan, mint egyfajta, 1500 01:01:05,620 --> 01:01:07,980 úgy tűnik, mint egy rekurzív definíció, hogy mi 1501 01:01:07,980 --> 01:01:12,080 kell, hogy mi a csomópont belül megtalálása csomópont. 1502 01:01:12,080 --> 01:01:14,450 Mivel ez nem a ténylegesen tudja, mi az a csomópont teljesen 1503 01:01:14,450 --> 01:01:17,283 amíg nem kap a végére this-- és ezt követően tudjuk csak nevezni 1504 01:01:17,283 --> 01:01:21,935 a node-- belül ennek a meghatározásnak, meg kell nevezni a struct csomópont. 1505 01:01:21,935 --> 01:01:22,560 Nagy kérdés. 1506 01:01:22,560 --> 01:01:23,580 1507 01:01:23,580 --> 01:01:25,214 Bármi más? 1508 01:01:25,214 --> 01:01:26,198 Igen? 1509 01:01:26,198 --> 01:01:29,150 >> Diák: Miért kell, hogy mondjam node kétszer? 1510 01:01:29,150 --> 01:01:33,578 Mert amikor mi voltunk [hallható] mi csak meg kellett csinálni a pontosvessző, 1511 01:01:33,578 --> 01:01:37,352 de most meg kell találni, hogy a struct csomópont? [Hallható]. 1512 01:01:37,352 --> 01:01:39,060 HANNAH: Szóval azt hiszem Az utolsó példa, 1513 01:01:39,060 --> 01:01:42,110 mi csak létre, amikor csak szerette volna használni egy diák után, hogy 1514 01:01:42,110 --> 01:01:46,430 kellett használnia struct node-- Én sorry-- struct diák. 1515 01:01:46,430 --> 01:01:51,575 Ez lehetővé tette számunkra, hogy, miután az a tény, csak használat csomópont egy új típusú, lényegében. 1516 01:01:51,575 --> 01:01:53,324 1517 01:01:53,324 --> 01:01:53,990 Van ennek értelme? 1518 01:01:53,990 --> 01:01:54,984 1519 01:01:54,984 --> 01:01:57,150 Szóval mi lenne, hogy menjen vissza, és nézd meg a kódot, mielőtt. 1520 01:01:57,150 --> 01:01:59,025 De azt hiszem, mi nem éltünk typedef. 1521 01:01:59,025 --> 01:02:02,050 És feltette a kérdést, miért kell használni typedef? 1522 01:02:02,050 --> 01:02:05,540 Typedef lehetővé teszi, hogy elkerüljék a szó struktúra az elején. 1523 01:02:05,540 --> 01:02:06,221 Igen? 1524 01:02:06,221 --> 01:02:08,095 DIÁK: Milyen kérdéssel jön 1525 01:02:08,095 --> 01:02:10,400 szempontjából tekintve csomópontok és a kapcsolt listák? 1526 01:02:10,400 --> 01:02:15,110 >> HANNAH: Tehát az egyik dolog, azt mondhatjuk, hogy milyen Lehet, hogy keressen egy láncolt lista? 1527 01:02:15,110 --> 01:02:16,930 OK, mert ez egy kicsit bonyolultabb 1528 01:02:16,930 --> 01:02:18,520 mint ha keres a tömb. 1529 01:02:18,520 --> 01:02:21,472 Mi csak nézd elem nulla, elem egy, két elem, bla, bla, 1530 01:02:21,472 --> 01:02:21,972 bla. 1531 01:02:21,972 --> 01:02:22,629 1532 01:02:22,629 --> 01:02:24,420 Ha meg akarjuk keresni egy láncolt lista, 1533 01:02:24,420 --> 01:02:27,229 mi lenne valójában követni ez a kis labirintus mutatók. 1534 01:02:27,229 --> 01:02:29,270 Szóval tényleg megy ezen keresztül nagyon gyorsan. 1535 01:02:29,270 --> 01:02:30,460 1536 01:02:30,460 --> 01:02:32,860 Mit tudnánk tenni kötelezze to-- mondjuk mi 1537 01:02:32,860 --> 01:02:35,430 akarom, hogy csak halad végig mi teljesen láncolt lista. 1538 01:02:35,430 --> 01:02:37,450 Szeretnénk kezdődik a fejét. 1539 01:02:37,450 --> 01:02:39,890 És akkor, hogy lépjen a következő elem, 1540 01:02:39,890 --> 01:02:43,680 ahelyett, hogy csak egy növekvõ mint mi talán megy keresztül egy tömb, 1541 01:02:43,680 --> 01:02:45,720 mi valóban lesz kövesse a következő mutató, 1542 01:02:45,720 --> 01:02:48,360 így találunk, ahol memória a következő elem. 1543 01:02:48,360 --> 01:02:49,357 1544 01:02:49,357 --> 01:02:51,690 Szóval tudom, hogy nem elég, hogy vegye mindezt most, 1545 01:02:51,690 --> 01:02:52,650 de akkor ezeket a diákat. 1546 01:02:52,650 --> 01:02:54,730 Így megy át ez egy kicsit lassabban. 1547 01:02:54,730 --> 01:02:56,890 De lényegében, hogy mit akarunk kell tennie, hogy a következő mutatók 1548 01:02:56,890 --> 01:02:58,550 át teljes egészében a láncolt lista. 1549 01:02:58,550 --> 01:03:00,258 Tehát ez a kérdés lehet kérni. 1550 01:03:00,258 --> 01:03:01,920 1551 01:03:01,920 --> 01:03:03,980 >> Valami észre a beillesztés, mondjuk 1552 01:03:03,980 --> 01:03:07,925 akartuk, hogy egy új elem elején a láncolt lista. 1553 01:03:07,925 --> 01:03:10,800 Van, hogy nagyon óvatosnak kell a sorrendet, amelyben mi 1554 01:03:10,800 --> 01:03:12,760 újraosztani a mutatók. 1555 01:03:12,760 --> 01:03:15,230 Mert mondjuk én csak azt mondtuk, rendben. 1556 01:03:15,230 --> 01:03:18,930 Győződjön fej pont ez az új elem. 1557 01:03:18,930 --> 01:03:23,550 Csak hogy pont 1 Akkor, most már lényegében elvesztette a többi a mi lista 1558 01:03:23,550 --> 01:03:25,860 mert én nem emlékszem, hol 2 él. 1559 01:03:25,860 --> 01:03:27,730 >> Tehát meg kell tenni a igen, meghatározott sorrendben. 1560 01:03:27,730 --> 01:03:31,500 Először is azt, hogy az új elem pont a fejét. 1561 01:03:31,500 --> 01:03:33,970 Aztán, hogy a fej pont az új elemet. 1562 01:03:33,970 --> 01:03:38,455 Szóval lássuk, mi hogy néz ki, mint a A arrows-- csak úgy. 1563 01:03:38,455 --> 01:03:42,080 Szóval először az új elem pont a régi fejét. 1564 01:03:42,080 --> 01:03:45,990 És most, mi van a fej pont az új első elemet. 1565 01:03:45,990 --> 01:03:47,187 Bármilyen kérdése van ezzel? 1566 01:03:47,187 --> 01:03:49,870 1567 01:03:49,870 --> 01:03:54,350 >> OK itt van néhány kód újra, valami nézni egy kicsit később. 1568 01:03:54,350 --> 01:03:58,630 És most térek át a Davin A GDB és egy kis gyakorlás 1569 01:03:58,630 --> 01:03:59,480 kódolási papíron. 1570 01:03:59,480 --> 01:04:00,597 1571 01:04:00,597 --> 01:04:01,096 Gyönyörű. 1572 01:04:01,096 --> 01:04:01,810 >> ROB És Rob. 1573 01:04:01,810 --> 01:04:02,360 >> HANNAH: Ó, Davin és Rob. 1574 01:04:02,360 --> 01:04:03,055 Sajnálom. 1575 01:04:03,055 --> 01:04:03,596 >> Diák: Woo! 1576 01:04:03,596 --> 01:04:08,140 1577 01:04:08,140 --> 01:04:09,110 >> ROB: Köszönöm. 1578 01:04:09,110 --> 01:04:11,209 >> DAVIN: Azt akarom mondani, minden igazi gyors? 1579 01:04:11,209 --> 01:04:11,875 ROB: Igen, igen. 1580 01:04:11,875 --> 01:04:12,845 DAVIN: Egyszer vagyok fel. 1581 01:04:12,845 --> 01:04:16,240 1582 01:04:16,240 --> 01:04:19,520 OK, míg Rob helyezi a mikrofon, akkor mi a GDB? 1583 01:04:19,520 --> 01:04:23,945 Mindenkinek kellett volna a GDB osztály, valamint a munkaidő. 1584 01:04:23,945 --> 01:04:25,070 És ha kell, használja. 1585 01:04:25,070 --> 01:04:25,750 Tehát mi GDB? 1586 01:04:25,750 --> 01:04:28,030 1587 01:04:28,030 --> 01:04:28,850 Valaki? 1588 01:04:28,850 --> 01:04:29,540 >> DIÁK: Ez egy debugger. 1589 01:04:29,540 --> 01:04:30,250 >> DAVIN: Ez egy debugger. 1590 01:04:30,250 --> 01:04:31,624 És mit jelent ez lehetővé teszi, hogy nem? 1591 01:04:31,624 --> 01:04:33,064 Mint, miért szeretjük a GDB? 1592 01:04:33,064 --> 01:04:34,480 DIÁK: Az lassítja a programot. 1593 01:04:34,480 --> 01:04:36,740 DAVIN: Rendben, így járni keresztül, mint egy ember ütemben. 1594 01:04:36,740 --> 01:04:38,490 És akkor mi van néhány parancsok meg tudod csinálni? 1595 01:04:38,490 --> 01:04:40,407 Nos, szünet valószínűleg kedvenc parancs. 1596 01:04:40,407 --> 01:04:43,240 Mert lehetővé teszi, hogy megtöri a programot, és tulajdonképpen ez a séta 1597 01:04:43,240 --> 01:04:44,280 soronként. 1598 01:04:44,280 --> 01:04:46,500 >> Run segítségével futtatni. 1599 01:04:46,500 --> 01:04:48,210 Ezután, mint lépett át. 1600 01:04:48,210 --> 01:04:49,820 Mi a következő között és a lépés? 1601 01:04:49,820 --> 01:04:52,190 1602 01:04:52,190 --> 01:04:53,190 Várj, azt mondják, hogy ki hangosan. 1603 01:04:53,190 --> 01:04:54,060 Ez volt a helyes. 1604 01:04:54,060 --> 01:04:55,280 >> Diák: [hallható]. 1605 01:04:55,280 --> 01:04:56,190 >> DAVIN: Igen, félelmetes. 1606 01:04:56,190 --> 01:04:59,210 Szóval, mint, a következő lépés, és, ha you're-- mondjuk van egy funkció 1607 01:04:59,210 --> 01:04:59,950 határozza meg. 1608 01:04:59,950 --> 01:05:03,350 Tegyük fel, hogy valami a fő funkciója, és te csak üti next, next, 1609 01:05:03,350 --> 01:05:03,850 következő. 1610 01:05:03,850 --> 01:05:05,910 Te tényleg megy hajtja végre azt a funkciót, 1611 01:05:05,910 --> 01:05:07,285 de fogsz ugrani rajta. 1612 01:05:07,285 --> 01:05:09,711 Ha bejön lépés, vagy s vagy bármi, te 1613 01:05:09,711 --> 01:05:11,460 fog valójában ugrani bele ezt a funkciót, 1614 01:05:11,460 --> 01:05:14,110 és akkor megüt következő hogy a különböző hívások 1615 01:05:14,110 --> 01:05:16,170 belül az adott funkció. 1616 01:05:16,170 --> 01:05:16,670 Igen? 1617 01:05:16,670 --> 01:05:18,670 >> Diák: Van-e mód ugrani, mint visszacsinálni? 1618 01:05:18,670 --> 01:05:20,750 DAVIN: Befejezés, igen, befejezni ugrik téged. 1619 01:05:20,750 --> 01:05:22,570 Így fog befejezni, hogy a funkció, és akkor már 1620 01:05:22,570 --> 01:05:24,153 lesz újra a fő, például. 1621 01:05:24,153 --> 01:05:25,250 1622 01:05:25,250 --> 01:05:27,370 Nyomtatás nyomtat ki egy időben. 1623 01:05:27,370 --> 01:05:29,381 Valami, amit mindig is látható. 1624 01:05:29,381 --> 01:05:31,880 Kijelző nyomtassa ki folyamatosan egész teljes 1625 01:05:31,880 --> 01:05:32,470 a program. 1626 01:05:32,470 --> 01:05:33,810 >> Például, ha egy for ciklus, és 1627 01:05:33,810 --> 01:05:37,018 szeretné látni, hogyan változik valami, és nem akar, mint, folyamatosan 1628 01:05:37,018 --> 01:05:38,940 csinál, mint a nyomtatás, nyomtatás, nyomtatás, kijelző 1629 01:05:38,940 --> 01:05:43,230 jelenik meg, hogy a változó folyamatosan, minden alkalommal, amikor megüt a Tovább gombra. 1630 01:05:43,230 --> 01:05:44,310 És továbbra is. 1631 01:05:44,310 --> 01:05:45,905 Szóval GBD, ez GDB. 1632 01:05:45,905 --> 01:05:47,160 1633 01:05:47,160 --> 01:05:49,180 >> Diák: Mi az az egy ahol [hallható]? 1634 01:05:49,180 --> 01:05:50,150 1635 01:05:50,150 --> 01:05:50,900 DAVIN: Mi ez? 1636 01:05:50,900 --> 01:05:52,310 1637 01:05:52,310 --> 01:05:54,390 >> Diák: Mi a-- a lokális változók. 1638 01:05:54,390 --> 01:05:55,364 1639 01:05:55,364 --> 01:05:57,780 ROB: Van valami valójában mint a helyiek, vagy valami. 1640 01:05:57,780 --> 01:05:58,140 I can't-- 1641 01:05:58,140 --> 01:05:59,930 >> DAVIN: Lehet, valami ilyesmi, igen. 1642 01:05:59,930 --> 01:06:00,830 >> HANNAH: A helyiek? 1643 01:06:00,830 --> 01:06:01,510 >> DAVIN: Ennyi. 1644 01:06:01,510 --> 01:06:02,134 Ez az egyik. 1645 01:06:02,134 --> 01:06:03,040 ROB: Beautiful. 1646 01:06:03,040 --> 01:06:04,030 >> DAVIN: Igen. 1647 01:06:04,030 --> 01:06:06,010 >> DIÁK: Mit is csinál? 1648 01:06:06,010 --> 01:06:08,010 >> DAVIN: Ez continues-- így csak folytatódik a programokat. 1649 01:06:08,010 --> 01:06:09,843 Tehát, ha szünet és hit tovább, ez lesz 1650 01:06:09,843 --> 01:06:13,119 hogy csak futtatni a programot, amíg eléri, hogy a szünet megint. 1651 01:06:13,119 --> 01:06:14,910 Így például, ha a tört egy függvény, 1652 01:06:14,910 --> 01:06:16,720 és fogsz csinálni, mint a hurok vagy valami ilyesmi, 1653 01:06:16,720 --> 01:06:19,869 és bejön is, ez lesz a tovább, és menj vissza a szünet. 1654 01:06:19,869 --> 01:06:22,660 Vagy nincs szünet, ez lesz a folytatni és befejezni a programot. 1655 01:06:22,660 --> 01:06:25,000 >> ROB: Szóval csak azt szeretném futtatni leáll az első töréspont 1656 01:06:25,000 --> 01:06:27,010 bejön, ha majd hit is, meg fogjuk tartani 1657 01:06:27,010 --> 01:06:28,070 egészen addig, amíg ez a következő töréspont. 1658 01:06:28,070 --> 01:06:30,111 És akkor is fog menni a következő töréspont. 1659 01:06:30,111 --> 01:06:31,264 1660 01:06:31,264 --> 01:06:32,680 DAVIN: Bármilyen más kérdésre GDB? 1661 01:06:32,680 --> 01:06:33,577 1662 01:06:33,577 --> 01:06:35,410 Szóval azt hiszem, az elmúlt, mi már megkérdezte, hogy mi 1663 01:06:35,410 --> 01:06:37,690 GDB és adjon Például néhány dolgot 1664 01:06:37,690 --> 01:06:40,770 lehet csinálni GDB, így igazi egyszerű, de igen. 1665 01:06:40,770 --> 01:06:42,280 Tessék. 1666 01:06:42,280 --> 01:06:43,250 És csomópontok? 1667 01:06:43,250 --> 01:06:49,571 >> ROB: Igen, igen, melyik irányba volt? 1668 01:06:49,571 --> 01:06:50,851 1669 01:06:50,851 --> 01:06:51,726 DIÁK: Ez volt az. 1670 01:06:51,726 --> 01:06:52,160 DAVIN: Várj. 1671 01:06:52,160 --> 01:06:52,270 ROB: Ez a fickó? 1672 01:06:52,270 --> 01:06:52,936 DAVIN: Ez az egyik. 1673 01:06:52,936 --> 01:06:54,660 ROB: Ez a fickó, ó, nem vettem észre. 1674 01:06:54,660 --> 01:06:56,940 Tehát nem volt egyértelmű hogy mit a-- én nem 1675 01:06:56,940 --> 01:06:58,680 tudom, ki ez, de a kérdés was--. 1676 01:06:58,680 --> 01:07:01,180 Nem tudjuk pontosan, mit arra kérdezett rá, így csak a 1677 01:07:01,180 --> 01:07:04,800 tisztázni valamit. 1678 01:07:04,800 --> 01:07:07,750 Tehát az első, mint már mondtam, typedef te mindig használ csak 1679 01:07:07,750 --> 01:07:09,305 hozzon létre egy becenevet típus. 1680 01:07:09,305 --> 01:07:13,420 Tehát itt, a becenév vagyunk crea- az ilyen típusú struct csomópont. 1681 01:07:13,420 --> 01:07:18,070 >> Tehát az első, figyelmen kívül hagyva ez a csomópont typedef, így ez a struktúra csomópont göndör 1682 01:07:18,070 --> 01:07:21,060 melles le a következő göndör zárójel a struct csomópont típusát. 1683 01:07:21,060 --> 01:07:23,470 És meg kell, hogy a csomópont ott, mert 1684 01:07:23,470 --> 01:07:25,190 kell hivatkozni node itt. 1685 01:07:25,190 --> 01:07:29,380 Tehát ez a fajta rekurzív struct, meg kell adni A struktúra egy nevet, 1686 01:07:29,380 --> 01:07:31,340 vagy mást, amit nem sikerült mondjuk struct csomópont van. 1687 01:07:31,340 --> 01:07:33,340 Míg korábban a diákok amikor mi voltunk gépelt, azt hiszem, 1688 01:07:33,340 --> 01:07:35,423 mi nem kell, hogy mondjam diák ott, mert 1689 01:07:35,423 --> 01:07:40,370 Nem kell, hogy mondjam struktúra diák belül a struct is. 1690 01:07:40,370 --> 01:07:43,730 Tehát a rekurzív hogy kényszerít bennünket, hogy mondjuk csomópontban. 1691 01:07:43,730 --> 01:07:46,610 >> Ez a csomópont csak a név vagyunk amely csomópont a typedef. 1692 01:07:46,610 --> 01:07:48,520 Annak érdekében, hogy csomópont nem ugyanaz, mint a csomópont. 1693 01:07:48,520 --> 01:07:51,567 De ez struct csomópont a ugyanaz, mint a struct csomópont. 1694 01:07:51,567 --> 01:07:54,150 DAVIN: Tehát ha hívod, mint csomópont a fő funkciója, 1695 01:07:54,150 --> 01:07:55,350 akkor nem fog kell mondanom struct csomópont. 1696 01:07:55,350 --> 01:07:58,360 Akkor csak annyit csomópont, mert csomópont egy different-- alapvetően 1697 01:07:58,360 --> 01:07:59,440 azt mondod, OK. 1698 01:07:59,440 --> 01:08:01,490 Ahelyett, hogy hívja struct csomópont a kód, 1699 01:08:01,490 --> 01:08:04,050 Csak azt akarom, hogy nevezze át a csomópont, hogy könnyebb. 1700 01:08:04,050 --> 01:08:06,800 >> ROB: Ha mindig használja typedef, akkor ez a 1701 01:08:06,800 --> 01:08:11,240 az egyetlen hely, fogsz, hogy arra, hogy egy változó struct csomópont 1702 01:08:11,240 --> 01:08:11,740 csillag, igen. 1703 01:08:11,740 --> 01:08:14,650 1704 01:08:14,650 --> 01:08:20,801 >> DAVIN: OK, így az utolsó rész nehéz tanítani because-- 1705 01:08:20,801 --> 01:08:22,185 1706 01:08:22,185 --> 01:08:22,685 ROB: Mi? 1707 01:08:22,685 --> 01:08:24,098 1708 01:08:24,098 --> 01:08:25,649 >> DAVIN: Mert ez kódolási papíron. 1709 01:08:25,649 --> 01:08:28,689 Így minden évben van kód papíron kérdéseket. 1710 01:08:28,689 --> 01:08:32,510 Szóval azt hiszem, tavaly 12 ből 80 pont volt kód papíron. 1711 01:08:32,510 --> 01:08:36,720 Évvel korábban, hogy 10-ből 80, évvel azelőtt, hogy a 20 100, 1712 01:08:36,720 --> 01:08:37,939 így jó néhány ezek közül. 1713 01:08:37,939 --> 01:08:40,970 Szóval megy, hogy képes kódolni ezeket a funkciókat kézzel. 1714 01:08:40,970 --> 01:08:45,340 >> Szóval gondoltam talán megy át pár, és látom, hogy az emberek, 1715 01:08:45,340 --> 01:08:47,340 fajta séta őket lassan az emberek. 1716 01:08:47,340 --> 01:08:48,790 1717 01:08:48,790 --> 01:08:52,420 Így általában, és strlen atoi már nagyon népszerű. 1718 01:08:52,420 --> 01:08:55,670 Tavaly, azt hiszem, volt GetPositiveInt és RandomInt. 1719 01:08:55,670 --> 01:08:58,591 De pow, így erő is egy pozitív is. 1720 01:08:58,591 --> 01:09:00,965 Menjünk át talán egy vagy két ilyen együtt. 1721 01:09:00,965 --> 01:09:02,510 1722 01:09:02,510 --> 01:09:03,729 Mit az emberek látni akarnak? 1723 01:09:03,729 --> 01:09:05,037 1724 01:09:05,037 --> 01:09:05,767 >> STUDENT: atoi. 1725 01:09:05,767 --> 01:09:06,350 Diák: Igen. 1726 01:09:06,350 --> 01:09:06,859 DAVIN: atoi? 1727 01:09:06,859 --> 01:09:07,800 Diák: [hallható]. 1728 01:09:07,800 --> 01:09:09,682 DAVIN: OK, megyek csinálni a táblán. 1729 01:09:09,682 --> 01:09:11,765 Van egy előnyben ha én itt vagy ott? 1730 01:09:11,765 --> 01:09:13,580 1731 01:09:13,580 --> 01:09:14,550 Ott, Gabe azt mondja. 1732 01:09:14,550 --> 01:09:16,729 1733 01:09:16,729 --> 01:09:19,580 >> ROB: És ez általános gondolatok e kódolási kérdéseket. 1734 01:09:19,580 --> 01:09:21,705 Próbálj meg írni valamit. 1735 01:09:21,705 --> 01:09:22,580 Ne hagyja üresen. 1736 01:09:22,580 --> 01:09:23,080 >> DAVIN: Igen. 1737 01:09:23,080 --> 01:09:25,520 ROB: Ha kap a vissza típus helyes, 1738 01:09:25,520 --> 01:09:27,090 vagy talán mi is, hogy ez a te, de ha lehet, például, 1739 01:09:27,090 --> 01:09:30,256 írja az általános funkció aláírás, Ha lehet kapni az alap esetben helyes, 1740 01:09:30,256 --> 01:09:32,244 vagy sarok esetek, vagy emlékezve csekket null, 1741 01:09:32,244 --> 01:09:34,160 amíg van néhány dolgok, akkor talán 1742 01:09:34,160 --> 01:09:35,880 adhat egy pár rámutat a problémára. 1743 01:09:35,880 --> 01:09:36,810 Ne hagyja üresen. 1744 01:09:36,810 --> 01:09:38,560 >> DAVIN: Igen, és ha csak teljesen 1745 01:09:38,560 --> 01:09:40,580 kivágott, hogyan lehet valójában alakulnak kódot. 1746 01:09:40,580 --> 01:09:43,140 Ha írsz pszeudokódja, ez nagyon jó is. 1747 01:09:43,140 --> 01:09:46,390 Szóval, ez olyan, mint, hogy ez a hat pont kérdés, és írsz a helyes pszeudokód, 1748 01:09:46,390 --> 01:09:47,858 kapsz legalább két pont. 1749 01:09:47,858 --> 01:09:49,149 Tehát ne hagyja üresen. 1750 01:09:49,149 --> 01:09:50,279 Próbálj tenni valamit. 1751 01:09:50,279 --> 01:09:51,770 >> ROB: Meg kell a helyes pszeudokódja, mégis. 1752 01:09:51,770 --> 01:09:52,270 >> DAVIN: Igen. 1753 01:09:52,270 --> 01:09:55,381 ROB: Tehát általában kevésbé engedékeny hibákat pszeudokód. 1754 01:09:55,381 --> 01:09:57,130 DAVIN: OK, így srácok látni akarta atoi. 1755 01:09:57,130 --> 01:09:58,480 1756 01:09:58,480 --> 01:10:02,820 OK, így csak really-- így mit akarsz csinálni 1757 01:10:02,820 --> 01:10:04,969 A te leszel adott valamilyen számot. 1758 01:10:04,969 --> 01:10:07,010 De ez a szám nem lesz, int, ugye? 1759 01:10:07,010 --> 01:10:08,574 Milyen érzés lesz? 1760 01:10:08,574 --> 01:10:09,480 >> Diák: [hallható]. 1761 01:10:09,480 --> 01:10:11,146 >> DAVIN: Ez lesz a húr, ugye? 1762 01:10:11,146 --> 01:10:13,160 Tehát, ha kaptak a string-- nézzük say-- 1763 01:10:13,160 --> 01:10:15,228 >> ROB: Kell húzza fel egy szerkesztő? 1764 01:10:15,228 --> 01:10:16,200 Tudom húzni up-- 1765 01:10:16,200 --> 01:10:16,800 >> DAVIN: Ó, akarsz csinálni on-- 1766 01:10:16,800 --> 01:10:17,420 >> ROB: Szeretné, ha a fórumon? 1767 01:10:17,420 --> 01:10:18,800 >> DAVIN: Mit akarsz csinálni? 1768 01:10:18,800 --> 01:10:19,900 Úgy értem, nem akarsz csinálni kézzel? 1769 01:10:19,900 --> 01:10:21,460 Vagy akarsz csinálni számítógéppel? 1770 01:10:21,460 --> 01:10:22,180 >> ROB: Csináld kézzel. 1771 01:10:22,180 --> 01:10:22,805 >> DAVIN: [nevet] 1772 01:10:22,805 --> 01:10:23,950 ROB: Csináld kézzel. 1773 01:10:23,950 --> 01:10:25,469 >> DAVIN: OK, így lesz atoi. 1774 01:10:25,469 --> 01:10:27,760 Tehát mi it-- gondolok, akkor talán hogy ez neked. 1775 01:10:27,760 --> 01:10:29,106 De mit fog ez vissza? 1776 01:10:29,106 --> 01:10:29,452 >> STUDENT: Int. 1777 01:10:29,452 --> 01:10:31,076 >> DAVIN: Meg fog visszatérni int, ugye? 1778 01:10:31,076 --> 01:10:33,772 So-- Én nem akarom, hogy ott. 1779 01:10:33,772 --> 01:10:34,510 Majd én itt. 1780 01:10:34,510 --> 01:10:36,596 >> ROB: Akkor húzza le majd nyomja fel rá. 1781 01:10:36,596 --> 01:10:38,500 1782 01:10:38,500 --> 01:10:40,385 >> DAVIN: igen. 1783 01:10:40,385 --> 01:10:43,880 [Nevet] Játék változás. 1784 01:10:43,880 --> 01:10:50,950 OK, így lesz int atoi, és mi fog ez tartani? 1785 01:10:50,950 --> 01:10:52,180 1786 01:10:52,180 --> 01:10:57,780 A char csillag, így csak a húr, s csillag, ilyesmi. 1787 01:10:57,780 --> 01:10:59,240 >> ROB: Szép csillag, szép. 1788 01:10:59,240 --> 01:11:02,582 1789 01:11:02,582 --> 01:11:04,040 DAVIN: Ez lehet, hogy nem lesz ott, OK. 1790 01:11:04,040 --> 01:11:04,540 ROB: Igen. 1791 01:11:04,540 --> 01:11:06,670 DAVIN: OK, így az első dolog, amit akarok do-- I 1792 01:11:06,670 --> 01:11:08,490 Nem tudom, ha valaki nézett A gyakorlat solutions-- 1793 01:11:08,490 --> 01:11:10,150 de mit akarsz hogy akarok a te 1794 01:11:10,150 --> 01:11:11,570 szeretne majd, hogy a hurok, mert te 1795 01:11:11,570 --> 01:11:14,100 szeretne majd ténylegesen menj végig ezt a fonalat. 1796 01:11:14,100 --> 01:11:18,880 Így helpful-- így mondjuk megyünk a for ciklus, 1797 01:11:18,880 --> 01:11:22,270 és fogunk lépkedni minden eleme a húr. 1798 01:11:22,270 --> 01:11:23,470 Milyen hosszú ez? 1799 01:11:23,470 --> 01:11:26,464 Hányszor megyünk segítségével navigálhat az, hogy hurok? 1800 01:11:26,464 --> 01:11:27,130 Diák: Sterln? 1801 01:11:27,130 --> 01:11:27,963 DAVIN: Sterln, igen. 1802 01:11:27,963 --> 01:11:29,350 1803 01:11:29,350 --> 01:11:41,294 Tehát mondjuk int hossz eléri sterln s. 1804 01:11:41,294 --> 01:11:44,240 1805 01:11:44,240 --> 01:11:48,740 És csak kíváncsi, miért van mindig kedves jobb, hogy ezt külső hurkok? 1806 01:11:48,740 --> 01:11:52,277 Mint, miért jobb, hogy hívja ez a funkció egy cikluson kívül? 1807 01:11:52,277 --> 01:11:53,360 Csak egy gyors józanság ellenőrizni? 1808 01:11:53,360 --> 01:11:55,810 1809 01:11:55,810 --> 01:11:56,311 Igen? 1810 01:11:56,311 --> 01:11:58,268 DIÁK: Szóval nem kell, hogy nézz rá. 1811 01:11:58,268 --> 01:11:59,400 Tudod csak [hallható]. 1812 01:11:59,400 --> 01:12:01,560 >> DAVIN: Pontosan, így igen, pontosan mit mondott. 1813 01:12:01,560 --> 01:12:03,101 Tehát nem kell, hogy nézz rá. 1814 01:12:03,101 --> 01:12:05,690 Így például, ha hívom Ez a funkció a hurok belsejében, 1815 01:12:05,690 --> 01:12:08,050 akkor fogok tartani hívás Ezt a funkciót többször. 1816 01:12:08,050 --> 01:12:10,080 És hogy fog csökkenni hatékonyságát a program. 1817 01:12:10,080 --> 01:12:12,370 Tehát mindig hasznos nyilatkozni kívülre. 1818 01:12:12,370 --> 01:12:14,370 >> ROB: Ez azt mondta, a bármelyik ezeket a problémákat, 1819 01:12:14,370 --> 01:12:17,940 nagyon sokat, amíg kap egy dolgozó megoldás, akkor kap a teljes hitelt. 1820 01:12:17,940 --> 01:12:20,820 Szóval ne aggódj, ha a tervezési teljesen borzasztó. 1821 01:12:20,820 --> 01:12:22,120 1822 01:12:22,120 --> 01:12:25,230 Lehet, hogy nekünk ideges olvasó a kódot. 1823 01:12:25,230 --> 01:12:28,160 De amíg ez működik, kapsz pontokat. 1824 01:12:28,160 --> 01:12:29,302 >> DAVIN: Igen. 1825 01:12:29,302 --> 01:12:31,260 OK, így akkor megyek állapítsa meg néhány változó. 1826 01:12:31,260 --> 01:12:33,900 Ez csak fog hívni int összeg. 1827 01:12:33,900 --> 01:12:37,031 És én fogom be ezt nullával egyenlő, mint ezt. 1828 01:12:37,031 --> 01:12:38,780 És ez csak fog hogy egy helykitöltő. 1829 01:12:38,780 --> 01:12:40,960 Annak érdekében, hogy ez lesz mit fogok visszatérni. 1830 01:12:40,960 --> 01:12:43,730 Szóval megyek végül vissza összege ki ezt a programot. 1831 01:12:43,730 --> 01:12:44,980 Szóval van ez a két változó. 1832 01:12:44,980 --> 01:12:45,563 Van hossz. 1833 01:12:45,563 --> 01:12:46,500 Van összeg. 1834 01:12:46,500 --> 01:12:48,290 És most ugorjunk át a húr. 1835 01:12:48,290 --> 01:12:49,510 >> Így lehetővé teszi, hogy a hurok. 1836 01:12:49,510 --> 01:13:06,520 Tehát négy int I értéke 0 w, míg I-nél kisebb hosszúságú én plus plus. 1837 01:13:06,520 --> 01:13:07,150 És now-- 1838 01:13:07,150 --> 01:13:10,920 1839 01:13:10,920 --> 01:13:11,420 ROB: Szép. 1840 01:13:11,420 --> 01:13:14,030 DAVIN: OK, és most itt jön a hús a kód. 1841 01:13:14,030 --> 01:13:17,380 Így valójában ez alapvetően egy sorban. 1842 01:13:17,380 --> 01:13:20,702 Tehát nincs valaki van egy ötlete hogy mit fogunk csinálni? 1843 01:13:20,702 --> 01:13:23,680 1844 01:13:23,680 --> 01:13:25,380 OK, ez rendben van. 1845 01:13:25,380 --> 01:13:35,860 Ezért csinálunk mondani összeg equals-- hadd rohan ez over-- összeg 1846 01:13:35,860 --> 01:13:50,010 egyenlő összeg 10 alkalommal plus-- vagyunk fog tartani s én mínusz egy 1847 01:13:50,010 --> 01:13:54,787 quote 0 egy idézet tenni, mint ezt. 1848 01:13:54,787 --> 01:13:55,620 ROB: Nagyon intuitív. 1849 01:13:55,620 --> 01:13:56,980 1850 01:13:56,980 --> 01:13:57,880 >> DAVIN: Zúzott azt. 1851 01:13:57,880 --> 01:14:01,438 OK, így someone-- megvan, megvan. 1852 01:14:01,438 --> 01:14:03,680 1853 01:14:03,680 --> 01:14:06,960 OK, így ez egyértelműen megy fel. 1854 01:14:06,960 --> 01:14:08,320 1855 01:14:08,320 --> 01:14:09,450 Mit jelent ez? 1856 01:14:09,450 --> 01:14:12,120 Szóval tudja valaki, hogy mit jelent ez? 1857 01:14:12,120 --> 01:14:13,826 Lehet mindenki látja ezt? 1858 01:14:13,826 --> 01:14:16,088 Nem, senki nem látja ezt, OK. 1859 01:14:16,088 --> 01:14:17,390 1860 01:14:17,390 --> 01:14:18,340 Megyek to-- 1861 01:14:18,340 --> 01:14:20,506 >> ROB: Meg fogom írni a formula csak itt. 1862 01:14:20,506 --> 01:14:23,140 DAVIN: OK, Rob fog csinálni A számítógép, ami szórakoztató. 1863 01:14:23,140 --> 01:14:26,889 1864 01:14:26,889 --> 01:14:27,514 ROB: Istenem. 1865 01:14:27,514 --> 01:14:34,340 1866 01:14:34,340 --> 01:14:35,010 Vagy én nem. 1867 01:14:35,010 --> 01:14:36,288 1868 01:14:36,288 --> 01:14:36,954 DAVIN: Készenlét. 1869 01:14:36,954 --> 01:14:42,300 1870 01:14:42,300 --> 01:14:44,260 Diák: Van egy kérdésem. 1871 01:14:44,260 --> 01:14:45,348 DAVIN: Igen, biztos. 1872 01:14:45,348 --> 01:14:46,223 Diák: [hallható]? 1873 01:14:46,223 --> 01:14:52,529 1874 01:14:52,529 --> 01:14:54,570 DAVIN: OK, így valójában, tetszik, csak általában, 1875 01:14:54,570 --> 01:14:56,710 Ha úgy döntesz, hogy fel, mint például, ebben nyilatkozatban int 1876 01:14:56,710 --> 01:14:59,770 I értéke 0 vessző hossza egyenlő sterln, hogy-- 1877 01:14:59,770 --> 01:15:01,200 >> Diák: [hallható]. 1878 01:15:01,200 --> 01:15:03,585 >> DAVIN: Ez rendben van, mert hogy-- 1879 01:15:03,585 --> 01:15:05,543 DIÁK: Miért te még kell használni hossz? 1880 01:15:05,543 --> 01:15:08,620 Miért ne lehetne csak [hallható] sterln s, mint az egész idő [hallható]? 1881 01:15:08,620 --> 01:15:09,460 >> DAVIN: Mármint itt? 1882 01:15:09,460 --> 01:15:10,001 >> Diák: Igen. 1883 01:15:10,001 --> 01:15:12,630 DAVIN: Mivel minden amikor ez a ciklus fut, 1884 01:15:12,630 --> 01:15:14,295 ez fogja értékelni ezt a feltételt. 1885 01:15:14,295 --> 01:15:14,920 Diák: Igen. 1886 01:15:14,920 --> 01:15:16,836 DAVIN: És ha sterln ott, akkor ez 1887 01:15:16,836 --> 01:15:19,510 lesz, hogy valóban hívja ez a funkció minden egyes alkalommal. 1888 01:15:19,510 --> 01:15:21,090 Tehát ahelyett, hogy csak a összehasonlítva azt egy int, 1889 01:15:21,090 --> 01:15:23,548 fogsz szólítani a funkciót, majd összehasonlítja 1890 01:15:23,548 --> 01:15:24,510 a visszatérési érték. 1891 01:15:24,510 --> 01:15:25,860 Igen, így ez csak, igen. 1892 01:15:25,860 --> 01:15:28,860 1893 01:15:28,860 --> 01:15:30,770 >> Szép, OK, így most már mindenki láthatja. 1894 01:15:30,770 --> 01:15:33,400 Mi does-- ez olyan, mint, ez az. 1895 01:15:33,400 --> 01:15:34,580 Ez a lekvár, itt van. 1896 01:15:34,580 --> 01:15:37,030 1897 01:15:37,030 --> 01:15:37,930 Mit jelent ez? 1898 01:15:37,930 --> 01:15:39,250 1899 01:15:39,250 --> 01:15:39,970 Mit csinálok? 1900 01:15:39,970 --> 01:15:41,890 1901 01:15:41,890 --> 01:15:42,880 Ja, egy ötlet? 1902 01:15:42,880 --> 01:15:43,482 Igen? 1903 01:15:43,482 --> 01:15:45,692 >> Diák: Hát, amikor adsz meg egy tömb, 1904 01:15:45,692 --> 01:15:47,525 fogsz, hogy lesz balról jobbra, 1905 01:15:47,525 --> 01:15:51,786 így leszel megy tizedes származó le a [hallható]. 1906 01:15:51,786 --> 01:15:52,410 DAVIN: Pontosan. 1907 01:15:52,410 --> 01:15:55,063 DIÁK: Tehát mindegyik meg kell szorozni 1908 01:15:55,063 --> 01:15:59,490 amit látott az értéke int által Mire eljut mozgatni, hogy több mint egy. 1909 01:15:59,490 --> 01:16:01,590 >> DAVIN: Tökéletes, tökéletes, így például, hadd 1910 01:16:01,590 --> 01:16:05,376 mondjuk adtam you-- vagyok fog írni ide. 1911 01:16:05,376 --> 01:16:06,480 Nem, nem vagyok. 1912 01:16:06,480 --> 01:16:08,640 Fogok írni ide. 1913 01:16:08,640 --> 01:16:12,080 Tegyük fel, hogy én adtam neked 76, ugye? 1914 01:16:12,080 --> 01:16:13,380 Tegyük fel, hogy kapsz 76. 1915 01:16:13,380 --> 01:16:15,360 Ez egy string kezdeni, OK? 1916 01:16:15,360 --> 01:16:16,840 >> Szóval, hossz, az mi? 1917 01:16:16,840 --> 01:16:18,060 1918 01:16:18,060 --> 01:16:19,060 2, ugye? 1919 01:16:19,060 --> 01:16:20,290 Összeg 0. 1920 01:16:20,290 --> 01:16:21,600 Akkor ugorj be a hurok. 1921 01:16:21,600 --> 01:16:24,187 OK, az első iteráció ez, mi is lesz? 1922 01:16:24,187 --> 01:16:25,270 Ez lesz összeg 0. 1923 01:16:25,270 --> 01:16:27,180 Tehát összefoglalva alkalommal 10 0. 1924 01:16:27,180 --> 01:16:28,500 Ez értelmetlen. 1925 01:16:28,500 --> 01:16:29,880 Akkor mit jelent ez csinálni? 1926 01:16:29,880 --> 01:16:30,845 1927 01:16:30,845 --> 01:16:31,720 Diák: [hallható]. 1928 01:16:31,720 --> 01:16:33,110 1929 01:16:33,110 --> 01:16:37,430 >> DAVIN: Meg fog fordulni, hogy karakter egy egész szám, ugye? 1930 01:16:37,430 --> 01:16:42,160 Ez olyan, mint az Ön probléma set-- ez light-- 1931 01:16:42,160 --> 01:16:44,170 ez olyan, mint a probléma állítva Visioneer. 1932 01:16:44,170 --> 01:16:45,980 Te foglalkozó ASCII értékeket. 1933 01:16:45,980 --> 01:16:48,520 Tehát, ha adok, mint egy hét, de ez a karakter, 1934 01:16:48,520 --> 01:16:50,965 és szeretné tudni, OK, mi az, hogy a számjegy? 1935 01:16:50,965 --> 01:16:53,540 1936 01:16:53,540 --> 01:16:54,910 Igen, lehetett, igen. 1937 01:16:54,910 --> 01:16:55,900 Tehát mi az, hogy a számjegy? 1938 01:16:55,900 --> 01:16:59,550 Lehet kivonni 0. belőle, de kell kivonni 0 a karakter. 1939 01:16:59,550 --> 01:17:01,425 >> És hol néhány ember kap megbotlott fel, ők 1940 01:17:01,425 --> 01:17:04,260 mint, OK, nos, nem tudom, hogy tudja Az ASCII értékei kvíz? 1941 01:17:04,260 --> 01:17:06,218 Nem, biztosan nem kell tudni az ASCII 1942 01:17:06,218 --> 01:17:09,520 értékek, mint a kisbetűs Egy, nagybetűs A, nulla. 1943 01:17:09,520 --> 01:17:12,060 >> ROB: Nincs ok arra, hogy soha hogy ezt a puskát. 1944 01:17:12,060 --> 01:17:14,226 >> DAVIN: Határozottan nem pazarolja a helyet ezzel. 1945 01:17:14,226 --> 01:17:18,090 Akkor csak literally-- helyette mondván, a 48, mint egészen 1946 01:17:18,090 --> 01:17:24,630 van, amely egyenértékű mondván: egy, egy aposztróf, 1947 01:17:24,630 --> 01:17:27,680 mint, hogy pontosan ugyanaz. 1948 01:17:27,680 --> 01:17:34,106 >> ROB: Azt hiszem, szinte róla, mint if-- Istenem, szükségem van a, 1949 01:17:34,106 --> 01:17:37,490 oops-- akkor szinte belegondolok mintha valami ilyesmi hash 1950 01:17:37,490 --> 01:17:39,755 határozza meg 0 48. 1951 01:17:39,755 --> 01:17:41,320 1952 01:17:41,320 --> 01:17:42,030 Ez nem fog működni. 1953 01:17:42,030 --> 01:17:45,502 De gondolj rá, mint egy idézet 0 egy idézet, és az összes karaktert. 1954 01:17:45,502 --> 01:17:47,960 Gondolj rá úgy, mint egy állandó, amely kijelenti, hogy ASCII értéket. 1955 01:17:47,960 --> 01:17:49,080 >> DAVIN: Igen. 1956 01:17:49,080 --> 01:17:52,820 OK, így az első alkalom, így A 76-- így először át, 1957 01:17:52,820 --> 01:17:57,260 ez csak a karakter 7. mínusz a karakter 0, 1958 01:17:57,260 --> 01:18:00,420 és ezek hét integers-- jól, azok 1959 01:18:00,420 --> 01:18:04,030 Hét terek távol minden más az ASCII táblázat vagy bármi. 1960 01:18:04,030 --> 01:18:06,770 Annak érdekében, hogy ez vissza fog térni egy int 7. 1961 01:18:06,770 --> 01:18:08,720 Szóval most, összeg eléri a 7.. 1962 01:18:08,720 --> 01:18:10,830 >> OK, nos, hadd ugrás ebbe a hurok újra. 1963 01:18:10,830 --> 01:18:13,010 OK, most már 10-szer összeg. 1964 01:18:13,010 --> 01:18:15,800 Szóval hatékonyan mozog a 7 balra. 1965 01:18:15,800 --> 01:18:17,542 Van ennek értelme? 1966 01:18:17,542 --> 01:18:19,250 Te hatékonyan mozgatása balra. 1967 01:18:19,250 --> 01:18:21,790 >> És akkor ezt add-- lesz 6 mínusz 0-ra. 1968 01:18:21,790 --> 01:18:22,650 Ez 6. 1969 01:18:22,650 --> 01:18:24,752 Így lesz a 70 plusz 6. 1970 01:18:24,752 --> 01:18:25,996 76., hogy a száma. 1971 01:18:25,996 --> 01:18:28,370 Tehát függetlenül attól, hogy milyen számot Adtam neked, ez csak lassan 1972 01:18:28,370 --> 01:18:31,610 fog váltani a nagyobb érték balra, 1 10-es faktorral 1973 01:18:31,610 --> 01:18:35,525 minden alkalommal az a hurok, majd adja hozzá a szükséges. 1974 01:18:35,525 --> 01:18:37,350 1975 01:18:37,350 --> 01:18:37,865 >> A vissza? 1976 01:18:37,865 --> 01:18:40,240 Diák: Nem kell csinálni bármely ellenőrzi a programban? 1977 01:18:40,240 --> 01:18:41,580 1978 01:18:41,580 --> 01:18:44,302 >> ROB: Tehát amennyire ellenőrzése megy a program, 1979 01:18:44,302 --> 01:18:46,510 mi lenne mondani, nagyon sok mit kell ellenőrizni. 1980 01:18:46,510 --> 01:18:48,670 Ha nem mondom semmit, akkor általában 1981 01:18:48,670 --> 01:18:50,320 Feltételezem, hogy ellenőrizze a legtöbb dolgot. 1982 01:18:50,320 --> 01:18:54,772 Mint te is, csak a biztonság kedvéért, akkor kéne ellenőrizni hé, s null? 1983 01:18:54,772 --> 01:18:56,230 Aztán fogalmam sincs, mi a visszatérésre. 1984 01:18:56,230 --> 01:18:58,814 De azt mondani, ez a fajta dolog. 1985 01:18:58,814 --> 01:18:59,480 0, nem tudom. 1986 01:18:59,480 --> 01:19:02,786 >> DAVIN: És miért akarnál hogy ellenőrizze, ha s értéke nulla? 1987 01:19:02,786 --> 01:19:03,660 Diák: [hallható]. 1988 01:19:03,660 --> 01:19:04,880 DAVIN: Mivel char csillag. 1989 01:19:04,880 --> 01:19:05,510 Ez egy mutató. 1990 01:19:05,510 --> 01:19:09,240 Tehát egy tökéletesen elfogadható nyilatkozat, azt is mondhatnám, OK, 1991 01:19:09,240 --> 01:19:11,917 s értéke null, mert lehet mutató null. 1992 01:19:11,917 --> 01:19:14,250 Tehát, ha van mutatókat a pályát, mint ez, 1993 01:19:14,250 --> 01:19:15,420 akkor valószínűleg ellenőrizni. 1994 01:19:15,420 --> 01:19:18,461 Mert ha nem ellenőrzi ezt, és akkor majd megy be a hurok, 1995 01:19:18,461 --> 01:19:20,100 és te doing-- rohan le. 1996 01:19:20,100 --> 01:19:21,980 1997 01:19:21,980 --> 01:19:22,920 Rohan le. 1998 01:19:22,920 --> 01:19:23,860 >> ROB: Sajnálom, hogy ez az. 1999 01:19:23,860 --> 01:19:25,860 >> DAVIN: És így, mint, ha ez null, és akkor 2000 01:19:25,860 --> 01:19:28,267 Ehhez mi a hiba Ön fog kapni? 2001 01:19:28,267 --> 01:19:29,850 Diák: fogsz kapni egy sor hibát. 2002 01:19:29,850 --> 01:19:31,250 DAVIN: Fogsz beállítása hiba, igaz, mert te 2003 01:19:31,250 --> 01:19:32,616 próbál index a null. 2004 01:19:32,616 --> 01:19:35,240 Szóval megpróbálom index a memóriába, hogy nem saját. 2005 01:19:35,240 --> 01:19:39,550 Tehát ez, ha ez nulla, és ezt megteszi, akkor ciklust. 2006 01:19:39,550 --> 01:19:43,656 >> ROB: Én is úgy gondolom, a vizsgán, ahol mi feltette ezt a kérdést, azt mondjuk nektek, 2007 01:19:43,656 --> 01:19:45,655 hogy ha csak feltételezni ez egy pozitív szám. 2008 01:19:45,655 --> 01:19:48,270 Mivel atoi is várható kezelni a negatív számok, 2009 01:19:48,270 --> 01:19:49,686 így meg kellett volna speciális eset. 2010 01:19:49,686 --> 01:19:53,080 Hé, az első karakter kötőjelet, ebben az esetben, OK, 2011 01:19:53,080 --> 01:19:54,839 most ez egy negatív egész szám. 2012 01:19:54,839 --> 01:19:56,380 Azt fogja mondani, ezek a dolgot. 2013 01:19:56,380 --> 01:19:58,005 Azt fogja mondani, hogy mit kell kezelni. 2014 01:19:58,005 --> 01:19:59,310 DAVIN: Igen. 2015 01:19:59,310 --> 01:20:02,530 Szóval biztos vagyok benne, egyesek have-- Ha elkezdtem keresgélni a régi vizsgák, 2016 01:20:02,530 --> 01:20:03,900 láttad sterln. 2017 01:20:03,900 --> 01:20:05,120 Ez egy népszerű ember. 2018 01:20:05,120 --> 01:20:09,790 És azt hiszem, sterln, meg kellett Ehhez csekket null, a visszatérés 2019 01:20:09,790 --> 01:20:10,950 0 vagy valami ilyesmi. 2020 01:20:10,950 --> 01:20:11,940 Mint, meg kellett, hogy ellenőrizze a null. 2021 01:20:11,940 --> 01:20:14,230 És ha nem, hogy pont volt ki a kvízt. 2022 01:20:14,230 --> 01:20:16,750 2023 01:20:16,750 --> 01:20:19,500 Mindegy, nem mindenki úgy érzi, rendben atoi? 2024 01:20:19,500 --> 01:20:21,112 2025 01:20:21,112 --> 01:20:22,820 Van valaki akar megy át alkatrészeket újra? 2026 01:20:22,820 --> 01:20:23,815 2027 01:20:23,815 --> 01:20:25,565 ROB: Ó, igen, azt hiszem, azt is megmondja, hogy 2028 01:20:25,565 --> 01:20:28,565 Feltételezhetjük, hogy minden ez-- hogy ők valójában szám bevitele, 2029 01:20:28,565 --> 01:20:32,821 hogy nem kell aggódnia, mint, hogy a levelek a húr, így. 2030 01:20:32,821 --> 01:20:33,320 DAVIN: Igen. 2031 01:20:33,320 --> 01:20:33,922 Igen? 2032 01:20:33,922 --> 01:20:35,713 DIÁK: Tud megy több mint egy több, amikor 2033 01:20:35,713 --> 01:20:37,860 használja idézőjel és aposztróf? 2034 01:20:37,860 --> 01:20:41,290 >> DAVIN: Persze, így idézőjelek, nagyon egyszerűen dupla idézőjelek füzér. 2035 01:20:41,290 --> 01:20:43,370 Tehát, ha idézőjel semmit, ez egy húr. 2036 01:20:43,370 --> 01:20:48,270 Szóval, mint, ha már ez a 0 itt, és én ezt, hogy egy húr. 2037 01:20:48,270 --> 01:20:50,060 Ez már nem egy karaktert. 2038 01:20:50,060 --> 01:20:54,816 Szóval nem találom ezt az értéket az én ASCII chart, mert egy sor, igen. 2039 01:20:54,816 --> 01:20:57,770 2040 01:20:57,770 --> 01:20:59,480 >> OK, bármilyen egyéb kérdése? 2041 01:20:59,480 --> 01:21:00,405 Igen? 2042 01:21:00,405 --> 01:21:02,345 >> DIÁK: Tehát neked van már választ adott erre, 2043 01:21:02,345 --> 01:21:05,255 de mint, mikor vagyunk valójában írásban ezt a kvízt, 2044 01:21:05,255 --> 01:21:08,165 nem szeretné, hogy írjon vágás nullák [hallható]? 2045 01:21:08,165 --> 01:21:11,041 2046 01:21:11,041 --> 01:21:11,540 DAVIN: Nem. 2047 01:21:11,540 --> 01:21:13,800 A kérdés az volt, kéne hogy egy perjel a nulla 2048 01:21:13,800 --> 01:21:14,890 jelzi, ha ők nullák? 2049 01:21:14,890 --> 01:21:15,890 Nem fogjuk kitalálni. 2050 01:21:15,890 --> 01:21:16,940 2051 01:21:16,940 --> 01:21:19,530 Igen, köszönöm, ők jó. 2052 01:21:19,530 --> 01:21:20,860 OK, valami mást? 2053 01:21:20,860 --> 01:21:25,060 Van valaki akar to-- ezért úgy gondolom, mi már fut egy kis idővel. 2054 01:21:25,060 --> 01:21:27,305 Szeretné, hogy egy másik ember, vagy? 2055 01:21:27,305 --> 01:21:28,096 STUDENT: RandomInt. 2056 01:21:28,096 --> 01:21:29,230 2057 01:21:29,230 --> 01:21:30,750 >> DAVIN: RandomInt, OK, pontosan. 2058 01:21:30,750 --> 01:21:32,975 Tehát lássuk RandomInt. 2059 01:21:32,975 --> 01:21:34,395 2060 01:21:34,395 --> 01:21:35,270 Én megteszem itt. 2061 01:21:35,270 --> 01:21:36,770 2062 01:21:36,770 --> 01:21:39,210 Tehát RandomInt valójában sokkal egyszerűbb. 2063 01:21:39,210 --> 01:21:43,578 Azt hiszem, atoi talán a legnehezebb egy hogy már kérte a korábbi években. 2064 01:21:43,578 --> 01:21:44,453 Diák: [hallható]. 2065 01:21:44,453 --> 01:21:46,660 2066 01:21:46,660 --> 01:21:47,161 >> DAVIN: Mi? 2067 01:21:47,161 --> 01:21:49,493 ROB: látok, ha ez a fajta A megtekinthető itt. 2068 01:21:49,493 --> 01:21:50,040 DAVIN: Vajon? 2069 01:21:50,040 --> 01:21:52,500 ROB: Én nem hiszem, hogy ez azt hiszem going-- ez fog futni ki a jobb. 2070 01:21:52,500 --> 01:21:53,791 DAVIN: OK, úgyhogy én megteszem ezt. 2071 01:21:53,791 --> 01:21:56,250 És akkor te csak tedd a képernyőn. 2072 01:21:56,250 --> 01:21:57,150 >> ROB: Rendben. 2073 01:21:57,150 --> 01:21:58,190 >> DAVIN: Azt akarod, hogy én írástudó? 2074 01:21:58,190 --> 01:21:58,600 >> ROB: Igen. 2075 01:21:58,600 --> 01:21:59,100 >> DAVIN: Szép. 2076 01:21:59,100 --> 01:22:01,210 2077 01:22:01,210 --> 01:22:02,727 OK, tudom törölni ezt? 2078 01:22:02,727 --> 01:22:04,188 >> Diák: Igen. 2079 01:22:04,188 --> 01:22:05,162 >> DAVIN: Ez annyira nehéz. 2080 01:22:05,162 --> 01:22:10,032 2081 01:22:10,032 --> 01:22:12,062 (Ének) csinálja mit csinálsz. 2082 01:22:12,062 --> 01:22:14,454 És mit csinál, ha nem. 2083 01:22:14,454 --> 01:22:14,954 Rendben van. 2084 01:22:14,954 --> 01:22:19,790 2085 01:22:19,790 --> 01:22:22,930 >> OK, ha jól emlékszem, a a teszt a RandomInt volt, mint, 2086 01:22:22,930 --> 01:22:26,190 OK, fogok adni a két számokat, mint egy a és a b. 2087 01:22:26,190 --> 01:22:30,380 És azt akarom, hogy adjon nekem egy RandomInt között ezek a számok. 2088 01:22:30,380 --> 01:22:33,440 Így RandomInt megy hogy két numbers-- 2089 01:22:33,440 --> 01:22:41,690 így RandomInt-- és ez fog visszatérni egy int. 2090 01:22:41,690 --> 01:22:42,930 >> Szóval mi a visszatérési érték? 2091 01:22:42,930 --> 01:22:44,151 Most mondtam. 2092 01:22:44,151 --> 01:22:44,650 Int, ugye? 2093 01:22:44,650 --> 01:22:46,400 2094 01:22:46,400 --> 01:22:49,260 Mint ez, és akkor itt megy, hogy két ints. 2095 01:22:49,260 --> 01:22:56,301 Így fog tartani int a és b int, ilyesmi. 2096 01:22:56,301 --> 01:22:58,217 Tehát mi is RandomInt eredménye, hogy ez lesz 2097 01:22:58,217 --> 01:23:02,440 vissza néhány véletlenszerű érték A két érték között. 2098 01:23:02,440 --> 01:23:05,140 Szóval ez lesz a nagyobb mint a kevesebb, mint b. 2099 01:23:05,140 --> 01:23:09,020 Szóval azt hiszem, talán feltételezhetjük, hogy Egy pont a kisebb a két érték. 2100 01:23:09,020 --> 01:23:12,210 Tehát, ha van dolgunk véletlenszerű, hogy milyen funkciót 2101 01:23:12,210 --> 01:23:14,825 láttunk, hogy a ad random dolgokat? 2102 01:23:14,825 --> 01:23:15,450 STUDENT: Drand. 2103 01:23:15,450 --> 01:23:16,506 DAVIN: Drand, pontosan. 2104 01:23:16,506 --> 01:23:18,630 Szóval lesz valószínűleg szeretné használni a drand. 2105 01:23:18,630 --> 01:23:19,940 2106 01:23:19,940 --> 01:23:29,160 Szóval lehet mondani int véletlen, és mi Csak azt mondják, hogy értéke 0 most. 2107 01:23:29,160 --> 01:23:30,170 2108 01:23:30,170 --> 01:23:38,690 És ők fogunk mondani, OK, random egyenlő drand 48. 2109 01:23:38,690 --> 01:23:39,747 2110 01:23:39,747 --> 01:23:40,830 És mit jelent ez vissza? 2111 01:23:40,830 --> 01:23:43,742 Mit jelent ez a funkciót adni? 2112 01:23:43,742 --> 01:23:45,610 >> Diák: 0 és 1. 2113 01:23:45,610 --> 01:23:47,870 >> DAVIN: Igen, 0 és 1 között. 2114 01:23:47,870 --> 01:23:48,890 Így fog be-- 2115 01:23:48,890 --> 01:23:51,070 >> ROB: És azt hiszem ez-- mi lenne mondani. 2116 01:23:51,070 --> 01:23:52,670 Mint használhatja drand 48. 2117 01:23:52,670 --> 01:23:54,350 Ezt úgy ellenőrizheti a múlt vizsga. 2118 01:23:54,350 --> 01:23:56,720 De azt mondod, hogy talán Használhatja drand 48, amely 2119 01:23:56,720 --> 01:23:58,790 visszaad egy úszó 0 és 1 közötti. 2120 01:23:58,790 --> 01:24:00,830 >> DAVIN: Igen, igen, én vagyok benne a vizsgán 2121 01:24:00,830 --> 01:24:03,860 azt mondja, valószínűleg szeretné használni drand, igen. 2122 01:24:03,860 --> 01:24:07,041 Szóval ez fog visszatérni bizonyos érték 0 és 1 között. 2123 01:24:07,041 --> 01:24:08,790 És akkor te mi vagy szeretne majd csinálni? 2124 01:24:08,790 --> 01:24:16,360 Nos, azt szeretnénk, hogy sokszorozza meg by-- várj, azt hiszem, ez olyan, mint ez, sajnálom. 2125 01:24:16,360 --> 01:24:18,018 Én csak ezt. 2126 01:24:18,018 --> 01:24:19,410 Nem tudom. 2127 01:24:19,410 --> 01:24:22,240 >> Így b mínusz. 2128 01:24:22,240 --> 01:24:23,310 2129 01:24:23,310 --> 01:24:24,490 Akkor miért b mínusz? 2130 01:24:24,490 --> 01:24:26,110 2131 01:24:26,110 --> 01:24:30,490 Tehát mondjuk drand ad vissza egy int-- OK, én csak a többit, 2132 01:24:30,490 --> 01:24:33,380 így plusz egy. 2133 01:24:33,380 --> 01:24:36,130 Tehát mi does-- y b mínusz egy. 2134 01:24:36,130 --> 01:24:40,670 Tehát mondjuk, hogy drand ad vissza a maximális érték, esetleg 2135 01:24:40,670 --> 01:24:41,410 kapsz. 2136 01:24:41,410 --> 01:24:42,409 Mi az, hogy lesz? 2137 01:24:42,409 --> 01:24:43,010 STUDENT: 1. 2138 01:24:43,010 --> 01:24:44,430 >> DAVIN: 1, ugye? 2139 01:24:44,430 --> 01:24:47,880 Szóval, ha ez az 1., és te szorzással b mínusz egy, 2140 01:24:47,880 --> 01:24:50,110 nos, ez csak a közötti különbség mínusz A. 2141 01:24:50,110 --> 01:24:52,870 És ha majd adjunk hozzá, hogy a vissza rá egy, ez az, amit? 2142 01:24:52,870 --> 01:24:54,290 2143 01:24:54,290 --> 01:24:55,180 Ez alapvetően b. 2144 01:24:55,180 --> 01:24:56,435 2145 01:24:56,435 --> 01:24:57,310 Van ennek értelme? 2146 01:24:57,310 --> 01:24:57,851 >> Diák: Igen. 2147 01:24:57,851 --> 01:24:59,480 2148 01:24:59,480 --> 01:25:02,170 >> DAVIN: Szóval, ha ez a maximum érték, esetleg lehet, 2149 01:25:02,170 --> 01:25:03,175 ez lesz az 1.. 2150 01:25:03,175 --> 01:25:04,122 2151 01:25:04,122 --> 01:25:06,330 És akkor ez még csak a különbség a kettő között. 2152 01:25:06,330 --> 01:25:11,410 Hozzáadása egy, így ez fog visszatérni véletlen. 2153 01:25:11,410 --> 01:25:15,000 2154 01:25:15,000 --> 01:25:18,620 És a sarokban esetben, drand ad vissza 1, 2155 01:25:18,620 --> 01:25:20,970 véletlen majd csak a ténylegesen b. 2156 01:25:20,970 --> 01:25:22,700 De ez a maximum lehet. 2157 01:25:22,700 --> 01:25:27,420 Tehát, ha ez kevesebb lesz, mint a hogy így mondjuk, hogy ez olyan, mint 0,9, 2158 01:25:27,420 --> 01:25:31,080 így akkor 0,9-szer b mínusz egy lesz kevésbé 2159 01:25:31,080 --> 01:25:33,230 mint a különbség mínusz a b. 2160 01:25:33,230 --> 01:25:35,830 >> És akkor, ha hozzáteszem, hogy be egy, akkor ez az érték 2161 01:25:35,830 --> 01:25:38,986 lesz nagyobb, mint egy, mert te hozzá valamit rá, 2162 01:25:38,986 --> 01:25:40,360 de ez kevesebb lesz, mint a b. 2163 01:25:40,360 --> 01:25:41,430 2164 01:25:41,430 --> 01:25:44,420 Szóval megy, hogy a véletlen szám, mert hívsz drand. 2165 01:25:44,420 --> 01:25:48,000 És ez rand, hogy véletlen szám lesz valahol a kettő között a 2166 01:25:48,000 --> 01:25:49,342 és b. 2167 01:25:49,342 --> 01:25:50,780 Van ennek értelme? 2168 01:25:50,780 --> 01:25:52,990 >> ROB: Csak tedd a konkrét számokat, így 2169 01:25:52,990 --> 01:25:55,450 mondjuk szeretnénk felvenni a véletlen szám 7 és 10 közötti. 2170 01:25:55,450 --> 01:25:56,960 Így b mínusz egy a kínálatunkban. 2171 01:25:56,960 --> 01:26:00,150 Így van egy sor három számokat akarunk választani. 2172 01:26:00,150 --> 01:26:03,290 És akkor szorozni hogy 0 és 1 1, 2173 01:26:03,290 --> 01:26:07,430 ha ez akkor ad nekünk some-- mondjuk, hogy ad 1.5. 2174 01:26:07,430 --> 01:26:10,670 >> Ezután 1,5, szeretnénk menni 7 és 10. 2175 01:26:10,670 --> 01:26:14,470 Így 1,5 és 7 bennünket vissza a 7 és 10 tartományban. 2176 01:26:14,470 --> 01:26:17,580 És akkor mi tárolás belsejében egy egész szám, így csonkítva le 8. 2177 01:26:17,580 --> 01:26:18,790 És akkor már csak vissza, hogy a. 2178 01:26:18,790 --> 01:26:21,310 Így b mínusz egy a kínálatunkban. 2179 01:26:21,310 --> 01:26:25,770 Egy tolódik fel a számokat hogy akarunk e tartományon belül. 2180 01:26:25,770 --> 01:26:30,540 Így 7 és 10 közötti, és aztán visszatérhet, amit a végén. 2181 01:26:30,540 --> 01:26:32,684 >> DAVIN: Igen, szép. 2182 01:26:32,684 --> 01:26:34,470 >> ROB: Köszönöm. 2183 01:26:34,470 --> 01:26:35,628 >> DAVIN: Igen, mi a helyzet? 2184 01:26:35,628 --> 01:26:39,746 >> Tanítvány: rohanunk, hogy bármilyen ASCII hibák we're-- ha drand van 2185 01:26:39,746 --> 01:26:40,996 vissza a float [hallható]. 2186 01:26:40,996 --> 01:26:42,470 2187 01:26:42,470 --> 01:26:45,360 >> ROB: Szóval, mint Rob azt mondta, mert véletlen nem int, 2188 01:26:45,360 --> 01:26:47,080 így drand lesz úszó. 2189 01:26:47,080 --> 01:26:48,470 Így aztán megsokszorozza ki. 2190 01:26:48,470 --> 01:26:50,507 És lehet, hogy néhány fajta úszó számok. 2191 01:26:50,507 --> 01:26:51,840 És akkor ez meg fog vágjon. 2192 01:26:51,840 --> 01:26:52,339 >> STUDENT: OK. 2193 01:26:52,339 --> 01:26:53,019 DAVIN: Igen. 2194 01:26:53,019 --> 01:26:56,060 ROB: És ha a fordító volt, hogy figyelmeztesse Önt, mint veszteség pontosság, 2195 01:26:56,060 --> 01:26:58,986 csak dobott egy int ott, és akkor jó. 2196 01:26:58,986 --> 01:27:00,398 2197 01:27:00,398 --> 01:27:00,898 DAVIN: Igen? 2198 01:27:00,898 --> 01:27:02,332 2199 01:27:02,332 --> 01:27:04,722 >> Diák: lenne-e a azonos valószínűséggel szerzés, 2200 01:27:04,722 --> 01:27:06,156 mint b vagy a [hallható]? 2201 01:27:06,156 --> 01:27:08,080 2202 01:27:08,080 --> 01:27:10,980 >> ROB: Szóval ez-- vagyok valójában wondering-- az RandomInt feltételezett 2203 01:27:10,980 --> 01:27:14,362 hogy egy szám a kevesebb, mint b? 2204 01:27:14,362 --> 01:27:16,820 Mint, ha ez a 7 és 10, mik a lehetőségek? 2205 01:27:16,820 --> 01:27:18,454 7., 8., és 9., vagy 7, 8, 9, 10? 2206 01:27:18,454 --> 01:27:19,120 DAVIN: elfelejtem. 2207 01:27:19,120 --> 01:27:19,880 A probléma set-- 2208 01:27:19,880 --> 01:27:20,570 >> ROB: Azt hiszem, a 7., 8., 9.. 2209 01:27:20,570 --> 01:27:22,785 >> DAVIN: Ez konkrétan azt mondja, az ember befogadó és egy exkluzív. 2210 01:27:22,785 --> 01:27:23,110 >> ROB: Igen. 2211 01:27:23,110 --> 01:27:23,670 >> DAVIN: De én vagyok nem-- nem-- 2212 01:27:23,670 --> 01:27:25,878 >> ROB: Szóval azt hiszem, ezek nem szerepel, ebben az esetben, 2213 01:27:25,878 --> 01:27:28,152 van egy egyenlő valószínűsége 7., 8., és 9.. 2214 01:27:28,152 --> 01:27:29,360 Nincs valószínűsége 10. 2215 01:27:29,360 --> 01:27:31,770 2216 01:27:31,770 --> 01:27:32,270 DAVIN: Igen? 2217 01:27:32,270 --> 01:27:33,395 Diák: Van egy kérdésem. 2218 01:27:33,395 --> 01:27:38,090 Azt akarjuk, hogy határozza meg a függvény vissza nem egyetlen érték, hanem egy tömb. 2219 01:27:38,090 --> 01:27:41,020 Akkor mi lenne a szintaxis után vissza? 2220 01:27:41,020 --> 01:27:44,604 >> DAVIN: OK, így akkor would-- után visszatérés? 2221 01:27:44,604 --> 01:27:47,020 Tehát mondjuk nyilvánította tömb valahol odafent. 2222 01:27:47,020 --> 01:27:49,708 Akkor is csak vissza a tömb nevét. 2223 01:27:49,708 --> 01:27:50,676 >> Diák: OK, köszönöm. 2224 01:27:50,676 --> 01:27:51,718 Akkor csak vissza az a-- 2225 01:27:51,718 --> 01:27:52,759 DAVIN: Ó, várj, annyira sajnálom. 2226 01:27:52,759 --> 01:27:54,620 A kérdés az volt, hogy Mit tömböt ad vissza. 2227 01:27:54,620 --> 01:27:56,170 >> ROB: Bár nem tudta kell egy tömb nyilvánítani 2228 01:27:56,170 --> 01:27:57,260 a verem, vagy ilyesmi. 2229 01:27:57,260 --> 01:27:59,510 Úgy kellene, hogy legyen valami malloced, mert malloc 2230 01:27:59,510 --> 01:28:01,610 az, hogy hogyan lehet megkerülni automatikus memória kiosztás. 2231 01:28:01,610 --> 01:28:02,109 >> DAVIN: Igen. 2232 01:28:02,109 --> 01:28:03,433 2233 01:28:03,433 --> 01:28:04,933 ROB: Hogyan kap körül helyi körét. 2234 01:28:04,933 --> 01:28:09,670 2235 01:28:09,670 --> 01:28:11,550 >> DAVIN: de azt csak vissza a name-- 2236 01:28:11,550 --> 01:28:17,890 >> Diák: [hallható] ez nem egy érték, például, két szám, így 2237 01:28:17,890 --> 01:28:18,390 [Hallható]. 2238 01:28:18,390 --> 01:28:19,590 >> DAVIN: nem lehet visszatérni a több szám. 2239 01:28:19,590 --> 01:28:20,850 Nem lehet, mint, return-- 2240 01:28:20,850 --> 01:28:23,630 >> Diák: beszéltem visszatérő tömb vagy valami ilyesmi. 2241 01:28:23,630 --> 01:28:26,050 >> DAVIN: Igen, így az a kérdés, tudok vissza több értéket. 2242 01:28:26,050 --> 01:28:27,460 Nem lehet visszatérni több értéket. 2243 01:28:27,460 --> 01:28:30,270 Nem lehet, mint, majd vissza vissza b vagy valami ilyesmi. 2244 01:28:30,270 --> 01:28:32,710 Mert miután visszatér, akkor vissza ki a funkciót. 2245 01:28:32,710 --> 01:28:35,790 És akkor a függvény történik, és mint Rob azt mondta, a verem. 2246 01:28:35,790 --> 01:28:38,260 >> Tehát minden, ami a memória egyre csak visszatért a számítógéphez. 2247 01:28:38,260 --> 01:28:40,025 Mindent elfelejtett lesz, alapvetően. 2248 01:28:40,025 --> 01:28:41,480 2249 01:28:41,480 --> 01:28:44,430 Tehát, ha vissza akar térni a több értékeket, akkor vissza kell térnie egy tömb, 2250 01:28:44,430 --> 01:28:45,971 És ahogy ezt ez mallocing. 2251 01:28:45,971 --> 01:28:48,780 És akkor vissza fog térni x ilyesmi. 2252 01:28:48,780 --> 01:28:50,280 Alapvetően, ha csak vissza a nevét. 2253 01:28:50,280 --> 01:28:51,620 És ha visszatér valami ilyesmi, akkor 2254 01:28:51,620 --> 01:28:53,200 valójában nem vissza az értéket. 2255 01:28:53,200 --> 01:28:55,430 >> Tehát mondjuk a tárolt Az értékeket egy tömbben. 2256 01:28:55,430 --> 01:28:57,910 Te valójában nem visszatérő ezeket az értékeket. 2257 01:28:57,910 --> 01:29:01,515 Mint, ha én vissza int, én vagyok tényleg visszatérő példányban az értékeket. 2258 01:29:01,515 --> 01:29:02,017 2259 01:29:02,017 --> 01:29:03,850 De ha én is vissza valami, mint ez, 2260 01:29:03,850 --> 01:29:06,450 Én visszatérő hivatkozás hogy ezeket az értékeket. 2261 01:29:06,450 --> 01:29:09,090 Szóval visszatérve, alapvetően a memóriacím az értékeket. 2262 01:29:09,090 --> 01:29:10,079 Van ennek értelme? 2263 01:29:10,079 --> 01:29:10,620 Diák: Igen. 2264 01:29:10,620 --> 01:29:11,120 DAVIN: Szép. 2265 01:29:11,120 --> 01:29:12,760 2266 01:29:12,760 --> 01:29:13,410 Igen? 2267 01:29:13,410 --> 01:29:15,430 >> DIÁK: Ha a drand ide, 2268 01:29:15,430 --> 01:29:17,660 Mit kell tenni srand előtt? 2269 01:29:17,660 --> 01:29:20,320 >> DAVIN: Nem, nem, én nem hiszem. 2270 01:29:20,320 --> 01:29:23,040 >> ROB: Igen, így van- mondani semmit srand? 2271 01:29:23,040 --> 01:29:26,900 Az alapértelmezett soha nem mondja srand egyáltalán az, hogy csak nem srand nulla. 2272 01:29:26,900 --> 01:29:29,350 Így drand saját akaratát munkáját. 2273 01:29:29,350 --> 01:29:33,759 És ez automatikusan a vetőmag az aktuális idő, amit használ. 2274 01:29:33,759 --> 01:29:35,175 2275 01:29:35,175 --> 01:29:35,675 DAVIN: Igen? 2276 01:29:35,675 --> 01:29:40,950 Tanítvány: [hallható] a számok? 2277 01:29:40,950 --> 01:29:42,570 DAVIN: Igen, akkor. 2278 01:29:42,570 --> 01:29:46,770 DIÁK: így lehet mondani, mint, 4-szer 2. 2279 01:29:46,770 --> 01:29:50,280 Az a helyzet, akkor nem vállal akkor egy int négy bájt. 2280 01:29:50,280 --> 01:29:51,020 A only-- 2281 01:29:51,020 --> 01:29:53,830 >> DAVIN: Úgy értem, hogy a teszt csak tudsz. 2282 01:29:53,830 --> 01:29:54,830 [Nevet] 2283 01:29:54,830 --> 01:29:55,780 >> ROB: Mm, nem. 2284 01:29:55,780 --> 01:29:56,780 DAVIN: Igen, igen, igen. 2285 01:29:56,780 --> 01:30:00,197 Ha kérdezni, hogy milyen nagy is int, akkor nem lehet, mint négy vagy nyolc. 2286 01:30:00,197 --> 01:30:02,030 ROB: Ó, így ha a kérdés kifejezetten, 2287 01:30:02,030 --> 01:30:04,857 mint például, ha ez egy kódolási probléma, meg kell mondani méretű int. 2288 01:30:04,857 --> 01:30:06,690 Ha ez egy táblázat, vagy azt mondja, hogy hány bájt, 2289 01:30:06,690 --> 01:30:08,808 ne töltse ki méretének ints. 2290 01:30:08,808 --> 01:30:11,278 >> DIÁKOK: [nevet] 2291 01:30:11,278 --> 01:30:18,210 2292 01:30:18,210 --> 01:30:20,580 >> DAVIN: Jobb, vajon miért mérete int fontos itt? 2293 01:30:20,580 --> 01:30:23,085 Szóval, mint, ha mi megyünk a 32 bites processzor, vagy valami ilyesmi, 2294 01:30:23,085 --> 01:30:24,300 akkor lesz négy bájt. 2295 01:30:24,300 --> 01:30:26,342 De a néhány újabb dolog, lehet, hogy mi? 2296 01:30:26,342 --> 01:30:27,383 Ez lehet nyolc, ugye? 2297 01:30:27,383 --> 01:30:30,550 Tehát, ha csak this-- kemény kód négy, majd néhány gép, működni fog. 2298 01:30:30,550 --> 01:30:32,180 Egyes gépek, nem fog működni. 2299 01:30:32,180 --> 01:30:35,270 De ha a teszt vagyunk mint mekkora egy int? 2300 01:30:35,270 --> 01:30:35,770 Tedd a négy. 2301 01:30:35,770 --> 01:30:38,710 2302 01:30:38,710 --> 01:30:39,210 ROB: Így van. 2303 01:30:39,210 --> 01:30:39,790 DAVIN: Igen? 2304 01:30:39,790 --> 01:30:43,192 Diák: Így, mivel mi nyilvánításáról [Hallható] egy függvényen belül, 2305 01:30:43,192 --> 01:30:45,622 kellene tenni, hogy a 3 belső funkció? 2306 01:30:45,622 --> 01:30:46,907 Vagy tudjuk használni ezen kívül? 2307 01:30:46,907 --> 01:30:48,740 DAVIN: Használhatja kívül ezt a funkciót. 2308 01:30:48,740 --> 01:30:49,890 Szóval ő kér ingyen. 2309 01:30:49,890 --> 01:30:51,700 >> Diák: Lose pálya hol [hallható]. 2310 01:30:51,700 --> 01:30:54,720 >> ROB: Ó, az nem szabad happen-- ez is része a varázsa malloc 2311 01:30:54,720 --> 01:30:57,220 az, hogy te nem korlátozott helyi hatályát. 2312 01:30:57,220 --> 01:31:00,700 Önnek teljes mértékben ellenőrzése alatt milyen hosszú a változók él. 2313 01:31:00,700 --> 01:31:05,380 Így hívjuk malloc itt, talán egy teljesen külön funkció. 2314 01:31:05,380 --> 01:31:08,670 Lehet, hogy 10 óra múlva hogy végre hívás ingyenes. 2315 01:31:08,670 --> 01:31:11,764 >> DAVIN: Így például, mint egy pár hét múlva, amikor végre 2316 01:31:11,764 --> 01:31:13,680 nem a szótár helyesírás psets, mész 2317 01:31:13,680 --> 01:31:16,410 hogy néhány funkciót, amely teremt tonna csomópontok. 2318 01:31:16,410 --> 01:31:18,630 Szóval mallocing tonna A csomópontok ebben a funkcióban. 2319 01:31:18,630 --> 01:31:20,670 Aztán később a külön funkció, te 2320 01:31:20,670 --> 01:31:22,440 szeretne majd felszabadítani valamennyi csomópont. 2321 01:31:22,440 --> 01:31:25,740 Így szó szerint csak át szabad a mutató, így a memória cím 2322 01:31:25,740 --> 01:31:26,684 hogy mit malloced. 2323 01:31:26,684 --> 01:31:27,600 És ez rendben lesz. 2324 01:31:27,600 --> 01:31:29,725 Nem kell a szabad, hasonlók, ugyanazt a funkciót. 2325 01:31:29,725 --> 01:31:30,449 Igen? 2326 01:31:30,449 --> 01:31:36,197 >> DIÁK: Tehát a malloc változó [hallható] kívül? 2327 01:31:36,197 --> 01:31:37,384 Ez az, amit mondasz? 2328 01:31:37,384 --> 01:31:38,300 DAVIN: Várj, azt mondják, hogy? 2329 01:31:38,300 --> 01:31:38,800 Bocsánat. 2330 01:31:38,800 --> 01:31:42,300 >> Diák: Ha a malloc változó lehet szabadon bárhol a kódot, 2331 01:31:42,300 --> 01:31:44,800 akkor lehet őket elérhetők bárhol a kódot? 2332 01:31:44,800 --> 01:31:45,800 Meg tudja tartani azokat a helyi? 2333 01:31:45,800 --> 01:31:47,880 >> DAVIN: Ó, azt kérdezte, mint a változó, like-- 2334 01:31:47,880 --> 01:31:51,300 2335 01:31:51,300 --> 01:31:55,510 >> ROB: Szóval még mindig szükség van, hogy van valamilyen referencia 2336 01:31:55,510 --> 01:31:57,220 A malloc blokk memória. 2337 01:31:57,220 --> 01:31:58,540 Tehát itt, mi visszatérő x. 2338 01:31:58,540 --> 01:31:59,040 STUDENT: Oh. 2339 01:31:59,040 --> 01:32:01,920 ROB: Ha nem vissza x itt, és ez még csak semmis, 2340 01:32:01,920 --> 01:32:04,550 akkor nem lenne hozzáférése a mutató, amit malloced, 2341 01:32:04,550 --> 01:32:05,920 és ez kiszivárgott memória. 2342 01:32:05,920 --> 01:32:06,690 >> STUDENT: OK. 2343 01:32:06,690 --> 01:32:10,010 >> DAVIN: Szóval, mint, mondjuk, ezt, mint itt. 2344 01:32:10,010 --> 01:32:10,510 ROB: Nem. 2345 01:32:10,510 --> 01:32:13,430 DAVIN: Az én fő funkciója, nem tudom csak hívja ezt x, és, mint, OK, 2346 01:32:13,430 --> 01:32:14,645 ebben a funkcióban, tettem ezt. 2347 01:32:14,645 --> 01:32:14,960 >> ROB: Így van. 2348 01:32:14,960 --> 01:32:17,790 >> DAVIN: Így fogok hívni x, mint fő, vagy valami ilyesmi. 2349 01:32:17,790 --> 01:32:18,540 Ezt nem tehetem. 2350 01:32:18,540 --> 01:32:19,600 Fogsz vissza valamit. 2351 01:32:19,600 --> 01:32:21,000 De mit fog visszatérni? 2352 01:32:21,000 --> 01:32:22,130 Fogsz visszatérni a memória cím. 2353 01:32:22,130 --> 01:32:25,130 És azért, mert visszatér a memória cím, hogy lehet elérni máshol. 2354 01:32:25,130 --> 01:32:27,262 2355 01:32:27,262 --> 01:32:28,255 Még kérdése? 2356 01:32:28,255 --> 01:32:28,755 Igen? 2357 01:32:28,755 --> 01:32:31,213 >> DIÁK: A függvény fenti leellenőrzik az [hallható]? 2358 01:32:31,213 --> 01:32:33,270 2359 01:32:33,270 --> 01:32:35,005 >> DAVIN: Miért nem kell csinálni? 2360 01:32:35,005 --> 01:32:35,880 Diák: [hallható]. 2361 01:32:35,880 --> 01:32:37,755 DAVIN: Mert Nem mallocing semmit. 2362 01:32:37,755 --> 01:32:39,640 Szóval ez nem-- igen, ez Nem olyan, mint egy húr s. 2363 01:32:39,640 --> 01:32:41,160 Ez egy mutató valahol. 2364 01:32:41,160 --> 01:32:42,951 Ezek csak értékeket. 2365 01:32:42,951 --> 01:32:43,450 STUDENT: OK. 2366 01:32:43,450 --> 01:32:43,949 DAVIN: Igen. 2367 01:32:43,949 --> 01:32:47,600 2368 01:32:47,600 --> 01:32:48,470 Bármi más? 2369 01:32:48,470 --> 01:32:48,970 ROB: Igen? 2370 01:32:48,970 --> 01:32:50,386 DIÁK: De ha [hallható]? 2371 01:32:50,386 --> 01:32:55,050 2372 01:32:55,050 --> 01:32:58,690 >> ROB: Tehát annak érdekében, hogy a szabad memória, mi lenne mondjuk itt. 2373 01:32:58,690 --> 01:33:01,350 Tehát x a mutató a a blokk memória. 2374 01:33:01,350 --> 01:33:02,845 Azt, hogy a szabad mutató. 2375 01:33:02,845 --> 01:33:04,470 És nem feltétlenül csinálni itt. 2376 01:33:04,470 --> 01:33:05,390 Meg tudod csinálni bárhol. 2377 01:33:05,390 --> 01:33:10,400 De csak a hívás ingyen amit malloc visszatér. 2378 01:33:10,400 --> 01:33:12,940 Tehát malloc, itt, visszatért mit tárolnak x. 2379 01:33:12,940 --> 01:33:14,802 Így tudjuk hívni ingyenes x. 2380 01:33:14,802 --> 01:33:18,730 2381 01:33:18,730 --> 01:33:20,556 Minden az utolsó kérdés? 2382 01:33:20,556 --> 01:33:21,701 >> DAVIN: Minden utolsó kérdése? 2383 01:33:21,701 --> 01:33:22,200 Igen? 2384 01:33:22,200 --> 01:33:25,152 >> Diák: Sajnálom, meg tudja magyarázni újra miért lenne szabad ott? 2385 01:33:25,152 --> 01:33:26,630 Miért [nem hallható]? 2386 01:33:26,630 --> 01:33:27,774 >> DAVIN: Mert itt? 2387 01:33:27,774 --> 01:33:29,109 >> Diák: Igen, mint után. 2388 01:33:29,109 --> 01:33:30,900 DAVIN: Valószínűleg nem akar szabad itt. 2389 01:33:30,900 --> 01:33:31,630 ROB: Valószínűleg nem. 2390 01:33:31,630 --> 01:33:33,060 DAVIN: Igen, ez nem csinál semmit. 2391 01:33:33,060 --> 01:33:35,220 Ez, mint, teremt memória, csinálni dolgokat, hogy azt, 2392 01:33:35,220 --> 01:33:37,390 majd azonnal felejtsd el, igen. 2393 01:33:37,390 --> 01:33:39,850 >> ROB: De talán nem, mint, itt valamilyen okból. 2394 01:33:39,850 --> 01:33:43,902 Azt mondhatnánk int csillag y egyenlő return array. 2395 01:33:43,902 --> 01:33:47,900 Van néhány dolog az y, talán nyomtassa ki a tartalmát. 2396 01:33:47,900 --> 01:33:49,350 És akkor végül, végünk. 2397 01:33:49,350 --> 01:33:50,626 Mi lehet szabad y. 2398 01:33:50,626 --> 01:33:51,501 Diák: [hallható]. 2399 01:33:51,501 --> 01:33:57,839 2400 01:33:57,839 --> 01:33:59,005 DAVIN: Kell lépjünk le? 2401 01:33:59,005 --> 01:34:00,445 Köszönöm. 2402 01:34:00,445 --> 01:34:00,945 ROB: Szép. 2403 01:34:00,945 --> 01:34:02,400 2404 01:34:02,400 --> 01:34:03,646 >> DAVIN: OK, ez az. 2405 01:34:03,646 --> 01:34:04,520 ROB: Rendben, jó. 2406 01:34:04,520 --> 01:34:05,070 Sok szerencsét. 2407 01:34:05,070 --> 01:34:06,800 >> DAVIN: Ha kérdése van, írjon nekünk. 2408 01:34:06,800 --> 01:34:08,670 Sok szerencsét. 2409 01:34:08,670 --> 01:34:10,283