1 00:00:00,000 --> 00:00:02,670 >> [TEMA MUSIC] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Živjo, vsi. 4 00:00:13,365 --> 00:00:14,365 Dobrodošli nazaj v oddelku. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Lep dan out--, ki je razlog, zakaj sem prepričani, da so le štiri izmed vas tukaj 7 00:00:18,700 --> 00:00:21,180 in ne naš običajni paket. 8 00:00:21,180 --> 00:00:22,670 Bil sem bolan ta vikend. 9 00:00:22,670 --> 00:00:24,294 Torej nimam zvezdnimi za vas. 10 00:00:24,294 --> 00:00:26,400 In jaz lahko začne kašelj strašno ves to. 11 00:00:26,400 --> 00:00:27,790 Torej le nosijo s seboj. 12 00:00:27,790 --> 00:00:30,624 Bom zares poskusiti in priti skozi ta prvi, 13 00:00:30,624 --> 00:00:32,290 čeprav, preden sem imela kašelj napad. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Ampak samo enostavno mi je malo bit--, da je vse, kar sem vprašal. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Torej, naša agenda za today-- samo reminder-- vaš kviz naslednji teden. 18 00:00:44,289 --> 00:00:46,830 Rekel sem ti to prejšnji teden, tako da Ne bi vas ujeli nepripravljene. 19 00:00:46,830 --> 00:00:47,954 Tako da sem vas spomnim še enkrat. 20 00:00:47,954 --> 00:00:49,180 Naslednji teden je tvoj kviz. 21 00:00:49,180 --> 00:00:52,730 V ta namen, naslednji teden je oddelek bo veliko bolj 22 00:00:52,730 --> 00:00:55,180 of-- bom poskusil in dela v nekaterih pregledu. 23 00:00:55,180 --> 00:00:58,130 Torej, če vi lahko pomagaj mi jih me pošilja 24 00:00:58,130 --> 00:01:00,990 stvari, ki ste zadovoljni s, da ste v skrbeh, 25 00:01:00,990 --> 00:01:03,530 teme, ki bi si želeli za me za kritje, da bi bilo super. 26 00:01:03,530 --> 00:01:05,740 Tako da sem lahko poskusite in jih dela v našem oddelku za naslednji teden 27 00:01:05,740 --> 00:01:11,540 ali vam poslali dodatno gradivo ali prep da ne boste mogli dobiti drugje. 28 00:01:11,540 --> 00:01:12,150 >> Ja! 29 00:01:12,150 --> 00:01:13,520 Več ljudi, ki prihajajo! 30 00:01:13,520 --> 00:01:17,320 Mislil sem, da sem naredil slabo last teden, da nihče ne želi, da pridejo nazaj? 31 00:01:17,320 --> 00:01:18,065 Strah me je. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Torej ostalih treh stvari da bomo šli čez 34 00:01:21,100 --> 00:01:24,850 so preusmerjanje, datoteko I / O, in potem kazalci in dinamičnega pomnilnika. 35 00:01:24,850 --> 00:01:29,160 Prepričan sem, da ste vsi super navdušen pointers-- priljubljena tema vsakogar, 36 00:01:29,160 --> 00:01:31,310 tako enostavno razumeti. 37 00:01:31,310 --> 00:01:33,130 Prepričan sem, da vi vsi dobili, kajne? 38 00:01:33,130 --> 00:01:39,510 >> Torej, prvi stvari prvi, redirection-- to je v bistvu samo pot 39 00:01:39,510 --> 00:01:42,920 za nadzor nad tem, kako vložek stvari v vašem programu, 40 00:01:42,920 --> 00:01:44,606 Kako si izhodne stvari iz vašega programa. 41 00:01:44,606 --> 00:01:46,980 Glavni načini, ki jih fantje so bili v stiku z njim 42 00:01:46,980 --> 00:01:51,650 je samo preko standardne out s svojim tiskanja zaslona tukaj. 43 00:01:51,650 --> 00:01:55,940 Vendar pa obstajajo načini za pipe-- kot vidimo tukaj 44 00:01:55,940 --> 00:01:58,980 je eden od naših words-- naravi cevnega da informacije 45 00:01:58,980 --> 00:02:02,850 ali pa, da so podatki v datoteki iz datoteke. 46 00:02:02,850 --> 00:02:05,820 To je samo na različne načine pridobivanje stvari v vašem programu 47 00:02:05,820 --> 00:02:10,681 in iz svojega programa, namesto samo jih natisnete na tem zaslonu 48 00:02:10,681 --> 00:02:12,430 ali vnašanjem stvari v ukazni vrstici. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Torej prva je malo večja kot strešica. 51 00:02:18,030 --> 00:02:22,085 Torej output-- to samo natisne izhod v datoteko namesto zaslona. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Torej, če si imel nekaj, natisnjeno "Hello, world!" na zaslon, 54 00:02:29,500 --> 00:02:32,400 če ste jo dali namesto da output.text, da 55 00:02:32,400 --> 00:02:35,220 ustvari datoteko z imenom output.text. 56 00:02:35,220 --> 00:02:38,550 In ko ga odprete, se bo pravijo "Hello, world!" tam. 57 00:02:38,550 --> 00:02:41,410 To je lahko zelo uporabno če imate tono napak 58 00:02:41,410 --> 00:02:43,430 pravzaprav, kot smo videli v tem. 59 00:02:43,430 --> 00:02:46,810 Če boste to storili dve Caret, bo tiskanje sporočil o napakah. 60 00:02:46,810 --> 00:02:52,090 >> Torej, če imate težave z prevajanje, da ima veliko napak 61 00:02:52,090 --> 00:02:56,770 in ste dobili bogged v poskusu se lahko pomikate v ukazni vrstici 62 00:02:56,770 --> 00:02:59,110 skozi vse njih, lahko samo jih tiskati v datoteko, 63 00:02:59,110 --> 00:03:02,130 odpreti to datoteko, tako da boste lahko pomikate po njih lažje. 64 00:03:02,130 --> 00:03:05,160 Dejansko sem rabil, da veliko, ko sem bil debugging 65 00:03:05,160 --> 00:03:07,970 moji 181 psets za strojno učenje. 66 00:03:07,970 --> 00:03:10,000 Tako da je lahko super koristno kasneje. 67 00:03:10,000 --> 00:03:18,370 Koristno je tudi, če imate program da morda ustvarja knjižnico 68 00:03:18,370 --> 00:03:20,430 ali ustvarjajo nekaj niz strun, in si 69 00:03:20,430 --> 00:03:22,846 potrebujejo, da bi lahko videli, da to je njihovo pravilno ustvarjanje. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 To je način za to. 72 00:03:25,160 --> 00:03:28,280 >> Torej, če ste jih tiskati v datoteko, vas Lahko jih lažje preučiti, kajne? 73 00:03:28,280 --> 00:03:30,930 Versus poskuša, da se pomaknete skozi ukazni vrstici. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 In potem ena stvar, ki ugotavlja je, da s samo večja 76 00:03:35,820 --> 00:03:40,090 kot strešica, če se pišeš na datoteko, ki je že exists-- 77 00:03:40,090 --> 00:03:44,990 tako, kot če bi tekel to prva Tokrat smo ga na output.text, 78 00:03:44,990 --> 00:03:49,970 in potem bomo imeli drugega programa da je ta natisnjena programa dveh 79 00:03:49,970 --> 00:03:54,250 in naredil več, kot pa output.text, bo prepisalo that-- tako 80 00:03:54,250 --> 00:03:56,715 prepisati, kar je bilo doslej v Ta datoteka za začetek. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Torej, če želite, da pripnemo v datoteko, kot vidimo tukaj, 83 00:04:00,750 --> 00:04:04,779 si naredil dve večji od znakov. 84 00:04:04,779 --> 00:04:05,820 In bo pripet k njej. 85 00:04:05,820 --> 00:04:06,750 To ne bo mogel spremeniti. 86 00:04:06,750 --> 00:04:09,770 Torej, če boste potrebovali za zagon multiple Programi in vrsta hrani 87 00:04:09,770 --> 00:04:13,170 tir, kaj vse so vračajo na vas v datoteko, 88 00:04:13,170 --> 00:04:14,190 to je način, da to storite. 89 00:04:14,190 --> 00:04:17,231 Če vam ni vseeno, kaj je v vaši datoteki in to je dovoljeno, da se prepišejo, 90 00:04:17,231 --> 00:04:19,204 lahko preprosto uporabite eno večja od. 91 00:04:19,204 --> 00:04:20,600 Ali to smiselno za vsakogar? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> OBČINSTVO: Kot pika poševnica zdravo večja kot izhod dot besedila, kot dvakrat, 94 00:04:31,140 --> 00:04:34,030 to bom pokazal samo na izhodu dot besedilo drugega time-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Right. 96 00:04:34,810 --> 00:04:40,450 Tako da bi v bistvu samo v celoti prepisati kaj je bilo na začetku. 97 00:04:40,450 --> 00:04:44,260 Če ta datoteka tukaj output.text že 98 00:04:44,260 --> 00:04:48,230 obstaja, v bistvu karkoli pokličeš da še enkrat z enim in je višja 99 00:04:48,230 --> 00:04:51,920 kot si lahko samo pomislim saj, kot je zamenjala datoteko. 100 00:04:51,920 --> 00:04:54,824 Kot takrat, ko ste za varčevanje a Word dokument in vam prihrani as, 101 00:04:54,824 --> 00:04:57,365 in boste obdržali isto ime, in je it-- popolnoma prepiše 102 00:04:57,365 --> 00:04:58,680 to je isto reč. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Kdo kakršne koli vprašanja o samo prikazovanje v datoteko? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Super. 107 00:05:05,550 --> 00:05:11,440 >> Torej je očitno, če se obrne arrow smer, lahko to storite vhod. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Torej, ko so imeli fantje kot Cezarja ali VISIONEER 110 00:05:19,960 --> 00:05:23,195 in si moral vhodni nečesa, boste imeli argument ukazne vrstice 111 00:05:23,195 --> 00:05:24,960 da dejansko vhod je. 112 00:05:24,960 --> 00:05:27,410 To je še en način za to. 113 00:05:27,410 --> 00:05:30,520 Torej, namesto da bi čakali za ukazno vrstico 114 00:05:30,520 --> 00:05:33,800 kot takrat, ko ste prosili za vaše Sporočilo v cesarju ali VISIONEER, 115 00:05:33,800 --> 00:05:36,490 če ste imeli besedilno datoteko da je bilo vaše sporočilo, 116 00:05:36,490 --> 00:05:38,280 si lahko samo ga vnesite v to. 117 00:05:38,280 --> 00:05:44,930 >> Tako da, če bi bilo to všeč piko poševnica Cezarja 3 manj kot puščica vnos besedila, ki 118 00:05:44,930 --> 00:05:47,240 je vaše sporočilo, da bi bilo v redu. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Ko se vaš program Caesar dejansko prosil za vnos od uporabnika, 121 00:05:54,020 --> 00:05:57,360 bi ga že imeli, ker ki ste jih vnesli v tej datoteki. 122 00:05:57,360 --> 00:05:58,830 To je samo še en način. 123 00:05:58,830 --> 00:06:02,445 Samo hrbtni strani output-- Samo vhod za vaše podatke. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> In potem zadnja je cev. 126 00:06:06,680 --> 00:06:07,780 Tako da to je zelo kul. 127 00:06:07,780 --> 00:06:09,890 Saj vam omogoča, da vzemite moči enega 128 00:06:09,890 --> 00:06:13,695 program in ga dal kot vhod v drug program. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Ne vem, če kdo od vas igral s razvozlati 131 00:06:18,630 --> 00:06:20,590 da CS50 morda vam ga je dal, vendar bi 132 00:06:20,590 --> 00:06:27,380 vam omogočajo, da sprejmejo nekatere vzorca datoteke, ga vnesite v vaš šifriranje, 133 00:06:27,380 --> 00:06:30,350 in nato od tam tip da v svoj dešifriranje 134 00:06:30,350 --> 00:06:32,470 zagotoviti je izkazalo enako. 135 00:06:32,470 --> 00:06:34,050 Torej, to je nekako kot tristezni zanke. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Gre za to. 138 00:06:39,423 --> 00:06:41,785 >> OBČINSTVO: Če program ima več vhodov, 139 00:06:41,785 --> 00:06:47,646 ali obstaja način, da to, kateri vhod povedati uporabiti besedilno datoteko ali izhod za? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: ima več vhodov. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Karkoli vložite input-- ko je prosi za vnos to prvič, da je 143 00:07:00,430 --> 00:07:03,240 predpostavljam, mislim, da je bo cev v celoten spis. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Torej, če imate več vhodov, ste dogaja, da se po cevi v več datotek. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Torej, če ste prosi za sporočila trikrat kodo, 148 00:07:12,390 --> 00:07:15,230 boste dajali v treh različnih datotek. 149 00:07:15,230 --> 00:07:15,980 In postane noro. 150 00:07:15,980 --> 00:07:18,188 In ti ne bi bilo treba skrbeti, da se prav zdaj. 151 00:07:18,188 --> 00:07:19,150 Ampak to je ideja. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Torej, ja, cev je samo izhod enega Program uporablja vložek v drugo. 154 00:07:26,822 --> 00:07:27,665 Vsi dobro tam? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Cool. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 159 00:07:30,932 --> 00:07:32,890 Vam verjetno ne bo narediti preveč z njo. 160 00:07:32,890 --> 00:07:35,670 Vendar morate razumeti, načini, ki jih lahko uporabite. 161 00:07:35,670 --> 00:07:38,910 In obstaja nekaj primerov, ki boste morda želeli, da ga uporabljate. 162 00:07:38,910 --> 00:07:44,590 >> Torej datoteko I / O- Vem, kaj ste saying-- smo se uporabljajo za branje iz 163 00:07:44,590 --> 00:07:50,500 in pisanje na našem zaslonu tam, ki je standardna in standardni ven. 164 00:07:50,500 --> 00:07:54,370 In to je tisto, kar ste vi bili počne že od začetka razreda tukaj. 165 00:07:54,370 --> 00:07:58,220 Lahko pa tudi brati in pisati datotek ki je vse datoteka I / O- tako vložite vložek, 166 00:07:58,220 --> 00:07:59,850 proizvodnja je vse to pomeni. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Torej je to v bistvu pomeni, da lahko shranite svoje podatke zdaj. 169 00:08:04,360 --> 00:08:08,460 >> Ko si ga natisnete na zaslon, je to v bistvu ni več, kajne? 170 00:08:08,460 --> 00:08:12,507 Takoj, ko se bo "Hello svet "in run" Hello world " 171 00:08:12,507 --> 00:08:14,090 Tiska "Zdravo svet" na zaslonu. 172 00:08:14,090 --> 00:08:16,370 Vendar vam ne morem storiti kaj z njo od tam. 173 00:08:16,370 --> 00:08:18,950 Če shranite v besedilu Datoteka, nato pa nenadoma 174 00:08:18,950 --> 00:08:22,789 imate te podatke, da ste dovoljene manipulirati ali ga daste v datoteko, 175 00:08:22,789 --> 00:08:24,080 ali ga v programu kasneje. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Eden od razlogov zakaj mi je to le 178 00:08:29,290 --> 00:08:31,560 kot način za shranjevanje podatkov za kasnejšo uporabo. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Imam nekaj korakov tukaj Samo hoja skozi standardna 181 00:08:37,279 --> 00:08:39,450 I / O. V prvem koraku, vi morali ustvariti sklic 182 00:08:39,450 --> 00:08:43,480 v datoteko z vsemi kape Datoteka zvezda. 183 00:08:43,480 --> 00:08:45,740 Tako da ustvari kazalec na datoteko. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Torej hočeš, da ga odprete. 186 00:08:49,650 --> 00:08:52,940 In pravite, dobesedno, samo datoteka enaka fopen. 187 00:08:52,940 --> 00:08:57,400 In to se dogaja, da se vrnete kazalec na datoteko, ki jo pravkar začela. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Videl sem nekaj vas Fantje na uradnih ur. 190 00:09:01,460 --> 00:09:07,400 >> Toda ena od stvari, je remember-- kazalci 191 00:09:07,400 --> 00:09:10,409 lahko nekateri naslov ali null, kajne? 192 00:09:10,409 --> 00:09:12,700 Če bomo kdaj imeli primer, ko je nekaj, kar se lahko vrne null, 193 00:09:12,700 --> 00:09:14,990 kaj moramo storiti preden smo kdaj ga uporabite? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Moramo preveriti, če je nična ali ne, kajne? 196 00:09:19,000 --> 00:09:23,600 Ker so nekateri od vas lahko imela vprašanje, pri katerem koli objekt 197 00:09:23,600 --> 00:09:26,110 smo se vrnili v zamahu je nična. 198 00:09:26,110 --> 00:09:28,170 Poskušali ste izvesti nekatere funkcije na njem. 199 00:09:28,170 --> 00:09:29,770 In računalnik site očitati. 200 00:09:29,770 --> 00:09:30,725 Kajne? 201 00:09:30,725 --> 00:09:33,640 Stavim, da nekaj vas Morda je imel to težavo. 202 00:09:33,640 --> 00:09:38,890 >> Torej z fopen, bo fopen bodisi vrne kazalec na datoteko, 203 00:09:38,890 --> 00:09:41,200 ali če gre kaj narobe, to se dogaja, da se vrne null. 204 00:09:41,200 --> 00:09:45,980 Torej, morate vedno preveriti da se ni vrnil null 205 00:09:45,980 --> 00:09:47,880 preden boste poskušali storiti ničesar drugega. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 To je kot standardno paradigmo da boste potrebovali tukaj. 208 00:09:51,974 --> 00:09:54,390 Če je kdaj priložnost, da nekaj, kar bi lahko vrne null, 209 00:09:54,390 --> 00:09:56,590 preverite, ali je ne, preden boste nadaljevali. 210 00:09:56,590 --> 00:09:58,911 V nasprotnem primeru boste da bi dobili lep napake na kraju samem. 211 00:09:58,911 --> 00:10:00,410 In nihče ne mara, da se ukvarjajo s temi. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Torej, kot vidimo tukaj, je prvi argument je le pot do datoteke. 214 00:10:06,410 --> 00:10:09,380 Če ta datoteka ne obstaja, to se dogaja, da ustvarite to datoteko. 215 00:10:09,380 --> 00:10:10,713 In to je le, da bo prazno. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 In potem drugi argument je način, ki ga želite. 218 00:10:13,080 --> 00:10:14,610 Ali želimo brati iz te datoteke? 219 00:10:14,610 --> 00:10:15,560 Ali želite napisati od njega? 220 00:10:15,560 --> 00:10:16,476 Ali želite priložiti? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Torej, kaj pravzaprav sem said-- če datoteka ne obstaja 223 00:10:20,670 --> 00:10:23,400 in ga poskušate brati iz to, da se bo vrgel napako. 224 00:10:23,400 --> 00:10:26,890 Če datoteka name-- všeč, če file.text še ne obstaja 225 00:10:26,890 --> 00:10:29,250 in želite pisati za njo, bo ustvaril 226 00:10:29,250 --> 00:10:33,110 prazno datoteko z imenom file.text za vas. 227 00:10:33,110 --> 00:10:36,612 In če želite priložiti, morate narediti isto stvar. 228 00:10:36,612 --> 00:10:38,081 Ali to smiselno? 229 00:10:38,081 --> 00:10:40,580 Če poskušate brati iz datoteka, ki še ne obstaja, 230 00:10:40,580 --> 00:10:41,590 to bo vrgel napako. 231 00:10:41,590 --> 00:10:44,340 V nasprotnem primeru bo ustvaril datoteko za vas to, kar hočeš z njo. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Cool. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Sedaj lahko brati iz datoteke. 236 00:10:48,880 --> 00:10:52,570 In to je le nekako šlo z različnimi funkcijami 237 00:10:52,570 --> 00:10:58,980 da imamo za datoteko I / O. Ta volja potrebno v pset ta teden, 238 00:10:58,980 --> 00:11:00,505 če se prav spomnim. 239 00:11:00,505 --> 00:11:02,880 Ja, to absolutno ne bo potrebno pset ta teden. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Torej fgetc vrne naslednji znak. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets vrne ravno vrstico besedila. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 To se bo vrnil nič do Nova linija, in se bo zlomil. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Torej fread bere nekatere število bajtov in jih postavlja 248 00:11:18,700 --> 00:11:20,700 v array, ki je nekaj, kar bi lahko 249 00:11:20,700 --> 00:11:25,485 želite storiti s ponovnim size-- lahko koristno. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Koliko ljudi je prebralo pset spec, mimogrede? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 OK. 254 00:11:32,261 --> 00:11:32,760 [Neslišno] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: OK. 257 00:11:36,580 --> 00:11:37,530 Vse je v redu. 258 00:11:37,530 --> 00:11:41,940 Definitivno se glasi that-- je zabavno pset. 259 00:11:41,940 --> 00:11:51,320 Dobiš, da obnoviti izbrisano spomin card-- res razburljivo, ko deluje. 260 00:11:51,320 --> 00:11:54,100 Ampak zagotovo, da začne brati. 261 00:11:54,100 --> 00:11:56,280 Pridi govoriti z mano, če vas vprašanja v zvezi z njo. 262 00:11:56,280 --> 00:11:59,290 >> OK, tako kot sem rekel, fread prebere določeno število bajtov. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 To je nekaj poljubnega števila da boš nastaviti. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 In potem fseek le poteze na določenem položaju. 267 00:12:08,260 --> 00:12:11,150 Mogoče vam ni mar O naslednjih 10 bajtov. 268 00:12:11,150 --> 00:12:12,880 Pravkar želite preskočiti naprej. 269 00:12:12,880 --> 00:12:14,030 Vam ni mar za tiste. 270 00:12:14,030 --> 00:12:16,280 Želite prebrati pričetkom ob bajt 11. 271 00:12:16,280 --> 00:12:18,252 fseek vam omogoča, da to storim. 272 00:12:18,252 --> 00:12:20,710 Torej, to vam omogoča, da selektivno o tem, kaj bereš. 273 00:12:20,710 --> 00:12:25,880 Ker fgetc, fgets in fread prebrane iz določenega kraja v datoteki. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Način, da razmišljajo o tem, če je to je naša datoteka, ko ste prvič odprli, 276 00:12:35,090 --> 00:12:41,140 imate ta položaj v datoteki ki se začne na začetku. 277 00:12:41,140 --> 00:12:45,040 Kadarkoli pokličete fgetc, fgetf ali fread, 278 00:12:45,040 --> 00:12:48,875 to se dogaja, da se začne z ta položaj marker. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Recimo, da si želite, da se glasi ta kos pomnilnika tukaj. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Ne moreš kar poklicati. 283 00:12:57,960 --> 00:13:02,430 Moraš iskati tukaj in nato brati od tam 284 00:13:02,430 --> 00:13:06,540 ali bere, dobi, ali getc, odvisno od tega, kaj želite. 285 00:13:06,540 --> 00:13:09,310 Tako iščejo samo vam omogoča, da preskočite dele pomnilnika. 286 00:13:09,310 --> 00:13:11,590 In to je samo Tako lahko preskočite stvari 287 00:13:11,590 --> 00:13:14,012 ne da bi jih branje v svoj buffer. 288 00:13:14,012 --> 00:13:15,470 Ali to smiselno za vsakogar? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Očitno je, da je Veliko vzporedno here-- 291 00:13:24,780 --> 00:13:27,780 naš izhod, vhod ali preusmeritev, ki ste jih brati in pisati. 292 00:13:27,780 --> 00:13:31,800 Torej fputc samo piše znak v datoteko. 293 00:13:31,800 --> 00:13:33,655 fputs piše črto. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf natisne oblikovan izhod. 296 00:13:37,420 --> 00:13:41,190 Torej, če imate zavihke, ali prostor, ali malenkosti. 297 00:13:41,190 --> 00:13:44,180 In potem fwrite piše nekaj niz bajtov v datoteko. 298 00:13:44,180 --> 00:13:48,860 Torej je to enako fwrite in fread so podobna 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs in nato fputc in fgetc-- veliko 300 00:13:57,550 --> 00:14:00,710 od norih, hitro stvari. 301 00:14:00,710 --> 00:14:05,300 >> Samo nekako ohraniti to handy-- boste imeli različne čase 302 00:14:05,300 --> 00:14:08,680 kje pa si samo želim en znak naenkrat. 303 00:14:08,680 --> 00:14:09,890 Morda želite celotno linijo. 304 00:14:09,890 --> 00:14:14,320 Z vašim slovarju pset-- ki je v dveh psets, 305 00:14:14,320 --> 00:14:19,690 Verjamem, da smo vam celoto Slovar v besedilni obliki 306 00:14:19,690 --> 00:14:22,252 ki ima vsako besedo ločena s črto. 307 00:14:22,252 --> 00:14:24,210 Torej, če boste želeli prebrati z eno besedo naenkrat, 308 00:14:24,210 --> 00:14:31,769 Kaj lahko uporabljate, če berete in vsi so se ločili na novih progah, 309 00:14:31,769 --> 00:14:33,310 in si samo želim eno besedo naenkrat? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Publika: Fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Right. 313 00:14:36,748 --> 00:14:39,960 Fgets-- saj da se vrne vse, kar je v eni vrstici. 314 00:14:39,960 --> 00:14:42,750 In če je vsaka beseda, je njegova lastna linija, lahko uporabite fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Cool. 317 00:14:45,010 --> 00:14:47,290 Ali to smisla, vsi? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Ja, bomo dobili zabaven del s kazalci 320 00:14:50,020 --> 00:14:51,728 Zelo kmalu, kjer vas dobili storiti nekaj matematike. 321 00:14:51,728 --> 00:14:52,776 In to bo super. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Zadnja step-- zaprite datoteko. 324 00:14:57,740 --> 00:15:01,090 S tukaj toliko stvari, eden od naših paradigem 325 00:15:01,090 --> 00:15:03,550 je, če se lahko vrne null, preverite null. 326 00:15:03,550 --> 00:15:06,160 Če odprete nekaj, Raje ga zaprete. 327 00:15:06,160 --> 00:15:10,419 OK, da vam ne bo storil, dokler niste storiti, če ste ga zaprli. 328 00:15:10,419 --> 00:15:12,585 Nekako kot da ni več dokler dama maščobe poje. 329 00:15:12,585 --> 00:15:14,130 To je, kot zapiranju datoteke. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Kot tukaj piše, samo ponoviti, vedno 332 00:15:19,190 --> 00:15:21,750 odprite datoteko, preden ste branjem ali zapisovanjem na njej. 333 00:15:21,750 --> 00:15:24,450 In to vedno zapreti, če ste jo odprli. 334 00:15:24,450 --> 00:15:25,460 Vse v redu? 335 00:15:25,460 --> 00:15:25,960 Cool. 336 00:15:25,960 --> 00:15:26,835 >> Torej, tukaj je primer. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Torej tiny-- Ne vem, če vas fantje, lahko vidite, da je zelo dobro. 339 00:15:34,330 --> 00:15:36,805 Če bi le lahko poveča svetlost nekako. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Dovolite mi, da to dejansko storili, če bom lahko. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, fantje, ne more zares vidim, da sploh lahko? 344 00:15:51,470 --> 00:15:52,905 OK, bomo to storili, potem. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Neslišno] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Predvidevam, da je to veliko bolje videti. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Lahko kdo videl kje moj Miška je šla vprašanje? 351 00:17:19,455 --> 00:17:22,837 Ah, tam je is-- kaj se bori! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> OK. 354 00:17:49,520 --> 00:17:53,845 V bistvu, bi vidva imela vrsta ideje o tem, kaj to počne. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 To ni popoln. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Ampak jaz bi raje razloži kot porabijo več časa, da bi jo pravilno oblikovati. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 V bistvu, kot vidite tu, začnemo z odprto datoteko. 361 00:18:07,280 --> 00:18:09,620 In imamo nekaj Datoteka zbirke podatkov, ki smo 362 00:18:09,620 --> 00:18:12,300 odprtine, ki pravi, da naši učenci. 363 00:18:12,300 --> 00:18:14,020 In bomo pisati. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Torej, seveda, vrne null. 366 00:18:17,720 --> 00:18:19,650 Zato moramo preveriti null. 367 00:18:19,650 --> 00:18:22,930 In potem, če to ni null, gremo skozi. 368 00:18:22,930 --> 00:18:25,660 In kot vidite, mi smo zanka tu skozi. 369 00:18:25,660 --> 00:18:26,960 Obstajajo študentov. 370 00:18:26,960 --> 00:18:30,520 Študenti se hash opredeljena kot tri. 371 00:18:30,520 --> 00:18:34,060 In kaj delamo, je smo tiskanje v datoteko, kajne? 372 00:18:34,060 --> 00:18:36,975 Torej, kaj smo se izpisuje na našo datoteko? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> OBČINSTVO: The rezultati da so v matriki? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Ja. 376 00:18:49,680 --> 00:18:50,980 So rezultati, ki so v array-- natančno. 377 00:18:50,980 --> 00:18:53,050 Tako odpiramo to Datoteka zbirke podatkov, ki 378 00:18:53,050 --> 00:18:56,040 Predvidevam, da je neke vrste podatkovne baze razredov. 379 00:18:56,040 --> 00:19:01,100 In smo samo tiskanje rezultati vsakega študenta do te datoteke. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Dobro. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Super. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Vrnimo se to-- 386 00:19:06,950 --> 00:19:08,646 >> OBČINSTVO: Imam hitro vprašanje. 387 00:19:08,646 --> 00:19:11,570 Je printf ni v zanko? 388 00:19:11,570 --> 00:19:12,870 To je samo v if zanki? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Ne, to je v zanko. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Ne vidim mojo miško zelo dobro tukaj. 392 00:19:18,810 --> 00:19:21,359 Tako da sem borijo, da bi format, ki pravilno. 393 00:19:21,359 --> 00:19:22,525 Ta nosilec je treba izginil. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Moralo bi biti tukaj. 396 00:19:25,130 --> 00:19:26,605 To je tisto, kar je v vaši zanko. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Tam. 399 00:20:11,180 --> 00:20:12,160 Zdaj je lepa. 400 00:20:12,160 --> 00:20:16,720 Torej, to je, kako bi bilo be-- razen za ta zadnji nosilec, ki sem zavrnilo. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Ali to smiselno za vsakogar? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Bomo, da se premaknete na na naslednjo stvar then-- 405 00:20:23,750 --> 00:20:26,180 ki, pravzaprav, boš bi morali videti kodo. 406 00:20:26,180 --> 00:20:28,370 Tako da sem le, da bo kopiranje, da več kot zdaj. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 OK. 409 00:20:32,000 --> 00:20:35,110 Torej, jaz bom vam pokazal fantje to kodo. 410 00:20:35,110 --> 00:20:38,240 In želim vam, da poskusite in slika kaj je to moral storiti. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Torej, glede that-- vzeti minuto ali tako. 413 00:20:52,480 --> 00:20:54,440 Poskusite ugotoviti, kaj se dogaja tukaj. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Vse ideje? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Vemo, da imamo vsaj dve argumenti v ukazni vrstici, kajne? 418 00:22:12,470 --> 00:22:16,270 Predvidevam od katerih se bo da [neslišno] o je naš program 419 00:22:16,270 --> 00:22:17,530 in potem je nekaj drugega. 420 00:22:17,530 --> 00:22:19,980 Ker če [neslišno] je manj razen dveh, smo kričati na njih. 421 00:22:19,980 --> 00:22:21,140 Kajne? 422 00:22:21,140 --> 00:22:25,300 In iz uporabe, izgleda, to se dogaja, da je neke vrste datoteke. 423 00:22:25,300 --> 00:22:26,260 Vsi se strinjamo s tem? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Torej, zdaj, kaj je zanka počne? 426 00:22:31,570 --> 00:22:32,570 Kaj gre skozi? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> OBČINSTVO: Vse datoteke. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Točno tako. 430 00:22:37,240 --> 00:22:39,650 To se dogaja skozi vse datoteke, ki smo jih tam vhod. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Torej, za vsako datoteko, to je odpira nekaj niz tam. 433 00:22:46,040 --> 00:22:47,560 To je odpiranje te datoteke. 434 00:22:47,560 --> 00:22:48,060 Kajne? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 In to je branje iz nje. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Seveda, da preveri, ali je nična. 439 00:22:55,540 --> 00:22:57,220 In potem je tiskanje. 440 00:22:57,220 --> 00:23:01,460 Če je nična, to je samo nam poveste da to ni datoteka, ki obstaja. 441 00:23:01,460 --> 00:23:04,290 Saj se spomnite, z preberite naša datoteka mora obstajati. 442 00:23:04,290 --> 00:23:04,810 Kajne? 443 00:23:04,810 --> 00:23:06,870 Z napisati in append, lahko izmaže. 444 00:23:06,870 --> 00:23:08,970 Ampak s prebrano, naša datoteka mora obstajati. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> In potem, če to ne obstaja, kaj počnemo tukaj? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Naj samo začnete tukaj. 449 00:23:15,780 --> 00:23:18,815 Kaj je to do-- to prvi znak. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Kaj počne? 452 00:23:21,790 --> 00:23:24,100 Dobi en znak, kajne? 453 00:23:24,100 --> 00:23:25,400 Torej, kaj to delaš? 454 00:23:25,400 --> 00:23:26,775 To je že prvi znak. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Kdo ve EOF? 457 00:23:30,200 --> 00:23:31,170 >> OBČINSTVO: Konec datoteke? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Konec file-- točno. 459 00:23:32,680 --> 00:23:35,310 Tako se dogaja, da gredo skozi celoten spis, kajne? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 In potem se dogaja, da ga posodobiti dobili vse kasnejše značaj. 462 00:23:40,780 --> 00:23:41,565 Kajne? 463 00:23:41,565 --> 00:23:43,636 In kaj počne? 464 00:23:43,636 --> 00:23:44,760 OBČINSTVO: Prenos ki in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: Putchar odtisi za ohranjevalnik zaslona. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Neslišno] znak. 469 00:23:51,950 --> 00:23:54,300 In potem, ko je [neslišno] to bo zaprite datoteko. 470 00:23:54,300 --> 00:23:57,370 >> OBČINSTVO: Ali se vam ne potrebujete [? drugega? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Ni nujno. 472 00:23:59,005 --> 00:24:01,480 Mislim, da je nekako vpletena v to. 473 00:24:01,480 --> 00:24:06,780 Ker se ta vrne, čeprav, dokler to ne ujamejo to, da ste v redu. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Mislim, da je verjetno dobra vadijo narediti drugje. 476 00:24:10,250 --> 00:24:15,755 Vendar je še vedno ne potrebno posebej 477 00:24:15,755 --> 00:24:17,610 če imate kaj kot donosa, ki 478 00:24:17,610 --> 00:24:20,640 pomeni, da v tem primeru, če je ulov je, vaš program se bo končala 479 00:24:20,640 --> 00:24:21,850 in ga nikoli ne bomo prišli do tega. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 To je bolj za primer, kjer ste ni nujno, da se vračajo nekaj. 482 00:24:29,190 --> 00:24:31,370 Ker če to ni bilo vrača ničesar, 483 00:24:31,370 --> 00:24:34,430 bi to pomenilo, da če bi bilo to res, Preostanek bi to še vedno teče. 484 00:24:34,430 --> 00:24:36,138 In v tem primeru boste bi želeli false. 485 00:24:36,138 --> 00:24:38,240 Če je to vrača, in konec svojega programa, 486 00:24:38,240 --> 00:24:41,960 drugega ni potrebno vse čas, odvisno od konteksta. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, si kakšno vprašanje? 489 00:24:44,375 --> 00:24:46,100 OBČINSTVO: Ja. 490 00:24:46,100 --> 00:24:49,300 Tako da ne fgetc dobili naslednji znak? 491 00:24:49,300 --> 00:24:50,734 Kako povečati lik? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Ja. 493 00:24:51,400 --> 00:24:52,774 Torej fgetc dobi naslednji znak. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Lahko si o njej mislijo kot C ++ v nekem smislu. 496 00:24:56,866 --> 00:24:58,350 >> OBČINSTVO: Torej, kaj je bil EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF je konec datoteke. 498 00:25:00,877 --> 00:25:03,960 To je samo marker, ki vam omogoča, da vedo, da ste na koncu datoteke. 499 00:25:03,960 --> 00:25:06,742 Torej, to se dogaja, da natisnete na vašem standardu ven. 500 00:25:06,742 --> 00:25:08,950 In potem se dogaja, da zaprete datoteke, če je to storjeno. 501 00:25:08,950 --> 00:25:10,700 In potem gremo Naslednja slika, kajne? 502 00:25:10,700 --> 00:25:12,660 Torej na splošno, kaj ta program naredi? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Neslišno] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Ja. 506 00:25:16,900 --> 00:25:18,770 Samo natisne vse, kar obstaja. 507 00:25:18,770 --> 00:25:23,270 Torej, če ste vi kdaj uporablja CAT in nato ime neke file-- 508 00:25:23,270 --> 00:25:26,240 Ne vem, če ima kdo od vas kdaj naredil, da je na vašem terminalu. 509 00:25:26,240 --> 00:25:29,630 Ampak, če boste kdaj uporabiti Ukaz CAT-- C-T-- 510 00:25:29,630 --> 00:25:31,880 in potem karkoli datoteka ste ga there-- 511 00:25:31,880 --> 00:25:37,260 ga natisne na vaš terminala, ki lahko super priročno za nekatere stvari. 512 00:25:37,260 --> 00:25:38,746 Sem ga veliko uporabljajo. 513 00:25:38,746 --> 00:25:40,120 Ali to smiselno za vsakogar? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Cool? 516 00:25:42,100 --> 00:25:46,530 >> OK, tako da vaša naloga now-- bodisi sami ali z ljudmi okoli you-- 517 00:25:46,530 --> 00:25:54,930 je, da samo napisati preprost program da bo samo napisati "Hello, world!" 518 00:25:54,930 --> 00:25:56,255 ven v datoteko. 519 00:25:56,255 --> 00:26:00,215 >> [Neslišno] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Neslišno] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: Mislil sem si naredil Storim, da slabo prejšnji teden? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Nisem si mislil, da je tako hudo. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Vesel sem, da ste vsi tukaj. 527 00:27:03,520 --> 00:27:04,655 To je pravzaprav tisto, kar me veseli. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Sem dekle preprostih užitkov. 530 00:27:10,160 --> 00:27:11,688 Pravkar mi je všeč, ko je moj oddelek obiskuje. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Tako da sem ravno to začelo fantje, tako da bomo lahko kodo skupaj. 533 00:27:18,270 --> 00:27:22,290 Ne maram nikogar dajanje na mesto, če hočeš biti. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> OBČINSTVO: Za kviz, storite moramo napisati program? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Morda boste morali pisati enostavne programe z roko. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Yup. 539 00:27:36,590 --> 00:27:38,510 >> OBČINSTVO: Kviz je naslednji teden, kajne? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: Kviz je naslednjo sredo. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 To pomeni, da je lepa [? CSE?] razvrščanje stranka zatem, ki 543 00:27:43,730 --> 00:27:50,390 pomeni, da boste dobili svoje rezultate nazaj, da night-- ob katerem času? 544 00:27:50,390 --> 00:27:50,890 Kdo ve? 545 00:27:50,890 --> 00:27:51,973 Vendar pa bo, da je noč. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Vse je v redu. 548 00:28:02,855 --> 00:28:04,250 Kako želimo, da začnete to? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Jaz ti bom hint-- začne z tem. 551 00:28:09,630 --> 00:28:11,455 >> OBČINSTVO: Moraš odpreti datoteko. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Ja. 553 00:28:12,250 --> 00:28:14,060 Torej, kaj želite poklicati to? 554 00:28:14,060 --> 00:28:16,150 Ali si želite, da ga imenujejo "file"? 555 00:28:16,150 --> 00:28:17,480 Naj bo enostavno. 556 00:28:17,480 --> 00:28:26,752 Torej, kaj je naša fopen-- izhod preizkus bo? 557 00:28:26,752 --> 00:28:36,130 Call it "Hello". 558 00:28:36,130 --> 00:28:37,810 In kaj je naš način? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Kaj počnemo s to sliko? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> OBČINSTVO: Preberi. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Pisanje. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Pišemo z njo. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lovely. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, tako da imamo zdaj to datoteko. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Kaj moramo storiti? 572 00:28:56,212 --> 00:28:57,420 OBČINSTVO: Preverite, če je nična. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Preverite, če je null-- natančno. 574 00:28:59,820 --> 00:29:01,980 To je tisto, kar sem želel slišati. 575 00:29:01,980 --> 00:29:05,930 Da mora biti samodejna, še posebej, precej od te točke naprej. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Če začnete segfaulting, boste verjetno ni preverite null nekje. 578 00:29:10,950 --> 00:29:12,480 Devetkrat od desetih, ki je bo tvoja napaka. 579 00:29:12,480 --> 00:29:15,400 Torej, če bi lahko samo dobil v navada, vedno preverite, če je nična, 580 00:29:15,400 --> 00:29:18,150 Vaše življenje se dogaja, da lepo in easy-- ali lažje. 581 00:29:18,150 --> 00:29:19,480 >> Zato preverite, če je nična. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Torej, če to ni null, ki je tisto, kar bang enaka 584 00:29:24,820 --> 00:29:26,784 means-- ne null-- je veljavna. 585 00:29:26,784 --> 00:29:27,700 Kaj želimo narediti? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Pravkar smo želeli natisniti do te datoteke, kajne? 588 00:29:31,570 --> 00:29:32,923 Torej, kaj bomo za uporabo? 589 00:29:32,923 --> 00:29:34,092 >> OBČINSTVO: Fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- lepo. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 In fprintf traja dve arguments-- kjer to se dogaja in kaj želimo natisnjeno. 593 00:29:44,000 --> 00:29:45,820 Torej, kaj je prva? 594 00:29:45,820 --> 00:29:46,570 Kadar se to dogaja? 595 00:29:46,570 --> 00:29:47,490 >> OBČINSTVO: Datoteka. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: To se dogaja v datoteko. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 In kaj želimo natisnjeno? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Hello, world!" 601 00:29:58,065 --> 00:29:58,565 Vse je v redu. 602 00:29:58,565 --> 00:30:03,670 Imamo zadnjo thing-- en velik paradigma tukaj. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 OBČINSTVO: Close. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Close. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Tukaj imaš. 608 00:30:10,540 --> 00:30:13,384 >> OBČINSTVO: Je to dogaja če je datoteka null? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Ne, to je, če to ni nič. 610 00:30:15,050 --> 00:30:16,881 OBČINSTVO: Oh, če je not-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Za fopen in nato dva argumenta, ki gredo v notranjosti, 613 00:30:25,410 --> 00:30:27,655 Kaj je prvi argument spet pomeni? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: argument je tako kot ime datoteke 615 00:30:30,392 --> 00:30:31,350 da hočeš iti. 616 00:30:31,350 --> 00:30:36,020 Torej, po tem, ko ta poteka, bi vam imajo neko datoteko z imenom "zdravo" 617 00:30:36,020 --> 00:30:38,320 da je imel "Zdravo, svet" v njem. 618 00:30:38,320 --> 00:30:38,820 To je vse. 619 00:30:38,820 --> 00:30:39,500 Samo ime. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> OBČINSTVO: In ker je to pisanje, dokumentacije ni že obstajajo. 622 00:30:48,650 --> 00:30:49,675 Je to tisto, kar si rekel? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Right. 624 00:30:50,410 --> 00:30:50,910 Točno tako. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Če "Hello", kot datoteka še ne obstaja, to je 627 00:30:55,839 --> 00:30:58,380 dogaja, da ustvarite datoteko z imenom Hello "in napisali, da to za vas. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> OBČINSTVO: Ko govoriš Program bi napisal v datoteko, 630 00:31:03,610 --> 00:31:08,075 zakaj pišeš "file" namesto ime datoteke in fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Ker je v tem primeru imamo da velika FILE-- vse v caps-- zvezda, 632 00:31:13,600 --> 00:31:14,260 datoteko. 633 00:31:14,260 --> 00:31:17,370 Torej, to je kazalec na datoteko da govoriš. 634 00:31:17,370 --> 00:31:19,930 To je način, da smo samo sklicujejo. 635 00:31:19,930 --> 00:31:24,850 Torej, v tem primeru lahko zamislite file-- aha, 636 00:31:24,850 --> 00:31:31,271 lahko uporabimo this-- datoteko tukaj se nanaša na odprtje "Hello" 637 00:31:31,271 --> 00:31:32,145 in najemnin je pisati. 638 00:31:32,145 --> 00:31:34,728 >> OBČINSTVO: Bi lahko dal "Hello" namesto [? od samo?] f datoteke? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Ne, ker "Hello" mora biti odprt in pisalne. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Datoteke tukaj je kot označevalec, ki pravi OK, 642 00:31:45,980 --> 00:31:49,190 imajo to file-- hello-- da gledaš. 643 00:31:49,190 --> 00:31:50,680 To je bila odprta. 644 00:31:50,680 --> 00:31:52,140 In se bomo pisati. 645 00:31:52,140 --> 00:31:55,130 Če ste šele raba "Hello", ki je zapisana v njej. 646 00:31:55,130 --> 00:31:56,846 Tako da se bo znorel. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Mislim, lahko bi ga poimenovali. 649 00:32:00,300 --> 00:32:03,960 Lahko bi naredil datoteko, zvezda, "Hello", enak. 650 00:32:03,960 --> 00:32:07,840 Ampak bistvo je, da vas Potrebujemo datoteka zvezdicami kazalec, da bi na 651 00:32:07,840 --> 00:32:09,281 da bi lahko uporabila te funkcije. 652 00:32:09,281 --> 00:32:11,280 OBČINSTVO: Ali bi lahko datoteka, zvezda, datoteka, "Hello" 653 00:32:11,280 --> 00:32:13,113 ali pa boste morali vložiti datoteke zvezdo, datoteko z njim? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Lahko bi storiti datoteke, zvezda, "Hello". 655 00:32:16,330 --> 00:32:19,790 To lahko spremenite v ne glede na ime, ki ga želite. 656 00:32:19,790 --> 00:32:22,114 To je popolnoma arbitrarna kaj je to ime. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Lahko jo poimenujete ničesar. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Je ime, ki plujejo špageti, če si hotel. 661 00:32:28,020 --> 00:32:29,690 >> OBČINSTVO: Kaj je "w", v narekovajih, za? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "w" je le način. 663 00:32:31,540 --> 00:32:33,170 Tako da smo pisno to datoteko. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Vsi dobro? 666 00:32:35,320 --> 00:32:36,227 Jasno? 667 00:32:36,227 --> 00:32:36,981 Da. 668 00:32:36,981 --> 00:32:40,365 >> OBČINSTVO: Torej, ko piše to datoteko, kje smo potem ugotovili, da datoteko? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: To bo v enaki imenik, ki ste trenutno. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Če ste v pset tri in zaženete to v vašem pset 672 00:32:48,880 --> 00:32:52,600 tri mape se bo Ta datoteka se imenuje "Hello". 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Vsi dobro? 675 00:32:53,757 --> 00:32:55,840 Počutim se, kot da ste vse ga dobili, kar je super. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 OK. 678 00:32:57,790 --> 00:33:05,960 Torej nazaj k mojim slide show-- Obožujem, ko stvari delujejo. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Ali vidva razburjen? 680 00:33:08,674 --> 00:33:09,465 Kazalci so super. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Vzamejo malo zaviti svojo glavo okoli. 683 00:33:13,580 --> 00:33:15,288 To je moje drugo leto poučevanje kazalci. 684 00:33:15,288 --> 00:33:16,850 In mislim, da sem končno dobil. 685 00:33:16,850 --> 00:33:18,650 Torej, če ste se borijo, da je v redu. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Kot sem že prej povedal, risanje slike veliko pomaga s stvarmi v CS, 688 00:33:24,070 --> 00:33:27,400 toliko, kot mislim, da ljudje misliti, oh, smo na računalniku. 689 00:33:27,400 --> 00:33:28,399 Mi bi samo kodo. 690 00:33:28,399 --> 00:33:30,190 No-- risanje slike bo res pomagal. 691 00:33:30,190 --> 00:33:32,773 In res vam, da izkoristiti v svoj kindergartner strani 692 00:33:32,773 --> 00:33:35,010 in bi iz barvice ali označevalci in žrebanje. 693 00:33:35,010 --> 00:33:36,110 Saj vam bo pomagal. 694 00:33:36,110 --> 00:33:39,380 In če me vidiš na uradnih ur, I bo prenašanje skladovnic papirja 695 00:33:39,380 --> 00:33:41,580 z boksi risanje stvari. 696 00:33:41,580 --> 00:33:44,370 >> Torej, še posebej z pointers-- pripravi slike. 697 00:33:44,370 --> 00:33:47,970 In prepričan sem, da smo se dejansko dogaja, da je risba nekaj slik tudi tukaj. 698 00:33:47,970 --> 00:33:51,270 >> Torej, vi vsi dobili za prikaz Binky, to kul claymation stvar. 699 00:33:51,270 --> 00:33:54,720 In mislimo, da je to res smešno, ko je eksplodirala v kup kosov. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 To je nekaj stripov olajšave za razred. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [neslišno] to veliko sposobnost da lahko za nadzor pomnilnika. 704 00:34:05,900 --> 00:34:10,090 In to je ena od stvari, ki so zares jo naredi tako močan jezik. 705 00:34:10,090 --> 00:34:13,469 Vendar z veliko močjo pride velika odgovornost. 706 00:34:13,469 --> 00:34:16,230 In nore stvari, se lahko zgodi, če niste previdni. 707 00:34:16,230 --> 00:34:18,560 Torej, ko boste uporabljali kazalci, ki jih želite 708 00:34:18,560 --> 00:34:21,440 prepričajte, da ste resnično razumejo točno to, kar delaš. 709 00:34:21,440 --> 00:34:25,530 Upajmo, da naslednjič malo Čas bo pomagal resnično razumejo 710 00:34:25,530 --> 00:34:27,850 nasvetov, kako jih uporabljati, in kako z njimi manipulirajo. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Torej memory-- Prepričan sem, da smo jih Pred videl ta diagram. 713 00:34:33,460 --> 00:34:38,540 Torej je to samo preprost diagram kako bi lahko stvari shranijo spomin. 714 00:34:38,540 --> 00:34:43,145 Torej ste v bistvu imajo ti ogromne nizi ene bajtov 715 00:34:43,145 --> 00:34:46,000 kaj imamo here-- rahlo korakih po eno vsakič. 716 00:34:46,000 --> 00:34:51,810 To je v hex [neslišno] tako osem-bitni bloki. 717 00:34:51,810 --> 00:34:55,510 In je vsak blok povezana z nekaj šestnajstiškem naslov. 718 00:34:55,510 --> 00:34:58,750 Torej, če ste že kdaj videli 0x, ki je pravkar notating 719 00:34:58,750 --> 00:35:00,670 da je v šestnajstiškem naslov. 720 00:35:00,670 --> 00:35:03,970 Lahko prevzame to pomeni, nekatere naslov v pomnilniku. 721 00:35:03,970 --> 00:35:06,935 Govorimo o pomnilniških naslovov ko boste videli šestnajstiški. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Imamo Ints so spremenljivke, boje so spremenljivke, ki shranjujejo. 724 00:35:14,630 --> 00:35:16,260 Torej Ints store ints. 725 00:35:16,260 --> 00:35:17,430 Plava trgovina plava. 726 00:35:17,430 --> 00:35:20,260 Torej imamo tudi kazalci da store naslovi pomnilnika. 727 00:35:20,260 --> 00:35:21,660 To je neke vrste preslikavo. 728 00:35:21,660 --> 00:35:24,240 Kazalci so izključno za pomnilniške naslove. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Tako, da je kot vaš tip tam. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Vaš aparat je 32-bitna, kar pomeni, da je tvoj spomin naslov štiri bajte. 733 00:35:34,470 --> 00:35:37,830 Zato je vsak kazalec, da imate se tudi dogaja, da štiri bajte. 734 00:35:37,830 --> 00:35:43,200 Ali pa, če je štiri bajte, Pomnilnik je štiri bajte. 735 00:35:43,200 --> 00:35:44,790 Kazalci trgovina spomin. 736 00:35:44,790 --> 00:35:46,430 Torej, oni so štiri bajte. 737 00:35:46,430 --> 00:35:48,460 Cool-- samo želijo okrepiti to. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Moral bi dobiti ta strip zdaj. 740 00:35:52,220 --> 00:35:55,040 Ne vem, koliko vas so xkcd fans, toda ljubim xkcd. 741 00:35:55,040 --> 00:35:55,780 To je super. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Vse je v redu. 744 00:35:57,790 --> 00:36:01,640 Tako ustvarja pointers-- kot sem rekel, to je precej, tako kot karkoli drugega. 745 00:36:01,640 --> 00:36:02,930 Imate vrsto. 746 00:36:02,930 --> 00:36:04,050 Imaš ime. 747 00:36:04,050 --> 00:36:04,810 Kajne? 748 00:36:04,810 --> 00:36:10,410 To je tisto, kar imamo tam. [? Hex?] Zvezdicami pomeni, da je kazalec, 749 00:36:10,410 --> 00:36:12,250 in potem karkoli želite poklicati ga. 750 00:36:12,250 --> 00:36:15,770 Torej predstavlja tip kaj lahko shranite. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Vse v redu? 753 00:36:17,990 --> 00:36:24,350 Na enak način, če delamo ints, vemo, da smo shranjevanje int tam. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 S kazalcem, jo ima naslov pomnilnika. 756 00:36:30,280 --> 00:36:34,240 Ampak kaj to pomeni, je that-- tukaj je, kjer Risba bo prišel prav. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Torej v tem primeru imamo nekateri value-- recimo štiri. 759 00:36:45,980 --> 00:36:49,306 Štiri je na enem naslovu. 760 00:36:49,306 --> 00:36:49,805 OK? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Ta prva tukaj pomeni da je kazalec 2x. 763 00:36:56,170 --> 00:36:56,740 Kajne? 764 00:36:56,740 --> 00:36:57,628 To je nekaj kazalec x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x lahko nekaj, karkoli. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Karkoli x is-- pravijo x je štiri. 769 00:37:05,130 --> 00:37:07,280 To se dogaja, da shranite pomnilniški naslov tukaj. 770 00:37:07,280 --> 00:37:12,260 Torej int, zvezda, x-- je to nekateri drugi slot v memory-- 771 00:37:12,260 --> 00:37:13,590 kdo ve, kaj je to. 772 00:37:13,590 --> 00:37:15,430 Ampak to se dogaja, da shranite naslov tukaj. 773 00:37:15,430 --> 00:37:27,040 Torej bi bilo to like-- v tem primeru, glede, 774 00:37:27,040 --> 00:37:32,630 je shranjena na 0x1-- karkoli je shranjena na naslov, ki ga ima naša kazalec, 775 00:37:32,630 --> 00:37:35,280 mora ujemati z kaj smo imenovani. 776 00:37:35,280 --> 00:37:40,330 Torej na 0x1, v tem primeru, to je x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 To je mogoče le, kdaj int, medtem ko smo s pomočjo tega. 779 00:37:49,340 --> 00:37:52,950 >> Podobno, če imamo drugo 1y, karkoli 780 00:37:52,950 --> 00:37:59,130 naslov je shranjena z je y biti char-- ista stvar z z. 781 00:37:59,130 --> 00:38:05,840 Na enak način, kadarkoli vas poskusiti in narediti intx enak 0,4, 782 00:38:05,840 --> 00:38:09,275 to se dogaja kričati na vas in se kot ne, si rekel, da si je želel int. 783 00:38:09,275 --> 00:38:10,525 To naj bi int. 784 00:38:10,525 --> 00:38:11,900 Stop trudijo, da bi to float. 785 00:38:11,900 --> 00:38:14,150 >> Torej stvari, to, kar hočejo biti. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Naj stvari so. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Tako velika stvar, ki je le ne glede na vrsto kazalca 790 00:38:23,450 --> 00:38:26,101 je, da je le stvar, ki jo lahko tam shranite. 791 00:38:26,101 --> 00:38:26,600 OK? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 V praksi, kot pri prejšnji teden, vse 794 00:38:31,160 --> 00:38:32,817 Zdi se res nekako abstraktna. 795 00:38:32,817 --> 00:38:34,150 Bomo storili nekaj prakse. 796 00:38:34,150 --> 00:38:36,760 To bi bilo bolj smiselno. 797 00:38:36,760 --> 00:38:44,580 >> Torej Reference in dereferencing-- je zelo pomembno, da se ti naravnost. 798 00:38:44,580 --> 00:38:46,630 Jaz še vedno morali osvežiti in nato vsakih zdaj. 799 00:38:46,630 --> 00:38:48,450 In sem kot čakati, katera ne želim? 800 00:38:48,450 --> 00:38:56,080 Tako da bo znak pove dejansko dajejo si reference ali naslov. 801 00:38:56,080 --> 00:39:00,100 Tako se vrne naslov v Spomin, ki je shranjena spremenljivka. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Tako se dogaja, da se dejansko vrne na vas šestnajstiški, medtem ko ga Dereferenciranje 804 00:39:07,020 --> 00:39:10,641 se dejansko dogaja, da vam Podatki, ki so tam shranjeni. 805 00:39:10,641 --> 00:39:11,140 OK? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Torej, gremo pogledati na primer zelo hitro, ali dejansko up zraven. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> OK. 810 00:39:19,150 --> 00:39:21,790 Zato moramo res misliš natančno o tem. 811 00:39:21,790 --> 00:39:23,860 Torej, tukaj imamo nekaj celo število x. 812 00:39:23,860 --> 00:39:26,485 Bom poskusila pripraviti to ven najboljših močeh. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Torej bomo imeli to režo x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 In to je shranjevanje pet. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Njen naslov je 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Cool? 821 00:39:43,160 --> 00:39:44,100 Vse dobro. 822 00:39:44,100 --> 00:39:45,470 >> Torej, zdaj imamo ta kazalec. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Bilo je tukaj. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 In znak pove nam daje naslov nečesa. 827 00:39:57,560 --> 00:40:00,780 Torej, v tem primeru, da je naslov x. 828 00:40:00,780 --> 00:40:01,875 Kakšen je naslov x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- in to kazalec na 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Cool? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Torej si lahko misliš o tem kazalec, 04, samo poudarja tukaj. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 In oni so imenovani kazalci saj, kot smo dobili več v to, 837 00:40:25,740 --> 00:40:28,450 boste videli kaže na stvari. 838 00:40:28,450 --> 00:40:31,470 In en blok kaže na drugo blok bo veliko bolj smiselno. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Torej, tukaj sta dva. 841 00:40:33,890 --> 00:40:38,230 In potem imamo nekaj izvod, ki je what-- 0x0C. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 In to se dogaja, dereference naši kazalcem. 844 00:40:43,420 --> 00:40:46,790 >> Torej, kaj je rekel je, OK, tukaj je naš kazalec. 845 00:40:46,790 --> 00:40:53,090 Vrednost, ki jo hrani je 0x04, In kaj to je rekel je, pojdite na ta naslov 846 00:40:53,090 --> 00:40:54,300 in mi povej, kaj je v njej. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Tako da je dejansko kaj je to puščica počne. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Lahko pomislite na to kot vaš zvezda. 851 00:41:01,280 --> 00:41:05,410 Torej OK, ko bomo zvezdo, to pomeni slediti. 852 00:41:05,410 --> 00:41:06,810 Pojdi na ta naslov. 853 00:41:06,810 --> 00:41:11,430 In to je v bistvu samo po Ta puščica na ta kos pomnilnika. 854 00:41:11,430 --> 00:41:15,380 In nam dal vedeti, kaj je v njem, kar je 5. 855 00:41:15,380 --> 00:41:18,840 Prav zato naša kopija je enaka 5. 856 00:41:18,840 --> 00:41:20,120 Ali to smiselno? 857 00:41:20,120 --> 00:41:22,769 Ali kdo me potrebujejo, da gredo skozi da še enkrat, ali bolj počasi? 858 00:41:22,769 --> 00:41:24,560 Hočeš, da grem skozi to še enkrat? 859 00:41:24,560 --> 00:41:25,060 OK. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Bomo ponovno izvlečete. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Ko smo začeli, smo se vsi strinjamo, imamo nekateri kos pomnilnika, ki je spremenljiva 864 00:41:37,205 --> 00:41:40,890 x da smo postavili enaka 5. 865 00:41:40,890 --> 00:41:42,910 Ne nadzorujemo kadar je v pomnilniku. 866 00:41:42,910 --> 00:41:45,520 Torej, na tem mestu je samo samovoljno določeni. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Je dobro? 869 00:41:48,731 --> 00:41:49,230 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Potem smo inicializirati kazalec na int. 872 00:41:53,330 --> 00:41:56,900 To je, zakaj je dovoljeno, da kaže na x, ker imamo int tukaj. 873 00:41:56,900 --> 00:42:00,840 Imamo še en kos spomin, ker je ta kazalec 874 00:42:00,840 --> 00:42:03,485 je spremenljiva tako kot karkoli drugega. 875 00:42:03,485 --> 00:42:06,615 To je arbitrarno dodeljena nekaj prostora v pomnilniku. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 In kaj se shranjuje je naslov x. 878 00:42:10,830 --> 00:42:13,200 Znak pove pomeni naslov x. 879 00:42:13,200 --> 00:42:14,575 Torej, kaj je naslov x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> OBČINSTVO: To je zero-- 882 00:42:20,614 --> 00:42:21,280 SPEAKER 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Torej then-- zadnja. 885 00:42:25,940 --> 00:42:30,650 Spet smo imeli nekaj copy-- samo še ena spremenljivka. 886 00:42:30,650 --> 00:42:32,520 Torej, kaj je dodeliti nekaj samovoljno mesto. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 In smo dereference našega kazalca. 889 00:42:38,080 --> 00:42:42,490 Zvezda pomeni iti naslov shranjen v moji kazalcem. 890 00:42:42,490 --> 00:42:44,480 Povej mi, kaj je tam. 891 00:42:44,480 --> 00:42:47,290 Torej naslov shranjen v našem kazalec je 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Torej, gremo na ta naslov. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 To se kaže na ta naslov. 896 00:42:54,590 --> 00:42:57,481 Kaj je v tej spominski blok? 897 00:42:57,481 --> 00:42:57,980 To je pet. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Torej, to je tisto, kar moramo določiti našo kopijo. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Vsi dobro? 902 00:43:04,860 --> 00:43:05,360 Cool. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- slik. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Torej sledenje vrednosti here-- sem bodo pustili, da mislita o tem. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Lahko potegnemo še eno sliko. 909 00:43:27,750 --> 00:43:31,260 Ampak želim, da poskusite in razlog skozi to sami za minuto. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Saj ni dal nam na primer naslov, 912 00:44:04,149 --> 00:44:06,940 Jaz sem le, da bo naredil 'znak x-- ki naj bi ga peljem domov. 913 00:44:06,940 --> 00:44:07,950 Znak pove pomeni naslov. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Torej, v prvi, vsakogar iti s prvo vrstico. 916 00:44:12,360 --> 00:44:15,690 Nekateri x set je five-- nekaj naključno reža v pomnilniku. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int zvezda kazalec je enaka na naslov x, kajne? 919 00:44:23,200 --> 00:44:28,180 Int zvezda pointer ustvarja ta blok, poziva, da kazalec, 920 00:44:28,180 --> 00:44:30,650 in ga dodeli naslovu x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Jaz sem grozno na ampersands. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Kaj zdaj delamo, je rečemo OK, dereference našega kazalca. 925 00:44:40,550 --> 00:44:42,760 Torej gremo OK, kaj je v našem kazalcem? 926 00:44:42,760 --> 00:44:44,820 To je znak pove x. 927 00:44:44,820 --> 00:44:49,400 Pojdi na znak pove x in ga prerazporedil. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Torej, zdaj, znak pove x se bo 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Torej v bistvu, ko ste Dereferenciranje, greš OK. 932 00:45:05,174 --> 00:45:07,090 Boš risba slike, kot je ta. 933 00:45:07,090 --> 00:45:09,423 Boš risba puščice več, kje je. 934 00:45:09,423 --> 00:45:16,030 Torej, pojdite na to mesto v pomnilniku in bodisi Daj mi, da je vrednost nazaj, ali jo spremeni. 935 00:45:16,030 --> 00:45:21,620 V tem primeru, ker smo na tem vrednost, smo ga dodelile 35. 936 00:45:21,620 --> 00:45:24,700 Medtem ko je v lanskem eno, če ste opazili, smo 937 00:45:24,700 --> 00:45:27,680 so dodeljevanje, kar je bilo tukaj nekaj drugega. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Tako imajo to super mizo. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Saj ni tako slabo. 942 00:45:36,890 --> 00:45:37,970 Vi delate na njem. 943 00:45:37,970 --> 00:45:39,640 Jaz grem, da ga potegnili na krov. 944 00:45:39,640 --> 00:45:41,306 Bomo, da ga izpolnite skupaj, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Torej zgrabi nekaj papirja, zgrabi partner, začnete delati. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Jaz bom dobil večji kos krede. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Saj se dogaja, da je veliko. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 PROFESOR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Začnimo s prvo vrstico. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Bomo začeli tam, potem vama morda lahko delo prek nekaj več. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 enak b krat c kaj je? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 To ni trik vprašanje, obljubim. 963 00:48:23,260 --> 00:48:24,440 >> ŠTUDENT: 4 krat 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESOR: 4 krat 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Torej, kaj je b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 ŠTUDENT: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> PROFESOR: In c? 971 00:48:31,043 --> 00:48:31,542 ŠTUDENT: 5. 972 00:48:31,542 --> 00:48:32,083 PROFESOR: 5. 973 00:48:32,083 --> 00:48:35,960 In potem je to le, da bo se znak pove a, b 'in' znak, 974 00:48:35,960 --> 00:48:38,575 znaka & c, kajne? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Ni slabo. 977 00:48:40,596 --> 00:48:42,081 To je dovolj preprost. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Torej naslednjega. 980 00:48:44,300 --> 00:48:48,725 Enaka krat c, v primeru kdo je bil seznanjeni s tem. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Vsakdo pozna s časi enaka? 983 00:48:53,300 --> 00:49:00,105 OK, vse to means-- je to okrajšava za enak krat c. 984 00:49:00,105 --> 00:49:04,840 Lahko to storite tudi z delitvijo, z dodatkom, z odštevanjem. 985 00:49:04,840 --> 00:49:12,130 To lahko storite enaka ali plus enaka c pomeni enako plus c, minus enako 986 00:49:12,130 --> 00:49:15,190 c bi bila enaka minus c. 987 00:49:15,190 --> 00:49:16,690 To je samo skladenjska sladkor. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Torej, v tem primeru, je enako krat c bi nam kaj dal? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Again, ni trik vprašanje. 992 00:49:28,186 --> 00:49:28,965 >> ŠTUDENT: 100. 993 00:49:28,965 --> 00:49:29,300 >> PROFESOR: 100. 994 00:49:29,300 --> 00:49:30,383 Ali še kaj spremeniti? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 No. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Mogoče bom končno dobil boljši pri mojih ampersands. 999 00:49:39,850 --> 00:49:42,047 >> ŠTUDENT: OK, žal mi je, kako si dobil 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Torej je enako krat c, tako da časi c. 1002 00:49:46,594 --> 00:49:48,510 ŠTUDENT: Oh, ki ga uporabljate za previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESOR: Da. 1004 00:49:49,135 --> 00:49:51,450 Torej, to so naše zadnje vrednosti. 1005 00:49:51,450 --> 00:49:53,990 Gre za tisto, kar bi morali biti uporabljajo kot gremo dol, v redu. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Torej, b, je edina stvar, ki spreminja, kajne? 1008 00:50:01,520 --> 00:50:02,910 Torej, kaj je izpolniti vse ostalo. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Kaj je b bo? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Biti ali ne biti. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Torej, kaj to delaš? 1015 00:50:20,240 --> 00:50:21,605 Kaj je zvezda letno delaš? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> ŠTUDENT: Koda za lokacijo na leto. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> ŠTUDENT: No, ne čisto. 1020 00:50:27,480 --> 00:50:29,470 Torej je to sklicevanje d. 1021 00:50:29,470 --> 00:50:31,580 >> ŠTUDENT: Torej b izroči vrednost letno. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESOR: Ja, tako je letno naslov, kajne? 1023 00:50:37,340 --> 00:50:42,430 Torej, to je rekel, tja, kjer je shranjujejo in ji te vrednosti. 1024 00:50:42,430 --> 00:50:43,884 Torej, kaj je b? 1025 00:50:43,884 --> 00:50:44,425 ŠTUDENT: 100. 1026 00:50:44,425 --> 00:50:46,534 PROFESOR: 100. 1027 00:50:46,534 --> 00:50:47,450 Popolna. 1028 00:50:47,450 --> 00:50:49,879 OK, tako da pc je, kaj se spreminja. 1029 00:50:49,879 --> 00:50:51,170 Vse ostalo ostane enako. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Kaj je pc bo? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Enostavna naloga. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc je enaka letno, in kaj je letno? 1036 00:51:05,990 --> 00:51:07,049 >> ŠTUDENT: 'znak. 1037 00:51:07,049 --> 00:51:07,840 PROFESOR: Popolna. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Zdaj smo dobili zanimivo. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, kaj je prekinil tole dol. 1042 00:51:15,230 --> 00:51:21,110 Prvič, kaj je b-krat c, ker je to enostavno del tega enega, kajne? 1043 00:51:21,110 --> 00:51:22,360 Krat B c is-- 1044 00:51:22,360 --> 00:51:23,320 >> ŠTUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESOR: Ja, tako Kaj je to ena izvaja, 1046 00:51:28,880 --> 00:51:33,705 Če je zvezdicami pb, kaj se je spremenilo? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> ŠTUDENT: Kaj je v the-- 1049 00:51:37,242 --> 00:51:38,200 Profesor: Kaj je v B? 1050 00:51:38,200 --> 00:51:41,340 ŠTUDENT: Kaj je v prostoru da pb kaľe. 1051 00:51:41,340 --> 00:51:43,406 PROFESOR: In pb je obrnjen to-- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESOR: samo B. Torej stvar menjava je b, kajne. 1054 00:51:46,740 --> 00:51:50,800 Torej b časi c, 500. 1055 00:51:50,800 --> 00:51:52,367 Torej, to je tisto, kar se spreminja zdaj. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Cool. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lovely. 1060 00:52:00,840 --> 00:52:01,905 Vi počnete super. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Vse je v redu, lomljenje to eno navzdol. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C se spreminja, kajne? 1065 00:52:09,630 --> 00:52:11,530 Tako bomo lahko izpolnite vse ostalo. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Poglejmo. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 OK. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Vemo, da c se bo produkt dveh števil, kajne? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Kaj dveh številk, čeprav? 1074 00:52:27,980 --> 00:52:28,970 >> ŠTUDENT: in c? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESOR: Torej je Pravica za prvega. 1076 00:52:31,930 --> 00:52:34,385 Tako da smo d navajanje P, kajne? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P a ne kaže, da bomo vedeli, da ta se bo 100-krat, kaj? 1079 00:52:42,870 --> 00:52:46,232 Times, kaj počne pc točko? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Izpostavlja. 1082 00:52:48,740 --> 00:52:55,038 Torej 100 krat 100 je 10.000. 1083 00:52:55,038 --> 00:52:56,170 Ali je to smiselno? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Cool. 1086 00:52:58,200 --> 00:53:00,500 Home odsek, fantje, zadnja vrstica. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Kaj se je spremenilo tukaj? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> STUDENT: A. 1091 00:53:06,935 --> 00:53:09,435 PROFESOR: A. Popoln, tako vse ostalo lahko ostane enaka. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 1094 00:53:16,710 --> 00:53:17,970 In kaj je? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Torej, to je čas, kaj? 1097 00:53:26,060 --> 00:53:27,120 To je zvezda pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Torej zvezda pb pomeni tukaj pb, pb točk, da b. 1100 00:53:34,490 --> 00:53:35,370 >> ŠTUDENT: 500. 1101 00:53:35,370 --> 00:53:36,230 >> PROFESOR: 500. 1102 00:53:36,230 --> 00:53:39,236 Torej imamo 500-krat 100. 1103 00:53:39,236 --> 00:53:41,758 To je 50.000. 1104 00:53:41,758 --> 00:53:43,216 Uh! 1105 00:53:43,216 --> 00:53:45,646 Poglej. 1106 00:53:45,646 --> 00:53:47,982 >> ŠTUDENT: Zakaj imamo & c za last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESOR: Žal mi je. 1108 00:53:48,690 --> 00:53:50,080 ŠTUDENT: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESOR: Moja napaka. 1110 00:53:51,600 --> 00:53:52,890 Veliko pisanja. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Vsi dobro? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Ni slabo, kajne? 1115 00:53:56,660 --> 00:53:58,490 Samo traja malo medtem ko je za delo prek. 1116 00:53:58,490 --> 00:54:01,080 Če ga razčleniti, razumeti, kaj vsak del 1117 00:54:01,080 --> 00:54:03,197 sklicuje to-- kot z vsem, kar je to, 1118 00:54:03,197 --> 00:54:05,780 yes-- ga razčleniti na malo Težave in nato rekombinacije, 1119 00:54:05,780 --> 00:54:07,345 in lahko naredite nekaj super stvari. 1120 00:54:07,345 --> 00:54:08,970 Tam so odgovori, vendar pa smo to. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Pointer aritmetično. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Moje roke so vsi kredasto. 1126 00:54:15,510 --> 00:54:17,970 Tako da dodate ali odvzamete int prilagodi kazalec 1127 00:54:17,970 --> 00:54:21,890 z velikostjo tipa kazalca. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Spominjam se, kako vsak tip ima drugačno velikost? 1130 00:54:28,390 --> 00:54:34,890 Tako kot dvojna ali dolgo časa je osem in int je štiri, ampak znak je ena. 1131 00:54:34,890 --> 00:54:38,360 >> Torej, kaj želite storiti is-- eno stvar, da se spomnimo 1132 00:54:38,360 --> 00:54:44,080 je samo, da koliko vaš pointer vrednost dejansko spreminja 1133 00:54:44,080 --> 00:54:46,550 bo odvisna tip kazalca je. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Vsakdo dobro s tem? 1136 00:54:51,820 --> 00:54:52,760 Morem izbrisati? 1137 00:54:52,760 --> 00:54:53,440 Mi smo dobri? 1138 00:54:53,440 --> 00:54:53,940 Super. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Torej, če imamo nekaj pointer that-- to se bo be-- sem 1141 00:55:07,501 --> 00:55:08,834 dogaja, da je int kazalec. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 V njej so zbrani to. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Če bi rekli, kazalec plus ena, kar se dogaja, da storijo 1146 00:55:20,170 --> 00:55:23,420 se dogaja, da posodobite je po velikosti notr 1147 00:55:23,420 --> 00:55:25,950 ker je to tip kazalca je. 1148 00:55:25,950 --> 00:55:28,260 >> S C, je vse zelo stroga in urejeno. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Int kazalec se bo posodobitev, ki jih Količina prostora int bi potrebovali. 1151 00:55:35,260 --> 00:55:36,260 Int je štiri bajte. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Torej, kaj bi to postala? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Ste pravkar dodali štiri na to. 1156 00:55:44,390 --> 00:55:50,040 Sedaj bi vaš kazalec be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Torej, če je bil znak in smo naredili kazalec plus ena, kaj bi to bilo zdaj? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Če started-- pretvarja nahajamo started-- zdaj je 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Poglejmo zdaj pravijo, da je to char kazalec, in smo jo dodali. 1163 00:56:10,850 --> 00:56:11,850 Kaj bi se spremenilo, da? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Koliko bajtov je char? 1166 00:56:16,030 --> 00:56:16,680 >> OBČINSTVO: One. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: One. 1168 00:56:17,304 --> 00:56:18,309 OBČINSTVO: Torej 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Torej bi bilo devet. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Torej samo nekaj, da se spomnimo. 1172 00:56:23,820 --> 00:56:28,340 Samo, ko ste dodali eno, to ni dodajanjem enega razen če je to znak. 1173 00:56:28,340 --> 00:56:34,190 To je dodal, koliko bajti vrsto, da gre, 1174 00:56:34,190 --> 00:56:36,960 ki je, zakaj smo ta enačba tukaj. 1175 00:56:36,960 --> 00:56:40,190 Torej, to je int krat velikost tipa kazalca. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Torej imamo primer tukaj. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y je bila dodeljena ta vrednost, 0x4, ko sva y plus enaka ena. 1180 00:56:54,430 --> 00:56:56,830 Kaj je v tem, kaj je vx, ne spremeni. 1181 00:56:56,830 --> 00:56:58,610 Kaj se je spremenilo, kaj je v y. 1182 00:56:58,610 --> 00:57:04,980 Naslov shranjeni v y spremenil štiri ker obstajajo štiri bajte v int 1183 00:57:04,980 --> 00:57:06,097 in to je int kazalec. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Vse je v redu. 1186 00:57:07,790 --> 00:57:09,123 Torej, zdaj imamo še eno vajo. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Torej, vprašanje je, kaj bo natisnil. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Vse ideje? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> OBČINSTVO: število znaki v srečno mačko? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Točno tako. 1194 00:57:44,490 --> 00:57:45,531 Tako radi s svojo vrvico. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Ali vsakdo dobil? 1197 00:57:48,260 --> 00:57:49,509 Ali želimo, da sprehod skozi to? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Ja, OK. 1200 00:57:52,010 --> 00:57:57,385 Torej, kaj imamo here-- I kot je ta toliko bolj. 1201 00:57:57,385 --> 00:57:59,340 Nimam za [Neslišno] smešno. 1202 00:57:59,340 --> 00:58:01,690 >> Torej imamo niz tukaj, srečen mačka. 1203 00:58:01,690 --> 00:58:02,950 Lovely. 1204 00:58:02,950 --> 00:58:05,080 Imamo nekaj števec, ki smo sledenja. 1205 00:58:05,080 --> 00:58:11,430 Torej imamo nekaj char * kazalec da samo je enak Str. 1206 00:58:11,430 --> 00:58:14,320 Kaj to počne je, da je dodeljevanje nekaj kazalec 1207 00:58:14,320 --> 00:58:16,380 na začetku svojega niza. 1208 00:58:16,380 --> 00:58:19,840 Ker sem prepričan, saj ji je bila omenjena v predavanju, 1209 00:58:19,840 --> 00:58:22,290 smo dal fantje to podatkovni tip se imenuje niz. 1210 00:58:22,290 --> 00:58:29,070 >> Ampak res nizi so le Niz of-- kot char *. 1211 00:58:29,070 --> 00:58:32,330 To je kazalec na kup znakov ki ležita v pomnilniku. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Torej je to samo določa enaka katerikoli niz je 1214 00:58:36,280 --> 00:58:38,980 opredeljena kjer Njen prvi znak je. 1215 00:58:38,980 --> 00:58:42,710 Torej, to je le nekaj nastavitev točke enaka začetka niza. 1216 00:58:42,710 --> 00:58:44,130 Vsi dobro tam? 1217 00:58:44,130 --> 00:58:44,960 Cool. 1218 00:58:44,960 --> 00:58:49,840 >> Torej, to je Dereferenciranje našo kazalec. 1219 00:58:49,840 --> 00:58:53,760 Tako da se dejansko dogaja, da nam nekaj vrednosti tukaj, 1220 00:58:53,760 --> 00:58:55,610 v naši niz, ki smo govoriš. 1221 00:58:55,610 --> 00:58:58,342 In mi praviš, dokler to ni null terminator. 1222 00:58:58,342 --> 00:59:00,550 Tako nadaljuj, dokler ne prideš na koncu niza. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Posodobite kazalec po enega. 1225 00:59:04,190 --> 00:59:09,250 Torej r, da bo dejansko posodobi z enim vsakič, ker je to znak, 1226 00:59:09,250 --> 00:59:09,820 char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Tako se dogaja, da gredo skozi. 1229 00:59:12,340 --> 00:59:13,290 To se dogaja, da se posodobi. 1230 00:59:13,290 --> 00:59:16,705 Torej prvič to poteka, to se dogaja, da je tukaj na uro. 1231 00:59:16,705 --> 00:59:17,590 To se dogaja, da se posodobi. 1232 00:59:17,590 --> 00:59:18,185 >> To bo. 1233 00:59:18,185 --> 00:59:21,310 To bo p, y, in tako naprej in tako naprej. 1234 00:59:21,310 --> 00:59:22,300 Bomo posodobiti števec. 1235 00:59:22,300 --> 00:59:26,160 Ko doseže konec je, Samo natisne, kako daleč je to dobila. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Da. 1238 00:59:28,050 --> 00:59:31,475 >> OBČINSTVO: Torej Šteje prostor kot ena, kajne? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 1: Misliš. 1242 00:59:35,222 --> 00:59:36,830 Je to question-- 1243 00:59:36,830 --> 00:59:37,746 >> OBČINSTVO: [neslišno]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Brez skrbi. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 To sem naredil. 1248 00:59:42,736 --> 00:59:47,710 Vse je v redu, tako da ena stvar, ki sem razumeti je, da s paleto, 1249 00:59:47,710 --> 00:59:51,736 lahko pa tudi obravnava kot pointer, ker nizi so le 1250 00:59:51,736 --> 00:59:52,860 stalno lise pomnilnika. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Tako da lahko obravnavajo na enak način. 1253 00:59:56,380 --> 00:59:59,000 Jih lahko manipulirajo s kazalci, preveč. 1254 00:59:59,000 --> 01:00:04,770 Torej, namesto da bi se v tem Primer, ki je analogen stvar 1255 01:00:04,770 --> 01:00:07,490 bo matrika 0 enaka 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Toda na enak način, niz se določi 1258 01:00:15,210 --> 01:00:18,740 z začetkom kadar njen prvi znak je, 1259 01:00:18,740 --> 01:00:22,270 matrika opredeljujejo če je njen prvi element je. 1260 01:00:22,270 --> 01:00:25,120 Saj vemo, da smo zagotovljeno, da ti 1261 01:00:25,120 --> 01:00:27,985 se bodo stalno bloki pomnilnika. 1262 01:00:27,985 --> 01:00:29,360 To je tisto, kar nam omogoča, da to storijo. 1263 01:00:29,360 --> 01:00:31,193 Vemo, da smo stalno bloki pomnilnika. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Torej, v tem primeru, ki ga Dereferenciranje Samo matrika, ki nam pove, 1266 01:00:36,500 --> 01:00:40,800 OK, pojdite na začetek Vaše matrika, ki je tukaj. 1267 01:00:40,800 --> 01:00:42,640 Torej, lahko nastavite, da enaka ena. 1268 01:00:42,640 --> 01:00:48,610 In v tem primeru, ne glede na vaš niz tip je, ko ga posodobiti z enim, 1269 01:00:48,610 --> 01:00:50,830 to je tako kot posodabljanje ga do naslednjega indeksa. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 To lahko storite, da zaradi tebe vedo, kaj je v vaši array. 1272 01:00:56,360 --> 01:00:59,770 Zato ve, koliko posodobite kazalec, ki ga, 1273 01:00:59,770 --> 01:01:02,925 kaj naslov, da ga je tako posodobiti da si ob naslednjem režo. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Torej je to le drugačen način pisanje matrika 0 je enaka 1, 1276 01:01:09,400 --> 01:01:15,114 Niz 1 enaka 2, niz Nosilec 2 je enak 3. 1277 01:01:15,114 --> 01:01:16,780 To je samo še en način, da razmišljajo o tem. 1278 01:01:16,780 --> 01:01:19,600 Ker so stalno bloki v spominu, 1279 01:01:19,600 --> 01:01:21,830 lahko na njih sklicuje, bodisi ga polja notation-- 1280 01:01:21,830 --> 01:01:24,390 ki sem ga osebno easier-- najti, vendar morda 1281 01:01:24,390 --> 01:01:27,347 morate manipulirati strogo pomnilniških naslovov. 1282 01:01:27,347 --> 01:01:28,930 In to je način, kako bi to naredil. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Nekako bolj všeč cool stvar, ki jo lahko naredite 1285 01:01:32,630 --> 01:01:35,213 versus morda ni nekaj, ki ste ga dejansko dogaja izvajati. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Uporabljam ga v 61. 1288 01:01:38,630 --> 01:01:41,710 Vidva ne potrebujejo preveč skrbi. 1289 01:01:41,710 --> 01:01:43,693 Ampak, če vas zanima, bo 61 naslednje leto. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Mi smo na fante zadnjem odseku. 1292 01:01:46,560 --> 01:01:47,510 Vem, da je dolgo. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic Memory Allocation-- tako da vemo, da je eden 1295 01:01:58,880 --> 01:02:01,790 stvari, ko smo se pogovarjali med naš prvi oddelek skupaj, 1296 01:02:01,790 --> 01:02:04,560 smo iskali zamenjave funkcija, kjer je bilo 1297 01:02:04,560 --> 01:02:08,010 izven področja naše glavno funkcijo. 1298 01:02:08,010 --> 01:02:14,370 In smo bili mimo teh vrednot da so bili dejansko kopije. 1299 01:02:14,370 --> 01:02:20,570 >> In ko swap končan izvršitve, je pravkar zapustil kup. 1300 01:02:20,570 --> 01:02:22,830 Ne pozabite, da imamo kup okvir za zamenjavo. 1301 01:02:22,830 --> 01:02:26,070 Zapusti, in tistimi, Vrednosti pusti z njim. 1302 01:02:26,070 --> 01:02:27,050 In so šli. 1303 01:02:27,050 --> 01:02:28,615 Mi ne bi mogel storiti ničesar z njimi in smo bili žalostni 1304 01:02:28,615 --> 01:02:29,989 ker ne moremo zamenjati naše vrednote. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Ampak s C, kot sem že omenil, se vam imajo veliko moč v spomin. 1307 01:02:36,560 --> 01:02:43,310 Torej, kaj lahko naredite, je, da lahko razporediti stvari na kupu tukaj 1308 01:02:43,310 --> 01:02:46,830 da bodo tam ostali, dokler povej jim kako drugače. 1309 01:02:46,830 --> 01:02:48,280 >> Oni so kot dobri otroci. 1310 01:02:48,280 --> 01:02:49,150 Ostanejo tam. 1311 01:02:49,150 --> 01:02:50,270 Ne zapustijo. 1312 01:02:50,270 --> 01:02:52,750 Ti bom ostal tam, dokler niste všeč, OK, lahko greš proč. 1313 01:02:52,750 --> 01:02:55,920 >> Ker so stvari na kupu, who-- oni kot poredne otroke. 1314 01:02:55,920 --> 01:02:59,160 Ti bom samo pobegnil, če želite biti tam in potem oni so odšli. 1315 01:02:59,160 --> 01:03:00,160 Jih ne morete dobiti nazaj. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Torej kup is-- bomo govoriti funkcije malloc in free, ki 1318 01:03:07,187 --> 01:03:08,895 Prepričan sem, da fantje slišali na predavanju. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 In to je v bistvu način da imajo zelo obstojna podatkov. 1321 01:03:14,210 --> 01:03:18,920 Tako da lahko hrani podatke približno tako dolgo, kot želite. 1322 01:03:18,920 --> 01:03:19,546 Mhm. 1323 01:03:19,546 --> 01:03:21,475 >> OBČINSTVO: Lahko določite kup in kup? 1324 01:03:21,475 --> 01:03:24,030 Ali jim je všeč prostore za vlaganje stvari? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Torej, oni so v bistvu just-- oni 1326 01:03:26,630 --> 01:03:29,530 Tako smo se nanašajo samo na spomin. 1327 01:03:29,530 --> 01:03:37,300 Torej je samo kup krajev, kjer spomin je dodeljen dinamično, 1328 01:03:37,300 --> 01:03:40,960 ker sveženj se nanaša več zlagati okvirji 1329 01:03:40,960 --> 01:03:45,950 da so bolj v središču Funkcije, ki so dejansko teče. 1330 01:03:45,950 --> 01:03:47,200 Saj ni res imeti nadzor. 1331 01:03:47,200 --> 01:03:50,690 >> Velika razlika, imate nadzor čez kup, če želite. 1332 01:03:50,690 --> 01:03:52,710 Imate manj nadzora nad dimnika. 1333 01:03:52,710 --> 01:03:55,030 Sveženj odvisna funkcije, ki se izvajajo, 1334 01:03:55,030 --> 01:03:58,320 in red, v katerem so teči in kako se stvari vrne. 1335 01:03:58,320 --> 01:04:01,290 Ker se z kup, kot bomo videli, lahko rečem, 1336 01:04:01,290 --> 01:04:06,639 OK, hočem to vrednost, da bo okoli dokler ti ne rečem drugače. 1337 01:04:06,639 --> 01:04:08,180 Nimate dovoljenja, da se znebite tega. 1338 01:04:08,180 --> 01:04:09,300 Ne smeš ga prepisal. 1339 01:04:09,300 --> 01:04:11,675 Boš, da ostane okoli tako dolgo, kot sem vam povedal. 1340 01:04:11,675 --> 01:04:15,780 Dobiš, da je šef v kup, ker je stack-- Mogoče, če 1341 01:04:15,780 --> 01:04:18,080 kot finagle svojo pot ste lahko šef. 1342 01:04:18,080 --> 01:04:19,340 Vendar ne povsem. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 In to je res samo spomin. 1345 01:04:22,070 --> 01:04:24,260 To je samo različne načine sklicevanja na spomin. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Cool. 1348 01:04:26,400 --> 01:04:28,630 Torej, s tem, kako nadzor vaš spomin. 1349 01:04:28,630 --> 01:04:32,070 To je s funkcije malloc, ki boste dobili za uporabo. 1350 01:04:32,070 --> 01:04:37,100 Torej, to je samo kratek za dodeljevanje pomnilnika. 1351 01:04:37,100 --> 01:04:38,459 To je vse kar je. 1352 01:04:38,459 --> 01:04:41,250 Obstaja kup drugih kul Funkcije, ki imajo Aloc na koncu, 1353 01:04:41,250 --> 01:04:42,750 in stojijo za različne stvari. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Torej, ko boste potrebovali za shranjevanje, ki potrebuje da preživeti svojo trenutno funkcijo tako 1356 01:04:49,050 --> 01:04:51,010 da ko vaš trenutni Funkcija zbeži, 1357 01:04:51,010 --> 01:04:55,774 še vedno imate podatke, ki vas dobil od njega, ki ga želite uporabiti funkcije malloc. 1358 01:04:55,774 --> 01:04:57,190 To bo inicializacijo na kup. 1359 01:04:57,190 --> 01:05:00,140 In kot sem rekel in vodi rekoč, da boste tam pusti 1360 01:05:00,140 --> 01:05:03,050 dokler ga ne povem drugače, ki je pomembna stvar tukaj. 1361 01:05:03,050 --> 01:05:08,450 >> Torej, ena stvar, da obvestilo, in to je običajno zelo pomembno, 1362 01:05:08,450 --> 01:05:13,620 je, da ta sizeof je zelo koristno uporabljati 1363 01:05:13,620 --> 01:05:16,440 ker glede na vrsto stroja ste tekmovanje v teku, 1364 01:05:16,440 --> 01:05:22,470 da imajo lahko različne količine pomnilnika, ki je potreben. 1365 01:05:22,470 --> 01:05:26,870 Tako da boste vedno želeli uporabiti velikost, tako da nisi stroj odvisni, 1366 01:05:26,870 --> 01:05:30,300 tako da bo vaša koda deluje na kateri koli napravi. 1367 01:05:30,300 --> 01:05:32,360 >> In to je samo del pisanje dobre kode. 1368 01:05:32,360 --> 01:05:34,610 Če deluje na enem stroju, vendar ne katerikoli od drugih, 1369 01:05:34,610 --> 01:05:36,440 kako koristno je vaš program? 1370 01:05:36,440 --> 01:05:38,420 Tako da boste vedno želeli prepričajte in uporabo sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> OBČINSTVO: Torej je to všeč velikost 10 cm [neslišno]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: To je velikost 10 ints. 1373 01:05:43,698 --> 01:05:44,197 ja. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Tako da bo velikost ints vrniti koliko naj nekdo int sprejeti. 1376 01:05:48,830 --> 01:05:51,530 Ali velikosti char, kako stane en char vzemi. 1377 01:05:51,530 --> 01:05:54,150 In potem koliko blokov od tega želiš? 1378 01:05:54,150 --> 01:05:57,590 >> Torej v tem primeru želimo nekaj da bomo lahko shranite do 10 ints. 1379 01:05:57,590 --> 01:06:00,240 In bo to delo ne glede na stroja, ki je kul. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Torej, koliko bajtov bo ki dejansko daš? 1382 01:06:04,846 --> 01:06:06,190 Quick math. 1383 01:06:06,190 --> 01:06:06,787 >> OBČINSTVO: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Točno tako. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Torej, še ena velika stvar. 1388 01:06:12,030 --> 01:06:14,840 Kazalec oziroma funkcije malloc lahko vrne null. 1389 01:06:14,840 --> 01:06:17,910 >> Torej še enkrat, vedno preverite, vidim, če se je vrnila null 1390 01:06:17,910 --> 01:06:19,620 Preden poskusite in storiti ničesar s tem. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Če poskusite in sledenja ta kazalec zdaj, 1393 01:06:27,350 --> 01:06:29,720 to je le, da bo segfault ker si šel in skušal 1394 01:06:29,720 --> 01:06:31,730 na dotik null, ko ne bi bilo treba. 1395 01:06:31,730 --> 01:06:34,000 Zato vedno preverite null. 1396 01:06:34,000 --> 01:06:36,075 Še enkrat, vse, kar lahko storite. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Morda se vrne null. 1399 01:06:39,720 --> 01:06:42,740 To bomo vrnili null, če ste bodisi zmanjkalo prostora, ali iz katerega koli razloga 1400 01:06:42,740 --> 01:06:44,350 Potekal je v neko spominsko bug. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Včasih se samo vrne null. 1403 01:06:47,510 --> 01:06:48,990 Tako da boste morali preveriti za to. 1404 01:06:48,990 --> 01:06:51,050 To je vse to slide je rekel. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 In potem, kaj imamo tukaj je poziv k osvoboditi. 1407 01:06:55,240 --> 01:07:00,550 Torej, na enak način, če vas Datoteko odprete tako morate zapreti datoteko, 1408 01:07:00,550 --> 01:07:04,340 če vas funkcije malloc pomnilnika, boste morate sprostiti ta pomnilnik. 1409 01:07:04,340 --> 01:07:06,530 In bodo fantje dobili narediti res kul stvari. 1410 01:07:06,530 --> 01:07:09,624 >> In tam je program, ki ga lahko vodijo do vidim, če ste kdaj pušča spomin. 1411 01:07:09,624 --> 01:07:11,040 Vendar ne želite, da pušča spomin. 1412 01:07:11,040 --> 01:07:11,820 To je zelo slabo. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Samo nered stvari. 1415 01:07:15,020 --> 01:07:20,939 >> To je slabo, da ne samo kot programiranje pametno za učinkovitost oblikovanja. 1416 01:07:20,939 --> 01:07:22,980 Ampak to je tudi samo vrste slabega za vaš računalnik. 1417 01:07:22,980 --> 01:07:26,780 Torej samo proste stvari ko jih funkcije malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Vi vidite simetrije tukaj. 1420 01:07:30,210 --> 01:07:31,180 Super preprosta. 1421 01:07:31,180 --> 01:07:33,010 Samo svobodni in nato ne glede na vaš kazalec, 1422 01:07:33,010 --> 01:07:34,843 ne glede na ime vaš kazalec, in to 1423 01:07:34,843 --> 01:07:36,710 bo poskrbel, da sprostitev za vas. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Cool. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Potem imamo to. 1428 01:07:42,530 --> 01:07:44,770 Tako da smo le, da bo sprehod skozi ta program. 1429 01:07:44,770 --> 01:07:46,560 In potem so naredili vi. 1430 01:07:46,560 --> 01:07:50,240 >> Tako [neslišno] samo glavno. 1431 01:07:50,240 --> 01:07:51,690 Torej imamo nekaj int * kazalec. 1432 01:07:51,690 --> 01:07:53,648 Torej imamo kazalec da se dogaja, da imajo ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 In koliko Ints se dogaja, da imajo? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Samo eno. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Velikost notr. 1439 01:08:01,100 --> 01:08:03,900 >> Preveriti moramo, da vidim, če kazalec je nična, ker je 1440 01:08:03,900 --> 01:08:06,130 je, da smo želeli povedati, ne naredi ničesar. 1441 01:08:06,130 --> 01:08:07,065 To je slabo. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Tako smo natisniti nekaj napak izven pomnilnik, najbolj pogosto vrne 1, 1444 01:08:12,130 --> 01:08:14,260 kot fantje so navajeni. 1445 01:08:14,260 --> 01:08:17,390 >> In potem imamo tu, dereference naši kazalcem. 1446 01:08:17,390 --> 01:08:22,840 Torej to pomeni, da bomo za shranjevanje nekaj, na lokaciji, ki nam. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * kazalec ali funkcije malloc vrne naslov, kjer je razveljavilo to 1449 01:08:30,830 --> 01:08:31,750 pomnilnik za vas. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Torej, to je v bistvu vam daje like-- če vas 1452 01:08:34,800 --> 01:08:38,149 pomislite kup hiš v soseski 1453 01:08:38,149 --> 01:08:40,640 da si želite, da bi vaše pohištvo v, funkcije malloc 1454 01:08:40,640 --> 01:08:43,850 je kot OK, dobiš iti v hišo tri. 1455 01:08:43,850 --> 01:08:45,800 In to ti je daje naslov hiši tri. 1456 01:08:45,800 --> 01:08:48,775 >> Tako da je to sedaj, to Kazalec trgovin naslov, 1457 01:08:48,775 --> 01:08:50,149 shrani naslov vaše hiše. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * PTR pomeni, OK, sem v moji hiši. 1460 01:08:54,640 --> 01:08:55,326 Cool. 1461 01:08:55,326 --> 01:08:56,580 Moram nekaj celo število. 1462 01:08:56,580 --> 01:08:59,229 >> Torej ste prosi za nekoga da vam pohištvo zdaj. 1463 01:08:59,229 --> 01:09:00,430 Tako da boste dobili nekaj int. 1464 01:09:00,430 --> 01:09:05,100 In to ga postavlja v vašem kazalec kjer se kaže, da. 1465 01:09:05,100 --> 01:09:08,670 >> In potem se je le odtisi ven, ki ste ga vnesli, kjerkoli. 1466 01:09:08,670 --> 01:09:11,060 In spet, reference. 1467 01:09:11,060 --> 01:09:15,649 Torej, to je tako, kot si šel v to obravnavati in ste videli, kaj je bilo tam. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Cool? 1470 01:09:17,630 --> 01:09:20,174 >> In potem seveda moramo osvoboditi našo kazalec. 1471 01:09:20,174 --> 01:09:21,590 Ne pozabite, da brez svoje kazalec. 1472 01:09:21,590 --> 01:09:22,933 Ne pozabite, da preverite null. 1473 01:09:22,933 --> 01:09:24,349 Ne pozabite, da brez svoje kazalec. 1474 01:09:24,349 --> 01:09:27,270 Imate dve stvari, ki jih spomnite iz To, ali pa, da si je treba zapomniti. 1475 01:09:27,270 --> 01:09:27,770 Da. 1476 01:09:27,770 --> 01:09:31,590 OBČINSTVO: [neslišno] stuff kot je ta, char * s. 1477 01:09:31,590 --> 01:09:33,760 Kako to, da ne bomo nikoli osvoboditi teh? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> OBČINSTVO: Ali so tisti, kot strune? 1480 01:09:36,450 --> 01:09:39,160 Rekli ste, da so nizi tako kot char * s, kajne? 1481 01:09:39,160 --> 01:09:41,200 Torej, zakaj ne bomo sprostili strune? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: Vi samo brezplačno, če ste mallocing. 1483 01:09:43,204 --> 01:09:44,620 OBČINSTVO: Oh, če ste mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Torej funkcije malloc in prosti sta dve stvari, 1485 01:09:47,399 --> 01:09:49,000 da morate vedno skupaj. 1486 01:09:49,000 --> 01:09:51,630 f odprta, f blizu, dve stvari bi morali imeti skupaj. 1487 01:09:51,630 --> 01:09:54,471 V obeh teh primerih preverite null. 1488 01:09:54,471 --> 01:09:54,971 Da. 1489 01:09:54,971 --> 01:09:57,130 >> OBČINSTVO: Torej prost je le kar nekaj drugega 1490 01:09:57,130 --> 01:09:59,690 da se tam shranijo po Ta program je to uporablja? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: To je samo rekel, OK, sem naredil s tem. 1492 01:10:01,946 --> 01:10:03,320 Vam ni treba, da ostane okoli. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 V nasprotnem primeru bo vaš računalnik Tako kot poskusiti in se tam pusti. 1495 01:10:08,190 --> 01:10:10,910 In potem si can't-- teče v vprašanjih spominske kasneje. 1496 01:10:10,910 --> 01:10:13,660 Vedno ga želite sprostiti, ker pripoveduje računalnik, OK, sem 1497 01:10:13,660 --> 01:10:15,190 storiti s to mesto pomnilnika. 1498 01:10:15,190 --> 01:10:17,190 Ga imate lahko nazaj za mene za kasnejšo uporabo. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Cool? 1501 01:10:20,500 --> 01:10:21,320 Da. 1502 01:10:21,320 --> 01:10:26,950 >> OBČINSTVO: Torej smo uporabili% d pravkar kajti dvakrat je vrnil, 1503 01:10:26,950 --> 01:10:28,330 ali zakaj is-- [neslišno]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> OBČINSTVO: Lahko uporabite% i? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Lahko uporabite% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Morebitne last minute vprašanja? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Pojdi naprej. 1511 01:10:38,985 --> 01:10:40,610 OBČINSTVO: Pravkar sem na hitro vprašanje. 1512 01:10:40,610 --> 01:10:50,200 Torej spremenljivka ptr, that's-- podobno, int * ptr = funkcije malloc, 1513 01:10:50,200 --> 01:10:54,142 ki je samo rekel, da je kaže na mesto v memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Želite [neslišno]? 1515 01:10:55,600 --> 01:10:58,050 OBČINSTVO: --that je Velikost of-- no, to je OK. 1516 01:10:58,050 --> 01:11:01,292 Ampak to samo kaže na mesto v pomnilnika, ki je tako kot štiri bajte. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Right. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Torej funkcije malloc velikosti int pravi, OK, bom šel nogama, 1520 01:11:07,070 --> 01:11:08,780 našli štiri bajte pomnilnika za vas. 1521 01:11:08,780 --> 01:11:10,700 Ko ugotovi, da štiri bajtov pomnilnika je, 1522 01:11:10,700 --> 01:11:14,030 vam omogoča varnostno naslov kje se začne, 1523 01:11:14,030 --> 01:11:16,160 in to je tisto, shranjeni V kazalca ali PTR. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Dobro. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Vidva videti manj zmeden, kot najbolj ljudje, ko govorijo o kazalcem, 1528 01:11:21,700 --> 01:11:23,670 tako se počutim precej dobro zdaj. 1529 01:11:23,670 --> 01:11:24,520 >> Vse je v redu. 1530 01:11:24,520 --> 01:11:27,960 Kot vedno, bi vidva imela vse gotten svoje pset2 ocene, ki jih je sedaj. 1531 01:11:27,960 --> 01:11:32,769 Vem, da je bilo nekaj deformiranega stvari, kjer piše, formule ni veljaven 1532 01:11:32,769 --> 01:11:33,310 ali kaj podobnega. 1533 01:11:33,310 --> 01:11:36,166 Če ste dobili, da je vse tvoje stopnje so veljavne na moji strani. 1534 01:11:36,166 --> 01:11:38,040 Tako da sem lahko vam poslali screenshots vaših razredih. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Samo povej mi, kot tudi, če ste vedeli, manjkajo razrede ali kaj 1537 01:11:41,760 --> 01:11:43,060 ne zdi smiselna. 1538 01:11:43,060 --> 01:11:43,720 Pridi k meni. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Bil sem zelo ponosen na vas fantje že, da ne odnehaj. 1541 01:11:48,830 --> 01:11:50,640 In imajo dober preostanek tedna. 1542 01:11:50,640 --> 01:11:53,440 Prepričan sem, da bomo videli nekaj od vas pri uradnih ur. 1543 01:11:53,440 --> 01:11:55,414