1 00:00:00,000 --> 00:00:00,960 2 00:00:00,960 --> 00:00:03,360 >> [Prehrávanie hudby] 3 00:00:03,360 --> 00:00:11,050 4 00:00:11,050 --> 00:00:12,065 >> DAVIN: Tak jo, chlapi. 5 00:00:12,065 --> 00:00:13,642 6 00:00:13,642 --> 00:00:15,350 Tak toto je recenzia pre prvý kvíz. 7 00:00:15,350 --> 00:00:17,751 Sú všetci pripravení na kvíz v stredu? 8 00:00:17,751 --> 00:00:18,292 ALLISON: Woo! 9 00:00:18,292 --> 00:00:18,743 STUDENT: Woo! 10 00:00:18,743 --> 00:00:19,242 DAVIN: Jo. 11 00:00:19,242 --> 00:00:19,920 ALLISON: Yeah! 12 00:00:19,920 --> 00:00:20,920 DAVIN: Ten chlap je pripravený. 13 00:00:20,920 --> 00:00:22,200 Ten chlap, dve ruky, pekný. 14 00:00:22,200 --> 00:00:23,234 15 00:00:23,234 --> 00:00:25,900 Takže kvíz recenzia dnes, bude to byť asi hodinu a pol. 16 00:00:25,900 --> 00:00:27,940 Chystáme sa ísť cez všetky hlavné koncepty, mali by ste vedieť, na kvíz. 17 00:00:27,940 --> 00:00:31,434 Chystáme sa ísť cez nejaké kódovanie podľa príklady ručné, ktoré sú na každom teste. 18 00:00:31,434 --> 00:00:34,350 A ak budete mať otázky, neváhajte sa zdvihnúť ruku a všetko 19 00:00:34,350 --> 00:00:34,945 takhle. 20 00:00:34,945 --> 00:00:36,695 No, logistika o kvíz online. 21 00:00:36,695 --> 00:00:38,450 Tak ideme ľudí rozdeliť do rôznych miestností. 22 00:00:38,450 --> 00:00:39,491 Je založený na ich mená. 23 00:00:39,491 --> 00:00:43,630 Takže ak máte nejaké otázky o tom, kde ísť, alebo o tom, čo je materiál, ako, 24 00:00:43,630 --> 00:00:46,810 oficiálne slovo o tom, čo sa deje byť na teste, skontrolujte online. 25 00:00:46,810 --> 00:00:48,420 A to je všetko aktuálne. 26 00:00:48,420 --> 00:00:51,280 Takže v prípade, že nie sú žiadne otázky na začiatok, ideme na štart. 27 00:00:51,280 --> 00:00:52,790 28 00:00:52,790 --> 00:00:53,710 A tu je Allison. 29 00:00:53,710 --> 00:00:56,060 30 00:00:56,060 --> 00:00:57,000 >> [Tlieska] 31 00:00:57,000 --> 00:00:59,300 >> ALLISON: OK, vďaka, Rob. 32 00:00:59,300 --> 00:01:00,280 Vážim. 33 00:01:00,280 --> 00:01:01,350 34 00:01:01,350 --> 00:01:03,050 Davin mal prevrátený na to. 35 00:01:03,050 --> 00:01:07,240 Toto je neúplný zoznam témy, ako vždy, ako Davin práve povedal. 36 00:01:07,240 --> 00:01:10,860 Obráťte sa na dokumentáciu on-line informácie o teste nulové. 37 00:01:10,860 --> 00:01:13,680 Ale to je celkom much-- to je na sylabu 38 00:01:13,680 --> 00:01:15,550 je všetko, čo sme doteraz prebrali. 39 00:01:15,550 --> 00:01:18,290 Všetko je tu fér hra, rovnako ako čokoľvek iné 40 00:01:18,290 --> 00:01:21,380 , Ktoré môžu byť uvedené v prednáške. 41 00:01:21,380 --> 00:01:25,070 >> Môj oddiel, tu je len veľa preskúmania. 42 00:01:25,070 --> 00:01:27,775 Existuje niekoľko cvičení že vy ste mohol pracovať. 43 00:01:27,775 --> 00:01:30,650 Ale z väčšej časti, naozaj sa chcú dostať do Davin s tými kódom 44 00:01:30,650 --> 00:01:31,710 ručnými cvičenia. 45 00:01:31,710 --> 00:01:33,940 >> Takže ja budem lietať cez to. 46 00:01:33,940 --> 00:01:36,330 Ak máte nejaké otázky, zastaviť ma. 47 00:01:36,330 --> 00:01:37,270 Zdvihnite ruku. 48 00:01:37,270 --> 00:01:39,250 Sľubujem, že budem asi vidieť. 49 00:01:39,250 --> 00:01:41,042 Ak nie, tak mávať okolo. 50 00:01:41,042 --> 00:01:42,250 Budem sa rýchlo hovoriť. 51 00:01:42,250 --> 00:01:43,950 Dúfam, že všetci v poriadku s tým. 52 00:01:43,950 --> 00:01:48,020 >> OK, špeciálne slovo, Davin samozrejme zabudli listovať týchto snímok. 53 00:01:48,020 --> 00:01:51,880 [Smeje sa] Ste v průšvih, človeče. 54 00:01:51,880 --> 00:01:55,770 Takže tipy na kvíz nula, prax kódovanie na papieri. 55 00:01:55,770 --> 00:01:58,950 Vy sa chystáte zohnať prax sa, že teraz sa Davin, 56 00:01:58,950 --> 00:02:00,655 takže nebudete úplne sami. 57 00:02:00,655 --> 00:02:03,030 Myslím si, že sme vlastne deje prostredníctvom týchto dvoch funkcií. 58 00:02:03,030 --> 00:02:04,500 Tak budete dobre pripravení tam. 59 00:02:04,500 --> 00:02:05,958 >> Zoznámte sa s vašimi problémovými sád. 60 00:02:05,958 --> 00:02:08,150 Tam boli otázky Na základe predchádzajúcich kvízy 61 00:02:08,150 --> 00:02:12,680 že sa vás opýta, napríklad pre kód niečo veľmi podobného Mario. 62 00:02:12,680 --> 00:02:15,060 Takže byť veľmi dobre oboznámení s váš problém sady, ako aj 63 00:02:15,060 --> 00:02:17,827 ako otázky, žiadame vás, na začiatku na formulári 64 00:02:17,827 --> 00:02:19,660 že vyplníte, bude poslúži vám veľmi dobre. 65 00:02:19,660 --> 00:02:20,940 66 00:02:20,940 --> 00:02:23,380 >> Vykonajte predchádzajúce kvíz pod časové obmedzenia. 67 00:02:23,380 --> 00:02:25,430 Tieto kvízy sú dlhé. 68 00:02:25,430 --> 00:02:26,850 Čas beží veľmi rýchlo. 69 00:02:26,850 --> 00:02:30,480 A často si ani neuvedomujú, ako rýchlo to pôjde, kým sa skutočne 70 00:02:30,480 --> 00:02:32,180 Vžite sa do týchto obmedzení. 71 00:02:32,180 --> 00:02:36,500 Takže ak môžete len vybojovať, viete, 75 minút, a to buď dnes večer alebo zajtra 72 00:02:36,500 --> 00:02:41,020 vziať jednu z týchto kvízov pod to, že budete v oveľa lepšej kondícii. 73 00:02:41,020 --> 00:02:43,060 >> A tiež, vytváranie referenčnú listinu. 74 00:02:43,060 --> 00:02:45,290 Pamätajte si, že dostanete jeden strana predné a zadné 75 00:02:45,290 --> 00:02:47,040 ako referenčná pre váš kvíz v stredu. 76 00:02:47,040 --> 00:02:49,074 Vytvorenie, že je skvelý spôsob, ako študovať. 77 00:02:49,074 --> 00:02:51,990 Čokoľvek, čo máte problémy s Ak chcete zahrnúť tam. 78 00:02:51,990 --> 00:02:55,627 Čokoľvek, čo vaše TFS boli, ako, je to naozaj dôležité. 79 00:02:55,627 --> 00:02:57,960 Mali by ste vedieť, sú možno veci, ktoré ste tam 80 00:02:57,960 --> 00:02:59,931 ak nemáte ich do pamäte. 81 00:02:59,931 --> 00:03:02,680 Aj keď viete, je naozaj dobre, niekedy s to tam 82 00:03:02,680 --> 00:03:07,030 je len trochu pohodlia pre vás, o ktorom viem, kvízy sú stresujúce. 83 00:03:07,030 --> 00:03:09,260 Takže akýkoľvek komfort vám môže pomôcť. 84 00:03:09,260 --> 00:03:13,072 V poriadku, tiež si spánok a jesť a rád normálne veci 85 00:03:13,072 --> 00:03:14,280 že sme vám na kvízy. 86 00:03:14,280 --> 00:03:16,320 87 00:03:16,320 --> 00:03:18,890 >> Takže rozjazdu ľahké, dátové typy a veľkosti. 88 00:03:18,890 --> 00:03:22,720 Ako som povedal, je to len tak sa mi hodil veľa vecí 89 00:03:22,720 --> 00:03:24,320 tu, ktoré by ste mali vedieť. 90 00:03:24,320 --> 00:03:27,600 Takže máme znakov že sú jeden byte, ints 91 00:03:27,600 --> 00:03:30,390 že sú štyri byty, dlhá dlhá, čo je osem bajtov. 92 00:03:30,390 --> 00:03:33,280 V podstate je to len vy chcú držať väčší celé čísla. 93 00:03:33,280 --> 00:03:35,490 Plaváky, ktoré sú štyri, dvojlôžkové, ktoré sú osem. 94 00:03:35,490 --> 00:03:38,150 Opäť platí, že práve vám dáva viac priestor pre vaše plaváky. 95 00:03:38,150 --> 00:03:41,290 A potom zadajte hviezdu, takže každý ukazovateľ na 32-bitovom strojmi, 96 00:03:41,290 --> 00:03:44,650 čo je všetko, čo chlapi potrebujú vedieť, je štyri bajty. 97 00:03:44,650 --> 00:03:46,542 >> Takže všetky veci, ktoré by Vieš, možno veci 98 00:03:46,542 --> 00:03:48,250 Ak chcete mať na Vaša referenčný list. 99 00:03:48,250 --> 00:03:50,350 100 00:03:50,350 --> 00:03:53,520 OK, binárne konverzie na binárne, konverzie 101 00:03:53,520 --> 00:03:56,860 na šestnástkovej tam a späť, všetky veci, ktoré by ste mali vedieť. 102 00:03:56,860 --> 00:03:59,480 Tak z binárnej do desiatkovej sústavy. 103 00:03:59,480 --> 00:04:03,309 Vy chcete, aby sa rýchlo minútu a pokúsiť sa prísť na to, každý z nich 104 00:04:03,309 --> 00:04:04,600 a potom mi povedz, čo sú zač? 105 00:04:04,600 --> 00:04:06,500 106 00:04:06,500 --> 00:04:10,240 >> Mám tiež sladkosti v taške, takže každý kto odpovie dostane cukroví, mimochodom. 107 00:04:10,240 --> 00:04:13,560 108 00:04:13,560 --> 00:04:14,480 A ja mám veľa. 109 00:04:14,480 --> 00:04:15,760 110 00:04:15,760 --> 00:04:16,870 Nechaj ma chytiť to. 111 00:04:16,870 --> 00:04:18,480 Chystám sa dať to Gabe. 112 00:04:18,480 --> 00:04:21,829 Takže môžete rozdávať cukrovinky ten, kto to pekné a kooperatívne. 113 00:04:21,829 --> 00:04:23,490 >> OK, videl som ruku tam vzadu. 114 00:04:23,490 --> 00:04:26,418 115 00:04:26,418 --> 00:04:28,370 >> STUDENT: Jo, prvá z nich je 42. 116 00:04:28,370 --> 00:04:30,280 >> ALLISON: Áno, prvá z nich je 42, v poriadku. 117 00:04:30,280 --> 00:04:31,163 118 00:04:31,163 --> 00:04:32,038 STUDENT: [nepočuteľné]. 119 00:04:32,038 --> 00:04:34,810 [SMIECH] 120 00:04:34,810 --> 00:04:37,030 ALLISON: druhá, tam späť v žltej? 121 00:04:37,030 --> 00:04:38,910 STUDENT: 110.010. 122 00:04:38,910 --> 00:04:43,410 ALLISON: Správne, a to posledný, tu dole? 123 00:04:43,410 --> 00:04:44,570 Tiež, jo, viete chcete? 124 00:04:44,570 --> 00:04:45,550 Len vyhodil cukroví. 125 00:04:45,550 --> 00:04:46,483 Ako sa o cukroví pre každého? 126 00:04:46,483 --> 00:04:47,510 >> STUDENT: [nepočuteľné], keď sme hotoví. 127 00:04:47,510 --> 00:04:48,051 >> ALLISON: SSS. 128 00:04:48,051 --> 00:04:49,380 129 00:04:49,380 --> 00:04:50,910 A potom ten posledný. 130 00:04:50,910 --> 00:04:52,000 Kto chce odpovedať? 131 00:04:52,000 --> 00:04:52,744 Priamo tam. 132 00:04:52,744 --> 00:04:54,480 >> STUDENT: 11100. 133 00:04:54,480 --> 00:04:56,820 >> ALLISON: 11100, pozri sa na to. 134 00:04:56,820 --> 00:04:58,790 Gratulujeme, skvelá práca, všetci. 135 00:04:58,790 --> 00:05:03,370 OK, každý druh pochopiť, proces, ako to dosiahnuť? 136 00:05:03,370 --> 00:05:08,700 Ste, bude z binárnej do desiatkovej sústavy ako som tendenciu robiť to, píše sa 137 00:05:08,700 --> 00:05:09,920 sily 2. 138 00:05:09,920 --> 00:05:18,350 Tak hovorím, OK, 0 krát 2-0, takže to je 0, 1 x 2 na prvý, 139 00:05:18,350 --> 00:05:21,400 je 2 ísť ďalej týmto spôsobom. 140 00:05:21,400 --> 00:05:25,790 Niekto chce, aby som sa explicitne prejsť príklad binárne? 141 00:05:25,790 --> 00:05:26,840 142 00:05:26,840 --> 00:05:28,140 OK, v pohode. 143 00:05:28,140 --> 00:05:30,390 >> Decimal do dvojkovej sústavy je veľmi podobná. 144 00:05:30,390 --> 00:05:31,550 145 00:05:31,550 --> 00:05:33,630 Mám vo zvyku písať sa právomoci 2. 146 00:05:33,630 --> 00:05:38,660 Začnite s tým, že je najväčší, ale nejde okolo desatinnej čiarky 147 00:05:38,660 --> 00:05:39,710 ktoré hľadáte. 148 00:05:39,710 --> 00:05:42,870 A potom druh práce si cestu dozadu sčítaním veci podľa potreby. 149 00:05:42,870 --> 00:05:45,200 >> A potom sa toho, že je to rovnako ako normálne naviac. 150 00:05:45,200 --> 00:05:51,110 Ak budete mať prípad, kam pridaním dvoch 1s, to samozrejme bude 2. 151 00:05:51,110 --> 00:05:56,875 2 v binárnej je teraz 1 0, takže budete potrebovať niesť svoje 1 do ďalšieho stĺpca. 152 00:05:56,875 --> 00:05:57,375 V pohode. 153 00:05:57,375 --> 00:05:59,220 154 00:05:59,220 --> 00:06:03,240 >> Hexadecimálne, by to mohlo byť niečo ktorá je o niečo menej známe. 155 00:06:03,240 --> 00:06:06,600 Tak ako Rob mi len hovorím dopredu, jeho trik na to 156 00:06:06,600 --> 00:06:10,210 je len rozdeliť ju do štyroch bajtov kúsky, OK? 157 00:06:10,210 --> 00:06:11,050 Bity, sorry. 158 00:06:11,050 --> 00:06:11,720 Vidíš? 159 00:06:11,720 --> 00:06:12,220 Vďaka Rob. 160 00:06:12,220 --> 00:06:15,874 To je dôvod, prečo ste tu. [NOISE] OK, tak sme len s tým skonči 161 00:06:15,874 --> 00:06:16,790 do štyroch bitov kúsky. 162 00:06:16,790 --> 00:06:21,570 Tak s binárky hexadecimálne, sa pozrieme na prvé 4, 163 00:06:21,570 --> 00:06:25,573 ktorý je, ak máme štyri 1s v riadok, aké číslo to má symbolizovať? 164 00:06:25,573 --> 00:06:26,540 >> STUDENT: F. 165 00:06:26,540 --> 00:06:32,751 >> ALLISON: Takže v tomto prípade, čo je 11111111 nebo-- áno? 166 00:06:32,751 --> 00:06:33,250 STUDENT: FF. 167 00:06:33,250 --> 00:06:34,600 ALLISON: Perfektné, FF. 168 00:06:34,600 --> 00:06:36,900 Tak veľký, cukrovinky pre vás. 169 00:06:36,900 --> 00:06:41,100 Teraz, ako hexadecimálne do binárne sme Len si myslím o tom trochu opačne. 170 00:06:41,100 --> 00:06:46,420 Pre každé číslo alebo písmeno, ktoré máme v šestnástkovej sústave, 171 00:06:46,420 --> 00:06:53,930 len previesť ho do svojej štyri bit [Smiech] a jeho štyri bitové konverziu. 172 00:06:53,930 --> 00:06:58,696 Takže 5, v tomto prípade, čo je 5, ak sme to predstavuje štyri bity? 173 00:06:58,696 --> 00:06:59,608 >> STUDENT: 010? 174 00:06:59,608 --> 00:07:00,520 Mm-hm. 175 00:07:00,520 --> 00:07:03,605 A potom, čo je v skutočnosti 10, by? 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 Takže máme to tu. 179 00:07:09,670 --> 00:07:13,990 Takže prevod medzi hexadecimálne a binárne vlastne nie je tak zlé. 180 00:07:13,990 --> 00:07:16,565 Ak sa pozriete na to v štyroch bitov kusy, bude zlatá. 181 00:07:16,565 --> 00:07:18,330 182 00:07:18,330 --> 00:07:19,300 Everyone-- áno? 183 00:07:19,300 --> 00:07:21,903 >> ROB: To je hlúpe, ale ja vždy pamätať 184 00:07:21,903 --> 00:07:23,500 A, pretože to má byť 10. 185 00:07:23,500 --> 00:07:26,230 A binárny je len 10 10, tak-- 186 00:07:26,230 --> 00:07:27,310 >> ALLISON: Á, tu to máme. 187 00:07:27,310 --> 00:07:28,615 >> ROB: Ahoj. 188 00:07:28,615 --> 00:07:30,020 >> ALLISON: Hele, cukrovinky pre Rob. 189 00:07:30,020 --> 00:07:31,707 190 00:07:31,707 --> 00:07:33,290 K dispozícii je non-čokoládové veci tam. 191 00:07:33,290 --> 00:07:34,180 Takže môžete mať niektoré z nich. 192 00:07:34,180 --> 00:07:35,790 193 00:07:35,790 --> 00:07:36,760 Tak ASCII matematika. 194 00:07:36,760 --> 00:07:38,206 195 00:07:38,206 --> 00:07:38,705 Správať. 196 00:07:38,705 --> 00:07:40,630 197 00:07:40,630 --> 00:07:44,720 Takže ASCII matematika, ako vy asi dobre pamätať 198 00:07:44,720 --> 00:07:48,480 p sada 2 s Visioneer a Caesar, ste veľa to. 199 00:07:48,480 --> 00:07:49,610 200 00:07:49,610 --> 00:07:51,980 Pamätajte si, že znaky sú Fundamentally len čísla. 201 00:07:51,980 --> 00:07:54,780 Takže môžeme robiť matematiku s nimi, rovnako ako my matematiku s ints. 202 00:07:54,780 --> 00:07:58,090 >> Takže máme len trochu jednoduchá vec tu. 203 00:07:58,090 --> 00:08:00,940 Máme niektorí v to inicializované na 65 rokov. 204 00:08:00,940 --> 00:08:07,440 A B rovná hodnote ASCII A plus 1, char C rovná D mínus 1, 205 00:08:07,440 --> 00:08:09,060 a Char D rovný 68. 206 00:08:09,060 --> 00:08:13,130 Takže sa budeme tlače všetky z nich, ako vidíme tu. 207 00:08:13,130 --> 00:08:15,650 A môže mi niekto povedať, Čo to bude tlačiť? 208 00:08:15,650 --> 00:08:17,335 209 00:08:17,335 --> 00:08:18,210 STUDENT: [nepočuteľné]. 210 00:08:18,210 --> 00:08:20,540 ALLISON: Presne tak, jedna vec k správe je 211 00:08:20,540 --> 00:08:22,900 že sme z tlače znaky zakaždým, tu. 212 00:08:22,900 --> 00:08:28,290 Sme označenie, aj keď A a B sú ints keď sme deklarovali ich výšky. 213 00:08:28,290 --> 00:08:32,870 Sme tlačou ako charaktery percent C a naše printf vyhlásenie, 214 00:08:32,870 --> 00:08:34,610 tak budú všetky tlačiť ako znaky. 215 00:08:34,610 --> 00:08:40,730 A samozrejme, je hodnota ASCII 65, vytlačiť ako A. ASCII hodnotu A plus 1 216 00:08:40,730 --> 00:08:43,669 by bolo 66, čo by hrdý na to, B. Takže v skutočnosti sme 217 00:08:43,669 --> 00:08:49,107 sa tam dostať B C D Každý dobrý? 218 00:08:49,107 --> 00:08:49,690 Nejaké otázky? 219 00:08:49,690 --> 00:08:50,721 220 00:08:50,721 --> 00:08:51,220 Úžasné. 221 00:08:51,220 --> 00:08:52,500 222 00:08:52,500 --> 00:08:53,455 >> OK, rozsah. 223 00:08:53,455 --> 00:08:55,090 224 00:08:55,090 --> 00:08:59,950 Takže priestor je samozrejme veľmi dôležité pochopiť, tu. 225 00:08:59,950 --> 00:09:03,250 Mnoho z vás, ak vás majú kompiláciu chyby, 226 00:09:03,250 --> 00:09:06,085 a hovorí, že nemáte prístup k nejakej premennej, 227 00:09:06,085 --> 00:09:08,540 je to pravdepodobne preto, že ste definoval v slučke 228 00:09:08,540 --> 00:09:12,210 a potom sa pokúsil k nemu prístup z nej, alebo naopak. 229 00:09:12,210 --> 00:09:16,410 >> Takže priestor vo svojom jadre, to jednoducho určuje, kde 230 00:09:16,410 --> 00:09:20,800 hovoríme premenná existuje, kde sme môže zmeniť, kde môžeme pristupovať. 231 00:09:20,800 --> 00:09:24,550 Je to tak nejako hovoriť nich sú jediné miesta, kde máte prístup k 232 00:09:24,550 --> 00:09:26,060 k tejto premennej. 233 00:09:26,060 --> 00:09:30,080 >> Takže tieto dva odbory, ktoré sme hovoriť o počas vyučovania sú globálne a lokálne. 234 00:09:30,080 --> 00:09:35,080 Tak globálne premenné hovoríme o pri definovaní je nad hlavnou. 235 00:09:35,080 --> 00:09:38,390 To znamená, že vaše nekastrovaných Program má k nemu prístup, 236 00:09:38,390 --> 00:09:42,090 a existuje tak dlho Pri behu programu, OK? 237 00:09:42,090 --> 00:09:45,100 Miestne znamená, že je viac obmedzené na oblasti. 238 00:09:45,100 --> 00:09:50,520 Takže kedykoľvek budete mať špecifické funkcie ako odkladací priestor, vždy hovoriť. 239 00:09:50,520 --> 00:09:54,380 Vždy sme hovoriť o swapu s A a B. A a B existujú v tejto funkcii. 240 00:09:54,380 --> 00:09:55,690 Neexistujú nikde inde. 241 00:09:55,690 --> 00:09:56,860 242 00:09:56,860 --> 00:10:00,610 >> Rovnako tak, keď máte v prípade, vyhlásenie alebo pre slučky. 243 00:10:00,610 --> 00:10:04,670 Vždy, keď sa, napríklad, v pre sláčiky máme int I = 0. 244 00:10:04,670 --> 00:10:06,630 Máme nejakú podmienku, a my ju aktualizovať. 245 00:10:06,630 --> 00:10:10,270 Aj existuje iba v rámci traky o tom, pre sláčiky. 246 00:10:10,270 --> 00:10:13,270 Ak sa pokúsite o prístup inam, váš kompilátor by kričať na vás. 247 00:10:13,270 --> 00:10:14,560 Bolo by to, ako to, čo sa snažíte robiť? 248 00:10:14,560 --> 00:10:15,400 To neexistuje. 249 00:10:15,400 --> 00:10:16,644 250 00:10:16,644 --> 00:10:18,435 Tak to je dva rôzne typy rozsahu. 251 00:10:18,435 --> 00:10:19,486 252 00:10:19,486 --> 00:10:20,860 Znamená to, že zmysel pre každého? 253 00:10:20,860 --> 00:10:23,870 254 00:10:23,870 --> 00:10:27,890 >> Tak napríklad tu, tento je len niekoľko jednoduchých programov. 255 00:10:27,890 --> 00:10:29,120 256 00:10:29,120 --> 00:10:32,890 Čo si vy myslíte, že je bude diať v každom bode 257 00:10:32,890 --> 00:10:34,210 že sa snažíme tlačiť? 258 00:10:34,210 --> 00:10:40,150 Tak toto tu, čo sa bude diať? 259 00:10:40,150 --> 00:10:43,047 260 00:10:43,047 --> 00:10:44,255 Študent: To bude tlačiť tri. 261 00:10:44,255 --> 00:10:44,880 ALLISON: Správne. 262 00:10:44,880 --> 00:10:45,930 Bude vytlačiť tri. 263 00:10:45,930 --> 00:10:47,272 Čo je tu? 264 00:10:47,272 --> 00:10:48,230 Študent: To nebude fungovať. 265 00:10:48,230 --> 00:10:48,910 ALLISON: Nebude to fungovať. 266 00:10:48,910 --> 00:10:50,290 Ste z odboru, že jo? 267 00:10:50,290 --> 00:10:55,160 Lokálna premenná neexistuje mimo tieto zátvorky v poriadku? 268 00:10:55,160 --> 00:10:56,462 A čo potom tu? 269 00:10:56,462 --> 00:10:57,850 >> STUDENT: [nepočuteľné]. 270 00:10:57,850 --> 00:10:59,210 >> ALLISON: Čo je? 271 00:10:59,210 --> 00:10:59,900 Rob, ísť. 272 00:10:59,900 --> 00:11:00,854 >> ROB: som práve povedal. 273 00:11:00,854 --> 00:11:04,200 Globálne premenné by mali byť globálne premenné podčiarkovník. 274 00:11:04,200 --> 00:11:05,660 >> ALLISON: Ach, áno, je mi ľúto. 275 00:11:05,660 --> 00:11:06,200 Vďaka, Rob. 276 00:11:06,200 --> 00:11:07,480 277 00:11:07,480 --> 00:11:10,170 Rob je ako náš rezidentný kompilátor. 278 00:11:10,170 --> 00:11:12,684 Bude len kričať na nás, keď sme potrebovať. [Smeje sa] Áno, 279 00:11:12,684 --> 00:11:14,225 by mala byť globálne premenné podčiarkovník. 280 00:11:14,225 --> 00:11:15,760 281 00:11:15,760 --> 00:11:18,430 Za predpokladu, že tak, že bol globálny podčiarkovník 282 00:11:18,430 --> 00:11:20,260 variabilná, čo sa bude diať tu? 283 00:11:20,260 --> 00:11:21,260 STUDENT: To bude fungovať. 284 00:11:21,260 --> 00:11:22,093 ALLISON: Bude to fungovať. 285 00:11:22,093 --> 00:11:24,655 Takže to bude tlačiť, tak len veľmi jednoduchý príklad. 286 00:11:24,655 --> 00:11:27,650 287 00:11:27,650 --> 00:11:29,870 OK, prototypy. 288 00:11:29,870 --> 00:11:33,680 Tak samozrejme, naozaj zdôrazniť pre vás 289 00:11:33,680 --> 00:11:36,460 aby funkcie, ak zmysel vo svojich programoch. 290 00:11:36,460 --> 00:11:38,460 Ale samozrejme, keď vás vytvoriť vlastné funkcie, 291 00:11:38,460 --> 00:11:40,930 obvykle budete ich definovať po hlavnej. 292 00:11:40,930 --> 00:11:42,430 A vy, pokúsim sa ich zavolať hlavné. 293 00:11:42,430 --> 00:11:46,030 A ak nechcete použiť prototyp, váš kompilátor bude kričať na vás. 294 00:11:46,030 --> 00:11:49,590 >> Prototyp je v podstate len hovorím kompilátora 295 00:11:49,590 --> 00:11:52,400 že som túto funkciu pod hlavnou. 296 00:11:52,400 --> 00:11:54,970 Budem hovoriť predtým, než som ju definovať. 297 00:11:54,970 --> 00:11:56,360 Len vydrž. 298 00:11:56,360 --> 00:12:00,660 Sľubujem, že je to definované, a bude mať všetko, čo potrebujete. 299 00:12:00,660 --> 00:12:05,900 >> Takže spôsob, ako to urobiť, je len váš návrat typ, Vaše meno funkcie, váš vstup 300 00:12:05,900 --> 00:12:06,400 zoznam. 301 00:12:06,400 --> 00:12:09,760 Je to v podstate prvý riadok zo svojej deklarácii funkcie. 302 00:12:09,760 --> 00:12:11,510 Je to naozaj všetko, čo je. 303 00:12:11,510 --> 00:12:14,440 Ale to je len Všeobecne druh formátu. 304 00:12:14,440 --> 00:12:17,220 >> Takže v našom príklade, ktoré ste chlapci mali 305 00:12:17,220 --> 00:12:19,700 videli v kapitole na nejakom mieste, máme 306 00:12:19,700 --> 00:12:23,220 niektoré int kocka, ktorá trvá nejakú int vstupu. 307 00:12:23,220 --> 00:12:25,870 A máme náš hlavný funkcia, ktorá volá kocky. 308 00:12:25,870 --> 00:12:28,670 A kocky je definovaný po faktu. 309 00:12:28,670 --> 00:12:34,450 >> Takže ak sme nemali int kocka vstup na vrchole, keď sme hovorili kocka 310 00:12:34,450 --> 00:12:36,620 v rámci hlavného, ​​náš prekladač by sa hnevať na nás. 311 00:12:36,620 --> 00:12:38,890 Bolo by to ako to, čo to hovoríš? 312 00:12:38,890 --> 00:12:40,360 Cube neexistuje. 313 00:12:40,360 --> 00:12:41,910 Neviem, na čo sa pýtate na. 314 00:12:41,910 --> 00:12:43,490 A ja som jednoducho ísť zastaviť. 315 00:12:43,490 --> 00:12:47,330 >> Ale pretože sme náš prototyp na vrchole, sme povedali, 316 00:12:47,330 --> 00:12:49,800 Viete, keď vidíte kocky, nebojte sa o tom. 317 00:12:49,800 --> 00:12:51,990 Sľubujem, že je to definované neskôr. 318 00:12:51,990 --> 00:12:53,750 A to vás nechám robiť, čo chcete. 319 00:12:53,750 --> 00:12:57,750 Takže ak budete mať funkciu ktorý je vyhlásený po tom, čo tomu hovoríte 320 00:12:57,750 --> 00:13:00,570 prvýkrát, budete musieť sú to prototyp hore. 321 00:13:00,570 --> 00:13:01,640 322 00:13:01,640 --> 00:13:02,720 >> Áno? 323 00:13:02,720 --> 00:13:04,412 >> ROB: Je to na druhú, nie cubing. 324 00:13:04,412 --> 00:13:05,855 >> ALLISON: Oh môj bože. 325 00:13:05,855 --> 00:13:09,435 Nechcel som have-- Gabe, myslel som, ste náš korektor. 326 00:13:09,435 --> 00:13:10,740 327 00:13:10,740 --> 00:13:12,760 OK chalani, majte so mnou, tu. 328 00:13:12,760 --> 00:13:14,440 Dúfam, že všetci sa dostať nápad. 329 00:13:14,440 --> 00:13:15,560 330 00:13:15,560 --> 00:13:20,380 OK, takže by to malo mať bol štvorcový, nie kocky. 331 00:13:20,380 --> 00:13:22,700 Ale myšlienka zostáva rovnaká. 332 00:13:22,700 --> 00:13:23,702 333 00:13:23,702 --> 00:13:26,660 Akejkoľvek funkcie, ktoré sme volanie po skutočnosť by mala mať prototyp. 334 00:13:26,660 --> 00:13:27,730 335 00:13:27,730 --> 00:13:28,970 Všetci dobre s tým? 336 00:13:28,970 --> 00:13:30,730 337 00:13:30,730 --> 00:13:32,310 Akékoľvek iné preklepy? 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 Všetky tu preklepy, než začneme, Robe? 341 00:13:36,230 --> 00:13:37,356 342 00:13:37,356 --> 00:13:42,380 [Smiech] OK, tak structs. 343 00:13:42,380 --> 00:13:45,040 V podstate, structs vám umožňujú vytvoriť svoj vlastný dátový typ. 344 00:13:45,040 --> 00:13:49,264 Toľko ako int alebo char alebo float, je to len iný typ. 345 00:13:49,264 --> 00:13:51,680 Páči sa mi, že na to, ako, ako, vytvoriť svoj vlastný dátový typ. 346 00:13:51,680 --> 00:13:53,740 Tak to môžete urobiť. 347 00:13:53,740 --> 00:13:56,160 A to platí rôznych typov dát. 348 00:13:56,160 --> 00:14:01,030 >> Takže ak si spomínate, v poli sme môže mať iba veci podobného typu. 349 00:14:01,030 --> 00:14:04,660 Štruktúry nám umožňujú držať viac veci rôznych typov. 350 00:14:04,660 --> 00:14:08,944 Takže v tomto prípade tu máme majú struct názvom Študent, 351 00:14:08,944 --> 00:14:10,650 tu menovaný na dne. 352 00:14:10,650 --> 00:14:13,540 A máme nejaké int id a niektoré string name. 353 00:14:13,540 --> 00:14:14,620 354 00:14:14,620 --> 00:14:17,300 Takže je to len iný typ dát. 355 00:14:17,300 --> 00:14:18,950 Teraz máme dátový typ s názvom Student. 356 00:14:18,950 --> 00:14:20,330 357 00:14:20,330 --> 00:14:24,750 >> Preto, že my môžeme myslieť na to len ako iný typ dát, 358 00:14:24,750 --> 00:14:27,760 môžeme deklarovať premenné ako sme každý iný. 359 00:14:27,760 --> 00:14:32,680 Takže namiesto toho, len mať, ako, int študent, len musíme študenta, 360 00:14:32,680 --> 00:14:33,390 Študent 1. 361 00:14:33,390 --> 00:14:33,560 Oh, pozri. 362 00:14:33,560 --> 00:14:34,059 Je to Rob. 363 00:14:34,059 --> 00:14:35,750 364 00:14:35,750 --> 00:14:38,880 Tak tu sme vyhlásenia struct, alebo variabilné 365 00:14:38,880 --> 00:14:40,940 volal študentka 1 typu študenta. 366 00:14:40,940 --> 00:14:45,370 Takže to bude mať id a názov s ním spojené. 367 00:14:45,370 --> 00:14:48,430 >> A spôsob, ako k nim pristupovať prvky v našej struct 368 00:14:48,430 --> 00:14:50,100 je s operátorom bodka, tu. 369 00:14:50,100 --> 00:14:51,910 370 00:14:51,910 --> 00:14:54,660 Takže v tomto prípade sme vyhlásil niektorých študentov 1. 371 00:14:54,660 --> 00:14:57,080 Pridelený sme ID na 1. 372 00:14:57,080 --> 00:14:58,840 A my priradený názov ako Rob. 373 00:14:58,840 --> 00:15:03,010 374 00:15:03,010 --> 00:15:04,960 OK, všetci dobre s tým? 375 00:15:04,960 --> 00:15:06,787 Použite ho iba like-- áno? 376 00:15:06,787 --> 00:15:09,530 >> STUDENT: Jo, keď typedef-- robiť, musíme použiť typedef? 377 00:15:09,530 --> 00:15:13,190 >> ALLISON: Takže typedef len hovorí that-- Rob, môžete 378 00:15:13,190 --> 00:15:16,990 ma opravte na to, či som wrong-- ale typedef je proste skutočne vyhlásil 379 00:15:16,990 --> 00:15:19,330 to ako druh, ktorý môžete použiť, že? 380 00:15:19,330 --> 00:15:22,550 >> ROB: Jo, je to v podstate, takže je to len vytváranie 381 00:15:22,550 --> 00:15:24,215 alias alebo prezývka pre určitý typ. 382 00:15:24,215 --> 00:15:25,590 Takže môžete písať, že [nepočuteľné]. 383 00:15:25,590 --> 00:15:27,140 384 00:15:27,140 --> 00:15:30,350 Takže [nepočuteľné] existuje, a teraz len musíme 385 00:15:30,350 --> 00:15:32,090 [Nepočuteľné] znamená presne to isté. 386 00:15:32,090 --> 00:15:37,210 A tak tu máme napísaný, myslím, niektoré struct typ 2 [nepočuteľné]. 387 00:15:37,210 --> 00:15:40,680 Takže je to len prezývka pre daný typ. 388 00:15:40,680 --> 00:15:44,344 >> STUDENT: String [nepočuteľné] knižnica bolo napísané sa ako char hviezdy. 389 00:15:44,344 --> 00:15:51,380 390 00:15:51,380 --> 00:15:54,390 >> ALLISON: Pre naše účely tu, ak ste vyhlásil struct, 391 00:15:54,390 --> 00:15:55,600 proste typedef struct. 392 00:15:55,600 --> 00:15:57,680 393 00:15:57,680 --> 00:16:04,490 OK, takže dopredu, to je len normálne premenná tu. 394 00:16:04,490 --> 00:16:06,390 Sme pristupovať s bodkou. 395 00:16:06,390 --> 00:16:08,580 ak máme ukazovateľ na struct, môžeme v skutočnosti 396 00:16:08,580 --> 00:16:10,700 použiť šípku, ktorá je celkom v pohode. 397 00:16:10,700 --> 00:16:17,130 >> Takže v tomto prípade máme ukazovateľ na študent 1, ktorý je typu študenta. 398 00:16:17,130 --> 00:16:19,020 Pamätajte si, že so svojím ukazovateľ konštrukcie, 399 00:16:19,020 --> 00:16:23,710 Chcete bez ohľadu na typ ukazovateľ ukazuje sa, že je na začiatku. 400 00:16:23,710 --> 00:16:25,960 Takže máme nejaký študent, 1, tu. 401 00:16:25,960 --> 00:16:27,370 402 00:16:27,370 --> 00:16:31,050 A od tej študenta 1 je teraz špicatý, 403 00:16:31,050 --> 00:16:36,520 skutočne môžeme ísť študentov názvu 1 arrow miesto bodky, pretože je to ukazovateľ, 404 00:16:36,520 --> 00:16:37,640 a priradiť Rob. 405 00:16:37,640 --> 00:16:40,720 A teraz, ak chceme zmeniť Rob na Davin, 406 00:16:40,720 --> 00:16:43,570 je to len, že vám ukazuje iný spôsob, ako to urobiť. 407 00:16:43,570 --> 00:16:48,850 >> Takže namiesto toho, pomocou šípky, môžete môže also-- budem dokončiť a potom 408 00:16:48,850 --> 00:16:52,860 vziať question-- by ste mohli tiež vykonať referenčné študenta 1. 409 00:16:52,860 --> 00:16:56,170 To hovorí, ako ísť do čo je na študenta 1, ktorá 410 00:16:56,170 --> 00:16:58,840 by naša študentka struct. 411 00:16:58,840 --> 00:17:03,910 Pristupovať s bodkou a prvkom ktoré chcete, a potom ho priradiť. 412 00:17:03,910 --> 00:17:05,326 Tam bola otázka. 413 00:17:05,326 --> 00:17:08,034 Žiak: Áno, tak ako to máte používať [nepočuteľné], keď ste 414 00:17:08,034 --> 00:17:10,367 robí študentov hviezda bez [Nepočuteľné] študentka? 415 00:17:10,367 --> 00:17:12,200 ALLISON: Pretože tento vytvára ukazovateľ. 416 00:17:12,200 --> 00:17:13,616 ROB: Budeme o tom hovoriť. 417 00:17:13,616 --> 00:17:16,119 ALLISON: Budeme hovoriť o tom neskôr v recenzii. 418 00:17:16,119 --> 00:17:17,660 Takže stačí sa držať tej myšlienke. 419 00:17:17,660 --> 00:17:20,560 Ak sa vám stále vadí na koniec, prišiel hovoriť s niekým z nás. 420 00:17:20,560 --> 00:17:23,380 >> Tak to robiť presne to isté. 421 00:17:23,380 --> 00:17:25,579 Sme len zobrazujúci dva rôzne spôsoby, ako to urobiť. 422 00:17:25,579 --> 00:17:29,470 Študent 1 je teraz ukazovateľ tak, môžete pristupovať k názvu prvku 423 00:17:29,470 --> 00:17:30,960 v struct s šípkou. 424 00:17:30,960 --> 00:17:36,440 Alebo môžete dereferencia ukazovateľom, a k nemu pristupovať ako obvykle. 425 00:17:36,440 --> 00:17:38,430 Má to zmysel každého? 426 00:17:38,430 --> 00:17:39,480 427 00:17:39,480 --> 00:17:43,890 Ak je celá ukazovateľ veci sú trochu mätúce, Gabe bude hovoriť o tom, 428 00:17:43,890 --> 00:17:45,740 a potom možno to bude dávať väčší zmysel. 429 00:17:45,740 --> 00:17:46,240 Áno? 430 00:17:46,240 --> 00:17:48,387 >> Žiak: Áno, tak ako je odlišné od? 431 00:17:48,387 --> 00:17:49,470 ALLISON: predchádzajúca? 432 00:17:49,470 --> 00:17:52,330 Takže študent 1 v tomto prípad nie je ukazovateľ. 433 00:17:52,330 --> 00:17:54,380 Je to len vaša aktuálna struct. 434 00:17:54,380 --> 00:17:55,400 >> STUDENT: OK. 435 00:17:55,400 --> 00:17:57,645 >> ALLISON: vzhľadom k tomu, je tento je ukazovateľ na struct. 436 00:17:57,645 --> 00:17:58,910 437 00:17:58,910 --> 00:18:02,060 >> STUDENT: OK, ale robí to druh skončiť pracovný rovnaký [nepočuteľné]. 438 00:18:02,060 --> 00:18:03,310 >> ALLISON: Účinne funguje rovnako. 439 00:18:03,310 --> 00:18:04,560 Váš syntax je proste iný. 440 00:18:04,560 --> 00:18:05,185 STUDENT: OK. 441 00:18:05,185 --> 00:18:07,600 >> ALLISON: Jo, sú fakticky rovnaké. 442 00:18:07,600 --> 00:18:11,321 Je to len v závislosti od kontextu, budete chcieť jeden cez druhého. 443 00:18:11,321 --> 00:18:11,820 Áno? 444 00:18:11,820 --> 00:18:13,956 >> STUDENT: Keď to urobíte odkazy na 1-- 445 00:18:13,956 --> 00:18:14,580 ALLISON: Mm-hm? 446 00:18:14,580 --> 00:18:16,880 STUDENT: Prečo vás majú zátvorky? 447 00:18:16,880 --> 00:18:19,575 ALLISON: Vzhľadom k tomu, študentka 1 je ukazovateľ. 448 00:18:19,575 --> 00:18:22,200 Takže je potrebné, aby sa ubezpečil, že ste len dereferencing ukazovateľ. 449 00:18:22,200 --> 00:18:23,380 >> STUDENT: OK. 450 00:18:23,380 --> 00:18:26,700 >> ALLISON: Takže v tomto prípade tu, Zátvorky okolo neho 451 00:18:26,700 --> 00:18:29,875 znamená, že ste dereferencing študenta 1. 452 00:18:29,875 --> 00:18:35,390 Takže ak budete žiak 1 bod, čo je vaša struct. 453 00:18:35,390 --> 00:18:38,010 Takže teraz si môžete myslieť to ako, že struct, 454 00:18:38,010 --> 00:18:39,785 takže môžeme použiť náš normálnu prevádzku dot. 455 00:18:39,785 --> 00:18:42,752 456 00:18:42,752 --> 00:18:43,585 Nejaké ďalšie otázky? 457 00:18:43,585 --> 00:18:45,840 458 00:18:45,840 --> 00:18:48,120 Cool, úžasné. 459 00:18:48,120 --> 00:18:51,359 >> Tak to posledné, čo si myslím, že je môj posledný záber, woo! 460 00:18:51,359 --> 00:18:52,775 OK, tak s plávajúcou desatinnou čiarkou nepresnosť. 461 00:18:52,775 --> 00:18:54,090 462 00:18:54,090 --> 00:18:56,820 Bavili sme sa krátko o to počas prednášky. 463 00:18:56,820 --> 00:19:00,030 V podstate, máme nekonečne veľa reálnych čísel. 464 00:19:00,030 --> 00:19:02,237 A ak niekto z vás chlapci rád matematiku, je tu 465 00:19:02,237 --> 00:19:03,570 všetky druhy super veci u nás. 466 00:19:03,570 --> 00:19:05,010 467 00:19:05,010 --> 00:19:07,190 >> Ale existuje nekonečne veľa reálnych čísel. 468 00:19:07,190 --> 00:19:09,850 Ale sú to len konečný počet bitov, ktoré máme. 469 00:19:09,850 --> 00:19:13,240 Takže ste vždy majú nepresnosti, to je všetko. 470 00:19:13,240 --> 00:19:16,269 A to je to len trochu ako niečo, čo by ste mali vedieť. 471 00:19:16,269 --> 00:19:19,060 Že rovnako ako my, môže vás požiadať, prečo s plávajúcou desatinnou čiarkou nepresnosť existujú? 472 00:19:19,060 --> 00:19:20,004 473 00:19:20,004 --> 00:19:21,420 Takže len niečo, čo by ste mali vedieť. 474 00:19:21,420 --> 00:19:23,770 A s tým som sústruženie to sa k ukazovateľmi. 475 00:19:23,770 --> 00:19:27,720 476 00:19:27,720 --> 00:19:28,520 >> Binky: Ahoj, chlapci. 477 00:19:28,520 --> 00:19:29,616 Volám Binky. 478 00:19:29,616 --> 00:19:30,990 Budem hovoriť o ukazovateli. 479 00:19:30,990 --> 00:19:33,247 480 00:19:33,247 --> 00:19:35,830 Jo, takže ukazovateľa je v skutočnosti moja obľúbená časť v tomto kurze. 481 00:19:35,830 --> 00:19:39,740 Takže len aby bolo jasné, Allison bol tu hovorí, tak z dôvodu, 482 00:19:39,740 --> 00:19:43,810 why-- jediný rozdiel, veľký rozdiel bol spôsob, 483 00:19:43,810 --> 00:19:44,760 prehlasujeme veci. 484 00:19:44,760 --> 00:19:47,560 Takže študent, hviezda znamená, že tento je ukazovateľ na študenta. 485 00:19:47,560 --> 00:19:52,960 Vzhľadom k tomu snímke pred, študent Skutočná struct, ako skutočný študent, 486 00:19:52,960 --> 00:19:54,400 obsahujúce niektoré z týchto vecí. 487 00:19:54,400 --> 00:19:57,050 >> A dôvod, prečo sme Ak to-- áno, Davin? 488 00:19:57,050 --> 00:19:58,630 >> DAVIN: Čo šípka znamená? 489 00:19:58,630 --> 00:20:04,240 >> Binky: Prostriedky šípkami presne rovnaké ako to. 490 00:20:04,240 --> 00:20:06,150 Takže nemáte naozaj potrebujú šípku. 491 00:20:06,150 --> 00:20:11,060 Rovnako ako, keď ste jediný program v C, stačí použiť to. 492 00:20:11,060 --> 00:20:12,850 Ospravedlňujeme sa, ale ja nie, čo to je. 493 00:20:12,850 --> 00:20:14,920 Stačí použiť túto syntax. 494 00:20:14,920 --> 00:20:17,430 >> Ale niektorí ľudia, keď boli projektovanie C, 495 00:20:17,430 --> 00:20:19,870 sa prišlo, že ľudia používa túto syntax tak, 496 00:20:19,870 --> 00:20:23,970 že sa bude páčiť len prísť s konštrukciou syntaxe pre to. 497 00:20:23,970 --> 00:20:26,820 A to sa konalo v forma tohto šípky. 498 00:20:26,820 --> 00:20:29,210 A je to naozaj pekné, pretože symbolizuje niečo 499 00:20:29,210 --> 00:20:33,670 ako by sme vlastne po tento šíp, tento ukazovateľ, 500 00:20:33,670 --> 00:20:35,300 k nejaké miesto v pamäti. 501 00:20:35,300 --> 00:20:40,410 A keď sa tam dostaneme, chceme pozrite sa na názov tohto študenta, 502 00:20:40,410 --> 00:20:42,150 ak to dáva zmysel. 503 00:20:42,150 --> 00:20:43,000 OK? 504 00:20:43,000 --> 00:20:44,290 >> Tak to je presne to isté. 505 00:20:44,290 --> 00:20:46,310 To je presne to isté, ako to. 506 00:20:46,310 --> 00:20:48,130 Dostanú zostavený presne rovnaký, OK? 507 00:20:48,130 --> 00:20:50,100 508 00:20:50,100 --> 00:20:55,580 A dôvod, prečo sme tu malloc niečo, to preto, že v tomto prípade, 509 00:20:55,580 --> 00:20:59,120 naša premenná je vlastne len ukazovateľ premenná. 510 00:20:59,120 --> 00:21:02,900 Takže máme len nejaký priestor v pamäti, že drží ukazovateľ. 511 00:21:02,900 --> 00:21:06,570 Sme naozaj nemajú žiadne miesto že má skutočné Struct. 512 00:21:06,570 --> 00:21:08,660 >> Takže to musí byť vykonané v dvoch krokoch. 513 00:21:08,660 --> 00:21:11,545 Musíme vytvoriť Pamäť dať struct v. 514 00:21:11,545 --> 00:21:14,445 A musíme vytvoriť pamäti, aby ukazovateľ v. 515 00:21:14,445 --> 00:21:16,570 Takže sú v podstate dve rôzne premenné, tu. 516 00:21:16,570 --> 00:21:19,730 Jedným z nich je typ študenta, okrem neho nie je naozaj mať názov. 517 00:21:19,730 --> 00:21:21,900 A druhý je typu študenta hviezdy. 518 00:21:21,900 --> 00:21:24,900 A potom študentské 1 bodov tam, ak to zmysel. 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 >> Takže dôvod, prečo používame ukazovateľa je skutočnosť, že všetko 523 00:21:31,860 --> 00:21:35,510 v počítači, každá premenná v počítači, má dve veci. 524 00:21:35,510 --> 00:21:36,580 To má svoju hodnotu. 525 00:21:36,580 --> 00:21:38,420 A to je jeho adresu. 526 00:21:38,420 --> 00:21:41,390 A dobrý spôsob, ako ponímať je tu 527 00:21:41,390 --> 00:21:44,230 veľa problémov, keď sa skúste použiť funkcie. 528 00:21:44,230 --> 00:21:47,200 A budeme sa snažiť, aby pozrite sa do jednej z nich. 529 00:21:47,200 --> 00:21:50,370 Konkrétne to bude premýšľať o pamäti ako pole. 530 00:21:50,370 --> 00:21:52,810 >> Vždy si myslel, premenných keď hovoríte, že na rovná 5. 531 00:21:52,810 --> 00:21:54,430 Myslíte si, že uvedenie 5 do krabice. 532 00:21:54,430 --> 00:21:55,520 533 00:21:55,520 --> 00:22:00,030 Takže čo keď chcete odovzdať že int do funkcie? 534 00:22:00,030 --> 00:22:03,230 Práve ste pass-- vôbec sa mi nepáči víš-- x do funkcie. 535 00:22:03,230 --> 00:22:06,090 Ale čo sa stane, je normálne ako ľudia, si 536 00:22:06,090 --> 00:22:09,050 by si myslel niečo ako, že som odovzdaním pole človeka. 537 00:22:09,050 --> 00:22:12,070 A to naozaj nie je stane v počítačoch. 538 00:22:12,070 --> 00:22:17,770 Čo sa stane, je, skopírovať hodnotu krabice na krabicu osoby. 539 00:22:17,770 --> 00:22:22,440 >> Takže to, čo sa snažím povedať je, že v prípade, Máte function-- tu sorry--, 540 00:22:22,440 --> 00:22:27,700 ak máme funkciu ako na päť až tam, ak sa pokúsite odovzdať premennú, 541 00:22:27,700 --> 00:22:29,450 je to len bude kopírovať. 542 00:22:29,450 --> 00:22:35,771 Ak initialize nx sa rovná 3, to sa deje kopírovať túto hodnotu do premennej A 543 00:22:35,771 --> 00:22:36,270 tam hore. 544 00:22:36,270 --> 00:22:37,005 545 00:22:37,005 --> 00:22:39,630 OK, a to je dôvod, druh Preto chceme používať ukazovatele. 546 00:22:39,630 --> 00:22:42,550 Vzhľadom k tomu, namiesto toho, dávať len hodnotu, 547 00:22:42,550 --> 00:22:44,850 nie len okolo len hodnota funkcie, 548 00:22:44,850 --> 00:22:46,530 chceme odovzdať odkazom. 549 00:22:46,530 --> 00:22:50,630 To, čo nazývame prihrávku odkazom je druh dať políčko na funkciu, 550 00:22:50,630 --> 00:22:53,890 tak, aby funkcie možno tiež zmeniť hodnoty v tomto poli. 551 00:22:53,890 --> 00:22:57,280 >> OK, takže len niektoré základné ukazovatele veci je vytvoriť ukazovatele, 552 00:22:57,280 --> 00:23:00,300 stačí deklarovať to typ, a si dať hviezdu hneď po ňom. 553 00:23:00,300 --> 00:23:02,307 A typ je len čo ste ukázal na. 554 00:23:02,307 --> 00:23:04,390 Takže ak je to int hviezda, ste ukázal na int. 555 00:23:04,390 --> 00:23:05,940 Ak je to char hviezda, ste ukázal na grafe. 556 00:23:05,940 --> 00:23:07,790 A ak je to študent hviezda, ste ukázal na študenta. 557 00:23:07,790 --> 00:23:08,770 OK? 558 00:23:08,770 --> 00:23:10,510 >> A sú všetky 4 bajty. 559 00:23:10,510 --> 00:23:13,010 Pretože táto premenná to nie je v skutočnosti 560 00:23:13,010 --> 00:23:15,380 je potrebné držať char, int, alebo študent. 561 00:23:15,380 --> 00:23:16,890 Chce to len držať adresu. 562 00:23:16,890 --> 00:23:21,390 To je dôvod, prečo sú všetky 4 bajty dlho v normálnom 32-bitové stroje. 563 00:23:21,390 --> 00:23:21,890 OK? 564 00:23:21,890 --> 00:23:25,600 Tak tu, x je premenná, ktorá poukazuje int. Y ukazuje na char. z bodov 565 00:23:25,600 --> 00:23:26,580 na plaváku. 566 00:23:26,580 --> 00:23:27,480 Akékoľvek otázky tu? 567 00:23:27,480 --> 00:23:29,841 568 00:23:29,841 --> 00:23:30,340 V pohode. 569 00:23:30,340 --> 00:23:32,550 A sú tam dva rôzne symboly, ktoré majú 570 00:23:32,550 --> 00:23:34,341 mať na mysli, keď prichádza na ukazovateľ. 571 00:23:34,341 --> 00:23:36,540 Tak odkazov a dereferencing sú tie veľké. 572 00:23:36,540 --> 00:23:38,100 573 00:23:38,100 --> 00:23:41,602 Takže ampersand z názov premennej vám dáva? 574 00:23:41,602 --> 00:23:42,310 STUDENT: adresa. 575 00:23:42,310 --> 00:23:43,380 Binky: adresa. 576 00:23:43,380 --> 00:23:47,330 Takže ak ste deklarovať INT rovná 5, potom ampersand 577 00:23:47,330 --> 00:23:49,214 zo bude vám adresu. 578 00:23:49,214 --> 00:23:51,130 A môžete skutočne vyskúšať vytlačiť to a vidieť 579 00:23:51,130 --> 00:23:54,640 akú adresu v pamäti vaše premenná má. 580 00:23:54,640 --> 00:23:57,380 A potom dereferencing-- tak, aby bolo odkazovanie, 581 00:23:57,380 --> 00:24:00,380 získanie address-- dereferencing je presný opak. 582 00:24:00,380 --> 00:24:04,120 OK, rovnako ako doby je opak divízie, 583 00:24:04,120 --> 00:24:06,060 hviezda je opakom ampersand. 584 00:24:06,060 --> 00:24:09,710 Takže dereferencing prostriedky tam. 585 00:24:09,710 --> 00:24:14,280 Takže ak dáte star-- I nie víš-- 50, to je 586 00:24:14,280 --> 00:24:20,320 pokúsim sa ísť na adresu číslo 50 vo vnútri počítača. 587 00:24:20,320 --> 00:24:22,840 OK, a prečo vidíme že sa protiklady? 588 00:24:22,840 --> 00:24:27,320 Pretože to, čo sa stane, keď robíte niečo ako hviezda ampersand? 589 00:24:27,320 --> 00:24:28,470 590 00:24:28,470 --> 00:24:33,460 No, ampersand vám adresu premenné, adresa. 591 00:24:33,460 --> 00:24:35,830 Ale hviezda znamená ísť tam. 592 00:24:35,830 --> 00:24:38,930 >> Takže to, čo sa stane, keď vás prejdite na adresu? 593 00:24:38,930 --> 00:24:40,400 Práve ste dostať, nie? 594 00:24:40,400 --> 00:24:41,410 595 00:24:41,410 --> 00:24:43,600 Tak bude na adresu je to isté ako. 596 00:24:43,600 --> 00:24:47,580 To je dôvod, prečo oni sú zvyčajne uvedené same-- tejto 597 00:24:47,580 --> 00:24:50,480 a to sa odkazuje ako opak operátori. 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 Tak v pohode. 601 00:24:53,790 --> 00:24:57,240 >> Pod kapotou, napríklad, ak budeme deklarovať int x sa rovná 5, 602 00:24:57,240 --> 00:24:58,040 máme premennú. 603 00:24:58,040 --> 00:25:00,790 A pamätajte si, že som povedal, každý proměnná-- a to je dobrá vec 604 00:25:00,790 --> 00:25:03,820 aby v mind-- má dva rôzne veci spojené s. 605 00:25:03,820 --> 00:25:06,460 Má prejednaná, ako aj hodnotu. 606 00:25:06,460 --> 00:25:07,140 OK? 607 00:25:07,140 --> 00:25:09,180 >> Takže hodnota je v tomto prípade 5. 608 00:25:09,180 --> 00:25:12,140 A adresa je-- povedzme, že som aby sa niečo up-- je to 0x04. 609 00:25:12,140 --> 00:25:13,180 610 00:25:13,180 --> 00:25:17,200 A jediný dôvod, prečo sme sa zvyčajne predstavujú adresy v šestnástkovej sústave 611 00:25:17,200 --> 00:25:19,770 je, pretože je to ako dobro. 612 00:25:19,770 --> 00:25:21,600 Hodí sa binárne. 613 00:25:21,600 --> 00:25:23,500 Je to ľahké previesť do az binárne. 614 00:25:23,500 --> 00:25:26,890 A to nie je príliš veľký, ak máte veľmi veľké číslo. 615 00:25:26,890 --> 00:25:29,990 Tak sme chceli použiť hexadecimálny v tlači adries. 616 00:25:29,990 --> 00:25:31,890 Ale ja som mohol predstavovať to ako celé číslo. 617 00:25:31,890 --> 00:25:32,750 To je v poriadku. 618 00:25:32,750 --> 00:25:35,450 >> A tak to má adresu 4 a hodnota 5. 619 00:25:35,450 --> 00:25:38,080 A potom som si povedal, int hviezda ukazovateľ. 620 00:25:38,080 --> 00:25:40,070 Tak toto je iný typ, oznámenia. 621 00:25:40,070 --> 00:25:43,220 Int hviezda ukazovateľ sa rovná adresa x. 622 00:25:43,220 --> 00:25:46,425 Takže to, čo sa bude hodnota PTR? 623 00:25:46,425 --> 00:25:47,710 624 00:25:47,710 --> 00:25:51,600 To bude adresa x, tu dole. 625 00:25:51,600 --> 00:25:54,190 OK, takže hodnota bude byť rovnaká ako adresa. 626 00:25:54,190 --> 00:25:56,130 To je úloha pracovať robím. 627 00:25:56,130 --> 00:25:59,380 A potom ptr bude mať vlastné adresu, ktoré ukázalo, 628 00:25:59,380 --> 00:26:02,050 v tomto prípade 8, OK? 629 00:26:02,050 --> 00:26:03,850 630 00:26:03,850 --> 00:26:05,900 >> A potom som sa vytvoriť novú kópiu celé číslo. 631 00:26:05,900 --> 00:26:08,790 A ja hovorím, int kópie rovná ísť tam. 632 00:26:08,790 --> 00:26:11,140 Takže choďte do toho, čo je ptr ukazuje. 633 00:26:11,140 --> 00:26:13,940 No, čo to ptr mať? 634 00:26:13,940 --> 00:26:14,740 PTR je 0x04. 635 00:26:14,740 --> 00:26:16,060 636 00:26:16,060 --> 00:26:18,400 Čo sa stane, keď sa pokúsim tam? 637 00:26:18,400 --> 00:26:23,650 Nájdem chlapa, ktorý má Adresa x a kto má adresu 4. 638 00:26:23,650 --> 00:26:25,970 A kto má riešiť štyri je x. 639 00:26:25,970 --> 00:26:26,950 Dáva to zmysel? 640 00:26:26,950 --> 00:26:28,295 641 00:26:28,295 --> 00:26:28,795 Áno? 642 00:26:28,795 --> 00:26:32,060 >> STUDENT: V tomto prípade je ukazovateľ v zásobníku? 643 00:26:32,060 --> 00:26:36,024 >> Binky: V tomto prípade, it's-- dobrá otázka. 644 00:26:36,024 --> 00:26:38,690 Nechcel som naozaj myslíte, že o tom pri zostavovaní týchto adries. 645 00:26:38,690 --> 00:26:42,570 Ale ak je to, ako, všetko sa jedná o lokálne premenné, 646 00:26:42,570 --> 00:26:46,372 potom x je žiť in-- všetko bude žiť v zásobníku. 647 00:26:46,372 --> 00:26:48,330 Takže všetko, čo sa deje aby ukázal na seba. 648 00:26:48,330 --> 00:26:49,360 649 00:26:49,360 --> 00:26:52,700 Dostanete len haldy, keď začnete používať malloc, že ​​jo? 650 00:26:52,700 --> 00:26:59,430 >> Takže ak si spomínate stack je zakaždým volanie funkcie v programe, 651 00:26:59,430 --> 00:27:02,800 ako je, napríklad hlavná, alebo akékoľvek ďalšie funkcie, ako je printf. 652 00:27:02,800 --> 00:27:06,334 Všetky lokálne premenné sú bude si dať do rámca zásobníka. 653 00:27:06,334 --> 00:27:08,500 A oni dostanú ako nahromadili v zásobníku. 654 00:27:08,500 --> 00:27:09,930 To je to, čo sa hovorí stack. 655 00:27:09,930 --> 00:27:12,200 A všetky tie lokálne premenné sú tam bude. 656 00:27:12,200 --> 00:27:14,940 A heap-- a budeme hovoriť viac o tom later-- 657 00:27:14,940 --> 00:27:19,050 haldy je miesto, kde všetky dynamicky alokovanej pamäte životy. 658 00:27:19,050 --> 00:27:20,270 V pohode? 659 00:27:20,270 --> 00:27:21,680 >> Ideme k tomuto snímku. 660 00:27:21,680 --> 00:27:22,800 Áno? 661 00:27:22,800 --> 00:27:25,490 >> Žiak: Prečo nie je pravý kópie návrate 0x04? 662 00:27:25,490 --> 00:27:27,870 663 00:27:27,870 --> 00:27:30,066 >> Binky: Prečo nie je pravý kópie návrate 0x04? 664 00:27:30,066 --> 00:27:32,450 >> Žiak: Prečo nie je to, že [nepočuteľné]? 665 00:27:32,450 --> 00:27:35,530 >> Binky: Vzhľadom k tomu, aká je hodnota 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 >> Binky: 0x04. 669 00:27:38,960 --> 00:27:40,910 Čo sa stane, keď idete na 0x04? 670 00:27:40,910 --> 00:27:41,620 Čo získate? 671 00:27:41,620 --> 00:27:42,371 >> STUDENT: Oh, OK. 672 00:27:42,371 --> 00:27:42,995 Binky: Vidíte? 673 00:27:42,995 --> 00:27:43,536 Študent: Áno. 674 00:27:43,536 --> 00:27:44,890 Binky: Takže ste si 5. 675 00:27:44,890 --> 00:27:49,170 Takže kópia bude mať 5, ak to dáva zmysel. 676 00:27:49,170 --> 00:27:49,809 Áno? 677 00:27:49,809 --> 00:27:52,803 >> STUDENT: Mohli by sme sa dostali 5 V poli Hodnota [nepočuteľné] 678 00:27:52,803 --> 00:27:55,300 Dáme Ak kopírovať int [nepočuteľné]. 679 00:27:55,300 --> 00:27:56,710 >> Binky: Int-- by sme, jo. 680 00:27:56,710 --> 00:27:59,080 To by urobil skoro to isté. 681 00:27:59,080 --> 00:28:02,080 Ale týmto spôsobom, môžeme prejsť riešenie k funkciám. 682 00:28:02,080 --> 00:28:05,050 A to je super vec budeme robiť práve teraz. 683 00:28:05,050 --> 00:28:06,770 684 00:28:06,770 --> 00:28:13,090 >> Takže tento druh cvičenia vždy príde on-- veľmi zvyčajne príde na kvízy. 685 00:28:13,090 --> 00:28:15,870 Takže je to naozaj dobré, aby sa pokúsili robiť také veci sami. 686 00:28:15,870 --> 00:28:21,210 A tak sa snaží sledovať, čo na adresu je, a chcete, aby hodnoty premenných 687 00:28:21,210 --> 00:28:22,620 sú v každom bode. 688 00:28:22,620 --> 00:28:24,370 Tak toto je presne to, čo budeme robiť. 689 00:28:24,370 --> 00:28:26,988 Tu máme kroky, jeden, dva, tri, štyri, päť. 690 00:28:26,988 --> 00:28:30,530 Jedna, dve, tri, štyri, päť. 691 00:28:30,530 --> 00:28:33,330 A budeme sledovať z hodnoty x a. 692 00:28:33,330 --> 00:28:34,650 693 00:28:34,650 --> 00:28:40,530 >> Takže, čo to robí, ak je to buggy kód, snažíme sa robiť na päť. 694 00:28:40,530 --> 00:28:43,610 Takže sa snažíme dostať do variabilný a zmeňte jej hodnotu na 5. 695 00:28:43,610 --> 00:28:44,630 696 00:28:44,630 --> 00:28:49,900 A spomínam na svoju analógiu s krabice a podal krabicu s niekým? 697 00:28:49,900 --> 00:28:51,515 Takže hlavné je toto políčko s názvom x. 698 00:28:51,515 --> 00:28:52,570 699 00:28:52,570 --> 00:28:54,170 A obsahuje hodnotu 3. 700 00:28:54,170 --> 00:28:55,230 701 00:28:55,230 --> 00:28:57,455 A ja sa snažím odovzdať Tento box sa na päť. 702 00:28:57,455 --> 00:28:58,560 703 00:28:58,560 --> 00:29:01,510 >> A ja chcem, aby päť zmeniť Hodnota tohto poľa 5. 704 00:29:01,510 --> 00:29:03,080 705 00:29:03,080 --> 00:29:05,120 A potom som len vytlačiť hodnotu x. 706 00:29:05,120 --> 00:29:06,475 707 00:29:06,475 --> 00:29:08,850 To je to, čo môj function-- To je to, čo sa snažím robiť. 708 00:29:08,850 --> 00:29:12,450 Len sa snažím aktualizovať hodnota x až 5. 709 00:29:12,450 --> 00:29:13,512 710 00:29:13,512 --> 00:29:14,970 Je to jasné, čo funkcia robí? 711 00:29:14,970 --> 00:29:16,210 712 00:29:16,210 --> 00:29:21,440 >> OK, takže to, čo sa bude hodnoty x a tu, 713 00:29:21,440 --> 00:29:27,734 prvý riadok, tesne pred prvou line-- by som say-- programu? 714 00:29:27,734 --> 00:29:28,940 >> STUDENT: Pravdepodobne odpadky. 715 00:29:28,940 --> 00:29:30,023 >> Binky: Len odpadky veci. 716 00:29:30,023 --> 00:29:32,590 Tak som dal N / A. Tak sme naozaj neviem. 717 00:29:32,590 --> 00:29:37,400 Rovnako ako ani ešte neexistuje, pretože sme povolaní k piatim. 718 00:29:37,400 --> 00:29:38,980 Int nie je deklarovaný. 719 00:29:38,980 --> 00:29:40,030 720 00:29:40,030 --> 00:29:42,920 A x bude existovať tu, ale máme naozaj 721 00:29:42,920 --> 00:29:45,370 priradená žiadnu hodnotu, takže v poriadku? 722 00:29:45,370 --> 00:29:46,570 723 00:29:46,570 --> 00:29:52,340 >> A potom, čo sa bude hodnoty x a A v počte dvoch? 724 00:29:52,340 --> 00:29:54,530 725 00:29:54,530 --> 00:29:55,410 >> STUDENT: [nepočuteľné]. 726 00:29:55,410 --> 00:29:57,540 >> Binky: Takže x bude 3. 727 00:29:57,540 --> 00:29:59,650 Je to jednoduché, pretože sme priradenie k nej 3. 728 00:29:59,650 --> 00:30:03,500 A ešte neexistuje pretože len žije v päť. 729 00:30:03,500 --> 00:30:05,800 Takže budem mať 3 a nič. 730 00:30:05,800 --> 00:30:08,590 alebo ako smeti, čokoľvek, v skutočnosti definovaný. 731 00:30:08,590 --> 00:30:11,640 732 00:30:11,640 --> 00:30:13,140 A teraz, toto je dôležitý riadok. 733 00:30:13,140 --> 00:30:14,931 Tu sa budeme vlastne volania na päť. 734 00:30:14,931 --> 00:30:17,140 735 00:30:17,140 --> 00:30:18,680 A pamätajte si, čo som povedal. 736 00:30:18,680 --> 00:30:20,240 Nikdy sme sa prejsť v krabici. 737 00:30:20,240 --> 00:30:23,110 Práve sme skopírovať hodnotu box na iné pole. 738 00:30:23,110 --> 00:30:27,000 To je všetko, počítače vykonať, skopírujte veci z jedného miesta na druhé. 739 00:30:27,000 --> 00:30:33,550 >> Tak na päť, čo to vlastne robí je skopíruje hodnota x sa. 740 00:30:33,550 --> 00:30:35,130 Takže to, čo sa tu bude? 741 00:30:35,130 --> 00:30:36,210 Hodnoty x a. 742 00:30:36,210 --> 00:30:38,670 743 00:30:38,670 --> 00:30:43,360 3 a 3, budeme len kopírovať sa cez od x. 744 00:30:43,360 --> 00:30:44,710 745 00:30:44,710 --> 00:30:45,320 V pohode. 746 00:30:45,320 --> 00:30:46,140 >> Teraz sme tu. 747 00:30:46,140 --> 00:30:47,610 748 00:30:47,610 --> 00:30:49,430 A teraz ideme aktualizovať rovná 5. 749 00:30:49,430 --> 00:30:50,900 750 00:30:50,900 --> 00:30:53,070 Čo sa bude diať v súlade štyri? 751 00:30:53,070 --> 00:30:55,120 752 00:30:55,120 --> 00:30:56,010 >> STUDENT: [nepočuteľné]. 753 00:30:56,010 --> 00:30:59,685 >> Binky: sa aktualizuje, ale x nedostal aktualizované. 754 00:30:59,685 --> 00:31:02,050 755 00:31:02,050 --> 00:31:05,250 Pretože x stále žije v hlavnom, je to úplne iný blok pamäte. 756 00:31:05,250 --> 00:31:06,970 Je to iná premenná. 757 00:31:06,970 --> 00:31:07,900 je ďalšia premenná. 758 00:31:07,900 --> 00:31:10,000 Oni sa stalo, že rovnaká hodnota, pretože ja 759 00:31:10,000 --> 00:31:13,980 skopírované hodnoty x. 760 00:31:13,980 --> 00:31:20,070 Ale teraz keď som si rovná 5, je nie je naozaj vplyv x v žiadnom prípade. 761 00:31:20,070 --> 00:31:21,450 To je zložitejšia časť. 762 00:31:21,450 --> 00:31:23,380 Má zmysel, aby všetky? 763 00:31:23,380 --> 00:31:24,093 Áno? 764 00:31:24,093 --> 00:31:25,717 STUDENT: Ešte jedna otázka, máte 3. 765 00:31:25,717 --> 00:31:27,741 Prečo already-- oh, nie, to je 3. 766 00:31:27,741 --> 00:31:28,490 Ospravedlňujeme sa, ale nevadí. 767 00:31:28,490 --> 00:31:29,310 Čítal som 5. 768 00:31:29,310 --> 00:31:30,415 >> Binky: Jo, 3, 3. 769 00:31:30,415 --> 00:31:31,540 >> STUDENT: [nepočuteľné], jo. 770 00:31:31,540 --> 00:31:35,290 Binky: A potom sme priradiť 5 až , Ale naozaj nemení x. 771 00:31:35,290 --> 00:31:36,369 Dobré? 772 00:31:36,369 --> 00:31:36,910 Študent: Áno. 773 00:31:36,910 --> 00:31:37,410 Binky: Áno? 774 00:31:37,410 --> 00:31:42,330 Môžete mi vysvetliť, ako znovu dostane kopírovať [nepočuteľné]? 775 00:31:42,330 --> 00:31:48,480 >> Binky: OK, takže keď zavoláte do piatich x, takže tento riadok kódu tu. 776 00:31:48,480 --> 00:31:50,100 777 00:31:50,100 --> 00:31:52,340 na päť x, čo je x? 778 00:31:52,340 --> 00:31:55,160 779 00:31:55,160 --> 00:31:58,340 x je len 3 v tomto bode, že jo? 780 00:31:58,340 --> 00:32:03,320 Takže si mohol myslieť na umiestnenie 3 sem a zabudnúť x. 781 00:32:03,320 --> 00:32:04,410 Stačí dať 3 tu. 782 00:32:04,410 --> 00:32:10,880 Rovnako ako, že budeme kopírovať cez hodnota x na int a, že je tam hore. 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 >> Takže hodnota x je 3. 786 00:32:14,780 --> 00:32:17,680 Budeme kopírovať 3 sa k. 787 00:32:17,680 --> 00:32:20,040 A to všetko ďalší blok pamäti, to iné premenné 788 00:32:20,040 --> 00:32:22,640 tzv bude mať 3, rovnako. 789 00:32:22,640 --> 00:32:23,580 Dáva to zmysel? 790 00:32:23,580 --> 00:32:24,780 791 00:32:24,780 --> 00:32:25,794 Áno? 792 00:32:25,794 --> 00:32:31,008 >> STUDENT: Dáte Ak do piatich, ako majú to ako celé číslo x miesto, 793 00:32:31,008 --> 00:32:32,910 by to opraviť všetko? 794 00:32:32,910 --> 00:32:36,290 >> Binky: Ak je to integer-- nie, že by sa opraviť všetko. 795 00:32:36,290 --> 00:32:37,590 Tak to je veľmi dobrá otázka. 796 00:32:37,590 --> 00:32:40,480 To nie je naozaj jedno, čo zavoláte tieto premenné. 797 00:32:40,480 --> 00:32:44,510 Opäť platí, že to bude otázka rozsahu, pretože nie sme rovnakí x. 798 00:32:44,510 --> 00:32:46,526 Sú úplne rôzne medzery v pamäti. 799 00:32:46,526 --> 00:32:47,400 STUDENT: [nepočuteľné]. 800 00:32:47,400 --> 00:32:49,020 Binky: Takže to naozaj nie je na tom, čo im hovoríte. 801 00:32:49,020 --> 00:32:50,480 To nevyrieši veci, OK? 802 00:32:50,480 --> 00:32:53,390 803 00:32:53,390 --> 00:32:54,430 Ďalšie otázky? 804 00:32:54,430 --> 00:32:55,762 Áno? 805 00:32:55,762 --> 00:32:58,498 >> Žiak: Ako je to späť do číslo päť [nepočuteľné]? 806 00:32:58,498 --> 00:32:59,661 807 00:32:59,661 --> 00:33:01,160 Binky: OK, sme to ešte neurobili. 808 00:33:01,160 --> 00:33:03,432 Poďme na číslo päť, potom. 809 00:33:03,432 --> 00:33:04,650 >> STUDENT: [nepočuteľné]? 810 00:33:04,650 --> 00:33:05,565 >> Binky: Čo je? 811 00:33:05,565 --> 00:33:08,179 >> STUDENT: Máte návrat vôbec? 812 00:33:08,179 --> 00:33:09,970 Binky: Nemáme návrat, nie hlavné. 813 00:33:09,970 --> 00:33:12,940 Ale hlavné vrací0 automaticky ak sa nič nevracia. 814 00:33:12,940 --> 00:33:14,400 815 00:33:14,400 --> 00:33:15,188 Áno? 816 00:33:15,188 --> 00:33:22,658 >> STUDENT: Mohli by ste, aby main-- alebo môžete vykonať päť vrátiť? 817 00:33:22,658 --> 00:33:24,170 818 00:33:24,170 --> 00:33:27,990 >> Binky: Mohli by sme mať päť vrátiť, áno. 819 00:33:27,990 --> 00:33:32,527 Ale potom by sme museli priradiť x rovná návratovú hodnotu na päť, 820 00:33:32,527 --> 00:33:34,360 ktoré by boli mierne iný program. 821 00:33:34,360 --> 00:33:35,440 Že to bude fungovať. 822 00:33:35,440 --> 00:33:38,730 Ale to, čo chceme urobiť, je to, čo je volal niečo zmeniť na svojom mieste. 823 00:33:38,730 --> 00:33:41,690 Takže chceme, aby skutočne zmeniť tento box a nestarať sa 824 00:33:41,690 --> 00:33:44,390 o nutnosti vrátiť sa hodnoty alebo tak niečo. 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 >> To je rovnako ako funkcia odkladací David ukázal v prednáške, s výnimkou, že som 828 00:33:50,150 --> 00:33:51,740 obchoduje iba s jednou premennou. 829 00:33:51,740 --> 00:33:55,960 A použil dve, takže int a, b a potom dočasné premenné a ktovie čo ešte. 830 00:33:55,960 --> 00:33:57,020 OK? 831 00:33:57,020 --> 00:33:58,070 Takže to, čo je na poslednom riadku? 832 00:33:58,070 --> 00:34:04,400 Po piatich vráti, je to jednoducho pôjde preč. 833 00:34:04,400 --> 00:34:06,120 834 00:34:06,120 --> 00:34:10,179 Nebudeme mať už, a iba x bude stále žiť. 835 00:34:10,179 --> 00:34:12,130 >> A hádajte, čo? x nezmenil jeho hodnotu, 836 00:34:12,130 --> 00:34:15,520 po tom všetkom, pretože sme iba zmenou hodnoty. 837 00:34:15,520 --> 00:34:17,370 To je dôvod, prečo bola 3 x v celom texte. 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 Dobre. 841 00:34:21,130 --> 00:34:23,560 Takže tento program nie je dosiahnuť to, čo sme chceli. 842 00:34:23,560 --> 00:34:24,760 Teraz sa poďme opraviť. 843 00:34:24,760 --> 00:34:27,440 >> A oprava programu je pomocou ukazovateľov. 844 00:34:27,440 --> 00:34:32,300 Čo robíme, je, máme tri linky, ktoré sú odlišné. 845 00:34:32,300 --> 00:34:34,020 Prvý z nich je, že nie sme okolo x. 846 00:34:34,020 --> 00:34:35,535 Sme absolvovaní adresu x. 847 00:34:35,535 --> 00:34:37,330 848 00:34:37,330 --> 00:34:40,876 Takže namiesto toho, skopírovanie hodnota poľa 849 00:34:40,876 --> 00:34:42,500 Som stále hodláte kopírovať nad niečím. 850 00:34:42,500 --> 00:34:45,380 Ale ja som skopírovanie adresa z krabice. 851 00:34:45,380 --> 00:34:48,780 >> Takže keď som sa prejsť adresu poľa sa na päť, a potom na päť 852 00:34:48,780 --> 00:34:51,560 bude schopný zistiť, že v pamäte a zmeniť jeho hodnotu. 853 00:34:51,560 --> 00:34:53,980 854 00:34:53,980 --> 00:34:59,580 >> Tak a potom tam mám že už nie je int. 855 00:34:59,580 --> 00:35:00,882 je int hviezda. 856 00:35:00,882 --> 00:35:02,090 Je to ukazovateľ na celé číslo. 857 00:35:02,090 --> 00:35:03,790 858 00:35:03,790 --> 00:35:07,310 A potom, pretože som okolo riešiť tu, a potom to, čo mám robiť 859 00:35:07,310 --> 00:35:10,530 nie je rovná 5, pretože drží adresu. 860 00:35:10,530 --> 00:35:16,710 Takže to, čo chcem urobiť, je ísť tam a aktualizáciu obsahu tejto adrese 861 00:35:16,710 --> 00:35:18,305 s 5. 862 00:35:18,305 --> 00:35:21,130 >> OK, tak sa poďme prejsť všetky linky po jednom. 863 00:35:21,130 --> 00:35:22,410 864 00:35:22,410 --> 00:35:26,024 Takže keď začnem tu, som ešte N / A, N / N / 865 00:35:26,024 --> 00:35:28,440 za všetko, čo v prvej line, pretože som naozaj 866 00:35:28,440 --> 00:35:29,390 vyhlásil ešte veci. 867 00:35:29,390 --> 00:35:30,980 868 00:35:30,980 --> 00:35:35,110 A potom riadok dva, mám x rovná 3. 869 00:35:35,110 --> 00:35:38,020 Int hviezda neexistujú, to isté ako predtým. 870 00:35:38,020 --> 00:35:39,160 871 00:35:39,160 --> 00:35:40,640 >> Teraz to začína byť zaujímavé. 872 00:35:40,640 --> 00:35:42,300 Takže idem prejsť. 873 00:35:42,300 --> 00:35:45,720 A predpokladajme, že adresa x je 12 v šestnástkovej sústave. 874 00:35:45,720 --> 00:35:46,880 875 00:35:46,880 --> 00:35:48,420 Jednoducho predpokladajú, že táto. 876 00:35:48,420 --> 00:35:49,221 Urobil som to. 877 00:35:49,221 --> 00:35:51,680 878 00:35:51,680 --> 00:35:53,500 Takže to, čo mám okolo tu je päť. 879 00:35:53,500 --> 00:35:54,460 Mám okolo 12. 880 00:35:54,460 --> 00:35:56,390 881 00:35:56,390 --> 00:35:58,610 >> Takže to, čo hodnota sa má? 882 00:35:58,610 --> 00:36:04,785 883 00:36:04,785 --> 00:36:06,210 >> STUDENT: [nepočuteľné]. 884 00:36:06,210 --> 00:36:06,950 >> Binky: Čože? 885 00:36:06,950 --> 00:36:08,145 >> STUDENT: [nepočuteľné]. 886 00:36:08,145 --> 00:36:10,520 Binky: Jo, ako, sa poďme Predpokladajme, že sme tu a teraz. 887 00:36:10,520 --> 00:36:11,540 888 00:36:11,540 --> 00:36:12,040 Pýtam sa. 889 00:36:12,040 --> 00:36:12,915 >> STUDENT: [nepočuteľné]. 890 00:36:12,915 --> 00:36:13,590 891 00:36:13,590 --> 00:36:14,890 >> Binky: Začalo. 892 00:36:14,890 --> 00:36:15,860 >> STUDENT: [nepočuteľné]. 893 00:36:15,860 --> 00:36:17,985 Binky: Pretože sme prešli niečo, čo sa funkcie. 894 00:36:17,985 --> 00:36:19,431 895 00:36:19,431 --> 00:36:19,930 Áno? 896 00:36:19,930 --> 00:36:20,899 >> STUDENT: Adresa x. 897 00:36:20,899 --> 00:36:22,690 Binky: Bude to majú adresu x. 898 00:36:22,690 --> 00:36:25,800 A adresa x 12, dobrá. 899 00:36:25,800 --> 00:36:30,990 Takže x bude 3, pretože sme sa naozaj zmenil x doteraz. 900 00:36:30,990 --> 00:36:36,700 A potom bude 0x12, tak adresu x, pretože to je 901 00:36:36,700 --> 00:36:38,840 to, čo sme míňali na päť. 902 00:36:38,840 --> 00:36:40,940 >> A čo sa potom stane keď sa budeme snažiť, aby tam ísť? 903 00:36:40,940 --> 00:36:42,145 Čo budeme hľadať? 904 00:36:42,145 --> 00:36:47,120 Takže ak sa pokúsite tlačiť hrať, budeme sledovať túto adresu 905 00:36:47,120 --> 00:36:48,620 a získať hodnotu vnútri. 906 00:36:48,620 --> 00:36:50,470 A hodnota je len Hodnota, ktorú x 907 00:36:50,470 --> 00:36:53,980 má, pretože to je adresa x, ktorý bude 3. 908 00:36:53,980 --> 00:36:55,440 909 00:36:55,440 --> 00:36:56,930 Sme dobre? 910 00:36:56,930 --> 00:36:59,990 >> OK, a potom už sme vlastne tam. 911 00:36:59,990 --> 00:37:05,510 A my aktualizovať čokoľvek je v tejto adrese 12. 912 00:37:05,510 --> 00:37:07,390 Robíme to 5. 913 00:37:07,390 --> 00:37:10,560 Takže teraz obaja x a hviezda sú 5. 914 00:37:10,560 --> 00:37:13,170 915 00:37:13,170 --> 00:37:13,680 >> Prečo tomu tak je? 916 00:37:13,680 --> 00:37:17,070 Vzhľadom k tomu, adresa x je 12. 917 00:37:17,070 --> 00:37:20,920 A má tiež 12 ako jeho hodnotu. 918 00:37:20,920 --> 00:37:23,780 Takže ak budeme nasledovať 12, my sme len tak nájsť x. 919 00:37:23,780 --> 00:37:27,400 Takže bez ohľadu robíme s hviezda sa stane 920 00:37:27,400 --> 00:37:30,790 x, pretože obsahuje adresa x. 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 >> A to je ako jadru opravy. 925 00:37:37,750 --> 00:37:41,500 Takže teraz sme schopní, z piatich, v skutočnosti 926 00:37:41,500 --> 00:37:43,840 prístup k pamäti, ktorá žila v main. 927 00:37:43,840 --> 00:37:47,980 Takže to pamäť nežije do päť, rovnako ako predtým, táto adresa 12. 928 00:37:47,980 --> 00:37:50,980 A my sme boli schopní ísť tam a zmeňte jej hodnotu na 5. 929 00:37:50,980 --> 00:37:53,990 >> A potom, keď sa vrátime, zabúdame. 930 00:37:53,990 --> 00:37:55,720 Máme zabudnúť na hviezdy a. 931 00:37:55,720 --> 00:37:57,020 A x je stále päť. 932 00:37:57,020 --> 00:37:58,327 933 00:37:58,327 --> 00:38:00,160 Takže ak chcete, aby implementovať funkciu swap 934 00:38:00,160 --> 00:38:05,010 by ste jednoducho presne to isté, okrem musíte tu int hviezdy, 935 00:38:05,010 --> 00:38:06,140 a tak ďalej a tak ďalej. 936 00:38:06,140 --> 00:38:06,976 OK? 937 00:38:06,976 --> 00:38:07,475 Sme dobre? 938 00:38:07,475 --> 00:38:09,860 939 00:38:09,860 --> 00:38:10,610 V pohode. 940 00:38:10,610 --> 00:38:12,410 >> Takže ukazovateľ aritmetiku. 941 00:38:12,410 --> 00:38:13,960 To je trochu zložité tému. 942 00:38:13,960 --> 00:38:16,554 Tak to dopadá, že ukazovatele sú len celé čísla. 943 00:38:16,554 --> 00:38:17,970 Môžete si ich predstaviť ako celé čísla. 944 00:38:17,970 --> 00:38:21,080 Vzhľadom k tomu, v pamäti máte, ako adresa pamäti nula, jedna, dva, tri, 945 00:38:21,080 --> 00:38:21,900 štyri, päť. 946 00:38:21,900 --> 00:38:23,900 Takže môžeme zhrnúť adresy pamäti. 947 00:38:23,900 --> 00:38:27,230 >> A to je zvyčajne to, čo robíte, keď ste v poli a, napr. 948 00:38:27,230 --> 00:38:30,540 Pole je rovnako ako susediace blok pamäti, hŕbu znakov, 949 00:38:30,540 --> 00:38:31,840 napríklad kopa ints. 950 00:38:31,840 --> 00:38:34,420 Takže ak chcete ísť do Druhý int alebo tretej int, 951 00:38:34,420 --> 00:38:37,830 stačí sčítať niečo ako prvý adresu, a budete sa tam dostať. 952 00:38:37,830 --> 00:38:39,620 Tak toto je naozaj užitočné pre to. 953 00:38:39,620 --> 00:38:41,850 >> A to, aby na pamäti, aj keď je 954 00:38:41,850 --> 00:38:45,140 že to nie je len rád normálne aritmetika v tom zmysle, 955 00:38:45,140 --> 00:38:50,304 že ak máte čo do činenia s, povedzme, int hviezda, a pridáte 1 na to, 956 00:38:50,304 --> 00:38:52,220 potom nebudeš pridať 1 na adresu, 957 00:38:52,220 --> 00:38:53,950 budete sa pridajú 4 na adresu. 958 00:38:53,950 --> 00:38:55,030 959 00:38:55,030 --> 00:38:56,670 Vzhľadom k tomu, int je 4 bajty. 960 00:38:56,670 --> 00:38:57,720 961 00:38:57,720 --> 00:38:59,540 >> Tak to je rovnako ako chôdzi na pole. 962 00:38:59,540 --> 00:39:05,260 Ak máme rad množstvom ints a potom sa snažíme ísť do druhej, 963 00:39:05,260 --> 00:39:08,790 je to v podstate len ako súčet adresa prvého plus 1. 964 00:39:08,790 --> 00:39:10,040 965 00:39:10,040 --> 00:39:13,425 Ale to nebude be-- len povedzme, že adresa prvého je 4. 966 00:39:13,425 --> 00:39:14,560 967 00:39:14,560 --> 00:39:16,250 Tu, v tomto prípade. 968 00:39:16,250 --> 00:39:19,780 969 00:39:19,780 --> 00:39:22,850 A ak by sme zhrnúť, tak to je to, čo sa deje. 970 00:39:22,850 --> 00:39:23,530 Máme int. 971 00:39:23,530 --> 00:39:25,640 Int x sa rovná 5. 972 00:39:25,640 --> 00:39:26,950 X má hodnotu 5. 973 00:39:26,950 --> 00:39:31,240 A my inicializovať ukazovateľ, int y int hviezda y sa rovná adresu x. 974 00:39:31,240 --> 00:39:33,660 >> Predpokladajme, že adresa x 4. 975 00:39:33,660 --> 00:39:36,960 Čo sa bude diať Teraz, keď súčet pridať 1 k y? 976 00:39:36,960 --> 00:39:39,110 977 00:39:39,110 --> 00:39:44,790 Bude to vlastne súčet 4, nie len 1. 978 00:39:44,790 --> 00:39:50,920 Tak pridám 1, ale v skutočnosti pridané 4, pretože počítač je šikovný. 979 00:39:50,920 --> 00:39:55,275 Takže to bude naozaj sčítať aj časy veľkosť typu ukazovatele. 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 >> Takže ak to bolo znak, napríklad, ak by sa jednalo o char hviezda y, 984 00:40:02,440 --> 00:40:07,141 a keď sme pridali 1, potom by byť 5, pretože znak je 1 bajt. 985 00:40:07,141 --> 00:40:07,640 Dobré? 986 00:40:07,640 --> 00:40:10,560 987 00:40:10,560 --> 00:40:13,190 >> A konečne sme sa dostali do ukazovatele a polia. 988 00:40:13,190 --> 00:40:16,451 Ukazuje sa, že zakaždým, keď máte čo do činenia s radom, 989 00:40:16,451 --> 00:40:18,075 ste vlastne do činenia s ukazovateľom. 990 00:40:18,075 --> 00:40:19,720 991 00:40:19,720 --> 00:40:24,777 Veľmi pekné koncepčné dôvod pre je to, že polia sú veľmi veľké. 992 00:40:24,777 --> 00:40:27,360 Takže pamätajte, že som povedal, že zakaždým, keď sa prejsť veci okolo seba, 993 00:40:27,360 --> 00:40:29,097 kopírovanie všetko. 994 00:40:29,097 --> 00:40:31,180 Takže ak máte pole To je naozaj, ale naozaj veľký, 995 00:40:31,180 --> 00:40:32,990 nemáte naozaj chcete kopírovať všetko zakaždým 996 00:40:32,990 --> 00:40:35,710 ho prejsť okolo druhého funkcie, pretože to je jednoducho 997 00:40:35,710 --> 00:40:37,190 obrovské množstvo práce. 998 00:40:37,190 --> 00:40:39,710 Takže to, čo robíte, je hneď za adresa prvého bajtu. 999 00:40:39,710 --> 00:40:40,969 1000 00:40:40,969 --> 00:40:44,010 A potom funkcia bude mať prístup na všetky prvky v tomto poli. 1001 00:40:44,010 --> 00:40:48,670 Takže si prešiel rad jeho adresy, takže adresa prvého bajtu. 1002 00:40:48,670 --> 00:40:53,010 >> Takže ak budeme deklarovať int pole 3, tu vieme, 1003 00:40:53,010 --> 00:40:57,470 Ako získať prístup k prvej prvok pomocou držiaka notácie. 1004 00:40:57,470 --> 00:41:02,410 Ak si pamätáte na držiak notácie, pole držiak 0 sa rovná 1. 1005 00:41:02,410 --> 00:41:06,330 No, bolo by to presne rovnako ako práve tam a dal 1. 1006 00:41:06,330 --> 00:41:07,370 1007 00:41:07,370 --> 00:41:09,110 OK, je presne to isté. 1008 00:41:09,110 --> 00:41:13,010 Takže držiaku zápisu v tu bude rovnaký ako tomto riadku. 1009 00:41:13,010 --> 00:41:18,600 >> A hádajte, čo sa držiak zápisnicu pre pole držiaku 1 bude? 1010 00:41:18,600 --> 00:41:20,440 To bude len to isté, ako to. 1011 00:41:20,440 --> 00:41:22,500 Takže pridať jeden na pole. 1012 00:41:22,500 --> 00:41:24,370 Presunúť jeden po pamäti. 1013 00:41:24,370 --> 00:41:26,310 Choďte tam, a dať 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 A táto linka je to isté. 1017 00:41:29,870 --> 00:41:34,860 Chceme ísť do tretej box, takže polia a 2. 1018 00:41:34,860 --> 00:41:37,465 Choďte tam, a dal 3. 1019 00:41:37,465 --> 00:41:39,340 Tak v pamäti, čo je sa stane, je, že sme 1020 00:41:39,340 --> 00:41:44,400 bude mať 1, 2, a 3, tri prvky tohto poľa. 1021 00:41:44,400 --> 00:41:46,970 >> Mohli sme to urobili pomocou naše zoznámiť držiak notácie. 1022 00:41:46,970 --> 00:41:49,410 Chcem len vy vedieť že sú to isté. 1023 00:41:49,410 --> 00:41:50,530 1024 00:41:50,530 --> 00:41:53,010 OK, otázky týkajúce sa tohto? 1025 00:41:53,010 --> 00:41:56,115 1026 00:41:56,115 --> 00:41:56,615 Nice. 1027 00:41:56,615 --> 00:41:57,990 1028 00:41:57,990 --> 00:41:59,880 Teraz idem do ruky to sa k Hannah, 1029 00:41:59,880 --> 00:42:00,330 >> HANNAH: Yay, Yee-haw. 1030 00:42:00,330 --> 00:42:02,246 >> Binky: Rozprávanie o pamäte a článok veci. 1031 00:42:02,246 --> 00:42:06,554 [APPLAUSE] 1032 00:42:06,554 --> 00:42:10,150 >> HANNAH: Ahoj, v pohode, takže sme hovoriť trochu viac 1033 00:42:10,150 --> 00:42:13,090 o pamäti, ktoré sme práve riešiť pomocou ukazovateľov. 1034 00:42:13,090 --> 00:42:16,060 Takže tam sú dve hlavné časti pamäti, že sme zaoberá. 1035 00:42:16,060 --> 00:42:18,830 Máme hromadu, ktorá rastie up v spodnej a haldy, ktoré 1036 00:42:18,830 --> 00:42:20,600 ide dole z vrcholu. 1037 00:42:20,600 --> 00:42:24,690 A zásobník bude držať všetky naše inštančný premenné. 1038 00:42:24,690 --> 00:42:28,860 Tak každý volanie funkcie dostane vlastný malý rámik na zásobníku. 1039 00:42:28,860 --> 00:42:32,160 Tak ako Gabe už bolo spomenuté, ak sa znovu a znovu volanie funkcie, 1040 00:42:32,160 --> 00:42:34,180 budeme na seba veci na zásobníku. 1041 00:42:34,180 --> 00:42:35,220 1042 00:42:35,220 --> 00:42:38,570 >> A podobne, haldy, ktorý začína na vrchole 1043 00:42:38,570 --> 00:42:42,660 bude držať všetky pamäte že sme dynamicky prideliť. 1044 00:42:42,660 --> 00:42:45,110 A tak ako my dynamicky alokovať pamäť, 1045 00:42:45,110 --> 00:42:47,580 to príde dole smerom ku dnu. 1046 00:42:47,580 --> 00:42:51,340 Pár vecí, byť vedomí, ak sme pomocou zásobníka a haldy, 1047 00:42:51,340 --> 00:42:55,200 s komínom, ak máme príliš many-- poďme say-- rekurzívne volanie, 1048 00:42:55,200 --> 00:42:58,392 a my sme volaní funkcie znova, a znova a znova a znova, 1049 00:42:58,392 --> 00:43:00,350 a to je stohovanie up, stohovanie up, stohovanie up. 1050 00:43:00,350 --> 00:43:01,570 A to bude naraziť do haldy. 1051 00:43:01,570 --> 00:43:03,040 Chystáme sa spustiť z pamäte. 1052 00:43:03,040 --> 00:43:05,100 To bude spôsobovať Problémom pre počítač. 1053 00:43:05,100 --> 00:43:06,770 A to nazýva pretečenie zásobníka. 1054 00:43:06,770 --> 00:43:09,728 Tak to je určite niečo, čo vás mali byť vedomí a snažia sa vyhnúť. 1055 00:43:09,728 --> 00:43:10,228 1056 00:43:10,228 --> 00:43:14,050 A haldy, mať na pamäti, nie náhodou úniku pamäte. 1057 00:43:14,050 --> 00:43:17,950 Kedykoľvek budete používať malloc, nie zabudol uvoľniť túto pamäť. 1058 00:43:17,950 --> 00:43:20,040 Inak to bude len byť na halde premárnené, 1059 00:43:20,040 --> 00:43:23,230 a počítač nebude vedieť, že je zadarmo na použitie, že pamäť. 1060 00:43:23,230 --> 00:43:25,810 To sú len pár vecí byť veľmi opatrní pri 1061 00:43:25,810 --> 00:43:28,580 máte čo do činenia s zásobníka a haldy. 1062 00:43:28,580 --> 00:43:30,412 Akékoľvek otázky s tým? 1063 00:43:30,412 --> 00:43:31,304 Úžasné. 1064 00:43:31,304 --> 00:43:31,900 >> OK, v pohode. 1065 00:43:31,900 --> 00:43:32,940 1066 00:43:32,940 --> 00:43:36,810 Takže tento druh má rovnaké nápad, pretože pretečeniu zásobníka, kde 1067 00:43:36,810 --> 00:43:39,850 ideme nad rámec rámec toho, čo pamäť 1068 00:43:39,850 --> 00:43:41,960 Je by sme mali byť schopní používať. 1069 00:43:41,960 --> 00:43:45,077 Tak sa napríklad vyrovnávacia pamäť, alebo mohol len myslieť na to ako pole. 1070 00:43:45,077 --> 00:43:47,660 A my sme povedali OK, ideme na vytvoriť tento pekný malý poľa. 1071 00:43:47,660 --> 00:43:49,140 Bude to byť reťazec. 1072 00:43:49,140 --> 00:43:50,630 Alebo to bude ukladať znaky. 1073 00:43:50,630 --> 00:43:51,720 A to len tak pozdraviť. 1074 00:43:51,720 --> 00:43:52,678 A je to neurčité. 1075 00:43:52,678 --> 00:43:53,990 To je všetko. 1076 00:43:53,990 --> 00:43:58,240 >> Ale keby som bol niekto zlý a chcel niečo zlého s týmto poľom, čo 1077 00:43:58,240 --> 00:44:02,310 Čo som mohol urobiť, je pokúsiť sa napísať za koncom reťazca. 1078 00:44:02,310 --> 00:44:04,490 A ako uvidíte, ak je Píšem dosť ďaleko, 1079 00:44:04,490 --> 00:44:06,980 Ja si skutočne ovplyvniť spiatočná adresa. 1080 00:44:06,980 --> 00:44:09,530 A ak začnem mať vplyv na spiatočná adresa, 1081 00:44:09,530 --> 00:44:11,730 Aj vplyv ako program v skutočnosti beží. 1082 00:44:11,730 --> 00:44:15,900 A miesto návratu, tie Viete, šťastný reťazec ako ahoj, som 1083 00:44:15,900 --> 00:44:19,460 mohol urobiť niečo zlé, ako ísť do niekde inde v počítači, stále 1084 00:44:19,460 --> 00:44:22,146 pamäť, zmeňte ho, čo chcem robiť. 1085 00:44:22,146 --> 00:44:25,020 Takže to je to, čo by to vyzerať je, keď som sa trochu naplnil ju až 1086 00:44:25,020 --> 00:44:27,400 s náhodnou hodnotou odpadkov, V tomto prípade, len. 1087 00:44:27,400 --> 00:44:30,490 A potom, keď som sa v skutočnosti dostal na adresu v pamäti, 1088 00:44:30,490 --> 00:44:33,740 Začal som ju naplníte niečím že urobil to, čo som chcel, aby to robiť. 1089 00:44:33,740 --> 00:44:34,952 1090 00:44:34,952 --> 00:44:36,410 Akékoľvek otázky sa pretečeniu vyrovnávacej pamäti? 1091 00:44:36,410 --> 00:44:38,450 1092 00:44:38,450 --> 00:44:40,730 Úžasné, lietanie vpravo prostredníctvom tejto veci. 1093 00:44:40,730 --> 00:44:43,530 >> OK, takže sme veľa hovorili o o ukazovatele s Gabe. 1094 00:44:43,530 --> 00:44:45,790 Ako sa vlastne dostať ukazovateľ? 1095 00:44:45,790 --> 00:44:48,070 Ako sa dostaneme adresu v pamäti? 1096 00:44:48,070 --> 00:44:51,040 No, môžeme použiť tento pekný volanie funkcie malloc, ktoré 1097 00:44:51,040 --> 00:44:53,370 dostane kúsok pamäti, 1098 00:44:53,370 --> 00:44:55,480 konkrétne haldy, ako sme sa bavili, 1099 00:44:55,480 --> 00:44:59,780 a to bude vám späť ukazovateľ na túto adresu v pamäti. 1100 00:44:59,780 --> 00:45:01,950 A argument, že sme dať na malloc 1101 00:45:01,950 --> 00:45:04,280 je, koľko miesta v pamäti chceme. 1102 00:45:04,280 --> 00:45:06,100 >> Takže vidíte, veľkosť v byte. 1103 00:45:06,100 --> 00:45:08,670 Povedzme, napríklad, alebo v skutočnosti, v tomto príklade, 1104 00:45:08,670 --> 00:45:12,040 sme sa umiestňuje dostatočne priestor pre 10 celé čísla. 1105 00:45:12,040 --> 00:45:15,640 Takže asi to, čo budeme chcieť aby tu je pole 10 celých čísel. 1106 00:45:15,640 --> 00:45:19,641 Tak sme sa dať veľkosť ints, ktorý sme sa dozvedeli, bolo, koľko bajtov? 1107 00:45:19,641 --> 00:45:20,140 STUDENT: 4. 1108 00:45:20,140 --> 00:45:22,920 HANNAH: 4, krásny, a my Chcete 10 z nich v rade, 1109 00:45:22,920 --> 00:45:28,050 takže máme dostatok priestoru pre uložiť všetky 10 celé čísla, v tomto prípade. 1110 00:45:28,050 --> 00:45:31,290 Niečo extra dôležité, kedykoľvek budete volať malloc, 1111 00:45:31,290 --> 00:45:32,880 budete sa musieť pozrieť null. 1112 00:45:32,880 --> 00:45:37,310 Ak nemáte kontrolu null, dobre, malloc, ak dôjde k zaplneniu 1113 00:45:37,310 --> 00:45:40,400 a vám už dá akýkoľvek viac pamäte, vráti null. 1114 00:45:40,400 --> 00:45:42,060 1115 00:45:42,060 --> 00:45:45,630 Takže ak nechcete zistiť, malloc môže vrátiť hodnotu null. 1116 00:45:45,630 --> 00:45:51,265 A potom keď sa snažíme dereferencia null ukazovateľ, 1117 00:45:51,265 --> 00:45:54,960 budeme mať poruchu segmentácie, ktoré budeme hovoriť práve teraz. 1118 00:45:54,960 --> 00:45:56,150 1119 00:45:56,150 --> 00:45:56,650 Úžasné. 1120 00:45:56,650 --> 00:45:58,300 >> OK, otázky s malloc? 1121 00:45:58,300 --> 00:46:00,044 1122 00:46:00,044 --> 00:46:00,544 Áno? 1123 00:46:00,544 --> 00:46:05,460 >> STUDENT: Má kontrolu null [Nepočuteľné] nerobte to na teste? 1124 00:46:05,460 --> 00:46:08,100 >> HANNAH: Jasne, bola otázka to matter-- na kvíz, 1125 00:46:08,100 --> 00:46:10,420 dostanete body, keby nezaškrtnete NULL? 1126 00:46:10,420 --> 00:46:12,794 Áno, dostanete body off ak nemáte kontrolu null. 1127 00:46:12,794 --> 00:46:16,030 Kedykoľvek budete volať malloc, a to ako na kvíz a vaše psets a v reálnom živote, 1128 00:46:16,030 --> 00:46:17,155 budete sa musieť pozrieť null. 1129 00:46:17,155 --> 00:46:18,330 Dobrá otázka. 1130 00:46:18,330 --> 00:46:19,689 >> Gabe: Čo keď nemám oslobodiť? 1131 00:46:19,689 --> 00:46:21,730 HANNAH: Gabe chce vedieť, čo keď nie zadarmo. 1132 00:46:21,730 --> 00:46:25,030 Potom budeme mať pretečeniu pamäte v našom haldy. 1133 00:46:25,030 --> 00:46:26,140 Nejaké ďalšie otázky? 1134 00:46:26,140 --> 00:46:27,550 Áno? 1135 00:46:27,550 --> 00:46:30,120 >> STUDENT: Môže you-- ísť cez buffer overflow real znova rýchlo? 1136 00:46:30,120 --> 00:46:30,530 >> HANNAH: Jasne. 1137 00:46:30,530 --> 00:46:33,071 Otázkou bolo, môžeme ísť cez buffer overflow naozaj rýchlo. 1138 00:46:33,071 --> 00:46:35,050 Vráťme sa k tým snímok. 1139 00:46:35,050 --> 00:46:37,430 Tak vyrovnávaciu pamäť, môžete len myslieť na to ako pole, nie? 1140 00:46:37,430 --> 00:46:39,360 Máte nejaké miesto v pamäti. 1141 00:46:39,360 --> 00:46:43,580 A keď sme sa prvýkrát vytvoriť našu ponuku, vieme, že polia majú pevnú veľkosť, 1142 00:46:43,580 --> 00:46:45,470 alebo naši pufer má pevnú veľkosť. 1143 00:46:45,470 --> 00:46:51,360 >> Takže povedzme, že v tomto prípade máme len dostatok priestoru na napísanie reťazec ahoj. 1144 00:46:51,360 --> 00:46:57,340 Ak pôjdeme okolo, že hranica, keď pôjdeme okolo čo naše pole sme si povedali, by to mohlo mať, 1145 00:46:57,340 --> 00:46:59,780 by sme mohli skutočne začať zápisu do pamäte 1146 00:46:59,780 --> 00:47:01,780 že počítač nie je Chcete nám napísať na. 1147 00:47:01,780 --> 00:47:02,810 1148 00:47:02,810 --> 00:47:05,580 A najmä, keď sme hit niečo ako návrat 1149 00:47:05,580 --> 00:47:08,700 riešenie funkcie, ktoré, ako každý iný kus pamäti, 1150 00:47:08,700 --> 00:47:11,420 je len niekde v počítač, môžete skutočne 1151 00:47:11,420 --> 00:47:14,080 zmeniť a začať robiť zlé veci. 1152 00:47:14,080 --> 00:47:15,272 Odpoveď na vašu otázku? 1153 00:47:15,272 --> 00:47:16,230 Super, niečo iné? 1154 00:47:16,230 --> 00:47:17,466 Áno? 1155 00:47:17,466 --> 00:47:21,948 >> Žiak: Takže stack [nepočuteľné] sa sa tým, že idú od dna stúpa. 1156 00:47:21,948 --> 00:47:25,434 V zásobníku rozsahu, robí pamäť ísť z, rovnako ako, 1157 00:47:25,434 --> 00:47:27,230 hore dole vzťahujúce sa ku každej prestávke? 1158 00:47:27,230 --> 00:47:28,646 1159 00:47:28,646 --> 00:47:32,100 >> HANNAH: Ako you-- odložiť na Rob na tento jeden. 1160 00:47:32,100 --> 00:47:35,370 1161 00:47:35,370 --> 00:47:38,213 >> ROB: To bude rast v rovnakom smer ako zásobník rastie. 1162 00:47:38,213 --> 00:47:38,712 HANNAH: OK. 1163 00:47:38,712 --> 00:47:40,967 ROB: Tak som sa zmiasť. 1164 00:47:40,967 --> 00:47:42,331 To bude abstrakcie. 1165 00:47:42,331 --> 00:47:42,831 HANNAH: OK. 1166 00:47:42,831 --> 00:47:44,000 ROB: To je v poriadku. 1167 00:47:44,000 --> 00:47:49,420 Takže v prípade, že zásobník rastie up, potom ju generally-- 1168 00:47:49,420 --> 00:47:52,380 nemusí byť takto. ale môžete deklarovať int x. 1169 00:47:52,380 --> 00:47:54,120 Potom môžete deklarovať int y. 1170 00:47:54,120 --> 00:47:57,300 Potom int x bude všeobecne nižšia vo fronte, ako int y. 1171 00:47:57,300 --> 00:47:59,300 Ale to je proste fakt. 1172 00:47:59,300 --> 00:48:02,410 To nie je ako dôležitú osiva vec. 1173 00:48:02,410 --> 00:48:06,800 >> ROB: Takže otázka znovu bolo len čo sa deje každý snímok buduje. 1174 00:48:06,800 --> 00:48:08,960 Takže každá funkcia dostane Kúsok zásobníka. 1175 00:48:08,960 --> 00:48:13,030 A ako idete hore, v rámci ktorej kúsok, v tomto rámci, 1176 00:48:13,030 --> 00:48:16,710 budeme hovoriť, že premenné v tomto rámci takisto pohybovať nahor. 1177 00:48:16,710 --> 00:48:17,473 Otázka? 1178 00:48:17,473 --> 00:48:18,688 >> ROB: Len aby sa na mikrofónu. 1179 00:48:18,688 --> 00:48:19,396 HANNAH: Oh, yeah. 1180 00:48:19,396 --> 00:48:20,440 ROB: Budem hovoriť do vás. 1181 00:48:20,440 --> 00:48:21,410 HANNAH: Oh, jo, OK. 1182 00:48:21,410 --> 00:48:24,150 ROB: Výnimkou je pre pole a structs, 1183 00:48:24,150 --> 00:48:27,470 kde polia, nižšia index v poli, 1184 00:48:27,470 --> 00:48:29,930 a structs na vyššiu polia v structs 1185 00:48:29,930 --> 00:48:35,040 je zaručené, že pri nižších adresách neskorší ako hodnota v poli. 1186 00:48:35,040 --> 00:48:36,720 Tak tie sú zaručené. 1187 00:48:36,720 --> 00:48:40,310 Ale nejaké konkrétne premenné vo vnútri, ako int x, int y vo funkcii, 1188 00:48:40,310 --> 00:48:43,030 nie je nutné vzťah medzi ich adresy. 1189 00:48:43,030 --> 00:48:44,882 1190 00:48:44,882 --> 00:48:46,340 HANNAH: Ďalšia otázka tu? 1191 00:48:46,340 --> 00:48:51,620 Žiak: Takže v pufri toku, iba pretečeniu vyrovnávacej pamäti 1192 00:48:51,620 --> 00:48:54,980 došlo iba vtedy, keď sa, ako, pridelené 1193 00:48:54,980 --> 00:49:01,056 množstvo polia že potom je väčšia? 1194 00:49:01,056 --> 00:49:03,230 Rovnako ako, že? 1195 00:49:03,230 --> 00:49:05,435 Takže ak sa pýtate na niečo z user-- 1196 00:49:05,435 --> 00:49:06,018 >> HANNAH: Mm-hm. 1197 00:49:06,018 --> 00:49:08,600 STUDENT: Môže sa násilne dať niečo späť 1198 00:49:08,600 --> 00:49:11,777 to je väčšia než čokoľvek ste pridelené pre nich? 1199 00:49:11,777 --> 00:49:13,610 HANNAH: Jasne, takže otázka bola v podstate, 1200 00:49:13,610 --> 00:49:16,217 Užívateľ môže dať viac, ako ste chceli? 1201 00:49:16,217 --> 00:49:16,800 STUDENT: Jo. 1202 00:49:16,800 --> 00:49:18,480 HANNAH: No, mohli by ste zabrániť používateľ v tom, že. 1203 00:49:18,480 --> 00:49:21,350 Dalo by sa konkrétne povedať nie daj mi viac než x počet bajtov od 1204 00:49:21,350 --> 00:49:24,330 Len som vám dal priestor pre x počet bytov, x počet znakov. 1205 00:49:24,330 --> 00:49:25,700 Tak to je niečo, čo chcete, aby sa zabránilo. 1206 00:49:25,700 --> 00:49:26,199 Áno? 1207 00:49:26,199 --> 00:49:30,270 Aký je rozdiel medzi stack overflow a pretečeniu vyrovnávacej pamäti? 1208 00:49:30,270 --> 00:49:32,140 >> HANNAH: OK, takže zásobník overflow-- oh, čo 1209 00:49:32,140 --> 00:49:34,790 je rozdiel medzi stoh overflow a buffer overflow? 1210 00:49:34,790 --> 00:49:37,581 Takže chceme myslieť na pretečenie zásobníka deje, keď sme v skutočnosti 1211 00:49:37,581 --> 00:49:39,530 stohovanie do týchto volanie funkcie. 1212 00:49:39,530 --> 00:49:42,991 Povedzme, že máte rekurzívne funkciu, pretože vieme, že zakaždým, keď sa 1213 00:49:42,991 --> 00:49:45,240 volanie funkcie, je to dostane vlastný rám v zásobníku. 1214 00:49:45,240 --> 00:49:47,950 >> Tak sme sa vyrovnať príliš vysoká, a potom začneme pretečeniu. 1215 00:49:47,950 --> 00:49:50,530 A my používať príliš veľa pamäte, a Nemáme nikde odišiel. 1216 00:49:50,530 --> 00:49:51,590 Sme si, že chyba. 1217 00:49:51,590 --> 00:49:53,930 >> Pretečeniu vyrovnávacej pamäte je v rámci programu. 1218 00:49:53,930 --> 00:49:57,180 Chceme nemusia nutne mať nedostatok pamäte rovnakým spôsobom 1219 00:49:57,180 --> 00:50:00,080 že by sme mohli, pokiaľ sme stohovanie až tak veľa volanie funkcií, 1220 00:50:00,080 --> 00:50:04,540 ale píšeme okolo pamäti že vieme, že môžeme použiť. 1221 00:50:04,540 --> 00:50:06,170 A to nám umožňuje robiť zlé veci. 1222 00:50:06,170 --> 00:50:08,060 1223 00:50:08,060 --> 00:50:08,560 Jo? 1224 00:50:08,560 --> 00:50:10,950 >> ROB: Áno, možno budete chcieť, len zopakovať to, 1225 00:50:10,950 --> 00:50:12,699 ale môžete si tiež myslí, o pretečeniu zásobníka 1226 00:50:12,699 --> 00:50:15,374 ako ako určitý typ z pretečeniu vyrovnávacej pamäti. 1227 00:50:15,374 --> 00:50:17,665 Alebo si len myslíte, že vaše zásobník ako naozaj veľký vyrovnávacej pamäti. 1228 00:50:17,665 --> 00:50:20,724 Potom, keď ste pretečeniu ste zásobník, je to niečo ako pretečeniu vyrovnávacej pamäti. 1229 00:50:20,724 --> 00:50:23,390 Ale pretečeniu zásobníka je len špecifický termín používa, keď zásobník 1230 00:50:23,390 --> 00:50:24,310 sám pretečeniu. 1231 00:50:24,310 --> 00:50:27,500 >> HANNAH: Jo, tak opakujte pre video, 1232 00:50:27,500 --> 00:50:31,756 to si môžete myslieť pretečenie zásobníka ako špecifický typ pretečeniu vyrovnávacej pamäte. 1233 00:50:31,756 --> 00:50:33,040 V pohode? 1234 00:50:33,040 --> 00:50:34,562 Akékoľvek ďalšie otázky, ako budeme pokračovať? 1235 00:50:34,562 --> 00:50:35,380 1236 00:50:35,380 --> 00:50:35,880 Úžasné. 1237 00:50:35,880 --> 00:50:37,130 1238 00:50:37,130 --> 00:50:39,727 >> OK, v pohode, tak sa poďme hovoriť o Niektoré bežné chybové správy. 1239 00:50:39,727 --> 00:50:42,060 To je niečo, čo má ukázali na viacerých kvízy, 1240 00:50:42,060 --> 00:50:44,740 tak niečo, čo stojí za to pričom druhý pohľad na. 1241 00:50:44,740 --> 00:50:46,860 Som si istý, že ste sa stretli aspoň niektoré z nich 1242 00:50:46,860 --> 00:50:48,690 ako robíte váš problém sady. 1243 00:50:48,690 --> 00:50:50,980 Takže uistite sa, že môžete hovoriť o nich na kvíz. 1244 00:50:50,980 --> 00:50:52,990 >> Takže prvá z nich je poruchy segmentácie. 1245 00:50:52,990 --> 00:50:55,250 A to kedykoľvek sme pokuse o prístup k pamäti 1246 00:50:55,250 --> 00:50:57,130 že nie sme povolený prístup. 1247 00:50:57,130 --> 00:51:00,280 Takže ste migh videli to, Napríklad, v úteku. 1248 00:51:00,280 --> 00:51:03,390 Ak detekovať kolíziu vráti hodnotu NULL, a potom vás 1249 00:51:03,390 --> 00:51:05,500 sa snažil urobiť niečo s touto hodnotou null, 1250 00:51:05,500 --> 00:51:08,147 počítač by dal Ste chyba segmentácie. 1251 00:51:08,147 --> 00:51:10,730 Takže človek, dôležitá vec urobiť, aby sa pokúsili vyhnúť sa tejto 1252 00:51:10,730 --> 00:51:12,000 je vždy skontrolovať null. 1253 00:51:12,000 --> 00:51:13,300 1254 00:51:13,300 --> 00:51:16,180 >> Možno ste tiež vidieť implicitné deklarácie funkcie. 1255 00:51:16,180 --> 00:51:18,370 Tak toto je to, čo sa stane, keď vás Allison ukázal 1256 00:51:18,370 --> 00:51:20,150 ako urobiť prototyp, nie? 1257 00:51:20,150 --> 00:51:23,440 Takže povedzme, že máme nejaké funkcie, ktoré sme definovať. 1258 00:51:23,440 --> 00:51:24,440 Povedzme kocky. 1259 00:51:24,440 --> 00:51:27,120 A, ktorá ide na dne našej funkcie, pod hlavnou. 1260 00:51:27,120 --> 00:51:35,205 >> Ak by sme zabudli povedať počítač o kocky, kedy hlavný pokúsi volať kocky, 1261 00:51:35,205 --> 00:51:36,830 počítač bude, rovnako ako, ach môj bože. 1262 00:51:36,830 --> 00:51:38,300 Nemám potuchy, čo to znamená. 1263 00:51:38,300 --> 00:51:39,760 Neviem, čo mám robiť, tu. 1264 00:51:39,760 --> 00:51:41,594 Takže prototyp hovorí, nebojte sa. 1265 00:51:41,594 --> 00:51:42,510 Ja som ti to povedať. 1266 00:51:42,510 --> 00:51:43,132 >> To príde. 1267 00:51:43,132 --> 00:51:43,840 Nekrič na mňa. 1268 00:51:43,840 --> 00:51:46,697 Nedávaj mi implicitné Vyhlásenie o funkcie. 1269 00:51:46,697 --> 00:51:49,280 Takže ak sa táto chyba, jeden vec, ktorú budete chcieť urobiť, 1270 00:51:49,280 --> 00:51:50,821 je uistite sa, že máte prototyp. 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 >> A v neposlednom rade, nedeklarovaný identifikátor 1274 00:51:55,680 --> 00:52:00,570 je v podstate, keď sa pokúsite použiť variabilný, že ste vyhlásil. 1275 00:52:00,570 --> 00:52:03,449 Takže zrazu začnete hovorí, ako n a naviac plus. 1276 00:52:03,449 --> 00:52:04,740 A počítač hovorí, že to, čo je n? 1277 00:52:04,740 --> 00:52:06,660 Nikdy si mi nepovedala n bola vec. 1278 00:52:06,660 --> 00:52:10,930 >> Takže jedna vec, ktorú musíte sa uistiť, že urobil, je povedať počítaču, čo je n. 1279 00:52:10,930 --> 00:52:13,320 Tak napríklad, n môže byť celé číslo. 1280 00:52:13,320 --> 00:52:14,999 A potom sa vyhnúť tejto chybe. 1281 00:52:14,999 --> 00:52:16,290 Akékoľvek otázky týkajúce sa bežných chýb? 1282 00:52:16,290 --> 00:52:17,260 Áno? 1283 00:52:17,260 --> 00:52:19,344 >> STUDENT: Pre implicitné vyhlásenie o funkcii, 1284 00:52:19,344 --> 00:52:22,343 by tiež mohlo byť, že ste zabudli na jednu knižníc ste mali 1285 00:52:22,343 --> 00:52:24,400 zahrnúť, skôr ako prototyp? 1286 00:52:24,400 --> 00:52:26,359 >> HANNAH: Jasne, takže Otázkou bolo, mohol by ste 1287 00:52:26,359 --> 00:52:28,650 tiež získať túto chybu, ak si zabudli napríklad: knižnica. 1288 00:52:28,650 --> 00:52:29,085 >> Študent: Áno. 1289 00:52:29,085 --> 00:52:30,876 >> HANNAH: Určite, preto, že rovnakým spôsobom 1290 00:52:30,876 --> 00:52:33,540 že chceme, aby naše prototypy pred hlavnú funkciu, 1291 00:52:33,540 --> 00:52:37,717 ak budeme mať knižnicu, tie idú v podstate zahŕňajú prototypy, 1292 00:52:37,717 --> 00:52:39,425 zahŕňajú definície funkcií. 1293 00:52:39,425 --> 00:52:40,585 Veľká otázka. 1294 00:52:40,585 --> 00:52:43,230 >> STUDENT: Pre členenie poruchy, by to tiež 1295 00:52:43,230 --> 00:52:47,350 sa stalo, keby sme, ako sa snažil o prístup k premennej, 1296 00:52:47,350 --> 00:52:51,947 ako v inom [nepočuteľné] ako bola vyhlásená v roku? 1297 00:52:51,947 --> 00:52:54,030 HANNAH: Jasne, takže by sme sa dostať chybu segmentácie 1298 00:52:54,030 --> 00:52:56,270 ak sme sa snažili pristupovať premenná z pôsobnosti tejto smernice? 1299 00:52:56,270 --> 00:52:57,104 Bola to otázka? 1300 00:52:57,104 --> 00:52:57,645 Študent: Áno. 1301 00:52:57,645 --> 00:52:58,430 HANNAH: Beautiful. 1302 00:52:58,430 --> 00:53:01,840 Takže pravdepodobne budete dostať undeclared chyba namiesto identifikátor. 1303 00:53:01,840 --> 00:53:04,006 Takže to len tak povedať, Neviem, čo to je. 1304 00:53:04,006 --> 00:53:04,920 1305 00:53:04,920 --> 00:53:05,920 Cool, niečo iné? 1306 00:53:05,920 --> 00:53:07,744 1307 00:53:07,744 --> 00:53:08,980 Jo, OK, prekrásna. 1308 00:53:08,980 --> 00:53:10,330 1309 00:53:10,330 --> 00:53:12,400 >> V poriadku, takže rekurzia. 1310 00:53:12,400 --> 00:53:15,160 Tak som sa zmienil párkrát že by sme mohli dostať pretečeniu zásobníka 1311 00:53:15,160 --> 00:53:17,919 preto, že sme volaní našich rekurzívne funkcie toľkokrát. 1312 00:53:17,919 --> 00:53:20,210 Dostávame všetky tieto stoh rámy, bla, bla, bla. 1313 00:53:20,210 --> 00:53:22,420 Čo ešte je rekurzívne funkcie? 1314 00:53:22,420 --> 00:53:25,680 No, rekurzívne funkcie nejaká funkcia, ktorá volá sama seba. 1315 00:53:25,680 --> 00:53:26,820 1316 00:53:26,820 --> 00:53:30,160 >> Niektoré veci mať na pamäti, keď vás vykonávajú rekurzívne funkcie, 1317 00:53:30,160 --> 00:53:31,940 nezabudnite zahrnúť základné veci. 1318 00:53:31,940 --> 00:53:34,010 Referenčný prípad, je bod, v ktorom sme sa nakoniec. 1319 00:53:34,010 --> 00:53:38,740 Tak, napríklad, keď sme kódovanie, Povedzme, Fibonacci rekurzívne, 1320 00:53:38,740 --> 00:53:43,210 chceme, aby sa uistil, že až sa dostaneme na 0 alebo prvé číslo Fibonacciho, 1321 00:53:43,210 --> 00:53:46,220 tieto dve čísla majú tieto prípady, pretože tie nie sú závislé 1322 00:53:46,220 --> 00:53:47,700 na veci, ktoré bolo predtým. 1323 00:53:47,700 --> 00:53:48,990 Tí, ktorí majú svoje vlastné hodnoty. 1324 00:53:48,990 --> 00:53:51,270 1325 00:53:51,270 --> 00:53:55,320 >> Niektorí profesionáli na rekurziu, čo je otázka, ktorú sme videli v minulých kvízy. 1326 00:53:55,320 --> 00:53:57,930 Tie môžu viesť k stručné, elegantný kód. 1327 00:53:57,930 --> 00:54:00,510 A mnoho funkcií, veľa rôznych algoritmov, 1328 00:54:00,510 --> 00:54:02,350 v skutočnosti samy o sebe k rekurzia. 1329 00:54:02,350 --> 00:54:05,510 Ich definícia by mohla byť rekurzívne a sama o sebe. 1330 00:54:05,510 --> 00:54:06,980 Takže Fibonacci je jedna. 1331 00:54:06,980 --> 00:54:07,860 Faktoriál je jeden. 1332 00:54:07,860 --> 00:54:10,480 Triedenie zlučovaním znamená one-- všetky veci, ktoré si môžete pozrieť. 1333 00:54:10,480 --> 00:54:12,650 1334 00:54:12,650 --> 00:54:13,460 OK, nejaké otázky? 1335 00:54:13,460 --> 00:54:13,960 Áno? 1336 00:54:13,960 --> 00:54:15,644 1337 00:54:15,644 --> 00:54:19,612 >> STUDENT: Je rohový prípad podobne ako základný prípad? 1338 00:54:19,612 --> 00:54:22,590 Alebo je to, že pre niektoré ďalšie druh [nepočuteľné]? 1339 00:54:22,590 --> 00:54:25,170 >> HANNAH: Jasne, takže roh prípad je any-- tak 1340 00:54:25,170 --> 00:54:27,580 rohová prípade rovnaká ako základné veci? 1341 00:54:27,580 --> 00:54:32,825 Rohový prípad je niečo, že vaša kód môže trochu správať inak. 1342 00:54:32,825 --> 00:54:34,450 1343 00:54:34,450 --> 00:54:38,610 Základný prípad je trochu súvisí, v že sú ako zvláštne prípady 1344 00:54:38,610 --> 00:54:40,240 že budete chcieť pozrieť na. 1345 00:54:40,240 --> 00:54:43,240 Ale predstava, že základné veci je to, že chcete, aby váš rekurzívne funkcie 1346 00:54:43,240 --> 00:54:44,870 zastaviť na nejakom mieste. 1347 00:54:44,870 --> 00:54:46,490 To nemôže držať volať seba navždy. 1348 00:54:46,490 --> 00:54:47,781 Je potrebné sa zastaviť na nejakom mieste. 1349 00:54:47,781 --> 00:54:49,340 1350 00:54:49,340 --> 00:54:53,460 >> ROB: Áno, často, vaše základné prípady môžu byť príklady rohových základní. 1351 00:54:53,460 --> 00:54:55,876 >> HANNAH: Jasne, v pohode, nič? 1352 00:54:55,876 --> 00:54:58,732 >> STUDENT: Mohli by ste vysvetliť, zakladá trochu viac? 1353 00:54:58,732 --> 00:55:01,600 Nemám úplne pochopiť [Nepočuteľné] základné prípady. 1354 00:55:01,600 --> 00:55:02,676 >> HANNAH: zo všeobecných prípadoch? 1355 00:55:02,676 --> 00:55:03,140 >> STUDENT: prípady Základné, jo. 1356 00:55:03,140 --> 00:55:03,770 >> HANNAH: Jo, určite. 1357 00:55:03,770 --> 00:55:04,270 Poďme sa pozrieť. 1358 00:55:04,270 --> 00:55:05,480 Máme kriedou tu? 1359 00:55:05,480 --> 00:55:06,690 1360 00:55:06,690 --> 00:55:07,320 Áno, máme. 1361 00:55:07,320 --> 00:55:09,530 OK, tak veľmi rýchlo, budem skúste napísať dosť veľký 1362 00:55:09,530 --> 00:55:11,320 takže môžete vidieť na obrazovke. 1363 00:55:11,320 --> 00:55:13,490 Poďme sa baviť o naozaj rýchlo, Fibonacci. 1364 00:55:13,490 --> 00:55:15,550 Tak ti dám Fibonacciho postupnosť. 1365 00:55:15,550 --> 00:55:17,090 Môžete sa pozrieť na definíciu. 1366 00:55:17,090 --> 00:55:26,050 >> V podstate každé číslo v poradí je súčtom dvoch predchádzajúcich čísel. 1367 00:55:26,050 --> 00:55:29,720 OK, tak tak, že som práve popísal Fibonacci, 1368 00:55:29,720 --> 00:55:31,530 ste mohli počuť rekurziu, že jo? 1369 00:55:31,530 --> 00:55:35,280 Keď som povedal, každé číslo je súčet dvoch predchádzajúcich čísel, 1370 00:55:35,280 --> 00:55:36,420 Dalo by sa povedať OK. 1371 00:55:36,420 --> 00:55:38,570 No, nth Fibonacci number-- tak poďme 1372 00:55:38,570 --> 00:55:42,260 že máme túto funkciu volal fib-- fib n 1373 00:55:42,260 --> 00:55:48,260 sa bude rovnať fib n mínus 1 plus-- ľúto, 1374 00:55:48,260 --> 00:55:51,240 budeme ísť na ďalší riadok cez here-- fib n mínus 2. 1375 00:55:51,240 --> 00:55:52,790 1376 00:55:52,790 --> 00:55:56,790 >> OK, tak to funguje skvele, ak ste pri pohľade na, napríklad, nula, jedna, 1377 00:55:56,790 --> 00:55:59,410 dva, tri, štyri, piate číslo Fibonacci, 1378 00:55:59,410 --> 00:56:03,561 kde si možno povedať, že 5 je rovné 2 + 3. 1379 00:56:03,561 --> 00:56:05,060 Ale čo keď ste na začiatku? 1380 00:56:05,060 --> 00:56:07,184 Čo keď ste len biť Tieto prvé dve hodnoty? 1381 00:56:07,184 --> 00:56:08,470 1382 00:56:08,470 --> 00:56:11,330 >> Ak chcete získať tento jeden, nemôžete hovoria pridať predchádzajúce dva, 1383 00:56:11,330 --> 00:56:13,930 preto, že nula a- neviem. 1384 00:56:13,930 --> 00:56:15,390 Takže v určitom bode, musíme zastaviť. 1385 00:56:15,390 --> 00:56:21,250 V určitom okamihu, je treba povedať, že tieto dvaja jednoducho majú svoje vlastné definície. 1386 00:56:21,250 --> 00:56:23,890 Číslo 0 Fibonacci je 0. 1387 00:56:23,890 --> 00:56:26,115 A prvé číslo Fibonacci je 1. 1388 00:56:26,115 --> 00:56:34,120 >> Takže spôsob, ako by som mohol tento kód, I by sa povedať, či n je menšia ako dva, 1389 00:56:34,120 --> 00:56:35,130 potom už len vrátiť n. 1390 00:56:35,130 --> 00:56:36,494 A to by bola moja referenčný prípad. 1391 00:56:36,494 --> 00:56:38,660 To je, ako viem, že prestať s rekurzívne funkcie. 1392 00:56:38,660 --> 00:56:40,640 1393 00:56:40,640 --> 00:56:41,410 Je to jasné? 1394 00:56:41,410 --> 00:56:41,940 Úžasné. 1395 00:56:41,940 --> 00:56:43,260 Niečo ďalšie o rekurziu? 1396 00:56:43,260 --> 00:56:44,890 1397 00:56:44,890 --> 00:56:45,930 Krásne. 1398 00:56:45,930 --> 00:56:48,750 >> Poďme rýchlo hovoriť o vyhľadávanie a triedenie beží čas. 1399 00:56:48,750 --> 00:56:52,660 A potom dám Davin niektorých čas hovoriť o kódovaní príklady. 1400 00:56:52,660 --> 00:56:56,490 Tak tu sú hlavným vyhľadávacím a druhy, ktoré by ste mali vedieť. 1401 00:56:56,490 --> 00:56:59,500 Guarantee-- nemôžem zaručiť, pretože som nevidel quiz-- 1402 00:56:59,500 --> 00:57:01,940 ale to príde kvíz po teste po ukončení programu. 1403 00:57:01,940 --> 00:57:04,050 Takže určite použiť tento graf. 1404 00:57:04,050 --> 00:57:05,682 Rovnako ako tento graf. 1405 00:57:05,682 --> 00:57:06,890 Daj si to na svoj ťahák. 1406 00:57:06,890 --> 00:57:07,931 Budete mať šťastný človek. 1407 00:57:07,931 --> 00:57:09,010 1408 00:57:09,010 --> 00:57:12,590 >> To nám hovorí, dobu chodu každého týchto triediť a hľadať algoritmy. 1409 00:57:12,590 --> 00:57:14,020 1410 00:57:14,020 --> 00:57:18,850 Takže lineárne vyhľadávanie, môžete vidieť beh čas, a to isté s binárne vyhľadávanie. 1411 00:57:18,850 --> 00:57:21,490 Ísť nad tým, čo tieto algoritmy robiť, všeobecnú predstavu. 1412 00:57:21,490 --> 00:57:24,220 Pozrite sa na nejaké pseudokódu, ak nie kód sám. 1413 00:57:24,220 --> 00:57:25,610 1414 00:57:25,610 --> 00:57:30,380 >> Uvidíte, že bublina druh má hornú viazané v najhoršom prípade n na druhú. 1415 00:57:30,380 --> 00:57:31,490 1416 00:57:31,490 --> 00:57:34,680 Takže ak naše poľa bol úplne späť predtým, ako sme chceli, aby to triediť, 1417 00:57:34,680 --> 00:57:37,090 by sme povedať, že je to bude trvať n štvorcov kroky. 1418 00:57:37,090 --> 00:57:38,160 1419 00:57:38,160 --> 00:57:41,730 Ale v najlepšom prípade, takže dolný odhad pre najlepší prípad 1420 00:57:41,730 --> 00:57:44,300 ak to bude už dokonale radené. 1421 00:57:44,300 --> 00:57:46,671 Potom všetko, čo musíte urobiť, je skontrolujte, či je triediť. 1422 00:57:46,671 --> 00:57:47,921 Je tu otázka, tu? 1423 00:57:47,921 --> 00:57:49,805 >> Študent: Keď by Ak chcete používať typ? 1424 00:57:49,805 --> 00:57:50,747 Sort. 1425 00:57:50,747 --> 00:57:52,160 Som len zvedavý. 1426 00:57:52,160 --> 00:57:53,510 >> HANNAH: Ak by ste ktorý chcete použiť pre výber druhu? 1427 00:57:53,510 --> 00:57:54,010 To z nich? 1428 00:57:54,010 --> 00:57:55,705 Ten, ktorý je n na druhú v oboch prípadoch? 1429 00:57:55,705 --> 00:57:56,860 >> STUDENT: [nepočuteľné]. 1430 00:57:56,860 --> 00:57:58,151 >> HANNAH: Takže je to veľmi odlišné. 1431 00:57:58,151 --> 00:58:00,760 Ak máte špecifické požiadavky programu, 1432 00:58:00,760 --> 00:58:04,887 ako veci, ako keby sme práve povedal realizovať search-- sorry-- 1433 00:58:04,887 --> 00:58:06,720 zaviesť akési, budete pravdepodobne chcieť ísť 1434 00:58:06,720 --> 00:58:09,950 pre jeden z tých, ktoré má najlepšie prípad n, 1435 00:58:09,950 --> 00:58:12,410 alebo dolná medza v najlepšom prípade n. 1436 00:58:12,410 --> 00:58:14,790 Ale tam by mohlo byť niektoré veci, ako, povedzme, 1437 00:58:14,790 --> 00:58:16,767 swapy sú naozaj drahé z nejakého dôvodu. 1438 00:58:16,767 --> 00:58:18,850 Potom by ste chceli robiť bubble sort, pretože vás 1439 00:58:18,850 --> 00:58:20,641 musíte urobiť toľko swapy, podobné veci. 1440 00:58:20,641 --> 00:58:21,710 1441 00:58:21,710 --> 00:58:23,098 Akékoľvek other-- áno? 1442 00:58:23,098 --> 00:58:25,488 >> STUDENT: Bolo by [nepočuteľné] povedať, že [nepočuteľné]? 1443 00:58:25,488 --> 00:58:30,077 1444 00:58:30,077 --> 00:58:31,910 HANNAH: To je jedna vec, že by sa povedať, 1445 00:58:31,910 --> 00:58:33,670 ak hľadáte na implementáciu. 1446 00:58:33,670 --> 00:58:35,850 Ako by som vlastne premýšľať o tom, prečo je n 1447 00:58:35,850 --> 00:58:40,840 squared je, že máme bežať cez naše pole dĺžky n, 1448 00:58:40,840 --> 00:58:42,765 zakaždým, takže vo väčšine, n swapov. 1449 00:58:42,765 --> 00:58:43,980 1450 00:58:43,980 --> 00:58:46,220 A musíme urobiť tento proces n krát. 1451 00:58:46,220 --> 00:58:51,130 >> Takže keď budete musieť vykonať najviac n swapy a pre n beží cez pole, 1452 00:58:51,130 --> 00:58:52,380 tam to bude n na druhú. 1453 00:58:52,380 --> 00:58:55,480 Ale áno, to bude odhalené prostredníctvom tohto dvojakého pre sláčiky, 1454 00:58:55,480 --> 00:58:59,428 ako otázka asked-- alebo vnorené slučky for, povedal by som. 1455 00:58:59,428 --> 00:59:00,890 OK? 1456 00:59:00,890 --> 00:59:03,375 >> A potom zlúčiť druh, ktorý je najrýchlejší druh teraz, 1457 00:59:03,375 --> 00:59:07,560 alebo že sme prebrali v CS50, vedia, že hlavný algoritmus je 1458 00:59:07,560 --> 00:59:10,150 Táto myšlienka vlámaniu do triedené kusy a potom 1459 00:59:10,150 --> 00:59:11,980 Zlúčením týchto triedené bitov. 1460 00:59:11,980 --> 00:59:14,170 A dostane nás log n log n. 1461 00:59:14,170 --> 00:59:17,110 Akékoľvek otázky týkajúce sa vyhľadávania a druhy, ako som ju preniesť na? 1462 00:59:17,110 --> 00:59:19,840 1463 00:59:19,840 --> 00:59:21,040 Poďme sa pozrieť. 1464 00:59:21,040 --> 00:59:21,800 >> Oh, spojových zoznamov. 1465 00:59:21,800 --> 00:59:23,210 Ospravedlňujeme sa, ale mám ešte jednu tému. 1466 00:59:23,210 --> 00:59:25,000 OK, super, spojových zoznamov. 1467 00:59:25,000 --> 00:59:27,900 Problém s poľami, majú pevnú veľkosť. 1468 00:59:27,900 --> 00:59:30,634 Takže ak neviete, aký veľký váš vstup bude, 1469 00:59:30,634 --> 00:59:32,050 nechcete vytvoriť pole. 1470 00:59:32,050 --> 00:59:34,080 Pretože ak budeme vytvárať matice, ktorá je príliš malá, 1471 00:59:34,080 --> 00:59:35,930 môžeme naraziť na pretečenie vyrovnávacej pamäti. 1472 00:59:35,930 --> 00:59:38,890 >> Takže namiesto toho, mohli by sme urobiť niečo s spojových zoznamov, ktoré 1473 00:59:38,890 --> 00:59:44,280 nám umožňuje dynamicky veľké dátové štruktúry 1474 00:59:44,280 --> 00:59:48,970 ktoré nám umožnia uložiť pružnejšie množstva dát. 1475 00:59:48,970 --> 00:59:54,030 Takže v každom uzle v našom spájať zoznam, máme dva kusy. 1476 00:59:54,030 --> 00:59:56,820 Máme skutočnú hodnotu, ktorá sa ukladajú. 1477 00:59:56,820 --> 00:59:59,530 Tak to je práve vec, ktorú by pozri v poli, napr. 1478 00:59:59,530 --> 01:00:04,600 A potom sme tiež sledovať ukazovateľ na ďalšie veci v pamäti. 1479 01:00:04,600 --> 01:00:06,430 >> Na rozdiel od poľa, ktoré vieme, že sú všetky deje 1480 01:00:06,430 --> 01:00:10,890 na be-- prvky poľa sú jedným po sebe v memory-- súvisí 1481 01:00:10,890 --> 01:00:13,300 Zoznam môže byť kdekoľvek v pamäti. 1482 01:00:13,300 --> 01:00:14,590 Sú ľubovoľné umiestnenie. 1483 01:00:14,590 --> 01:00:16,410 Takže ak by sme mali skutočne ísť nájsť, sme 1484 01:00:16,410 --> 01:00:19,770 je potrebné sledovať Ďalšia vec, ktorú v našom zozname. 1485 01:00:19,770 --> 01:00:22,840 >> A potom, aby sa vedieť kde tento zoznam ako celok, 1486 01:00:22,840 --> 01:00:26,276 všetko, čo máme sledovať je Prvý element v našom prepojenom zoznamu. 1487 01:00:26,276 --> 01:00:27,900 A že to nám umožní dotiahnuť do konca. 1488 01:00:27,900 --> 01:00:31,020 1489 01:00:31,020 --> 01:00:33,070 >> Takže to je to, ako môžete definovať režim. 1490 01:00:33,070 --> 01:00:36,160 To je skvelá príležitosť využiť structs. 1491 01:00:36,160 --> 01:00:39,660 Pretože máte túto myšlienku, dobre, pre daný uzol, mám dva kusy. 1492 01:00:39,660 --> 01:00:41,770 Mám skutočnú hodnotu sám. 1493 01:00:41,770 --> 01:00:45,610 A potom som sa ukazovateľ ďalší prvok v pripojenom zozname. 1494 01:00:45,610 --> 01:00:49,150 Tak vidíte, máme celé číslo n, ktorý bude skutočná hodnota, 1495 01:00:49,150 --> 01:00:53,150 a potom sa ukazovateľ na uzol, nazvaný ďalšie. 1496 01:00:53,150 --> 01:00:56,431 Tak, že to bude ďalší prvok v našom prepojenom zoznamu. 1497 01:00:56,431 --> 01:00:56,972 STUDENT: Áno? 1498 01:00:56,972 --> 01:01:01,920 Máte určiť, že hviezda je ako struct? 1499 01:01:01,920 --> 01:01:05,620 >> HANNAH: Áno, tak od tej doby to je skoro ako druh, 1500 01:01:05,620 --> 01:01:07,980 vyzerá to, že rekurzívne Definície v tomto my 1501 01:01:07,980 --> 01:01:12,080 Potrebujeme vedieť, čo je uzol dovnútra k nájdeniu uzla. 1502 01:01:12,080 --> 01:01:14,450 Vzhľadom k tomu, že nie je v skutočnosti vedieť, čo je uzol je kompletne 1503 01:01:14,450 --> 01:01:17,283 až sa dostaneme na koniec tohle-- a potom, čo to sa môžeme len hovoriť 1504 01:01:17,283 --> 01:01:21,935 node-- vnútri tejto definície, musíme hovoriť uzol struct. 1505 01:01:21,935 --> 01:01:22,560 Veľká otázka. 1506 01:01:22,560 --> 01:01:23,580 1507 01:01:23,580 --> 01:01:25,214 Ešte niečo? 1508 01:01:25,214 --> 01:01:26,198 Áno? 1509 01:01:26,198 --> 01:01:29,150 >> Žiak: Prečo my majú dvakrát hovoriť uzol? 1510 01:01:29,150 --> 01:01:33,578 Vzhľadom k tomu, keď sme boli v [nepočuteľné] proste sme to urobiť v bodkočiarkou, 1511 01:01:33,578 --> 01:01:37,352 ale teraz musíme zistiť, že struct node? [Nepočuteľné]. 1512 01:01:37,352 --> 01:01:39,060 HANNAH: Ja sa domnievam, V poslednom príklade, 1513 01:01:39,060 --> 01:01:42,110 sme len vytvoriť, kedykoľvek budete chceli použiť študenta po to, že ste 1514 01:01:42,110 --> 01:01:46,430 musel použiť struct node-- Som sorry-- struct študenta. 1515 01:01:46,430 --> 01:01:51,575 To nám umožnené, po faktu, práve Použitie uzol pridať nový typ, v podstate. 1516 01:01:51,575 --> 01:01:53,324 1517 01:01:53,324 --> 01:01:53,990 To zmysel? 1518 01:01:53,990 --> 01:01:54,984 1519 01:01:54,984 --> 01:01:57,150 Takže budeme musieť vrátiť a pozrite sa na kód pred. 1520 01:01:57,150 --> 01:01:59,025 Ale ja by som, že sme nepoužili typedef. 1521 01:01:59,025 --> 01:02:02,050 A my sme sa pýtal, Prečo musíme použiť typedef? 1522 01:02:02,050 --> 01:02:05,540 Typedef nám umožňuje, aby sa zabránilo slovo struct na začiatku. 1523 01:02:05,540 --> 01:02:06,221 Áno? 1524 01:02:06,221 --> 01:02:08,095 Študent: Aký druh otázky by prísť 1525 01:02:08,095 --> 01:02:10,400 v podmienkach, pokiaľ ide o uzly a spojové zoznamy? 1526 01:02:10,400 --> 01:02:15,110 >> HANNAH: Takže jedna vec je, že sme mohli povedať, ako môžete vyhľadávať prostredníctvom prepojeného zoznamu? 1527 01:02:15,110 --> 01:02:16,930 OK, pretože je to trochu zložitejšie 1528 01:02:16,930 --> 01:02:18,520 ako keby sme hľadáte cez pole. 1529 01:02:18,520 --> 01:02:21,472 Môžeme sa len pozrieť na element nula, prvok jeden, prvok dva, 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 Ak chceme hľadať prostredníctvom prepojeného zoznamu 1533 01:02:24,420 --> 01:02:27,229 by sme skutočne nasledovať tento malý bludisko ukazovateľov. 1534 01:02:27,229 --> 01:02:29,270 Takže poďme skutočne ísť cez to naozaj rýchlo. 1535 01:02:29,270 --> 01:02:30,460 1536 01:02:30,460 --> 01:02:32,860 To, čo sme mohli urobiť v objednať to-- Povedzme, že 1537 01:02:32,860 --> 01:02:35,430 chcete len iterovat naša úplne spájať zoznam. 1538 01:02:35,430 --> 01:02:37,450 Chceli by sme začať u hlavy. 1539 01:02:37,450 --> 01:02:39,890 A potom, aby sa presun na ďalší prvok, 1540 01:02:39,890 --> 01:02:43,680 namiesto toho len zvyšovanie jedným ako by sme mohli pri prechode cez pole, 1541 01:02:43,680 --> 01:02:45,720 sme vlastne bude sledovať ďalšie ukazovatele, 1542 01:02:45,720 --> 01:02:48,360 tak môžeme zistiť, kde v pamäti ďalší prvok. 1543 01:02:48,360 --> 01:02:49,357 1544 01:02:49,357 --> 01:02:51,690 Takže viem, že to nie je dosť vziať to všetko práve teraz, 1545 01:02:51,690 --> 01:02:52,650 ale budete mať tieto snímky. 1546 01:02:52,650 --> 01:02:54,730 Takže sa môžete prejsť Táto pomalšie. 1547 01:02:54,730 --> 01:02:56,890 Ale v podstate to, čo chceme, urobiť, je sledovať tieto ukazovatele 1548 01:02:56,890 --> 01:02:58,550 cez celé prepojeného zoznamu. 1549 01:02:58,550 --> 01:03:00,258 Tak to je otázka, môžete byť požiadaní. 1550 01:03:00,258 --> 01:03:01,920 1551 01:03:01,920 --> 01:03:03,980 >> Niečo všímať s vloženie, povedzme, 1552 01:03:03,980 --> 01:03:07,925 Chceli sme, aby nový prvok na pred naším spojené zoznamu. 1553 01:03:07,925 --> 01:03:10,800 Musíme byť veľmi opatrní, o poradí, v ktorom 1554 01:03:10,800 --> 01:03:12,760 preradený ukazovatele. 1555 01:03:12,760 --> 01:03:15,230 Vzhľadom k tomu, povedzme, že som práve povedal, OK. 1556 01:03:15,230 --> 01:03:18,930 Urobiť hlavy prejdite na tento nový prvok. 1557 01:03:18,930 --> 01:03:23,550 Len uistite sa, že poukazujú na 1, potom sme v podstate stratil zvyšok nášho zoznamu, 1558 01:03:23,550 --> 01:03:25,860 pretože si nepamätám kde 2 životy. 1559 01:03:25,860 --> 01:03:27,730 >> Takže musíme urobiť veľmi špecifické objednávky. 1560 01:03:27,730 --> 01:03:31,500 Po prvé, sme sa vytvoriť nový prvok prejdite na hlave. 1561 01:03:31,500 --> 01:03:33,970 A potom urobíme hlavu poukazujú na nový prvok. 1562 01:03:33,970 --> 01:03:38,455 Takže poďme sa pozrieť, ako to vyzerá s arrows-- len tak. 1563 01:03:38,455 --> 01:03:42,080 Takže musíte najskôr nový prvok prejdite na starej hlave. 1564 01:03:42,080 --> 01:03:45,990 A teraz máme hlavu prejdite na nový prvý prvok. 1565 01:03:45,990 --> 01:03:47,187 Akékoľvek otázky s tým? 1566 01:03:47,187 --> 01:03:49,870 1567 01:03:49,870 --> 01:03:54,350 >> OK tu je nejaký kód opäť niečo sa pozrieť na trochu neskôr. 1568 01:03:54,350 --> 01:03:58,630 A teraz sa otočte na Davin pre GDB a trochou praxe 1569 01:03:58,630 --> 01:03:59,480 kódovanie na papieri. 1570 01:03:59,480 --> 01:04:00,597 1571 01:04:00,597 --> 01:04:01,096 Krásne. 1572 01:04:01,096 --> 01:04:01,810 >> ROB: A Rob. 1573 01:04:01,810 --> 01:04:02,360 >> HANNAH: Oh, Davin a Rob. 1574 01:04:02,360 --> 01:04:03,055 Je mi to ľúto. 1575 01:04:03,055 --> 01:04:03,596 >> STUDENT: Woo! 1576 01:04:03,596 --> 01:04:08,140 1577 01:04:08,140 --> 01:04:09,110 >> ROB: Vďaka. 1578 01:04:09,110 --> 01:04:11,209 >> DAVIN: Chceš povedať, všetko naozaj rýchlo? 1579 01:04:11,209 --> 01:04:11,875 ROB: Jo, jo. 1580 01:04:11,875 --> 01:04:12,845 DAVIN: Potom, čo som sa. 1581 01:04:12,845 --> 01:04:16,240 1582 01:04:16,240 --> 01:04:19,520 OK, zatiaľ čo Rob dáva mikrofón na, takže to, čo je GDB? 1583 01:04:19,520 --> 01:04:23,945 Každý by mal vidieť v GDB triedy a tiež na pracovnú dobu. 1584 01:04:23,945 --> 01:04:25,070 A vy by ste mali byť jeho použitie. 1585 01:04:25,070 --> 01:04:25,750 Takže to, čo je GDB? 1586 01:04:25,750 --> 01:04:28,030 1587 01:04:28,030 --> 01:04:28,850 Niekto? 1588 01:04:28,850 --> 01:04:29,540 >> Študent: To je debugger. 1589 01:04:29,540 --> 01:04:30,250 >> DAVIN: Je to debugger. 1590 01:04:30,250 --> 01:04:31,624 A čo to vám umožní robiť? 1591 01:04:31,624 --> 01:04:33,064 Rovnako ako, prečo sa máme radi GDB? 1592 01:04:33,064 --> 01:04:34,480 STUDENT: Ak chcete spomaliť program. 1593 01:04:34,480 --> 01:04:36,740 DAVIN: Dobre, takže môžete chodiť cez to ako človek tempo. 1594 01:04:36,740 --> 01:04:38,490 A tak to, čo sú niektoré Príkazy môžete urobiť? 1595 01:04:38,490 --> 01:04:40,407 No, prestávka je pravdepodobne váš obľúbený príkaz. 1596 01:04:40,407 --> 01:04:43,240 Vzhľadom k tomu, že umožňuje rozdeliť Program a vlastne ísť cez neho 1597 01:04:43,240 --> 01:04:44,280 riadok po riadku. 1598 01:04:44,280 --> 01:04:46,500 >> Run umožňuje spustiť. 1599 01:04:46,500 --> 01:04:48,210 Ďalšie, ako krokovanie. 1600 01:04:48,210 --> 01:04:49,820 Aký je medzi ďalšie a krok? 1601 01:04:49,820 --> 01:04:52,190 1602 01:04:52,190 --> 01:04:53,190 Počkaj, to nahlas. 1603 01:04:53,190 --> 01:04:54,060 To bolo správne. 1604 01:04:54,060 --> 01:04:55,280 >> STUDENT: [nepočuteľné]. 1605 01:04:55,280 --> 01:04:56,190 >> DAVIN: Áno, úžasné. 1606 01:04:56,190 --> 01:04:59,210 Tak ako vedľa a krok, ak you're-- Povedzme, že máte funkciu, ktorú 1607 01:04:59,210 --> 01:04:59,950 definovať. 1608 01:04:59,950 --> 01:05:03,350 Povedzme, že niektoré v hlavnej funkcie, a vy ste len biť ďalej, ďalej, 1609 01:05:03,350 --> 01:05:03,850 ďalšie. 1610 01:05:03,850 --> 01:05:05,910 Ty vlastne bude vykonávať túto funkciu, 1611 01:05:05,910 --> 01:05:07,285 ale budete skákať cez neho. 1612 01:05:07,285 --> 01:05:09,711 Ak stlačíte krok, alebo s alebo čo, ty si 1613 01:05:09,711 --> 01:05:11,460 bude vlastne skočiť do tejto funkcie, 1614 01:05:11,460 --> 01:05:14,110 a potom môžete zasiahnuť ďalšie vidieť rôzne hovory 1615 01:05:14,110 --> 01:05:16,170 v tejto konkrétnej funkcie. 1616 01:05:16,170 --> 01:05:16,670 Jo? 1617 01:05:16,670 --> 01:05:18,670 >> STUDENT: Existuje spôsob, ako skočiť, ako, vycúvať? 1618 01:05:18,670 --> 01:05:20,750 DAVIN: Finish, jo, skončiť sa skákať von. 1619 01:05:20,750 --> 01:05:22,570 Tak to bude až do konca, že funkcie, a potom ste 1620 01:05:22,570 --> 01:05:24,153 bude späť v hlavnom, napríklad. 1621 01:05:24,153 --> 01:05:25,250 1622 01:05:25,250 --> 01:05:27,370 Print vytlačí ju raz. 1623 01:05:27,370 --> 01:05:29,381 Niečo, čo som vždy použiť, je na displeji. 1624 01:05:29,381 --> 01:05:31,880 Na displeji sa ju vytlačiť neustále v celom rozsahu 1625 01:05:31,880 --> 01:05:32,470 vášho programu. 1626 01:05:32,470 --> 01:05:33,810 >> Napríklad, ak ste v cykle for, a 1627 01:05:33,810 --> 01:05:37,018 Chcete vidieť, ako sa niečo mení, a nechcete, aby, rovnako ako neustále 1628 01:05:37,018 --> 01:05:38,940 robiť ako tlače, tlač, tlač, zobrazenie 1629 01:05:38,940 --> 01:05:43,230 Zobrazí sa tejto premennej neustále, zakaždým, keď stlačíte Ďalej. 1630 01:05:43,230 --> 01:05:44,310 A pokračovať. 1631 01:05:44,310 --> 01:05:45,905 Tak GBD, to je GDB. 1632 01:05:45,905 --> 01:05:47,160 1633 01:05:47,160 --> 01:05:49,180 >> STUDENT: Čo je to jedno kde ste [nepočuteľné]? 1634 01:05:49,180 --> 01:05:50,150 1635 01:05:50,150 --> 01:05:50,900 DAVIN: Čo je to? 1636 01:05:50,900 --> 01:05:52,310 1637 01:05:52,310 --> 01:05:54,390 >> STUDENT: Čo je the-- miestnej premenné. 1638 01:05:54,390 --> 01:05:55,364 1639 01:05:55,364 --> 01:05:57,780 ROB: Existuje niečo, čo v skutočnosti rovnako ako miestni obyvatelia, alebo tak niečo. 1640 01:05:57,780 --> 01:05:58,140 Aj can't-- 1641 01:05:58,140 --> 01:05:59,930 >> DAVIN: Mohlo by to byť niečo také, jo. 1642 01:05:59,930 --> 01:06:00,830 >> HANNAH: V miestnych obyvateľov? 1643 01:06:00,830 --> 01:06:01,510 >> DAVIN: To je ono. 1644 01:06:01,510 --> 01:06:02,134 To je jedno. 1645 01:06:02,134 --> 01:06:03,040 ROB: Beautiful. 1646 01:06:03,040 --> 01:06:04,030 >> DAVIN: Jo. 1647 01:06:04,030 --> 01:06:06,010 >> Študent: Čo robiť aj naďalej? 1648 01:06:06,010 --> 01:06:08,010 >> DAVIN: Je continues--, takže je to len bude pokračovať vaše programy. 1649 01:06:08,010 --> 01:06:09,843 Takže ak sa zlomí a hit pokračovať, bude to 1650 01:06:09,843 --> 01:06:13,119 len spustiť tento program, kým zasiahne, že prestávku znova. 1651 01:06:13,119 --> 01:06:14,910 Tak napríklad, ak zlomil vo funkcii, 1652 01:06:14,910 --> 01:06:16,720 a budeš robiť, ako pre slučka alebo niečo také, 1653 01:06:16,720 --> 01:06:19,869 a stlačíte pokračovať, bude to pokračovať a vrátiť sa k tejto prestávke. 1654 01:06:19,869 --> 01:06:22,660 Alebo je to bez prerušenia, bude to pokračovať a dokončiť program. 1655 01:06:22,660 --> 01:06:25,000 >> ROB: Takže len rád zastaví, v prvom zlomu 1656 01:06:25,000 --> 01:06:27,010 narazí Ak vás, potom hit pokračovať, bude to držať 1657 01:06:27,010 --> 01:06:28,070 bude, až je to ďalší bod zlomu. 1658 01:06:28,070 --> 01:06:30,111 A potom pokračovať pôjde na ďalšie zarážky. 1659 01:06:30,111 --> 01:06:31,264 1660 01:06:31,264 --> 01:06:32,680 DAVIN: Nejaké ďalšie otázky týkajúce sa GDB? 1661 01:06:32,680 --> 01:06:33,577 1662 01:06:33,577 --> 01:06:35,410 Takže myslím, že v minulosti, Požiadali sme vás, čo 1663 01:06:35,410 --> 01:06:37,690 GDB je a dať Príklad niektorých vecí, ktoré 1664 01:06:37,690 --> 01:06:40,770 môžete robiť s GDB, tak real jednoduché, ale jo. 1665 01:06:40,770 --> 01:06:42,280 Tu to je. 1666 01:06:42,280 --> 01:06:43,250 A uzly? 1667 01:06:43,250 --> 01:06:49,571 >> ROB: Áno, áno, aký smer to bolo? 1668 01:06:49,571 --> 01:06:50,851 1669 01:06:50,851 --> 01:06:51,726 Študent: Tak to bolo. 1670 01:06:51,726 --> 01:06:52,160 DAVIN: Počkajte. 1671 01:06:52,160 --> 01:06:52,270 ROB: Ten chlap? 1672 01:06:52,270 --> 01:06:52,936 DAVIN: Ten. 1673 01:06:52,936 --> 01:06:54,660 ROB: Ten chlap, oh, som si neuvedomil. 1674 01:06:54,660 --> 01:06:56,940 Takže sme neboli jasné, na to, čo the-- vôbec sa mi nepáči 1675 01:06:56,940 --> 01:06:58,680 vedieť, kto to was-- ale otázka. 1676 01:06:58,680 --> 01:07:01,180 Nevieme presne, čo si žiadali o to, aby práve 1677 01:07:01,180 --> 01:07:04,800 objasniť niečo. 1678 01:07:04,800 --> 01:07:07,750 Takže najprv, ako som povedal predtým, typedef budete vždy používať len 1679 01:07:07,750 --> 01:07:09,305 vytvorenie názvu pre typ. 1680 01:07:09,305 --> 01:07:13,420 Tak tu je prezývka sme tvorba je pre tento typ struct uzol. 1681 01:07:13,420 --> 01:07:18,070 >> Takže najprv, ak to nebude uzol typedef, takže to struct node kučeravé 1682 01:07:18,070 --> 01:07:21,060 obrnil sa na ďalšiu kučeravý Ortéza je typu struct node. 1683 01:07:21,060 --> 01:07:23,470 A musíme do tohto uzla tam, pretože sme 1684 01:07:23,470 --> 01:07:25,190 treba referenčný uzol tu. 1685 01:07:25,190 --> 01:07:29,380 Tak s týmto druhom rekurzívne struct, je potrebné dať to struct meno, 1686 01:07:29,380 --> 01:07:31,340 inak by ste nemohli hovoria struct uzol tu. 1687 01:07:31,340 --> 01:07:33,340 Zatiaľ čo predtým sa študentom keď sme napísali, myslím, 1688 01:07:33,340 --> 01:07:35,423 sme nemali hovoriť Študent tam hore, pretože sme 1689 01:07:35,423 --> 01:07:40,370 Nemusel hovoriť struct Študent vnútri struct sám. 1690 01:07:40,370 --> 01:07:43,730 Tak to je rekurzívny, že nás núti povedať uzol tam. 1691 01:07:43,730 --> 01:07:46,610 >> Tento uzol je len názov sme dávať uzol pre typedef. 1692 01:07:46,610 --> 01:07:48,520 Tak, že uzol nie je rovnako ako tento uzol. 1693 01:07:48,520 --> 01:07:51,567 Tento struct uzol, ale je rovnaký ako ten struct uzol. 1694 01:07:51,567 --> 01:07:54,150 DAVIN: Takže kedykoľvek budete volať, ako uzol v hlavnej funkcie, 1695 01:07:54,150 --> 01:07:55,350 nebudeš sa musím povedať struct uzol. 1696 01:07:55,350 --> 01:07:58,360 Stačí si len povedať, uzol, pretože Uzol je different-- je v podstate 1697 01:07:58,360 --> 01:07:59,440 hovoríš, OK. 1698 01:07:59,440 --> 01:08:01,490 Namiesto toho, aby volania struct uzol v mojom kóde, 1699 01:08:01,490 --> 01:08:04,050 Ja len chcem, aby to premenovať ako uzol, aby bolo ľahšie. 1700 01:08:04,050 --> 01:08:06,800 >> ROB: Ak ste vždy použitie typedef, potom tento 1701 01:08:06,800 --> 01:08:11,240 je jediným miestom, kde budete mať deklarovať premennú s struct uzol 1702 01:08:11,240 --> 01:08:11,740 hviezda, jo. 1703 01:08:11,740 --> 01:08:14,650 1704 01:08:14,650 --> 01:08:20,801 >> DAVIN: OK, takže posledná časť Je ťažké naučiť protože-- 1705 01:08:20,801 --> 01:08:22,185 1706 01:08:22,185 --> 01:08:22,685 ROB: Čo je? 1707 01:08:22,685 --> 01:08:24,098 1708 01:08:24,098 --> 01:08:25,649 >> DAVIN: Vzhľadom k tomu, že to kódovanie na papieri. 1709 01:08:25,649 --> 01:08:28,689 Takže každý rok máme Kód na papierových otázky. 1710 01:08:28,689 --> 01:08:32,510 Takže myslím, že v minulom roku, 12 z 80 bodov sa kód na papieri. 1711 01:08:32,510 --> 01:08:36,720 Rok pred tým, 10 z 80, pred rokom, že 20 zo 100, 1712 01:08:36,720 --> 01:08:37,939 tak pomerne málo z nich. 1713 01:08:37,939 --> 01:08:40,970 Takže budete musieť byť schopní kódovať týchto funkcií rúk. 1714 01:08:40,970 --> 01:08:45,340 >> Tak som si myslel by sme mohli prejsť niekoľko z nich, a vidieť, ako ľudia, 1715 01:08:45,340 --> 01:08:47,340 druh prejsť je pomaly s ľuďmi. 1716 01:08:47,340 --> 01:08:48,790 1717 01:08:48,790 --> 01:08:52,420 Takže všeobecne, strlen a atoi boli veľmi populárne. 1718 01:08:52,420 --> 01:08:55,670 V minulom roku, myslím, že by sme mali GetPositiveInt a RandomInt. 1719 01:08:55,670 --> 01:08:58,591 Ale pow, tak moc, aj pozitívnu moc. 1720 01:08:58,591 --> 01:09:00,965 Poďme sa len prejsť možná jeden alebo dvaja z nich spoločne. 1721 01:09:00,965 --> 01:09:02,510 1722 01:09:02,510 --> 01:09:03,729 Čo ľudia chcú vidieť? 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 STUDENT: Jo. 1726 01:09:06,350 --> 01:09:06,859 DAVIN: atoi? 1727 01:09:06,859 --> 01:09:07,800 STUDENT: [nepočuteľné]. 1728 01:09:07,800 --> 01:09:09,682 DAVIN: OK, ja idem na to na doske. 1729 01:09:09,682 --> 01:09:11,765 Máte prednosť keď som to tu alebo tam? 1730 01:09:11,765 --> 01:09:13,580 1731 01:09:13,580 --> 01:09:14,550 Tam, Gabe hovorí, že existuje. 1732 01:09:14,550 --> 01:09:16,729 1733 01:09:16,729 --> 01:09:19,580 >> ROB: A to je všeobecné myšlienky na tieto otázky kódovanie. 1734 01:09:19,580 --> 01:09:21,705 Skúste niečo napísať. 1735 01:09:21,705 --> 01:09:22,580 Nenechávajte prázdne. 1736 01:09:22,580 --> 01:09:23,080 >> DAVIN: Áno. 1737 01:09:23,080 --> 01:09:25,520 ROB: Ak sa môžete dostať vráti typ správne, 1738 01:09:25,520 --> 01:09:27,090 alebo možno by sme mohli dať to vy, ale ak je to možné, rovnako ako, 1739 01:09:27,090 --> 01:09:30,256 napísať všeobecnú funkciu podpisu, Ak sa môžete dostať na základné veci v poriadku, 1740 01:09:30,256 --> 01:09:32,244 alebo rohové prípady, alebo pamätať šek na null, 1741 01:09:32,244 --> 01:09:34,160 ak máte nejaké veci, potom možno budeme 1742 01:09:34,160 --> 01:09:35,880 vám môže dať pár upozorňuje na problém. 1743 01:09:35,880 --> 01:09:36,810 Nepoužívajte len nechať prázdne. 1744 01:09:36,810 --> 01:09:38,560 >> DAVIN: Áno, a ak máte sú len celkom 1745 01:09:38,560 --> 01:09:40,580 agitoval na to, ako v skutočnosti premení kódu. 1746 01:09:40,580 --> 01:09:43,140 Ak napíšete pseudokódu, to je celkom dobrý taky. 1747 01:09:43,140 --> 01:09:46,390 Takže je to ako, že je to šesť bodom otázka, a píšete správne pseudokódu, 1748 01:09:46,390 --> 01:09:47,858 budete mať aspoň dva body. 1749 01:09:47,858 --> 01:09:49,149 Takže to nie je len nechať prázdne. 1750 01:09:49,149 --> 01:09:50,279 Skúste si dať niečo. 1751 01:09:50,279 --> 01:09:51,770 >> ROB: To musí byť správne pseudocode, hoci. 1752 01:09:51,770 --> 01:09:52,270 >> DAVIN: Áno. 1753 01:09:52,270 --> 01:09:55,381 ROB: Takže sme všeobecne menej zhovievavý chyby v pseudokódu. 1754 01:09:55,381 --> 01:09:57,130 Davin: OK, tak vy chcel vidieť atoi. 1755 01:09:57,130 --> 01:09:58,480 1756 01:09:58,480 --> 01:10:02,820 OK, tak len really-- takže to, čo chcete robiť, 1757 01:10:02,820 --> 01:10:04,969 ich budete mať vzhľadom k tomu nejaké čísla. 1758 01:10:04,969 --> 01:10:07,010 Ale toto číslo nie je bude int, nie? 1759 01:10:07,010 --> 01:10:08,574 Aké to bude? 1760 01:10:08,574 --> 01:10:09,480 >> STUDENT: [nepočuteľné]. 1761 01:10:09,480 --> 01:10:11,146 >> DAVIN: Bude to byť reťazec, nie? 1762 01:10:11,146 --> 01:10:13,160 Takže ak ste dostali string-- poďme say-- 1763 01:10:13,160 --> 01:10:15,228 >> ROB: Mám vytiahnuť editor? 1764 01:10:15,228 --> 01:10:16,200 Nemôžem vytiahnuť up-- 1765 01:10:16,200 --> 01:10:16,800 >> DAVIN: Oh, chceš to urobiť on-- 1766 01:10:16,800 --> 01:10:17,420 >> ROB: Chceli by ste radšej dosku? 1767 01:10:17,420 --> 01:10:18,800 >> DAVIN: Čo chcete robiť? 1768 01:10:18,800 --> 01:10:19,900 Myslím, že to chcete urobiť ručne? 1769 01:10:19,900 --> 01:10:21,460 Alebo si chcete urobiť na počítači? 1770 01:10:21,460 --> 01:10:22,180 >> ROB: Urob to po ruke. 1771 01:10:22,180 --> 01:10:22,805 >> DAVIN: [smeje sa] 1772 01:10:22,805 --> 01:10:23,950 ROB: Urob to po ruke. 1773 01:10:23,950 --> 01:10:25,469 >> DAVIN: OK, takže to bude atoi. 1774 01:10:25,469 --> 01:10:27,760 Takže to, čo je to-- Myslím, že budeme pravdepodobne dať to na vás. 1775 01:10:27,760 --> 01:10:29,106 Ale čo to ide vrátiť? 1776 01:10:29,106 --> 01:10:29,452 >> STUDENT: Int. 1777 01:10:29,452 --> 01:10:31,076 >> DAVIN: Bude to návrat int, nie? 1778 01:10:31,076 --> 01:10:33,772 Takže-- Nechcem, aby to tam. 1779 01:10:33,772 --> 01:10:34,510 Urobím to tu. 1780 01:10:34,510 --> 01:10:36,596 >> ROB: môžete vytiahnuť ho dole a zatlačte až na to. 1781 01:10:36,596 --> 01:10:38,500 1782 01:10:38,500 --> 01:10:40,385 >> DAVIN: jo. 1783 01:10:40,385 --> 01:10:43,880 [Smiech] zmena Game. 1784 01:10:43,880 --> 01:10:50,950 OK, takže to bude int atoi, a to, čo to bude trvať? 1785 01:10:50,950 --> 01:10:52,180 1786 01:10:52,180 --> 01:10:57,780 Char hviezda, tak len string, hviezda s, rovnako ako to. 1787 01:10:57,780 --> 01:10:59,240 >> ROB: Pekný hviezda, pekný. 1788 01:10:59,240 --> 01:11:02,582 1789 01:11:02,582 --> 01:11:04,040 DAVIN: To nemusí byť tam, OK. 1790 01:11:04,040 --> 01:11:04,540 ROB: Jo. 1791 01:11:04,540 --> 01:11:06,670 DAVIN: OK, takže prvé vec, ktorú chcete do-- I 1792 01:11:06,670 --> 01:11:08,490 neviem, či niekto pozrel v praxi solutions-- 1793 01:11:08,490 --> 01:11:10,150 ale to, čo sa chystáte chcieť urobiť, je, že ste 1794 01:11:10,150 --> 01:11:11,570 bude chcieť mať slučka, pretože si 1795 01:11:11,570 --> 01:11:14,100 bude chcieť skutočne krokovať tohto reťazca. 1796 01:11:14,100 --> 01:11:18,880 Tak helpful-- takže povedzme, že budeme pre sláčiky, 1797 01:11:18,880 --> 01:11:22,270 a budeme krokovať každý prvok reťazca. 1798 01:11:22,270 --> 01:11:23,470 Ako dlho to je? 1799 01:11:23,470 --> 01:11:26,464 Koľkokrát budeme iterovat v tom, že pre sláčiky? 1800 01:11:26,464 --> 01:11:27,130 STUDENT: Sterln? 1801 01:11:27,130 --> 01:11:27,963 DAVIN: Sterln, jo. 1802 01:11:27,963 --> 01:11:29,350 1803 01:11:29,350 --> 01:11:41,294 Takže povedzme, že dĺžka sa rovná int sterln s. 1804 01:11:41,294 --> 01:11:44,240 1805 01:11:44,240 --> 01:11:48,740 A len zvedavý, prečo je to vždy trochu lepšie to urobiť mimo slučiek? 1806 01:11:48,740 --> 01:11:52,277 Rovnako ako, prečo je lepšie zavolať Táto funkcia mimo slučky? 1807 01:11:52,277 --> 01:11:53,360 Stačí skontrolovať rýchly zdravý rozum? 1808 01:11:53,360 --> 01:11:55,810 1809 01:11:55,810 --> 01:11:56,311 Jo? 1810 01:11:56,311 --> 01:11:58,268 Žiak: Takže vy nie musí udržať kontrolu. 1811 01:11:58,268 --> 01:11:59,400 Stačí si len [nepočuteľné]. 1812 01:11:59,400 --> 01:12:01,560 >> DAVIN: Presne tak, tak jo, presne to, čo povedala. 1813 01:12:01,560 --> 01:12:03,101 Takže sme nemuseli udržať kontrolu. 1814 01:12:03,101 --> 01:12:05,690 Tak napríklad, ak volám Táto funkcia vnútri slučky, 1815 01:12:05,690 --> 01:12:08,050 potom budem mať volania Táto funkcia viackrát. 1816 01:12:08,050 --> 01:12:10,080 A že to bude klesať účinnosť vášho programu. 1817 01:12:10,080 --> 01:12:12,370 Takže je to vždy užitočné vyhlásiť ju von. 1818 01:12:12,370 --> 01:12:14,370 >> ROB: To je povedal, na niektorú z týchto problémov, 1819 01:12:14,370 --> 01:12:17,940 skoro tak dlho, ako vám pracovného roztoku, dostanete plné uznanie. 1820 01:12:17,940 --> 01:12:20,820 Tak to ak váš návrh nebojte je úplne strašný. 1821 01:12:20,820 --> 01:12:22,120 1822 01:12:22,120 --> 01:12:25,230 Mohlo by nás naštvaný čítať váš kód. 1823 01:12:25,230 --> 01:12:28,160 Ale tak dlho, ako to funguje, dostanete body. 1824 01:12:28,160 --> 01:12:29,302 >> DAVIN: Áno. 1825 01:12:29,302 --> 01:12:31,260 OK, tak potom budem vyhlásiť nejakú premennú. 1826 01:12:31,260 --> 01:12:33,900 Je to len tak zavolať int čiastku. 1827 01:12:33,900 --> 01:12:37,031 A ja idem nastaviť tento rovný nule, ako je, že. 1828 01:12:37,031 --> 01:12:38,780 A to len tak ako zástupný symbol. 1829 01:12:38,780 --> 01:12:40,960 Tak, že to bude čo budem vracať. 1830 01:12:40,960 --> 01:12:43,730 Takže idem nakoniec vrátiť sumu z tohto programu. 1831 01:12:43,730 --> 01:12:44,980 Takže mám tieto dve premenné. 1832 01:12:44,980 --> 01:12:45,563 Mám dĺžku. 1833 01:12:45,563 --> 01:12:46,500 Mám čiastku. 1834 01:12:46,500 --> 01:12:48,290 A teraz poďme skočiť do nášho reťazca. 1835 01:12:48,290 --> 01:12:49,510 >> Tak umožňuje máme pre slučke. 1836 01:12:49,510 --> 01:13:06,520 Takže štyri int I = 0 w, zatiaľ čo Aj je menšia ako dĺžka Aj s plus. 1837 01:13:06,520 --> 01:13:07,150 A now-- 1838 01:13:07,150 --> 01:13:10,920 1839 01:13:10,920 --> 01:13:11,420 ROB: Nice. 1840 01:13:11,420 --> 01:13:14,030 DAVIN: OK, a teraz tu pochádza mäso z nášho kódu. 1841 01:13:14,030 --> 01:13:17,380 Takže sa môžete skutočne robiť to v podstate v jednej línii. 1842 01:13:17,380 --> 01:13:20,702 Takže nemá niekto nejaký nápad o tom, čo budeme robiť ďalej? 1843 01:13:20,702 --> 01:13:23,680 1844 01:13:23,680 --> 01:13:25,380 OK, tak to je v poriadku. 1845 01:13:25,380 --> 01:13:35,860 Takže robíme povedať sumu equals-- dovoľte mi, aby som uháňať tento over-- súčet 1846 01:13:35,860 --> 01:13:50,010 sa rovná súčtu časov 10 plus-- sme bude trvať S i mínus jedna 1847 01:13:50,010 --> 01:13:54,787 quote 0 jeden citát urobil, takto. 1848 01:13:54,787 --> 01:13:55,620 ROB: Veľmi intuitívne. 1849 01:13:55,620 --> 01:13:56,980 1850 01:13:56,980 --> 01:13:57,880 >> DAVIN: Drvený to. 1851 01:13:57,880 --> 01:14:01,438 OK, takže someone-- som to, mám to. 1852 01:14:01,438 --> 01:14:03,680 1853 01:14:03,680 --> 01:14:06,960 OK, tak je to jednoznačne stúpa. 1854 01:14:06,960 --> 01:14:08,320 1855 01:14:08,320 --> 01:14:09,450 Čo to znamená? 1856 01:14:09,450 --> 01:14:12,120 Takže Vie niekto, čo to znamená? 1857 01:14:12,120 --> 01:14:13,826 Môže každý vidieť? 1858 01:14:13,826 --> 01:14:16,088 Nie, nikto nemôže vidieť, OK. 1859 01:14:16,088 --> 01:14:17,390 1860 01:14:17,390 --> 01:14:18,340 Idem to-- 1861 01:14:18,340 --> 01:14:20,506 >> ROB: Chystám sa napísať vzorec práve tu. 1862 01:14:20,506 --> 01:14:23,140 DAVIN: OK, Rob to bude robiť na počítači, čo je zábava. 1863 01:14:23,140 --> 01:14:26,889 1864 01:14:26,889 --> 01:14:27,514 ROB: Oh môj bože. 1865 01:14:27,514 --> 01:14:34,340 1866 01:14:34,340 --> 01:14:35,010 Alebo nebudem. 1867 01:14:35,010 --> 01:14:36,288 1868 01:14:36,288 --> 01:14:36,954 DAVIN: Stand by. 1869 01:14:36,954 --> 01:14:42,300 1870 01:14:42,300 --> 01:14:44,260 STUDENT: Mám dotaz. 1871 01:14:44,260 --> 01:14:45,348 DAVIN: Jo, jasne. 1872 01:14:45,348 --> 01:14:46,223 STUDENT: [nepočuteľné]? 1873 01:14:46,223 --> 01:14:52,529 1874 01:14:52,529 --> 01:14:54,570 DAVIN: OK, tak to v skutočnosti, podobne, len všeobecne, 1875 01:14:54,570 --> 01:14:56,710 ak ste mali dať, ako, v tomto vyhlásení int 1876 01:14:56,710 --> 01:14:59,770 Aj rovná dĺžke 0 čiarkou rovná sterln, that-- 1877 01:14:59,770 --> 01:15:01,200 >> STUDENT: [nepočuteľné]. 1878 01:15:01,200 --> 01:15:03,585 >> DAVIN: To je v poriadku, pretože that-- 1879 01:15:03,585 --> 01:15:05,543 Žiak: Prečo by ste dokonca nutné použiť dĺžku? 1880 01:15:05,543 --> 01:15:08,620 Prečo by nie len [nepočuteľné] sterln s, rovnako ako po celý čas [nepočuteľné]? 1881 01:15:08,620 --> 01:15:09,460 >> DAVIN: Myslíš tu? 1882 01:15:09,460 --> 01:15:10,001 >> Študent: Áno. 1883 01:15:10,001 --> 01:15:12,630 DAVIN: Pretože každý čas to pre sláčiky beží, 1884 01:15:12,630 --> 01:15:14,295 to bude hodnotiť túto podmienku. 1885 01:15:14,295 --> 01:15:14,920 STUDENT: Správne. 1886 01:15:14,920 --> 01:15:16,836 DAVIN: A ak máte sterln tam, potom je to 1887 01:15:16,836 --> 01:15:19,510 bude mať skutočne volať že funkcia každý čas. 1888 01:15:19,510 --> 01:15:21,090 Takže namiesto toho len porovnajte ju s int, 1889 01:15:21,090 --> 01:15:23,548 budete volať Funkcie a potom porovnaním 1890 01:15:23,548 --> 01:15:24,510 na návratovú hodnotu. 1891 01:15:24,510 --> 01:15:25,860 Jo, tak je to jednoducho, jo. 1892 01:15:25,860 --> 01:15:28,860 1893 01:15:28,860 --> 01:15:30,770 >> Nice, OK, takže teraz môže každý vidieť. 1894 01:15:30,770 --> 01:15:33,400 Čo does-- je to ako, to je ono. 1895 01:15:33,400 --> 01:15:34,580 Jedná sa o jám, priamo tu. 1896 01:15:34,580 --> 01:15:37,030 1897 01:15:37,030 --> 01:15:37,930 Čo to znamená? 1898 01:15:37,930 --> 01:15:39,250 1899 01:15:39,250 --> 01:15:39,970 Čo to robím? 1900 01:15:39,970 --> 01:15:41,890 1901 01:15:41,890 --> 01:15:42,880 Jo, nápad? 1902 01:15:42,880 --> 01:15:43,482 Jo? 1903 01:15:43,482 --> 01:15:45,692 >> STUDENT: Dobre, takže keď ste zadaní poľa, 1904 01:15:45,692 --> 01:15:47,525 budete ísť zľava doprava, 1905 01:15:47,525 --> 01:15:51,786 takže budete ísť do Desatinné z baní [nepočuteľné]. 1906 01:15:51,786 --> 01:15:52,410 DAVIN: Presne tak. 1907 01:15:52,410 --> 01:15:55,063 Žiak: Takže každý musíte násobiť 1908 01:15:55,063 --> 01:15:59,490 čo ste videli, ako hodnoty int strany keď sa dostanete k pohybu, že viac ako jeden. 1909 01:15:59,490 --> 01:16:01,590 >> DAVIN: Perfektné, perfektné, tak napríklad, poďme 1910 01:16:01,590 --> 01:16:05,376 povedať, dal som you-- som napíšem sem. 1911 01:16:05,376 --> 01:16:06,480 Nie, nie som. 1912 01:16:06,480 --> 01:16:08,640 Chystám sa napísať sem. 1913 01:16:08,640 --> 01:16:12,080 Povedzme, že som ti dal 76, že jo? 1914 01:16:12,080 --> 01:16:13,380 Povedzme, že vám 76. 1915 01:16:13,380 --> 01:16:15,360 Je to reťazec začína, OK? 1916 01:16:15,360 --> 01:16:16,840 >> Takže dĺžka je čo? 1917 01:16:16,840 --> 01:16:18,060 1918 01:16:18,060 --> 01:16:19,060 2, že jo? 1919 01:16:19,060 --> 01:16:20,290 Súčet je 0. 1920 01:16:20,290 --> 01:16:21,600 Potom skočíme v našom cykle for. 1921 01:16:21,600 --> 01:16:24,187 OK, prvá iterácia to, čo je to bude? 1922 01:16:24,187 --> 01:16:25,270 Je to bude suma je 0. 1923 01:16:25,270 --> 01:16:27,180 Aby súčet krát 10 0. 1924 01:16:27,180 --> 01:16:28,500 To je nezmyselné. 1925 01:16:28,500 --> 01:16:29,880 Tak čo to robí? 1926 01:16:29,880 --> 01:16:30,845 1927 01:16:30,845 --> 01:16:31,720 STUDENT: [nepočuteľné]. 1928 01:16:31,720 --> 01:16:33,110 1929 01:16:33,110 --> 01:16:37,430 >> DAVIN: to bude zase, že znak na celé číslo, nie? 1930 01:16:37,430 --> 01:16:42,160 Je to trochu ako s vaším Problém set-- tejto light-- 1931 01:16:42,160 --> 01:16:44,170 je to niečo ako s problém nastaviť na Visioneer. 1932 01:16:44,170 --> 01:16:45,980 Máte čo do činenia s hodnotami ASCII. 1933 01:16:45,980 --> 01:16:48,520 Takže keď dám vám, ako, sedem, ale je to postava, 1934 01:16:48,520 --> 01:16:50,965 a chcete vedieť, OK, čo číslica je to? 1935 01:16:50,965 --> 01:16:53,540 1936 01:16:53,540 --> 01:16:54,910 Jo, mohol, jo. 1937 01:16:54,910 --> 01:16:55,900 Takže to, čo je číslica, že? 1938 01:16:55,900 --> 01:16:59,550 Dalo by sa odpočítať 0 z neho, ale musí odpočítať 0, znak. 1939 01:16:59,550 --> 01:17:01,425 >> A tam, kde niektorí ľudia si zakopol, sú 1940 01:17:01,425 --> 01:17:04,260 ako, OK, dobre, musím vedieť, hodnoty ASCII pre tento kvíz? 1941 01:17:04,260 --> 01:17:06,218 Nie, určite nie potrebujete vedieť ASCII 1942 01:17:06,218 --> 01:17:09,520 hodnoty, ako, malá , Veľké písmená, nula. 1943 01:17:09,520 --> 01:17:12,060 >> ROB: Nie je žiadny dôvod, aby vôbec dať to na ťahák. 1944 01:17:12,060 --> 01:17:14,226 >> DAVIN: Rozhodne nie strácať priestor s tým. 1945 01:17:14,226 --> 01:17:18,090 Môžete literally-- len miesto hovoriť 48, rovnako ako až 1946 01:17:18,090 --> 01:17:24,630 tú, ktorá je ekvivalentná hovorí jeden, jeden apostrof, 1947 01:17:24,630 --> 01:17:27,680 ako to, že presne rovnaký. 1948 01:17:27,680 --> 01:17:34,106 >> ROB: Dalo by sa skoro, že o tom, ako if-- Boha, potrebujem, 1949 01:17:34,106 --> 01:17:37,490 oops-- si skoro myslieť na to, ako ak máme niečo také hash 1950 01:17:37,490 --> 01:17:39,755 definovať 0 ako 48. 1951 01:17:39,755 --> 01:17:41,320 1952 01:17:41,320 --> 01:17:42,030 To nebude fungovať. 1953 01:17:42,030 --> 01:17:45,502 Ale myslieť na to, ako jednoduchú úvodzovky 0 jednoduché úvodzovky, a pre všetky znaky. 1954 01:17:45,502 --> 01:17:47,960 Ber to ako konštanta, ktorá predstavuje túto hodnotu ASCII. 1955 01:17:47,960 --> 01:17:49,080 >> DAVIN: Áno. 1956 01:17:49,080 --> 01:17:52,820 OK, tak prvýkrát po tak s 76-- tak prvýkrát po, 1957 01:17:52,820 --> 01:17:57,260 je to len znak 7 mínus znak 0, 1958 01:17:57,260 --> 01:18:00,420 a tie, ktoré sú sedem integers-- dobre, tí, 1959 01:18:00,420 --> 01:18:04,030 sedem priestory od seba ďalší na ASCII tabuľky, alebo čokoľvek iného. 1960 01:18:04,030 --> 01:18:06,770 Tak, že to bude vrátiť INT 7. 1961 01:18:06,770 --> 01:18:08,720 Takže teraz, suma sa rovná 7. 1962 01:18:08,720 --> 01:18:10,830 >> OK, dobre, poďme skočiť do tejto slučky for znova. 1963 01:18:10,830 --> 01:18:13,010 OK, teraz je to suma krát 10. 1964 01:18:13,010 --> 01:18:15,800 Takže si skutočne presunutie 7 doľava. 1965 01:18:15,800 --> 01:18:17,542 Dáva to zmysel? 1966 01:18:17,542 --> 01:18:19,250 Ste efektívne Pohybom doľava. 1967 01:18:19,250 --> 01:18:21,790 >> A potom sa to add-- bude 6 mínus 0. 1968 01:18:21,790 --> 01:18:22,650 To je 6. 1969 01:18:22,650 --> 01:18:24,752 Takže to bude 70 a 6. 1970 01:18:24,752 --> 01:18:25,996 76, to je vaše číslo. 1971 01:18:25,996 --> 01:18:28,370 Takže bez ohľadu na to, čo čísla Dal som vám, že je to pomaly len 1972 01:18:28,370 --> 01:18:31,610 bude posunúť väčšie hodnoty doľava, 1 faktor 10 1973 01:18:31,610 --> 01:18:35,525 Zakaždým, keď v cykle for, a potom pridať ako nutné. 1974 01:18:35,525 --> 01:18:37,350 1975 01:18:37,350 --> 01:18:37,865 >> V zadnej? 1976 01:18:37,865 --> 01:18:40,240 STUDENT: Nemáme robiť akákoľvek kontrola v programe? 1977 01:18:40,240 --> 01:18:41,580 1978 01:18:41,580 --> 01:18:44,302 >> ROB: Takže, pokiaľ ide o kontrolu ide o program, 1979 01:18:44,302 --> 01:18:46,510 by sme vám povedať dosť veľa, čo je potrebné skontrolovať. 1980 01:18:46,510 --> 01:18:48,670 Ak sa nám nepodarí povedať niečo, potom všeobecne 1981 01:18:48,670 --> 01:18:50,320 Predpokladám, že máte skontrolovať väčšinu vecí. 1982 01:18:50,320 --> 01:18:54,772 Rovnako ako môžete, len pre istotu, tie by pravdepodobne kontrolovať hej, je to null? 1983 01:18:54,772 --> 01:18:56,230 Potom som tušenie, čo sa vrátite. 1984 01:18:56,230 --> 01:18:58,814 Ale my vám povie niečo také. 1985 01:18:58,814 --> 01:18:59,480 0, neviem. 1986 01:18:59,480 --> 01:19:02,786 >> DAVIN: A prečo by ste mali chcieť prekontrolovať, či je rovná null? 1987 01:19:02,786 --> 01:19:03,660 STUDENT: [nepočuteľné]. 1988 01:19:03,660 --> 01:19:04,880 DAVIN: Kvôli char hviezdy. 1989 01:19:04,880 --> 01:19:05,510 Je to ukazovateľ. 1990 01:19:05,510 --> 01:19:09,240 Takže úplne prijateľné vyhlásenie, mohol by som povedať, OK, 1991 01:19:09,240 --> 01:19:11,917 s presne null, pretože to môže byť ukazovateľ na hodnotu null. 1992 01:19:11,917 --> 01:19:14,250 Takže kedykoľvek budete mať ukazovatele v ceste v takto, 1993 01:19:14,250 --> 01:19:15,420 asi by ste mali skontrolovať. 1994 01:19:15,420 --> 01:19:18,461 Pretože ak nechcete skontrolovať, či, a potom by ste potom ísť do slučky for, 1995 01:19:18,461 --> 01:19:20,100 a vy ste doing-- uháňať dolu. 1996 01:19:20,100 --> 01:19:21,980 1997 01:19:21,980 --> 01:19:22,920 Uháňať dolu. 1998 01:19:22,920 --> 01:19:23,860 >> ROB: Ospravedlňujeme sa, ale to je všetko. 1999 01:19:23,860 --> 01:19:25,860 >> DAVIN: A tak, rovnako ako v prípade je null, a potom vás 2000 01:19:25,860 --> 01:19:28,267 urobiť to, čo chybu sa chceš dostať? 2001 01:19:28,267 --> 01:19:29,850 STUDENT: Budeš mať nastavenú poruchu. 2002 01:19:29,850 --> 01:19:31,250 DAVIN: Budeš nastavenie chyba, že jo, pretože si 2003 01:19:31,250 --> 01:19:32,616 snaží sa index do null. 2004 01:19:32,616 --> 01:19:35,240 Takže sa pokúsim index do pamäti, že nemáte vlastný. 2005 01:19:35,240 --> 01:19:39,550 Takže to, ak je to null a tak urobíte, budete cyklus vám. 2006 01:19:39,550 --> 01:19:43,656 >> ROB: tiež si myslím, na skúšku, v ktorej Opýtali sme sa na túto otázku, môžeme vám povedať, 2007 01:19:43,656 --> 01:19:45,655 ktoré možno len predpokladať, je kladné číslo. 2008 01:19:45,655 --> 01:19:48,270 Vzhľadom k tomu sa tiež očakáva, že atoi zvládnuť záporné čísla, 2009 01:19:48,270 --> 01:19:49,686 takže budete musieť zvláštny prípad. 2010 01:19:49,686 --> 01:19:53,080 Hej, je prvý znak pomlčka, v tomto prípade, OK, 2011 01:19:53,080 --> 01:19:54,839 teraz je záporné celé číslo. 2012 01:19:54,839 --> 01:19:56,380 Povieme vám tieto druhy vecí. 2013 01:19:56,380 --> 01:19:58,005 My vám poviem, čo je potrebné zvládnuť. 2014 01:19:58,005 --> 01:19:59,310 DAVIN: Áno. 2015 01:19:59,310 --> 01:20:02,530 Takže som si istý, že niektorí ľudia môžu have-- ak ste začali pri pohľade na staré skúšky, 2016 01:20:02,530 --> 01:20:03,900 Videli ste sterln. 2017 01:20:03,900 --> 01:20:05,120 To je populárne. 2018 01:20:05,120 --> 01:20:09,790 A myslím, že v sterln, museli ste túto kontrolu na null, návrat 2019 01:20:09,790 --> 01:20:10,950 0 alebo niečo také. 2020 01:20:10,950 --> 01:20:11,940 Rovnako ako by ste mali skontrolovať null. 2021 01:20:11,940 --> 01:20:14,230 A ak to tak nie je, že mieril preč na kvíz. 2022 01:20:14,230 --> 01:20:16,750 2023 01:20:16,750 --> 01:20:19,500 Tak ako tak, robí všetkým pocit, OK s atoi? 2024 01:20:19,500 --> 01:20:21,112 2025 01:20:21,112 --> 01:20:22,820 Chce niekto prejsť častí znova? 2026 01:20:22,820 --> 01:20:23,815 2027 01:20:23,815 --> 01:20:25,565 ROB: Jo, myslím, že vám tiež povie, 2028 01:20:25,565 --> 01:20:28,565 Možno predpokladať, že všetko je-- že oni sú vlastne zadanie čísla, 2029 01:20:28,565 --> 01:20:32,821 že nemusíte mať obavy, ako, písmená sú v reťazci, a tak. 2030 01:20:32,821 --> 01:20:33,320 DAVIN: Jo. 2031 01:20:33,320 --> 01:20:33,922 Áno? 2032 01:20:33,922 --> 01:20:35,713 STUDENT: Môžeš ísť v priebehu ešte raz, keď 2033 01:20:35,713 --> 01:20:37,860 použiť dvojité úvodzovky a jednoduché úvodzovky? 2034 01:20:37,860 --> 01:20:41,290 >> DAVIN: Jasne, takže dvojité úvodzovky, veľmi Jednoducho povedané, je dvojité úvodzovky sú reťazce. 2035 01:20:41,290 --> 01:20:43,370 Takže ak ste dvojité úvodzovky nič, to je reťazec. 2036 01:20:43,370 --> 01:20:48,270 Tak, ako keby som mal tento 0 sem, a ja som to urobil, to je reťazec. 2037 01:20:48,270 --> 01:20:50,060 To už nie je znak. 2038 01:20:50,060 --> 01:20:54,816 Takže nemôžem nájsť túto hodnotu na mojom ASCII graf, pretože je to string, jo. 2039 01:20:54,816 --> 01:20:57,770 2040 01:20:57,770 --> 01:20:59,480 >> OK, nejaké ďalšie otázky? 2041 01:20:59,480 --> 01:21:00,405 Áno? 2042 01:21:00,405 --> 01:21:02,345 >> STUDENT: Takže ste už odpovedal tento, 2043 01:21:02,345 --> 01:21:05,255 ale ako, keď sme v skutočnosti písanie na teste to, 2044 01:21:05,255 --> 01:21:08,165 chcete, aby sme písať lomítka nuly [nepočuteľné]? 2045 01:21:08,165 --> 01:21:11,041 2046 01:21:11,041 --> 01:21:11,540 DAVIN: Nie 2047 01:21:11,540 --> 01:21:13,800 Otázkou bolo, mali by ste dať lomítko cez nulami 2048 01:21:13,800 --> 01:21:14,890 aby uviedli, či sú nuly? 2049 01:21:14,890 --> 01:21:15,890 Nie, budeme na to prísť. 2050 01:21:15,890 --> 01:21:16,940 2051 01:21:16,940 --> 01:21:19,530 Jo, vďaka, že sú dobré. 2052 01:21:19,530 --> 01:21:20,860 OK, niečo iné? 2053 01:21:20,860 --> 01:21:25,060 Chce niekto to-- tak si myslím, Urobili sme trochu v čase. 2054 01:21:25,060 --> 01:21:27,305 Chceš vidieť ďalšie, alebo? 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, presne tak. 2058 01:21:30,750 --> 01:21:32,975 Takže poďme robiť RandomInt. 2059 01:21:32,975 --> 01:21:34,395 2060 01:21:34,395 --> 01:21:35,270 Urobím to tu. 2061 01:21:35,270 --> 01:21:36,770 2062 01:21:36,770 --> 01:21:39,210 Takže RandomInt je v skutočnosti oveľa jednoduchšie. 2063 01:21:39,210 --> 01:21:43,578 Myslím si, že atoi je asi najťažšie jeden že sme sa pýtal v minulých rokoch. 2064 01:21:43,578 --> 01:21:44,453 STUDENT: [nepočuteľné]. 2065 01:21:44,453 --> 01:21:46,660 2066 01:21:46,660 --> 01:21:47,161 >> DAVIN: Čo je? 2067 01:21:47,161 --> 01:21:49,493 ROB: Vidím, či je to druh z zobraziteľná sem. 2068 01:21:49,493 --> 01:21:50,040 DAVIN: Je to tak? 2069 01:21:50,040 --> 01:21:52,500 ROB: Nemyslím si, že je to going-- myslím, to bude bežať napravo. 2070 01:21:52,500 --> 01:21:53,791 DAVIN: OK, tak ja to urobím toto. 2071 01:21:53,791 --> 01:21:56,250 A potom stačí dať ju na obrazovke. 2072 01:21:56,250 --> 01:21:57,150 >> ROB: Dobre. 2073 01:21:57,150 --> 01:21:58,190 >> DAVIN: Chceš byť môj pisár? 2074 01:21:58,190 --> 01:21:58,600 >> ROB: Jo. 2075 01:21:58,600 --> 01:21:59,100 >> DAVIN: Nice. 2076 01:21:59,100 --> 01:22:01,210 2077 01:22:01,210 --> 01:22:02,727 OK, môžem vymazať to? 2078 01:22:02,727 --> 01:22:04,188 >> STUDENT: Jo. 2079 01:22:04,188 --> 01:22:05,162 >> DAVIN: To je tak ťažké. 2080 01:22:05,162 --> 01:22:10,032 2081 01:22:10,032 --> 01:22:12,062 (Spieva) Robíš čo robíte. 2082 01:22:12,062 --> 01:22:14,454 A to, čo nemáte. 2083 01:22:14,454 --> 01:22:14,954 Dobrá. 2084 01:22:14,954 --> 01:22:19,790 2085 01:22:19,790 --> 01:22:22,930 >> OK, ak si dobre spomínam, na kvíz RandomInt bol rád, 2086 01:22:22,930 --> 01:22:26,190 OK, budem vám dva čísla, ako je A a b. 2087 01:22:26,190 --> 01:22:30,380 A ja chcem, aby si mi RandomInt medzi týmito číslami. 2088 01:22:30,380 --> 01:22:33,440 Takže RandomInt sa deje aby sa dva numbers-- 2089 01:22:33,440 --> 01:22:41,690 tak RandomInt-- a je to chystá vrátiť int. 2090 01:22:41,690 --> 01:22:42,930 >> Takže to, čo je návratová hodnota? 2091 01:22:42,930 --> 01:22:44,151 Len som ti to povedal. 2092 01:22:44,151 --> 01:22:44,650 Int, že jo? 2093 01:22:44,650 --> 01:22:46,400 2094 01:22:46,400 --> 01:22:49,260 Rovnako ako tento, a potom je to bude trvať dva celých čísel. 2095 01:22:49,260 --> 01:22:56,301 Takže to bude trvať int a int b, takhle. 2096 01:22:56,301 --> 01:22:58,217 Takže to, čo je RandomInt chystá urobiť, je, že to bude 2097 01:22:58,217 --> 01:23:02,440 vrátiť nejakú náhodnú hodnotu medzi týmito dvoma hodnotami. 2098 01:23:02,440 --> 01:23:05,140 Takže to bude väčšia ako, menšie ako b. 2099 01:23:05,140 --> 01:23:09,020 Takže myslím, že môžete pravdepodobne predpokladať, že je menšia z týchto dvoch hodnôt. 2100 01:23:09,020 --> 01:23:12,210 Takže ak máme čo do činenia s náhodnosť, akú funkciu 2101 01:23:12,210 --> 01:23:14,825 sme videli, že nám dáva náhodné veci? 2102 01:23:14,825 --> 01:23:15,450 STUDENT: drandí. 2103 01:23:15,450 --> 01:23:16,506 DAVIN: drandí, presne tak. 2104 01:23:16,506 --> 01:23:18,630 Takže budete pravdepodobne chcete používať drandí. 2105 01:23:18,630 --> 01:23:19,940 2106 01:23:19,940 --> 01:23:29,160 Takže môžete povedať, int náhodný, a my len povedať, že sa rovná 0, práve teraz. 2107 01:23:29,160 --> 01:23:30,170 2108 01:23:30,170 --> 01:23:38,690 A oni budeme hovoriť, OK, náhodné rovní drandí 48. 2109 01:23:38,690 --> 01:23:39,747 2110 01:23:39,747 --> 01:23:40,830 A čo to vrátiť? 2111 01:23:40,830 --> 01:23:43,742 Čo táto funkcia vám? 2112 01:23:43,742 --> 01:23:45,610 >> STUDENT: medzi 0 a 1. 2113 01:23:45,610 --> 01:23:47,870 >> DAVIN: Jo, medzi 0 a 1. 2114 01:23:47,870 --> 01:23:48,890 Takže to bude be-- 2115 01:23:48,890 --> 01:23:51,070 >> ROB: A to je-- myslím, by sme ti toto. 2116 01:23:51,070 --> 01:23:52,670 Rovnako ako môžete použiť drandí 48. 2117 01:23:52,670 --> 01:23:54,350 To si môžete overiť na minulé skúške. 2118 01:23:54,350 --> 01:23:56,720 Ale pravdepodobne, že ste možno použiť drandí 48, ktorý 2119 01:23:56,720 --> 01:23:58,790 vráti plavák medzi 0 a 1. 2120 01:23:58,790 --> 01:24:00,830 >> DAVIN: Áno, áno, ja som si istý, že na skúšku 2121 01:24:00,830 --> 01:24:03,860 to vám hovorí, že pravdepodobne chcete použiť drandí, jo. 2122 01:24:03,860 --> 01:24:07,041 Takže to bude návrat nejakú hodnotu medzi 0 a 1. 2123 01:24:07,041 --> 01:24:08,790 A čo potom ste bude chcieť robiť? 2124 01:24:08,790 --> 01:24:16,360 No, chcete násobiť by-- počkaj, ja si myslím, že je to takto, je mi ľúto. 2125 01:24:16,360 --> 01:24:18,018 Budem robiť. 2126 01:24:18,018 --> 01:24:19,410 Neviem. 2127 01:24:19,410 --> 01:24:22,240 >> Takže b mínus. 2128 01:24:22,240 --> 01:24:23,310 2129 01:24:23,310 --> 01:24:24,490 Tak prečo b mínus? 2130 01:24:24,490 --> 01:24:26,110 2131 01:24:26,110 --> 01:24:30,490 Takže povedzme, že drandí vám dáva späť int-- OK, budem proste robiť zvyšok, 2132 01:24:30,490 --> 01:24:33,380 tak plus. 2133 01:24:33,380 --> 01:24:36,130 Takže to, čo does-- y je b mínus. 2134 01:24:36,130 --> 01:24:40,670 Takže povedzme, že drandí vám dáva späť Maximálna hodnota by to mohlo 2135 01:24:40,670 --> 01:24:41,410 dať. 2136 01:24:41,410 --> 01:24:42,409 Čo to bude? 2137 01:24:42,409 --> 01:24:43,010 STUDENT: 1. 2138 01:24:43,010 --> 01:24:44,430 >> DAVIN: 1, nie? 2139 01:24:44,430 --> 01:24:47,880 Takže ak je to 1, a vy ste vynásobením b mínus, 2140 01:24:47,880 --> 01:24:50,110 No, to je práve Rozdiel medzi mínus A. 2141 01:24:50,110 --> 01:24:52,870 A ak si pridajte, že späť na, to je čo? 2142 01:24:52,870 --> 01:24:54,290 2143 01:24:54,290 --> 01:24:55,180 Je to v podstate b. 2144 01:24:55,180 --> 01:24:56,435 2145 01:24:56,435 --> 01:24:57,310 Dáva to zmysel? 2146 01:24:57,310 --> 01:24:57,851 >> Študent: Áno. 2147 01:24:57,851 --> 01:24:59,480 2148 01:24:59,480 --> 01:25:02,170 >> DAVIN: Takže ak je to maximum cení by to mohlo byť, 2149 01:25:02,170 --> 01:25:03,175 to bude jedno. 2150 01:25:03,175 --> 01:25:04,122 2151 01:25:04,122 --> 01:25:06,330 A potom je to len Rozdiel medzi týmito dvoma. 2152 01:25:06,330 --> 01:25:11,410 Pridať na, takže to je chystá sa vrátiť náhodné. 2153 01:25:11,410 --> 01:25:15,000 2154 01:25:15,000 --> 01:25:18,620 A v prípade, že rohové drandí vám vracia 1, 2155 01:25:18,620 --> 01:25:20,970 náhodný bude len účinne b. 2156 01:25:20,970 --> 01:25:22,700 Ale to je maximum to môže byť. 2157 01:25:22,700 --> 01:25:27,420 Takže ak to bude menej ako že, takže povedzme, že je to ako 0,9, 2158 01:25:27,420 --> 01:25:31,080 tak potom 0,9 násobok b mínus bude menej 2159 01:25:31,080 --> 01:25:33,230 ako rozdiel medzi b mínus. 2160 01:25:33,230 --> 01:25:35,830 >> A potom, ak ste dodať, že na, táto hodnota je 2161 01:25:35,830 --> 01:25:38,986 bude väčšia než, pretože pridávate niečo na neho, 2162 01:25:38,986 --> 01:25:40,360 ale to bude menšie ako b. 2163 01:25:40,360 --> 01:25:41,430 2164 01:25:41,430 --> 01:25:44,420 Takže budete mať náhodné číslo, pretože voláte drandí. 2165 01:25:44,420 --> 01:25:48,000 A to rand, že náhodné číslo je bude niekde medzi 2166 01:25:48,000 --> 01:25:49,342 a b. 2167 01:25:49,342 --> 01:25:50,780 Dáva to zmysel? 2168 01:25:50,780 --> 01:25:52,990 >> ROB: Stačí, aby ju v konkrétne čísla, takže 2169 01:25:52,990 --> 01:25:55,450 povedzme, že chceme vybrať náhodné číslo medzi 7 a 10. 2170 01:25:55,450 --> 01:25:56,960 Takže b mínus je náš sortiment. 2171 01:25:56,960 --> 01:26:00,150 Takže tam je rad troch Čísla chceme vybrať. 2172 01:26:00,150 --> 01:26:03,290 A potom vynásobením že medzi 0 a 1 1, 2173 01:26:03,290 --> 01:26:07,430 li, že potom nám dáva some-- povedzme, že nám dáva 1.5. 2174 01:26:07,430 --> 01:26:10,670 >> Potom 1.5, chceme ísť od 7 do 10. 2175 01:26:10,670 --> 01:26:14,470 Takže 1.5 a 7 nás privádza späť do našej 7 až 10 rozsah. 2176 01:26:14,470 --> 01:26:17,580 A potom sme uložením vnútri celé číslo, takže je skrátený až na 8. 2177 01:26:17,580 --> 01:26:18,790 A potom sme sa jednoducho vrátiť, že. 2178 01:26:18,790 --> 01:26:21,310 Takže b mínus je náš sortiment. 2179 01:26:21,310 --> 01:26:25,770 posunie ju do čísel že chceme v tomto rozsahu. 2180 01:26:25,770 --> 01:26:30,540 Tak medzi 7 a 10, a potom sme môžete vrátiť, čo sme skončili s. 2181 01:26:30,540 --> 01:26:32,684 >> DAVIN: Jo, pekný. 2182 01:26:32,684 --> 01:26:34,470 >> ROB: Ďakujem. 2183 01:26:34,470 --> 01:26:35,628 >> DAVIN: Jo, čo sa deje? 2184 01:26:35,628 --> 01:26:39,746 >> STUDENT: Mali by sme ho spustiť na akejkoľvek Chyby ASCII keď we're-- ak drandí je 2185 01:26:39,746 --> 01:26:40,996 vrátenie plavák [nepočuteľné]. 2186 01:26:40,996 --> 01:26:42,470 2187 01:26:42,470 --> 01:26:45,360 >> ROB: Takže rovnako ako povedal Rob, pretože nie je náhodný int, 2188 01:26:45,360 --> 01:26:47,080 tak drandí bude float. 2189 01:26:47,080 --> 01:26:48,470 Tak a potom násobí von. 2190 01:26:48,470 --> 01:26:50,507 A môžete získať niektoré druh čísel float. 2191 01:26:50,507 --> 01:26:51,840 A potom, že to bude skrátiť. 2192 01:26:51,840 --> 01:26:52,339 >> STUDENT: OK. 2193 01:26:52,339 --> 01:26:53,019 DAVIN: Jo. 2194 01:26:53,019 --> 01:26:56,060 ROB: A v prípade, že kompilátor mal varovať ste asi, ako, strata presnosti, 2195 01:26:56,060 --> 01:26:58,986 len hodený int v tam, a potom je to dobré. 2196 01:26:58,986 --> 01:27:00,398 2197 01:27:00,398 --> 01:27:00,898 DAVIN: Áno? 2198 01:27:00,898 --> 01:27:02,332 2199 01:27:02,332 --> 01:27:04,722 >> STUDENT: Mal by Rovnaká pravdepodobnosť získania, 2200 01:27:04,722 --> 01:27:06,156 ako, b alebo [nepočuteľné]? 2201 01:27:06,156 --> 01:27:08,080 2202 01:27:08,080 --> 01:27:10,980 >> ROB: Takže je-- som vlastne wondering-- je RandomInt predpokladaný 2203 01:27:10,980 --> 01:27:14,362 byť číslo od menej ako b? 2204 01:27:14,362 --> 01:27:16,820 Rovnako ako, keď je to medzi 7 a 10, aké sú možnosti? 2205 01:27:16,820 --> 01:27:18,454 7, 8, a 9, alebo 7, 8, 9, 10? 2206 01:27:18,454 --> 01:27:19,120 DAVIN: Zabudol som. 2207 01:27:19,120 --> 01:27:19,880 Na problém set-- 2208 01:27:19,880 --> 01:27:20,570 >> ROB: Myslím, že je to 7, 8, 9. 2209 01:27:20,570 --> 01:27:22,785 >> DAVIN: Konkrétne hovorí One vrátane a jeden je exkluzívny. 2210 01:27:22,785 --> 01:27:23,110 >> ROB: Jo. 2211 01:27:23,110 --> 01:27:23,670 >> DAVIN: Ale ja ne-- som ne-- 2212 01:27:23,670 --> 01:27:25,878 >> ROB: Takže myslím, že to je nie je v cene, v takom prípade, 2213 01:27:25,878 --> 01:27:28,152 tam je rovné pravdepodobnosť, 7, 8, a 9. 2214 01:27:28,152 --> 01:27:29,360 Neexistuje žiadna pravdepodobnosť 10. 2215 01:27:29,360 --> 01:27:31,770 2216 01:27:31,770 --> 01:27:32,270 DAVIN: Áno? 2217 01:27:32,270 --> 01:27:33,395 STUDENT: Mám dotaz. 2218 01:27:33,395 --> 01:27:38,090 Chceme definovať funkciu vráti nie jednu hodnotu, ale pole. 2219 01:27:38,090 --> 01:27:41,020 Potom, čo by bolo syntax po návrate? 2220 01:27:41,020 --> 01:27:44,604 >> DAVIN: OK, tak potom would-- po návrate? 2221 01:27:44,604 --> 01:27:47,020 Takže povedzme, že ste vyhlásili, polia niekde tam hore. 2222 01:27:47,020 --> 01:27:49,708 Potom by ste práve návrat názov poľa. 2223 01:27:49,708 --> 01:27:50,676 >> STUDENT: OK, ďakujem. 2224 01:27:50,676 --> 01:27:51,718 Potom už stačí len vrátiť s je-- 2225 01:27:51,718 --> 01:27:52,759 DAVIN: Ale počkajte, to tak ľúto. 2226 01:27:52,759 --> 01:27:54,620 Otázkou bolo, ako sa vrátite poľa. 2227 01:27:54,620 --> 01:27:56,170 >> ROB: Aj keď to nešlo byť vyhlásená pole 2228 01:27:56,170 --> 01:27:57,260 na zásobníku alebo niečo podobné. 2229 01:27:57,260 --> 01:27:59,510 Muselo by to byť niečo, čo malloced, pretože malloc 2230 01:27:59,510 --> 01:28:01,610 je, ako sa dostať okolo automatické prideľovanie pamäti. 2231 01:28:01,610 --> 01:28:02,109 >> DAVIN: Áno. 2232 01:28:02,109 --> 01:28:03,433 2233 01:28:03,433 --> 01:28:04,933 ROB: Ako sa dostať okolo miestneho rozsahu. 2234 01:28:04,933 --> 01:28:09,670 2235 01:28:09,670 --> 01:28:11,550 >> DAVIN: Ale ty by len vrátiť jeho name-- 2236 01:28:11,550 --> 01:28:17,890 >> STUDENT: [nepočuteľné], že to nie je jeden hodnota, napríklad, dve čísla, tak 2237 01:28:17,890 --> 01:28:18,390 [Nepočuteľné]. 2238 01:28:18,390 --> 01:28:19,590 >> DAVIN: Nemôžete sa vrátiť mnohonásobné telefónne číslo. 2239 01:28:19,590 --> 01:28:20,850 Nemôžeš, ako, return-- 2240 01:28:20,850 --> 01:28:23,630 >> STUDENT: Hovoril som o návrate pole, alebo niečo také. 2241 01:28:23,630 --> 01:28:26,050 >> DAVIN: Jo, to je otázka môžem vrátiť viac hodnôt. 2242 01:28:26,050 --> 01:28:27,460 Môžete sa vrátiť viac hodnôt. 2243 01:28:27,460 --> 01:28:30,270 Nemôžete niečo ako návrat potom vrátiť B alebo niečo také. 2244 01:28:30,270 --> 01:28:32,710 Vzhľadom k tomu, po návrate, tie návrat z funkcie. 2245 01:28:32,710 --> 01:28:35,790 A potom je táto funkcia vykonaná, a ako povedal Rob, je na stacku. 2246 01:28:35,790 --> 01:28:38,260 >> Takže všetko, čo pamäť jednoducho dostane sa vrátil k počítaču. 2247 01:28:38,260 --> 01:28:40,025 Všetko, čo dostane zabudnutá, v podstate. 2248 01:28:40,025 --> 01:28:41,480 2249 01:28:41,480 --> 01:28:44,430 Takže ak sa chcete vrátiť viac hodnoty, budete musieť vrátiť pole, 2250 01:28:44,430 --> 01:28:45,971 A spôsob, ako to urobiť, je mallocing. 2251 01:28:45,971 --> 01:28:48,780 A potom sa vráti x takhle. 2252 01:28:48,780 --> 01:28:50,280 V podstate stačí vrátiť názov. 2253 01:28:50,280 --> 01:28:51,620 A až sa vrátite niečo také, že ste 2254 01:28:51,620 --> 01:28:53,200 v skutočnosti vracia hodnotu. 2255 01:28:53,200 --> 01:28:55,430 >> Takže povedzme, že ste uložili hodnoty v poli. 2256 01:28:55,430 --> 01:28:57,910 Nie si v skutočnosti návrat týchto hodnôt. 2257 01:28:57,910 --> 01:29:01,515 Rovnako ako, keď som sa vrátil int, som Naozaj vrátenie kópie hodnôt. 2258 01:29:01,515 --> 01:29:02,017 2259 01:29:02,017 --> 01:29:03,850 Ale keby som si mal vrátiť niečo také, 2260 01:29:03,850 --> 01:29:06,450 Vraciam odkaz na tieto hodnoty. 2261 01:29:06,450 --> 01:29:09,090 Tak som sa vraciam, v podstate, adresa pamäte na hodnoty. 2262 01:29:09,090 --> 01:29:10,079 Dáva to zmysel? 2263 01:29:10,079 --> 01:29:10,620 Študent: Áno. 2264 01:29:10,620 --> 01:29:11,120 DAVIN: Nice. 2265 01:29:11,120 --> 01:29:12,760 2266 01:29:12,760 --> 01:29:13,410 Áno? 2267 01:29:13,410 --> 01:29:15,430 >> STUDENT: Keď ste pomocou drandí sem, 2268 01:29:15,430 --> 01:29:17,660 máte dať srand pred tým? 2269 01:29:17,660 --> 01:29:20,320 >> DAVIN: Nie, nie, ja si to nemyslím. 2270 01:29:20,320 --> 01:29:23,040 >> ROB: Jo, tak to máte povedať niečo o srand? 2271 01:29:23,040 --> 01:29:26,900 Predvolené vás nikdy hovoriť srand vôbec je jednoducho srand null. 2272 01:29:26,900 --> 01:29:29,350 Takže drandí na vlastné bude fungovať. 2273 01:29:29,350 --> 01:29:33,759 A to bude automaticky osivo aktuálny čas, je to, čo používa. 2274 01:29:33,759 --> 01:29:35,175 2275 01:29:35,175 --> 01:29:35,675 DAVIN: Áno? 2276 01:29:35,675 --> 01:29:40,950 STUDENT: Myslíte si, [nepočuteľné] s číslami? 2277 01:29:40,950 --> 01:29:42,570 DAVIN: Áno, môžete. 2278 01:29:42,570 --> 01:29:46,770 Žiak: Takže by ste mohli hovoria, ako, 4x 2. 2279 01:29:46,770 --> 01:29:50,280 Ide o to, nemôžete predpokladať, potom int je štyri bajty. 2280 01:29:50,280 --> 01:29:51,020 Only-- 2281 01:29:51,020 --> 01:29:53,830 >> DAVIN: Myslím, že pre kvíz môžete. 2282 01:29:53,830 --> 01:29:54,830 [Smiech] 2283 01:29:54,830 --> 01:29:55,780 >> ROB: Mm, no. 2284 01:29:55,780 --> 01:29:56,780 DAVIN: Áno, áno, môžete. 2285 01:29:56,780 --> 01:30:00,197 Ak sa opýtať, aký veľký je int, nemôžete byť, ako, štyri alebo osem. 2286 01:30:00,197 --> 01:30:02,030 ROB: Aha, takže v prípade, že Otázkou je najmä, 2287 01:30:02,030 --> 01:30:04,857 podobne, ak sa jedná o problém kódovanie, by ste mali povedať veľkosť int. 2288 01:30:04,857 --> 01:30:06,690 Pokiaľ sa jedná o stôl, alebo hovorí, koľko bajtov, 2289 01:30:06,690 --> 01:30:08,808 nemali by ste vyplniť veľkosti ints. 2290 01:30:08,808 --> 01:30:11,278 >> ŠTUDENTI: [smeje sa] 2291 01:30:11,278 --> 01:30:18,210 2292 01:30:18,210 --> 01:30:20,580 >> DAVIN: Dobre, tak prečo je veľkosť int tu dôležitý? 2293 01:30:20,580 --> 01:30:23,085 Tak ako, ak ideme na 32-bit procesor alebo niečo také, 2294 01:30:23,085 --> 01:30:24,300 potom to bude štyri bajty. 2295 01:30:24,300 --> 01:30:26,342 Ale na niektoré z novších veci, by to mohlo byť, čo? 2296 01:30:26,342 --> 01:30:27,383 Mohlo by to byť osem, nie? 2297 01:30:27,383 --> 01:30:30,550 Takže tohle-- ak ste práve tvrdo kód štyri, potom na niektorých počítačoch, bude to fungovať. 2298 01:30:30,550 --> 01:30:32,180 Niektoré stroje, nebude to fungovať. 2299 01:30:32,180 --> 01:30:35,270 Ale ak na kvíz ktorom sme ako aký veľký je int? 2300 01:30:35,270 --> 01:30:35,770 Dajte štyri. 2301 01:30:35,770 --> 01:30:38,710 2302 01:30:38,710 --> 01:30:39,210 ROB: Správne. 2303 01:30:39,210 --> 01:30:39,790 DAVIN: Jo? 2304 01:30:39,790 --> 01:30:43,192 Žiak: Takže, pretože sme vyhlásenie [Nepočuteľné] vnútri funkcie, 2305 01:30:43,192 --> 01:30:45,622 Mali by sme dať 3 v tejto funkcii? 2306 01:30:45,622 --> 01:30:46,907 Alebo to môžeme používať vonku? 2307 01:30:46,907 --> 01:30:48,740 DAVIN: Môžete ju použiť mimo túto funkciu. 2308 01:30:48,740 --> 01:30:49,890 Takže on sa pýta zadarmo. 2309 01:30:49,890 --> 01:30:51,700 >> STUDENT: stratiť prehľad kde [nepočuteľné]. 2310 01:30:51,700 --> 01:30:54,720 >> ROB: Oh, voľný nie happen-- to je časť kúzla malloc 2311 01:30:54,720 --> 01:30:57,220 je to, že nie ste obmedzená na miestnej pôsobnosti. 2312 01:30:57,220 --> 01:31:00,700 Máte plnú kontrolu nad ako dlho premenné žiť. 2313 01:31:00,700 --> 01:31:05,380 Takže hovoríme malloc tu, to by mohlo byť úplne oddelené funkcie. 2314 01:31:05,380 --> 01:31:08,670 To by mohlo byť 10 hodín neskôr že sme sa konečne volať zadarmo. 2315 01:31:08,670 --> 01:31:11,764 >> DAVIN: Tak napríklad, ako, pár týždňov od teraz, keď sa konečne 2316 01:31:11,764 --> 01:31:13,680 robiť svoju slovníka pravopisu psets, budete 2317 01:31:13,680 --> 01:31:16,410 mať nejakú funkciu, ktorá vytvára ton uzlov. 2318 01:31:16,410 --> 01:31:18,630 Takže mallocing ton uzlov v tejto funkcii. 2319 01:31:18,630 --> 01:31:20,670 A neskôr v samostatná funkcia, ty si 2320 01:31:20,670 --> 01:31:22,440 bude chcieť oslobodiť všetky tie uzly. 2321 01:31:22,440 --> 01:31:25,740 Takže si môžete doslova odovzdať uvoľniť ukazovateľ, takže adresa pamäti 2322 01:31:25,740 --> 01:31:26,684 na to, čo malloced. 2323 01:31:26,684 --> 01:31:27,600 A to bude v poriadku. 2324 01:31:27,600 --> 01:31:29,725 Nemusíte sa oslobodiť, ako, v rovnakej funkcii. 2325 01:31:29,725 --> 01:31:30,449 Áno? 2326 01:31:30,449 --> 01:31:36,197 >> Žiak: Takže malloc premenná [nepočuteľné] vonku? 2327 01:31:36,197 --> 01:31:37,384 Je to to, čo hovoríš? 2328 01:31:37,384 --> 01:31:38,300 DAVIN: Počkaj, hovoríš? 2329 01:31:38,300 --> 01:31:38,800 Prepáčte. 2330 01:31:38,800 --> 01:31:42,300 >> STUDENT: Ak malloc premenná môže byť voľný kdekoľvek v kóde, 2331 01:31:42,300 --> 01:31:44,800 potom môžu byť prístupné kdekoľvek v kóde? 2332 01:31:44,800 --> 01:31:45,800 Dokážete udržať je miestna? 2333 01:31:45,800 --> 01:31:47,880 >> DAVIN: Oh, spýtala sa: ako premenná, like-- 2334 01:31:47,880 --> 01:31:51,300 2335 01:31:51,300 --> 01:31:55,510 >> ROB: Takže je potrebné ešte mať nejaký odkaz 2336 01:31:55,510 --> 01:31:57,220 na bloku malloc v pamäti. 2337 01:31:57,220 --> 01:31:58,540 Tak tu, vraciame x. 2338 01:31:58,540 --> 01:31:59,040 STUDENT: Oh. 2339 01:31:59,040 --> 01:32:01,920 ROB: Ak by sme sa nevrátili x tu, a to bolo len neplatné, 2340 01:32:01,920 --> 01:32:04,550 potom by sme nemajú prístup k ukazovateľ, ktorý bol malloced, 2341 01:32:04,550 --> 01:32:05,920 a to úniku pamäte. 2342 01:32:05,920 --> 01:32:06,690 >> STUDENT: OK. 2343 01:32:06,690 --> 01:32:10,010 >> DAVIN: Tak ako, povedzme, že vám majú to, ako, tu. 2344 01:32:10,010 --> 01:32:10,510 ROB: Nie 2345 01:32:10,510 --> 01:32:13,430 DAVIN: V mojej hlavnej funkcie, nemôžem stačí zavolať túto x a je, rovnako ako, OK, 2346 01:32:13,430 --> 01:32:14,645 V tejto funkcii som to urobil. 2347 01:32:14,645 --> 01:32:14,960 >> ROB: Správne. 2348 01:32:14,960 --> 01:32:17,790 >> DAVIN: Takže budem volať x v, ako, hlavná alebo niečo také. 2349 01:32:17,790 --> 01:32:18,540 Môžete to urobiť. 2350 01:32:18,540 --> 01:32:19,600 Budeš niečo vracať. 2351 01:32:19,600 --> 01:32:21,000 Ale to, čo chceš vrátiť? 2352 01:32:21,000 --> 01:32:22,130 Budeš vráti adresu pamäte. 2353 01:32:22,130 --> 01:32:25,130 A pretože sa vrátite pamäť adresy, ktoré môžu byť prístupné aj inde. 2354 01:32:25,130 --> 01:32:27,262 2355 01:32:27,262 --> 01:32:28,255 Nejaké ďalšie otázky? 2356 01:32:28,255 --> 01:32:28,755 Áno? 2357 01:32:28,755 --> 01:32:31,213 >> Študent: Je funkcia vyššie je šek na [nepočuteľné]? 2358 01:32:31,213 --> 01:32:33,270 2359 01:32:33,270 --> 01:32:35,005 >> DAVIN: Prečo nie je potrebné robiť, že? 2360 01:32:35,005 --> 01:32:35,880 STUDENT: [nepočuteľné]. 2361 01:32:35,880 --> 01:32:37,755 DAVIN: Vzhľadom k tomu, že ste nie mallocing nič. 2362 01:32:37,755 --> 01:32:39,640 Takže to ne-- jo, je to nie ako reťazec s. 2363 01:32:39,640 --> 01:32:41,160 Je to ukazovateľ niekde. 2364 01:32:41,160 --> 01:32:42,951 To sú len hodnoty. 2365 01:32:42,951 --> 01:32:43,450 STUDENT: OK. 2366 01:32:43,450 --> 01:32:43,949 DAVIN: Jo. 2367 01:32:43,949 --> 01:32:47,600 2368 01:32:47,600 --> 01:32:48,470 Ešte niečo? 2369 01:32:48,470 --> 01:32:48,970 ROB: Jo? 2370 01:32:48,970 --> 01:32:50,386 STUDENT: Ale keď [nepočuteľné]? 2371 01:32:50,386 --> 01:32:55,050 2372 01:32:55,050 --> 01:32:58,690 >> ROB: Takže, aby sa uvoľnilo pamäti, povedali by sme tu. 2373 01:32:58,690 --> 01:33:01,350 Takže x je náš ukazovateľ blok pamäte. 2374 01:33:01,350 --> 01:33:02,845 Máme voľné, že ukazovateľ. 2375 01:33:02,845 --> 01:33:04,470 A my by sme nutne urobiť tu. 2376 01:33:04,470 --> 01:33:05,390 Môžeme to urobiť kdekoľvek. 2377 01:33:05,390 --> 01:33:10,400 Ale ty si len volať zadarmo na niečo, čo malloc vráti. 2378 01:33:10,400 --> 01:33:12,940 Tak malloc, tu, sa vrátil čo sa uloží do x. 2379 01:33:12,940 --> 01:33:14,802 Takže môžeme volať zadarmo na x. 2380 01:33:14,802 --> 01:33:18,730 2381 01:33:18,730 --> 01:33:20,556 Nejaká posledné otázky? 2382 01:33:20,556 --> 01:33:21,701 >> DAVIN: Nejaká posledné otázky? 2383 01:33:21,701 --> 01:33:22,200 Jo? 2384 01:33:22,200 --> 01:33:25,152 >> STUDENT: Je nám ľúto, môžete znovu vysvetliť Prečo by ste oslobodiť tam? 2385 01:33:25,152 --> 01:33:26,630 Prečo [nepočuteľné]? 2386 01:33:26,630 --> 01:33:27,774 >> DAVIN: Pre tú? 2387 01:33:27,774 --> 01:33:29,109 >> STUDENT: Jo, ako hneď po. 2388 01:33:29,109 --> 01:33:30,900 DAVIN: Pravdepodobne Nechceme tu zadarmo. 2389 01:33:30,900 --> 01:33:31,630 ROB: Pravdepodobne nie. 2390 01:33:31,630 --> 01:33:33,060 DAVIN: Jo, to by to nič robiť. 2391 01:33:33,060 --> 01:33:35,220 To by sa, rovnako ako, vytvoriť pamäť, robiť veci na to, 2392 01:33:35,220 --> 01:33:37,390 a potom sa okamžite zabudnúť na to, jo. 2393 01:33:37,390 --> 01:33:39,850 >> ROB: Ale my sme mohli robiť, ako, z nejakého dôvodu tu. 2394 01:33:39,850 --> 01:33:43,902 Mohli by sme povedať, int hviezdu y sa rovná spiatočnej rad. 2395 01:33:43,902 --> 01:33:47,900 Urobiť nejaké veci s y, Možno vytlačiť obsah. 2396 01:33:47,900 --> 01:33:49,350 A potom, konečne, sme hotoví. 2397 01:33:49,350 --> 01:33:50,626 Môžeme oslobodiť y. 2398 01:33:50,626 --> 01:33:51,501 STUDENT: [nepočuteľné]. 2399 01:33:51,501 --> 01:33:57,839 2400 01:33:57,839 --> 01:33:59,005 DAVIN: Mám prejdite nadol? 2401 01:33:59,005 --> 01:34:00,445 Vďaka. 2402 01:34:00,445 --> 01:34:00,945 ROB: Nice. 2403 01:34:00,945 --> 01:34:02,400 2404 01:34:02,400 --> 01:34:03,646 >> DAVIN: OK, to je ono. 2405 01:34:03,646 --> 01:34:04,520 ROB: Dobre, dobre. 2406 01:34:04,520 --> 01:34:05,070 Veľa šťastia. 2407 01:34:05,070 --> 01:34:06,800 >> DAVIN: Ak máte otázky, napíšte nám. 2408 01:34:06,800 --> 01:34:08,670 Veľa šťastia. 2409 01:34:08,670 --> 01:34:10,283