1 00:00:00,000 --> 00:00:02,670 >> [Tema musiek] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> Spreker 1: Hi, almal. 4 00:00:13,365 --> 00:00:14,365 Welkom terug na afdeling. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Pragtige dag out-- wat is die rede waarom, ek is seker nie, daar is net vier van julle hier 7 00:00:18,700 --> 00:00:21,180 en nie ons gewone pak. 8 00:00:21,180 --> 00:00:22,670 Ek was siek hierdie naweek. 9 00:00:22,670 --> 00:00:24,294 So ek het nie Burst vir julle. 10 00:00:24,294 --> 00:00:26,400 En ek kan begin hoes verskriklik in hierdie. 11 00:00:26,400 --> 00:00:27,790 Dus net met my dra. 12 00:00:27,790 --> 00:00:30,624 Ek gaan regtig probeer en kry deur middel van hierdie eerste, 13 00:00:30,624 --> 00:00:32,290 alhoewel, voordat ek 'n hoes aanval. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Maar net maklik op my 'n wees bietjie bit-- dit is al wat ek vra. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> So ons agenda vir today-- net 'n reminder-- jou quiz is volgende week. 18 00:00:44,289 --> 00:00:46,830 Ek het jou die afgelope week so dit sou nie vang jy onkant betrap. 19 00:00:46,830 --> 00:00:47,954 So ek jou weer herinner. 20 00:00:47,954 --> 00:00:49,180 Volgende week se jou quiz. 21 00:00:49,180 --> 00:00:52,730 Aan die einde, volgende week se artikel sal baie meer 22 00:00:52,730 --> 00:00:55,180 of-- Ek sal probeer en werk in 'n oorsig. 23 00:00:55,180 --> 00:00:58,130 So as jy ouens kon help my deur my te stuur 24 00:00:58,130 --> 00:01:00,990 dinge wat jy gemaklik met wat jy is bekommerd oor, 25 00:01:00,990 --> 00:01:03,530 onderwerpe wat jy wil vir om my te dek, dit wil groot wees. 26 00:01:03,530 --> 00:01:05,740 Sodat ek kan probeer en werk hulle in ons afdeling Volgende week 27 00:01:05,740 --> 00:01:11,540 of stuur jou ekstra materiaal of prep dat jy nie elders kan kry. 28 00:01:11,540 --> 00:01:12,150 >> Ja! 29 00:01:12,150 --> 00:01:13,520 Meer mense kom! 30 00:01:13,520 --> 00:01:17,320 Ek het gedink, het ek doen wat sleg laaste week, wat niemand wil om terug te kom? 31 00:01:17,320 --> 00:01:18,065 Ek is bang. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 So het die ander drie dinge dat ons gaan om te gaan 34 00:01:21,100 --> 00:01:24,850 is herlei, lêer I / O, en dan wysers en dinamiese geheue. 35 00:01:24,850 --> 00:01:29,160 Ek is seker dat jy al super opgewonde oor pointers-- almal se gunsteling onderwerp, 36 00:01:29,160 --> 00:01:31,310 so eenvoudig om te verstaan. 37 00:01:31,310 --> 00:01:33,130 Ek is seker dat julle almal het dat, reg? 38 00:01:33,130 --> 00:01:39,510 >> So eerste dinge eerste, redirection-- Dit is basies net 'n manier 39 00:01:39,510 --> 00:01:42,920 om te bepaal hoe jy insette dinge in jou program, 40 00:01:42,920 --> 00:01:44,606 hoe jy uitset dinge van jou program. 41 00:01:44,606 --> 00:01:46,980 Die belangrikste maniere waarop jy ouens is interaksie met dit 42 00:01:46,980 --> 00:01:51,650 is net deur middel van standaard uit met jou print screen hier. 43 00:01:51,650 --> 00:01:55,940 Maar daar is maniere om pipe-- soos ons hier sien 44 00:01:55,940 --> 00:01:58,980 is een van ons words-- soort pyp wat inligting 45 00:01:58,980 --> 00:02:02,850 of dat die data in 'n lêer van 'n lêer. 46 00:02:02,850 --> 00:02:05,820 Dis net verskillende maniere om dinge in jou program 47 00:02:05,820 --> 00:02:10,681 en uit jou program, in plaas van net die druk van hulle aan hierdie skerm 48 00:02:10,681 --> 00:02:12,430 of die skryf van dinge uit die opdrag lyn. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> So die eerste een is 'n bietjie groter as kappie. 51 00:02:18,030 --> 00:02:22,085 So output-- dit net druk die uitset na 'n lêer in plaas van jou skerm. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 So as jy iets wat gedruk "Hello, world!" na die skerm, 54 00:02:29,500 --> 00:02:32,400 as jy sit dit in plaas te output.text, wat 55 00:02:32,400 --> 00:02:35,220 skep hierdie lêer genaamd output.text. 56 00:02:35,220 --> 00:02:38,550 En wanneer jy dit oopmaak, dit sal sê: "Hello, world!" daar. 57 00:02:38,550 --> 00:02:41,410 Dit kan super nuttig wees As jy 'n ton van foute 58 00:02:41,410 --> 00:02:43,430 eintlik, soos ons sien in hierdie een. 59 00:02:43,430 --> 00:02:46,810 As jy dit doen twee kappie, sal dit druk die fout boodskappe. 60 00:02:46,810 --> 00:02:52,090 >> So as jy 'n probleem met opstel, dit het 'n baie foute 61 00:02:52,090 --> 00:02:56,770 en jy om te verval in 'n poging om te blaai deur jou opdrag lyn 62 00:02:56,770 --> 00:02:59,110 deur al hulle, kan jy net druk hulle na 'n lêer, 63 00:02:59,110 --> 00:03:02,130 oop die lêer sodat jy kan blaai deur hulle makliker te maak. 64 00:03:02,130 --> 00:03:05,160 Ek het eintlik 'n baie wanneer ek die opsporing 65 00:03:05,160 --> 00:03:07,970 my 181 psets vir die masjien leer. 66 00:03:07,970 --> 00:03:10,000 So kan dit wees super nuttig later op. 67 00:03:10,000 --> 00:03:18,370 Dit is ook nuttig as jy 'n program dat miskien is 'n biblioteek te genereer 68 00:03:18,370 --> 00:03:20,430 of die opwekking van 'n stel van snare, en jy 69 00:03:20,430 --> 00:03:22,846 moet in staat wees om te sien dat dit behoorlik te genereer nie. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Dit is die manier om dit te doen nie. 72 00:03:25,160 --> 00:03:28,280 >> So as jy druk hulle na 'n lêer, jy kan makliker ondersoek hulle, reg? 73 00:03:28,280 --> 00:03:30,930 Versus probeer om te blaai deur jou opdrag lyn. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 En dan een ding om daarop te let is dat met net die groter 76 00:03:35,820 --> 00:03:40,090 as kappie, as jy skryf na 'n lêer wat reeds exists-- 77 00:03:40,090 --> 00:03:44,990 so asof ons hardloop dit die eerste tyd, ons het dit aan output.text, 78 00:03:44,990 --> 00:03:49,970 en dan het ons 'n tweede program wat gedruk dit as program twee 79 00:03:49,970 --> 00:03:54,250 en het 'n groter as om te output.text, dit sal oorskryf that-- so 80 00:03:54,250 --> 00:03:56,715 oorskryf wat ooit in lêer om te begin. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> So as jy wil by te voeg na 'n lêer, soos ons hier sien, 83 00:04:00,750 --> 00:04:04,779 Jy moet net nie twee groter as tekens. 84 00:04:04,779 --> 00:04:05,820 En dit sal voeg om dit te. 85 00:04:05,820 --> 00:04:06,750 Dit sal nie oorskryf nie. 86 00:04:06,750 --> 00:04:09,770 So as jy nodig het om verskeie uit te voer programme en soort van hou 87 00:04:09,770 --> 00:04:13,170 hou van wat almal van hulle is terug te keer na jou in 'n lêer, 88 00:04:13,170 --> 00:04:14,190 dit is 'n manier om dit te doen nie. 89 00:04:14,190 --> 00:04:17,231 As jy nie omgee wat in jou lêer en dit is toegelaat om te oorskryf, 90 00:04:17,231 --> 00:04:19,204 jy kan net gebruik om 'n enkele groter as. 91 00:04:19,204 --> 00:04:20,600 Maak dit sin maak vir almal? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Publiek: Soos dot streep hallo groter as uitset dot teks, soos twee keer, 94 00:04:31,140 --> 00:04:34,030 dit sal maar net wys op die produksie dot teks 'n tweede time-- 95 00:04:34,030 --> 00:04:34,810 >> Spreker 1: Right. 96 00:04:34,810 --> 00:04:40,450 So sou dit basies net heeltemal oorskryf wat daar was om mee te begin. 97 00:04:40,450 --> 00:04:44,260 As hierdie lêer hier, die output.text reeds 98 00:04:44,260 --> 00:04:48,230 bestaan, basies alles wat jy noem wat weer met 'n enkele groter 99 00:04:48,230 --> 00:04:51,920 as jy net kan dink dit as dit wil die lêer vervang. 100 00:04:51,920 --> 00:04:54,824 Soos wanneer jy 'n woord is die redding dokument en jy nie stoor as, 101 00:04:54,824 --> 00:04:57,365 en jy dieselfde naam hou, en dit heeltemal oor skryf it-- 102 00:04:57,365 --> 00:04:58,680 Dit is dieselfde soort van ding. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Iemand enige vrae oor net uitdruk na 'n lêer? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Awesome. 107 00:05:05,550 --> 00:05:11,440 >> So natuurlik, as jy reverse die pyl rigting, kan dit insette te doen. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 So wanneer jy ouens het soos Caesar of Visioneer 110 00:05:19,960 --> 00:05:23,195 en jy moes insette iets, jy het 'n command line argument 111 00:05:23,195 --> 00:05:24,960 dat dit eintlik insette. 112 00:05:24,960 --> 00:05:27,410 Dit is 'n ander manier om dit te doen nie. 113 00:05:27,410 --> 00:05:30,520 So in plaas van om te wag vir 'n opdrag prompt 114 00:05:30,520 --> 00:05:33,800 soos wanneer jy gevra word om u boodskap in die keiser of Visioneer, 115 00:05:33,800 --> 00:05:36,490 as jy 'n teks lêer wat het jou boodskap, 116 00:05:36,490 --> 00:05:38,280 jy kan net tik dit in daardie. 117 00:05:38,280 --> 00:05:44,930 >> So as dit was soos dot streep Caesar 3 minder as pyl insette teks, wat 118 00:05:44,930 --> 00:05:47,240 is jou boodskap, wat net 'n boete sou loop. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Wanneer jou Caesar program eintlik gevra vir insette van die gebruiker, 121 00:05:54,020 --> 00:05:57,360 dit sou dit reeds het, omdat jy in hierdie lêer getik het. 122 00:05:57,360 --> 00:05:58,830 Dit is net 'n ander manier. 123 00:05:58,830 --> 00:06:02,445 Net 'n omgekeerde output-- net insette vir jou data. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> En dan is die laaste een is pyp. 126 00:06:06,680 --> 00:06:07,780 So hierdie een se mooi cool. 127 00:06:07,780 --> 00:06:09,890 Want dit laat jou te neem die uitset van een 128 00:06:09,890 --> 00:06:13,695 program en sit dit as insette na 'n ander program. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Ek weet nie of enige van julle gespeel met die Decipher 131 00:06:18,630 --> 00:06:20,590 dat CS50 kan hê aan jou gegee het, maar dit sou 132 00:06:20,590 --> 00:06:27,380 toelaat dat jy 'n paar voorbeelde te neem lêer, tik dit in jou encryption, 133 00:06:27,380 --> 00:06:30,350 en dan van daar af tik wat in jou dekripsie 134 00:06:30,350 --> 00:06:32,470 om seker te maak dit blyk dieselfde. 135 00:06:32,470 --> 00:06:34,050 So dit is soort van soos drie-pad loop. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Gaan vir dit. 138 00:06:39,423 --> 00:06:41,785 >> Publiek: Indien 'n program het verskeie insette, 139 00:06:41,785 --> 00:06:47,646 Is daar 'n manier om dit wat insette te vertel die teks lêer of die afvoer vir om te gebruik? 140 00:06:47,646 --> 00:06:49,325 >> Spreker 1: Dit het verskeie insette. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Wat ook al dien jou input-- wanneer dit vra vir insette wat eerste keer, is dit 143 00:07:00,430 --> 00:07:03,240 gaan om te aanvaar, dink ek, is dit gaan pyp in die hele lêer. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 So as jy meer insette, is jy gaan word spuit in veelvuldige lêers. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 So as jy vra vir boodskappe drie keer in jou kode, 148 00:07:12,390 --> 00:07:15,230 jy gaan wees om in drie verskillende lêers. 149 00:07:15,230 --> 00:07:15,980 En dit raak mal. 150 00:07:15,980 --> 00:07:18,188 En jy moet nie te bekommerd wees oor wat nou. 151 00:07:18,188 --> 00:07:19,150 Maar dit is die idee. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> So ja, pyp is net uitset van een program maak gebruik van insette in die ander. 154 00:07:26,822 --> 00:07:27,665 Almal goeie daar? 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 Jy sal waarskynlik nie te veel om te doen met dit. 160 00:07:32,890 --> 00:07:35,670 Maar jy moet verstaan maniere waarop jy kan gebruik maak van hierdie. 161 00:07:35,670 --> 00:07:38,910 En daar is 'n paar gevalle wat jy dalk wil om dit te gebruik. 162 00:07:38,910 --> 00:07:44,590 >> So dien ek / O-- Ek weet wat jy saying-- ons gebruik om te lees van 163 00:07:44,590 --> 00:07:50,500 en skryf aan ons skerm is daar, wat is standaard in en standaard uit. 164 00:07:50,500 --> 00:07:54,370 En dit is wat julle gewees het doen sedert die begin van die klas hier. 165 00:07:54,370 --> 00:07:58,220 Maar jy kan ook lees en skryf van lêers, wat is al die lêer I / O-- so liasseer insette, 166 00:07:58,220 --> 00:07:59,850 uitset is alles waarvoor dit staan. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 So dit beteken basies dat Jy kan jou data nou stoor. 169 00:08:04,360 --> 00:08:08,460 >> Wanneer jy net druk op die skerm, dit is basies gegaan het, reg? 170 00:08:08,460 --> 00:08:12,507 So gou as wat jy maak "Hallo wêreld "en hardloop" Hello world " 171 00:08:12,507 --> 00:08:14,090 dit druk "Hello world" na die skerm. 172 00:08:14,090 --> 00:08:16,370 Maar jy kan nie regtig enigiets met dit van daar af. 173 00:08:16,370 --> 00:08:18,950 As jy dit stoor in 'n teks lêer, dan skielik 174 00:08:18,950 --> 00:08:22,789 jy het hierdie inligting wat jy toegelaat te manipuleer of sit dit in 'n lêer, 175 00:08:22,789 --> 00:08:24,080 of sit dit in 'n program later. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Een van die redes Hoekom doen ons dit is net 178 00:08:29,290 --> 00:08:31,560 as 'n manier om data vir latere gebruik te stoor. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Ek het 'n paar van die stappe hier net loop deur middel van standaard 181 00:08:37,279 --> 00:08:39,450 I / O. In stap een, het jy moet 'n verwysing te skep 182 00:08:39,450 --> 00:08:43,480 na die lêer met al pette FILE ster lêer. 183 00:08:43,480 --> 00:08:45,740 So, wat 'n verwysing na 'n lêer. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 So dan wil hê dat jy dit oop te maak. 186 00:08:49,650 --> 00:08:52,940 En jy sê, letterlik, net lêer gelyk fopen. 187 00:08:52,940 --> 00:08:57,400 En dit gaan 'n terugkeer wyser na die lêer wat jy so pas geopen. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Ek het 'n paar van julle ouens by kantoorure. 190 00:09:01,460 --> 00:09:07,400 >> Maar een van die dinge is remember-- wysers 191 00:09:07,400 --> 00:09:10,409 kan 'n paar adres of nul, reg? 192 00:09:10,409 --> 00:09:12,700 As ons ooit 'n geval waar ' iets kan terugkeer nul, 193 00:09:12,700 --> 00:09:14,990 wat ons hoef te doen voordat ons ooit dit gebruik? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Ons moet kyk of dit is null of nie, reg? 196 00:09:19,000 --> 00:09:23,600 Omdat sommige van julle mag gehad het die kwessie waar alles voorwerp 197 00:09:23,600 --> 00:09:26,110 is teruggestuur in tempo was nul. 198 00:09:26,110 --> 00:09:28,170 Jy probeer om te presteer 'n funksie op dit. 199 00:09:28,170 --> 00:09:29,770 En jou rekenaar webwerf myn. 200 00:09:29,770 --> 00:09:30,725 Reg? 201 00:09:30,725 --> 00:09:33,640 Ek is seker 'n paar van julle mag gehad het dat die kwessie. 202 00:09:33,640 --> 00:09:38,890 >> So met fopen, sal fopen óf terugkeer 'n verwysing na die lêer 203 00:09:38,890 --> 00:09:41,200 of as iets verkeerd gaan, dit gaan null om terug te keer. 204 00:09:41,200 --> 00:09:45,980 Sodat jy altyd moet kyk dat dit nie nul teruggekeer 205 00:09:45,980 --> 00:09:47,880 voordat jy probeer om iets anders te doen. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Dit is soos 'n standaard paradigma wat jy gaan hier nodig. 208 00:09:51,974 --> 00:09:54,390 As daar ooit 'n kans dat iets kon terugkeer nul, 209 00:09:54,390 --> 00:09:56,590 check om seker te maak dit nie voordat jy voortgaan. 210 00:09:56,590 --> 00:09:58,911 Anders, gaan jy pragtige terrein foute te kry. 211 00:09:58,911 --> 00:10:00,410 En niemand daarvan hou om te gaan met hulle. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> So as ons hier sien, is die eerste argument is net die pad van die lêer. 214 00:10:06,410 --> 00:10:09,380 As die lêer nie bestaan ​​nie, dit gaan om die lêer te skep. 215 00:10:09,380 --> 00:10:10,713 En dit is net gaan om te leeg wees. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 En dan is die tweede argument is die modus wat jy wil. 218 00:10:13,080 --> 00:10:14,610 Wil ons om te lees van hierdie lêer? 219 00:10:14,610 --> 00:10:15,560 Wil jy uit om dit te skryf? 220 00:10:15,560 --> 00:10:16,476 Wil jy voeg? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 So eintlik wat ek net said-- indien die lêer nie bestaan ​​nie 223 00:10:20,670 --> 00:10:23,400 en jy probeer om te lees van dit, dit gaan 'n fout te gooi. 224 00:10:23,400 --> 00:10:26,890 As die lêer name-- wil indien file.text nog nie bestaan ​​nie 225 00:10:26,890 --> 00:10:29,250 en jy wil om te skryf om dit te, sal dit ' 226 00:10:29,250 --> 00:10:33,110 'n leë lêer genaamd file.text vir jou. 227 00:10:33,110 --> 00:10:36,612 En as jy wil by te voeg, jy moet dieselfde ding doen. 228 00:10:36,612 --> 00:10:38,081 Maak dit sin maak? 229 00:10:38,081 --> 00:10:40,580 As jy probeer om te lees van 'n lêer wat nog nie bestaan ​​nie, 230 00:10:40,580 --> 00:10:41,590 dit sal 'n fout te gooi. 231 00:10:41,590 --> 00:10:44,340 Andersins, sal dit die lêer te skep vir jou kan doen wat jy wil om dit te. 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 Nou kan ons lees van die lêer. 236 00:10:48,880 --> 00:10:52,570 En dit is net 'n soort van gaan deur die verskillende funksies 237 00:10:52,570 --> 00:10:58,980 dat ons vir die lêer I / O. Dit wil nodig wees in hierdie week se pset, 238 00:10:58,980 --> 00:11:00,505 As ek reg onthou. 239 00:11:00,505 --> 00:11:02,880 Ja, dit absoluut sal wees nodig in hierdie week se pset. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 So fgetc gee die volgende karakter. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets net gee 'n reël van die teks. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Dit sal terugkeer enigiets tot 'n nuwe lyn, en dit sal breek. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 So fread lees 'n sekere aantal grepe en plekke hulle 248 00:11:18,700 --> 00:11:20,700 in 'n skikking, wat is iets wat jy kan 249 00:11:20,700 --> 00:11:25,485 wil doen met re-size-- nuttig kan wees. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Hoeveel mense het gelees die pset spec, op die pad? 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 [Onhoorbaar] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> Spreker 1: OK. 257 00:11:36,580 --> 00:11:37,530 Alle regte. 258 00:11:37,530 --> 00:11:41,940 Beslis lees that-- dit is 'n prettige pset. 259 00:11:41,940 --> 00:11:51,320 Jy kry 'n geskrap geheue te herstel card-- regtig opwindend wanneer dit werk. 260 00:11:51,320 --> 00:11:54,100 Maar beslis, begin lees nie. 261 00:11:54,100 --> 00:11:56,280 Kom praat met my as jy vrae daaroor. 262 00:11:56,280 --> 00:11:59,290 >> OK, so as ek gesê het, fread lees 'n sekere aantal grepe. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Dit is 'n arbitrêre aantal wat jy gaan om te stel. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 En dan fseek net beweeg tot 'n sekere posisie. 267 00:12:08,260 --> 00:12:11,150 So miskien het jy nie omgee nie oor die volgende 10 grepe. 268 00:12:11,150 --> 00:12:12,880 Jy wil net om voort te slaan. 269 00:12:12,880 --> 00:12:14,030 Jy gee nie om oor hulle. 270 00:12:14,030 --> 00:12:16,280 Jy wil om te lees vanaf byte 11. 271 00:12:16,280 --> 00:12:18,252 fseek kan jy om dit te doen. 272 00:12:18,252 --> 00:12:20,710 So dit laat jou selektiewe te wees oor wat jy lees. 273 00:12:20,710 --> 00:12:25,880 Omdat fgetc, fgets en fread lees van 'n sekere plek in die lêer. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> 'N manier om te dink oor dit as dit is ons lêer, wanneer jy die eerste oop te maak, 276 00:12:35,090 --> 00:12:41,140 jy het hierdie posisie in die lêer wat begin by die begin. 277 00:12:41,140 --> 00:12:45,040 Wanneer jy bel fgetc, fgetf, of fread, 278 00:12:45,040 --> 00:12:48,875 dit gaan om te begin van hierdie posisie merker. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Kom ons sê jy wil net om te lees hierdie stuk van die geheue hier. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Jy kan nie net bel. 283 00:12:57,960 --> 00:13:02,430 Jy het om te soek hier en lees dan van daar af 284 00:13:02,430 --> 00:13:06,540 of lees, kry, of AOOS, afhangende van wat jy wil. 285 00:13:06,540 --> 00:13:09,310 So soek net kan jy slaan gedeeltes van die geheue. 286 00:13:09,310 --> 00:13:11,590 En dit is die enigste manier waarop jy dinge kan spring 287 00:13:11,590 --> 00:13:14,012 sonder die lees van hulle in jou buffer. 288 00:13:14,012 --> 00:13:15,470 Maak dit sin maak vir almal? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Dit is duidelik dat daar 'n Baie van parallel here-- 291 00:13:24,780 --> 00:13:27,780 ons uitvoer, of insette herlei, jy kan lees en skryf. 292 00:13:27,780 --> 00:13:31,800 So fputc net skryf 'n karakter in die lêer. 293 00:13:31,800 --> 00:13:33,655 fputs skryf 'n lyn. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf druk 'n formaat uitset. 296 00:13:37,420 --> 00:13:41,190 So as jy 'oortjies, of ruimte, of iets anders. 297 00:13:41,190 --> 00:13:44,180 En dan fwrite skryf 'n paar verskeidenheid van grepe na 'n lêer. 298 00:13:44,180 --> 00:13:48,860 So dit is die dieselfde manier fwrite en fread is analoog 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs, en dan fputc en fgetc-- baie 300 00:13:57,550 --> 00:14:00,710 mal, vinnige dinge. 301 00:14:00,710 --> 00:14:05,300 >> Net soort van hou hierdie handy-- jy het verskillende tye 302 00:14:05,300 --> 00:14:08,680 waar is jy dalk net wil een karakter op 'n tyd. 303 00:14:08,680 --> 00:14:09,890 Miskien wil jy 'n hele lyn. 304 00:14:09,890 --> 00:14:14,320 Met jou woordeboek pset-- wat in twee psets, 305 00:14:14,320 --> 00:14:19,690 Ek glo, gee ons jou 'n hele woordeboek in 'n teks formaat 306 00:14:19,690 --> 00:14:22,252 wat elke woord geskei deur 'n lyn. 307 00:14:22,252 --> 00:14:24,210 So as jy wil om te lees in een woord op 'n slag, 308 00:14:24,210 --> 00:14:31,769 wat kan jy gebruik as jy dit lees en hulle is almal geskei op die nuwe reëls, 309 00:14:31,769 --> 00:14:33,310 en jy wil net een woord op 'n slag? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Publiek: Fgets 312 00:14:36,040 --> 00:14:36,748 >> Spreker 1: Right. 313 00:14:36,748 --> 00:14:39,960 Fgets-- want dit terug alles is op een lyn. 314 00:14:39,960 --> 00:14:42,750 En as elke woord is sy eie lyn, kan ons gebruik 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 Maak dit sin, almal? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Ja, ons gaan te kry om te die pret deel met wysers 320 00:14:50,020 --> 00:14:51,728 baie gou, waar jy kry 'n paar wiskunde te doen. 321 00:14:51,728 --> 00:14:52,776 En dit sal wonderlik wees. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Laaste step-- jou lêer sluit. 324 00:14:57,740 --> 00:15:01,090 Met so baie dinge hier, een van ons paradigmas 325 00:15:01,090 --> 00:15:03,550 is as dit kan terugkeer nul, gaan vir nul. 326 00:15:03,550 --> 00:15:06,160 As jy iets oop, jy beter toe te maak. 327 00:15:06,160 --> 00:15:10,419 OK, so jy is nie gedoen totdat jy gedoen nie, tensy jy gesluit het. 328 00:15:10,419 --> 00:15:12,585 Soort van soos dit is nie meer as totdat die vet dame sing. 329 00:15:12,585 --> 00:15:14,130 Dit is soos die sluiting van die lêer. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Soos dit hier, sê net herhaal, altyd 332 00:15:19,190 --> 00:15:21,750 maak jou lêer voordat jy lees of skryf om dit te. 333 00:15:21,750 --> 00:15:24,450 En altyd is dit sluit as jy dit oopmaak. 334 00:15:24,450 --> 00:15:25,460 Alle reg? 335 00:15:25,460 --> 00:15:25,960 Cool. 336 00:15:25,960 --> 00:15:26,835 >> So hier is 'n voorbeeld. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 So tiny-- Ek weet nie of jy ouens kan sien dat baie goed. 339 00:15:34,330 --> 00:15:36,805 As ons net kan verhoog die glans of ander manier. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Laat my eintlik doen as ek kan. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, julle kan nie regtig sien dat aan almal, kan jy? 344 00:15:51,470 --> 00:15:52,905 OK, ons gaan om dit te doen, dan is. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Onhoorbaar] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Ek neem aan dit is baie beter om te sien. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Kan iemand sien waar my muis het, is die vraag? 351 00:17:19,455 --> 00:17:22,837 Ag, daar is dit is-- wat sukkel! 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 Basies, moet julle soort het van 'n idee van wat dit is om te doen. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Dit is nie volmaak nie. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Maar ek wil eerder verduidelik as om meer tyd probeer om dit behoorlik te formateer. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Basies, as jy hier sien, Ons begin met die lêer oop te maak. 361 00:18:07,280 --> 00:18:09,620 En ons het 'n paar databasis wat ons is 362 00:18:09,620 --> 00:18:12,300 opening wat sê dit is ons studente. 363 00:18:12,300 --> 00:18:14,020 En ons gaan om dit te skryf. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 So natuurlik terugkeer null. 366 00:18:17,720 --> 00:18:19,650 So ons het om te kyk vir nul. 367 00:18:19,650 --> 00:18:22,930 En dan as dit nie nul, gaan ons deur. 368 00:18:22,930 --> 00:18:25,660 En as jy sien, ons is herhaling deur hier. 369 00:18:25,660 --> 00:18:26,960 Daar is studente. 370 00:18:26,960 --> 00:18:30,520 Studente is hash gedefinieer as drie. 371 00:18:30,520 --> 00:18:34,060 En wat ons doen is ons druk op die lêer, reg? 372 00:18:34,060 --> 00:18:36,975 So, wat is ons uit te druk op ons lêer? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Publiek: Die tellings wat in die skikking? 375 00:18:48,906 --> 00:18:49,680 >> Spreker 1: Ja. 376 00:18:49,680 --> 00:18:50,980 Die tellings wat in die array-- presies. 377 00:18:50,980 --> 00:18:53,050 So ons is die opening van hierdie databasis wat 378 00:18:53,050 --> 00:18:56,040 Ek neem 'n soort van grade databasis. 379 00:18:56,040 --> 00:19:01,100 En ons is maar net die druk van die tellings van elke student om die lêer. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Goed. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Awesome. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Kom ons kry terug aan- 386 00:19:06,950 --> 00:19:08,646 >> Publiek: Ek het 'n vinnige vraag. 387 00:19:08,646 --> 00:19:11,570 Is die printf nie in die lus? 388 00:19:11,570 --> 00:19:12,870 Dit is net in die as loop? 389 00:19:12,870 --> 00:19:14,370 Spreker 1: Nee, dit is in die lus. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Ek kan nie sien dat my muis baie goed hier. 392 00:19:18,810 --> 00:19:21,359 So ek sukkel om formaat wat behoorlik. 393 00:19:21,359 --> 00:19:22,525 Dit bracket moet weg wees. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Dit moet hier af wees. 396 00:19:25,130 --> 00:19:26,605 Dit is wat in jou lus. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Daar. 399 00:20:11,180 --> 00:20:12,160 Nou is dit mooi. 400 00:20:12,160 --> 00:20:16,720 So dit is hoe dit moet be-- behalwe vir die laaste bracket dat ek afgedank. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Maak dit sin maak vir almal? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Ons gaan om te beweeg op die volgende ding then-- 405 00:20:23,750 --> 00:20:26,180 wat eintlik, jy gaan nodig om die kode te sien. 406 00:20:26,180 --> 00:20:28,370 So ek is net gaan om te kopieer wat oor nou. 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 So ek gaan om te wys julle hierdie kode. 410 00:20:35,110 --> 00:20:38,240 En ek wil hê dat jy om te probeer en figuur uit te vind wat dit veronderstel is om te doen. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> So kry 'n minuut of so that-- neem. 413 00:20:52,480 --> 00:20:54,440 Probeer uitvind wat gaan aan hier. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Enige idees? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Ons weet dat ons ten minste twee argumente in die command line, reg? 418 00:22:12,470 --> 00:22:16,270 Ek neem aan een van die wat gaan word dat [onhoorbaar] van ons program is 419 00:22:16,270 --> 00:22:17,530 en dan iets anders. 420 00:22:17,530 --> 00:22:19,980 Want as [onhoorbaar] is minder as twee, ons gil op hulle. 421 00:22:19,980 --> 00:22:21,140 Reg? 422 00:22:21,140 --> 00:22:25,300 En van die gebruik, dit lyk soos dit gaan 'n soort van lêer te wees nie. 423 00:22:25,300 --> 00:22:26,260 Ons is almal eens dat? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 So nou, wat is die lus te doen? 426 00:22:31,570 --> 00:22:32,570 Wat gaan dit deur? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Publiek: Al die lêers. 429 00:22:36,449 --> 00:22:37,240 Spreker 1: Presies. 430 00:22:37,240 --> 00:22:39,650 Dit gaan deur al die lêers wat ons insette daar. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 So vir elke lêer, dis die opening van 'n string daar. 433 00:22:46,040 --> 00:22:47,560 Dit is die opening van die lêer. 434 00:22:47,560 --> 00:22:48,060 Reg? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 En dit is die lees van dit. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Natuurlik, seker te maak dat dit nul. 439 00:22:55,540 --> 00:22:57,220 En dan is dit die druk. 440 00:22:57,220 --> 00:23:01,460 As dit is nul, dit is net vir ons sê dat dit nie 'n lêer wat bestaan. 441 00:23:01,460 --> 00:23:04,290 Want onthou, met lees ons lêer het om te bestaan. 442 00:23:04,290 --> 00:23:04,810 Reg? 443 00:23:04,810 --> 00:23:06,870 Met skryf en aanlas, jy kan wegkom met dit. 444 00:23:06,870 --> 00:23:08,970 Maar met lees, ons lêer het om te bestaan. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> En dan as dit nie bestaan ​​nie, wat doen ons hier? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Laat ons net hier begin. 449 00:23:15,780 --> 00:23:18,815 Wat is dié do-- hierdie eerste karakter. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Wat doen dit? 452 00:23:21,790 --> 00:23:24,100 Hy kry 'n karakter, reg? 453 00:23:24,100 --> 00:23:25,400 So, wat is dit? 454 00:23:25,400 --> 00:23:26,775 Dit is steeds die eerste karakter. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Enigiemand EOF ken? 457 00:23:30,200 --> 00:23:31,170 >> Publiek: Einde van die lêer? 458 00:23:31,170 --> 00:23:32,680 >> Spreker 1: Einde van file-- presies. 459 00:23:32,680 --> 00:23:35,310 So dit gaan om te gaan deur die hele lêer, reg? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 En dan gaan dit te werk deur kry elke daaropvolgende karakter. 462 00:23:40,780 --> 00:23:41,565 Reg? 463 00:23:41,565 --> 00:23:43,636 En wat is dit doen? 464 00:23:43,636 --> 00:23:44,760 Publiek: Om dat in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> Spreker 1: Putchar afdrukke aan jou screensaver. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Onhoorbaar] die karakter. 469 00:23:51,950 --> 00:23:54,300 En dan wanneer dit [onhoorbaar] dit sal die lêer sluit. 470 00:23:54,300 --> 00:23:57,370 >> Publiek: Het jy nie nodig het om 'n [? anders? ?] 471 00:23:57,370 --> 00:23:59,005 >> Spreker 1: Nie noodwendig nie. 472 00:23:59,005 --> 00:24:01,480 Ek bedoel, dit is soort van geïmpliseer in hierdie. 473 00:24:01,480 --> 00:24:06,780 Omdat hierdie terugkeer, al is, so lank as dit nie vang nie, jy is fine. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Ek bedoel dit is waarskynlik 'n goeie oefen 'n anders om te doen. 476 00:24:10,250 --> 00:24:15,755 Maar 'n ander is nie altyd nodig, veral 477 00:24:15,755 --> 00:24:17,610 As jy iets soos 'n terugkeer, wat 478 00:24:17,610 --> 00:24:20,640 beteken dat in hierdie geval, indien dit vang dit jou program gaan eindig 479 00:24:20,640 --> 00:24:21,850 en dit sal nooit kry om hierdie. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Dit is meer vir die geval waar jy nie noodwendig terugkeer iets. 482 00:24:29,190 --> 00:24:31,370 Want as dit was nie terugkeer enigiets, 483 00:24:31,370 --> 00:24:34,430 sou dit beteken dat as dit waar is, die res van hierdie sou nog steeds loop. 484 00:24:34,430 --> 00:24:36,138 En in daardie geval, jy wil 'n valse. 485 00:24:36,138 --> 00:24:38,240 As dit terugkeer, en jou program se einde, 486 00:24:38,240 --> 00:24:41,960 'n ander is nie nodig om al die tyd, afhangende van die konteks. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, het jy 'n vraag? 489 00:24:44,375 --> 00:24:46,100 Publiek: Ja. 490 00:24:46,100 --> 00:24:49,300 So doen die volgende karakter fgetc kry? 491 00:24:49,300 --> 00:24:50,734 Hoe die karakter te verhoog? 492 00:24:50,734 --> 00:24:51,400 Spreker 1: Ja. 493 00:24:51,400 --> 00:24:52,774 So fgetc kry die volgende karakter. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Jy kan dink dit soos C ++ in 'n sin. 496 00:24:56,866 --> 00:24:58,350 >> Publiek: So, wat was EOF? 497 00:24:58,350 --> 00:25:00,877 >> Spreker 1: EOF is einde van die lêer. 498 00:25:00,877 --> 00:25:03,960 Dit is net 'n merker wat kan jy weet dat jy aan die einde van jou lêer. 499 00:25:03,960 --> 00:25:06,742 So dit gaan druk om jou standaard uit. 500 00:25:06,742 --> 00:25:08,950 En dan gaan dit te sluit die lêer wanneer dit gedoen is. 501 00:25:08,950 --> 00:25:10,700 En dan laat gaan die volgende lêer, reg? 502 00:25:10,700 --> 00:25:12,660 So algehele, wat beteken hierdie program doen? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Onhoorbaar] 505 00:25:16,090 --> 00:25:16,900 >> Spreker 1: Ja. 506 00:25:16,900 --> 00:25:18,770 Hy druk net uit alles wat daar is. 507 00:25:18,770 --> 00:25:23,270 So as julle nog ooit gebruik CAT en dan die naam van 'n paar file-- 508 00:25:23,270 --> 00:25:26,240 Ek weet nie of enige van julle ooit gedoen wat op jou terminale. 509 00:25:26,240 --> 00:25:29,630 Maar as jy al ooit gebruik om die opdrag CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 en dan wat lêer jy there-- dit 511 00:25:31,880 --> 00:25:37,260 druk dit uit vir jou terminale, wat kan wees super handig vir 'n paar dinge. 512 00:25:37,260 --> 00:25:38,746 Ek gebruik dit baie. 513 00:25:38,746 --> 00:25:40,120 Maak dit sin maak vir almal? 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 so jou taak now-- hetsy deur jouself of met die mense rondom you-- 517 00:25:46,530 --> 00:25:54,930 is om net skryf 'n eenvoudige program wat net sal skryf "Hello, world!" 518 00:25:54,930 --> 00:25:56,255 uit na 'n lêer. 519 00:25:56,255 --> 00:26:00,215 >> [Onhoorbaar] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Onhoorbaar] 522 00:26:57,040 --> 00:26:59,248 >> Spreker 1: Ek was soos, het Ek doen dit sleg verlede week? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Ek het nie gedink dit was so sleg nie. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Ek is bly dat jy almal hier. 527 00:27:03,520 --> 00:27:04,655 Dit maak my regtig gelukkig. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Ek is 'n meisie van 'n eenvoudige plesier. 530 00:27:10,160 --> 00:27:11,688 Ek het net soos wanneer my artikel bywoon. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 So ek is net om die begin vir julle ouens, sodat ons kan saam Code. 533 00:27:18,270 --> 00:27:22,290 Ek hou nie van om iemand op die plek nie, tensy jy wil wees. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Publiek: Vir die toets, doen Ons het 'n program te skryf? 536 00:27:30,086 --> 00:27:33,260 >> Spreker 1: Jy kan gevra word om te skryf eenvoudige programme met die hand. 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 >> Publiek: Die toets is volgende week, reg? 540 00:27:38,510 --> 00:27:40,108 >> Spreker 1: Die toets is volgende Woensdag. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Dit beteken daar is 'n pragtige [? CSE?] gradering partytjie daarna, wat 543 00:27:43,730 --> 00:27:50,390 beteken dat jy jou tellings terug wat night-- op watter tyd? 544 00:27:50,390 --> 00:27:50,890 Wie weet? 545 00:27:50,890 --> 00:27:51,973 Maar dit sal die nag wees. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Alle regte. 548 00:28:02,855 --> 00:28:04,250 Hoe wil ons dit om te begin? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Ek gee jou 'n hint-- begin met hierdie. 551 00:28:09,630 --> 00:28:11,455 >> Publiek: Jy het 'n lêer oop te maak. 552 00:28:11,455 --> 00:28:12,250 >> Spreker 1: Ja. 553 00:28:12,250 --> 00:28:14,060 So wat jy wil om dit te noem? 554 00:28:14,060 --> 00:28:16,150 Het jy net wil om dit te noem "lêer"? 555 00:28:16,150 --> 00:28:17,480 Kom ons maak dit maklik. 556 00:28:17,480 --> 00:28:26,752 So fopen-- wat is ons uitset toets gaan wees? 557 00:28:26,752 --> 00:28:36,130 Noem dit "Hello." 558 00:28:36,130 --> 00:28:37,810 En wat is ons af? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Wat doen ons om hierdie lêer? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Publiek: lees. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Skryf. 565 00:28:44,900 --> 00:28:46,191 Spreker 1: Ons skryf om dit te. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Pragtige. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, so ons het hierdie lêer nou. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Wat moet ons doen? 572 00:28:56,212 --> 00:28:57,420 Publiek: kyk of dit nul. 573 00:28:57,420 --> 00:28:59,820 Spreker 1: kyk of dit null-- presies. 574 00:28:59,820 --> 00:29:01,980 Dit is wat ek graag wil hoor. 575 00:29:01,980 --> 00:29:05,930 Dit moet outomatiese wees, veral redelik baie van hierdie punt op. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 As jy begin segfaulting, het jy waarskynlik het nie gaan vir nul iewers. 578 00:29:10,950 --> 00:29:12,480 Nege keer uit tien, dis gaan jou fout te wees. 579 00:29:12,480 --> 00:29:15,400 So as jy net kon kry in die gewoonte, altyd kyk of dit is nul, 580 00:29:15,400 --> 00:29:18,150 jou lewe gaan wees mooi en easy-- of makliker. 581 00:29:18,150 --> 00:29:19,480 >> So kyk om te sien of dit is nul. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 So as dit nie nul, wat is wat die bang gelyk 584 00:29:24,820 --> 00:29:26,784 means-- nie null-- dit is geldig. 585 00:29:26,784 --> 00:29:27,700 Wat wil ons doen? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Ons wil net te druk om die lêer, reg? 588 00:29:31,570 --> 00:29:32,923 So wat gaan ons om te gebruik? 589 00:29:32,923 --> 00:29:34,092 >> Publiek: fprintf 590 00:29:34,092 --> 00:29:36,800 >> Spreker 1: Fprintf-- mooi. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 En fprintf neem twee arguments-- waar dit gaan en wat ons wil gedruk. 593 00:29:44,000 --> 00:29:45,820 So, wat is die eerste een? 594 00:29:45,820 --> 00:29:46,570 Waar gaan dit? 595 00:29:46,570 --> 00:29:47,490 >> Publiek: lêer. 596 00:29:47,490 --> 00:29:48,785 >> Spreker 1: Dit gaan dien. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 En wat wil ons gedruk? 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 Alle regte. 602 00:29:58,565 --> 00:30:03,670 Ons het 'n laaste thing-- nog 'n groot paradigma hier. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Publiek: Close. 605 00:30:05,145 --> 00:30:05,853 Spreker 1: Close. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Daar gaan jy. 608 00:30:10,540 --> 00:30:13,384 >> Publiek: Is dit gebeur As die lêer is nul? 609 00:30:13,384 --> 00:30:15,050 Spreker 1: Nee, dit is as dit nie nul. 610 00:30:15,050 --> 00:30:16,881 Publiek: O, as dit is not-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Vir die fopen en dan die twee argumente wat gaan binne, 613 00:30:25,410 --> 00:30:27,655 wat beteken die eerste argument weer beteken? 614 00:30:27,655 --> 00:30:30,392 >> Spreker 1: Die argument is net soos die naam van die lêer 615 00:30:30,392 --> 00:30:31,350 wat jy wil om te gaan. 616 00:30:31,350 --> 00:30:36,020 So na hierdie loop, sou jy het 'n paar lêer genaamd "hallo" 617 00:30:36,020 --> 00:30:38,320 wat het "Hello, world" in dit. 618 00:30:38,320 --> 00:30:38,820 Dit is al. 619 00:30:38,820 --> 00:30:39,500 Net die naam. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Publiek: En aangesien dit skryf, die lêer hoef nie reeds bestaan. 622 00:30:48,650 --> 00:30:49,675 Is dit wat jy sê? 623 00:30:49,675 --> 00:30:50,410 >> Spreker 1: Right. 624 00:30:50,410 --> 00:30:50,910 Presies. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 As "Hallo" as 'n lêer nog nie bestaan ​​nie, is dit 627 00:30:55,839 --> 00:30:58,380 gaan 'n lêer genaamd te skep Hallo "en skryf dit vir jou. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> Publiek: Wanneer jy vertel die program te skryf na die lêer, 630 00:31:03,610 --> 00:31:08,075 waarom jy skryf nie "lêer" in plaas van die naam van die lêer en fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> Spreker 1: Omdat in hierdie geval, ons het dat groot FILE-- al in caps-- ster, 632 00:31:13,600 --> 00:31:14,260 liasseer. 633 00:31:14,260 --> 00:31:17,370 Dus is dit 'n verwysing na die lêer wat jy praat. 634 00:31:17,370 --> 00:31:19,930 Dit is die manier waarop Ons het net verwys. 635 00:31:19,930 --> 00:31:24,850 So in hierdie geval, jy kan dink file-- ha, 636 00:31:24,850 --> 00:31:31,271 ons kan this-- lêer hier gebruik verwys na die opening van die "Hallo" 637 00:31:31,271 --> 00:31:32,145 en laat dit skryf. 638 00:31:32,145 --> 00:31:34,728 >> Publiek: Kan ons 'n "Hallo" plaas [? van net?] f lêer? 639 00:31:34,728 --> 00:31:40,160 Spreker 1: Nee, want "Hallo" moet oop en skryfbaar wees. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Lêer hier is soos 'n aanwyscr wat sê OK, ons 642 00:31:45,980 --> 00:31:49,190 hierdie file-- hello-- dat ons is op soek na. 643 00:31:49,190 --> 00:31:50,680 Dit is geopen. 644 00:31:50,680 --> 00:31:52,140 En ons gaan om dit te skryf. 645 00:31:52,140 --> 00:31:55,130 As jy net gebruik "Hallo", wat vervat in dit. 646 00:31:55,130 --> 00:31:56,846 So dit gaan om uit te freak. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Ek bedoel, jy kan dit genoem het. 649 00:32:00,300 --> 00:32:03,960 Jy kon gedoen het lêer, ster, "Hallo", is gelyk aan dit. 650 00:32:03,960 --> 00:32:07,840 Maar die hele punt is dat jy nodig om 'n lêer ster wyser om 651 00:32:07,840 --> 00:32:09,281 in staat wees om hierdie funksies te gebruik. 652 00:32:09,281 --> 00:32:11,280 Publiek: Kan jy doen lêer, ster, lêer, "Hallo" 653 00:32:11,280 --> 00:32:13,113 of het jy om te sit lêer ster lêer deur dit? 654 00:32:13,113 --> 00:32:16,330 Spreker 1: Jy kan doen lêer, ster, "Hello." 655 00:32:16,330 --> 00:32:19,790 Jy kan dit verander watter naam wat jy wil. 656 00:32:19,790 --> 00:32:22,114 Dit is heeltemal arbitrêre wat die naam is. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Jy kan noem dit niks. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Noem dit vlieg spaghetti, as jy wil. 661 00:32:28,020 --> 00:32:29,690 >> Publiek: Wat is die "w" in aanhalingstekens vir? 662 00:32:29,690 --> 00:32:31,540 >> Spreker 1: Die "w" is net die modus. 663 00:32:31,540 --> 00:32:33,170 So ons skryf hierdie lêer. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Almal goeie? 666 00:32:35,320 --> 00:32:36,227 Duidelik? 667 00:32:36,227 --> 00:32:36,981 Ja. 668 00:32:36,981 --> 00:32:40,365 >> Publiek: So wanneer dit skryf hierdie dien, waar dan vind ons dat die lêer? 669 00:32:40,365 --> 00:32:43,820 >> Spreker 1: Dit sal in dieselfde wees gids wat jy tans in. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 As jy in pset drie en jy hierdie, binne jou pset 672 00:32:48,880 --> 00:32:52,600 drie gids gaan wees hierdie lêer genaamd "Hello." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Almal goeie? 675 00:32:53,757 --> 00:32:55,840 Ek voel soos jy al om dit, wat is groot. 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 So terug na my skyfie show-- Ek is lief vir wanneer dinge werk. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- is julle opgewonde? 680 00:33:08,674 --> 00:33:09,465 Wysers is groot. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Hulle neem 'n bietjie jou kop te draai om. 683 00:33:13,580 --> 00:33:15,288 Dit is my tweede jaar onderrig wysers. 684 00:33:15,288 --> 00:33:16,850 En ek dink ek het uiteindelik het dit. 685 00:33:16,850 --> 00:33:18,650 So as jy sukkel, is dit OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Soos ek gesê het, teken prente help om 'n baie met dinge in CS, 688 00:33:24,070 --> 00:33:27,400 soveel as wat ek dink mense is geneig om te dink O, ons is op 'n rekenaar. 689 00:33:27,400 --> 00:33:28,399 Ons moet maar net-kode. 690 00:33:28,399 --> 00:33:30,190 No-- tekening foto's sal regtig help. 691 00:33:30,190 --> 00:33:32,773 En ek het regtig aanmoedig om te tap in jou kindergartner kant 692 00:33:32,773 --> 00:33:35,010 en bring kryt of merkers en teken. 693 00:33:35,010 --> 00:33:36,110 Want dit sal jou help. 694 00:33:36,110 --> 00:33:39,380 En as jy my sien by kantoorure, ek sal doen om stapels papier 695 00:33:39,380 --> 00:33:41,580 met penne teken dinge uit. 696 00:33:41,580 --> 00:33:44,370 >> So, veral met pointers-- prentjies teken. 697 00:33:44,370 --> 00:33:47,970 En ek is seker ons is eintlik gaan tekening n paar foto's ook hier. 698 00:33:47,970 --> 00:33:51,270 >> So julle ouens het almal Binky te sien, hierdie cool claymation ding. 699 00:33:51,270 --> 00:33:54,720 En ons dink dit is regtig snaaks toe Hy ontplof in 'n klomp van die stukke. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Dit is 'n paar komiese verligting vir die klas. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [onhoorbaar] hierdie groot vermoë in staat wees om die geheue te beheer. 704 00:34:05,900 --> 00:34:10,090 En dit is een van die dinge wat werklik maak dit so 'n kragtige taal. 705 00:34:10,090 --> 00:34:13,469 Maar met groot krag kom groot verantwoordelikheid. 706 00:34:13,469 --> 00:34:16,230 En mal dinge kan gebeur as jy nie versigtig is nie. 707 00:34:16,230 --> 00:34:18,560 So wanneer jy gebruik wysers, wat jy wil maak 708 00:34:18,560 --> 00:34:21,440 seker dat jy regtig verstaan presies wat jy doen. 709 00:34:21,440 --> 00:34:25,530 Hopelik sal die volgende bietjie tyd sal jou help om werklik te verstaan 710 00:34:25,530 --> 00:34:27,850 wysers, hoe om dit te gebruik, en hoe om hulle te manipuleer. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> So memory-- Ek is seker ons het gesien hierdie diagram voor. 713 00:34:33,460 --> 00:34:38,540 So dit is net 'n eenvoudige diagram van hoe dinge kan gestoor word geheue. 714 00:34:38,540 --> 00:34:43,145 So jy basies hierdie groot skikkings van een byte blokke 715 00:34:43,145 --> 00:34:46,000 is wat ons here-- effense stappe deur een elke keer. 716 00:34:46,000 --> 00:34:51,810 Dit is in Hex [onhoorbaar] so agt-bit blokke. 717 00:34:51,810 --> 00:34:55,510 En elke blok word geassosieer met 'n paar heksadesimale adres. 718 00:34:55,510 --> 00:34:58,750 So as jy ooit sien 0x, dit is net Notasie 719 00:34:58,750 --> 00:35:00,670 dat dit 'n heksadesimale adres. 720 00:35:00,670 --> 00:35:03,970 Jy kan aanvaar dit beteken sommige adres in die geheue. 721 00:35:03,970 --> 00:35:06,935 Ons praat oor geheue adresse wanneer jy sien heksadesimale. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Ons het SY veranderlikes, dryf is veranderlikes wat slaan. 724 00:35:14,630 --> 00:35:16,260 So SY winkel SY. 725 00:35:16,260 --> 00:35:17,430 Dryf winkel dryf. 726 00:35:17,430 --> 00:35:20,260 So het ons ook wenke dat die winkel geheue adresse. 727 00:35:20,260 --> 00:35:21,660 Dit is 'n soort van kartering. 728 00:35:21,660 --> 00:35:24,240 Wysers is uitsluitlik vir die geheue adresse. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 So dit is soos jou soort is daar. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Jou toestel is 32-bietjie, wat beteken dat jou geheue adres is vier grepe. 733 00:35:34,470 --> 00:35:37,830 So 'n wyser wat jy het gaan ook vier grepe te wees. 734 00:35:37,830 --> 00:35:43,200 Of anders as dit vier grepe, geheue is vier grepe. 735 00:35:43,200 --> 00:35:44,790 Wysers winkel geheue. 736 00:35:44,790 --> 00:35:46,430 Daarom, hulle is vier grepe. 737 00:35:46,430 --> 00:35:48,460 Cool-- wil net om dit te versterk. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Jy moet hierdie komiese kry nou. 740 00:35:52,220 --> 00:35:55,040 Ek hoeveel van julle weet nie is Kletskerk fans, maar ek is lief vir Kletskerk. 741 00:35:55,040 --> 00:35:55,780 Dit is wonderlik. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Alle regte. 744 00:35:57,790 --> 00:36:01,640 So skep pointers-- soos ek gesê het, dit is pretty much net soos enigiets anders. 745 00:36:01,640 --> 00:36:02,930 Jy het 'n tipe. 746 00:36:02,930 --> 00:36:04,050 Jy het 'n naam. 747 00:36:04,050 --> 00:36:04,810 Reg? 748 00:36:04,810 --> 00:36:10,410 Dit is wat ons het daar. [? Hex?] Ster beteken dit is 'n muis, 749 00:36:10,410 --> 00:36:12,250 en dan alles wat jy wil om dit te noem. 750 00:36:12,250 --> 00:36:15,770 So het die tipe verteenwoordig wat jy kan stoor. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Alle reg? 753 00:36:17,990 --> 00:36:24,350 Op dieselfde wyse as wat ons doen SY, ons weet ons 'n int is die stoor van daar. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Met 'n wyser, dit hou 'n geheue adres. 756 00:36:30,280 --> 00:36:34,240 Maar wat beteken dit is that-- hier is waar 'n tekening gaan handig te pas kom. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 So in hierdie geval, ons het sommige value-- laat ons sê vier. 759 00:36:45,980 --> 00:36:49,306 Vier is by adres een. 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 >> Die eerste een beteken hier dat dit 'n wyser 2x. 763 00:36:56,170 --> 00:36:56,740 Reg? 764 00:36:56,740 --> 00:36:57,628 Dit is 'n paar wyser x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x dalk iets wees, wat ook al. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Wat ook al x is-- sê x is vier. 769 00:37:05,130 --> 00:37:07,280 Dit gaan die stoor geheue adres hier. 770 00:37:07,280 --> 00:37:12,260 So int, ster, x-- hierdie is 'n paar ander slot in memory-- 771 00:37:12,260 --> 00:37:13,590 wie weet wat dit is. 772 00:37:13,590 --> 00:37:15,430 Maar dit gaan 'n adres hier stoor. 773 00:37:15,430 --> 00:37:27,040 So hierdie like-- sou wees in hierdie geval, ook al, 774 00:37:27,040 --> 00:37:32,630 gestoor word op 0x1-- wat gestoor word by die adres wat ons wyser hou, 775 00:37:32,630 --> 00:37:35,280 het aan te pas met wat ons aangewese. 776 00:37:35,280 --> 00:37:40,330 So by 0x1, in hierdie geval, dit is x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Dit kan net ooit 'n int terwyl ons die gebruik van hierdie. 779 00:37:49,340 --> 00:37:52,950 >> Net so, as ons 'n 'n ander 1j, ongeag 780 00:37:52,950 --> 00:37:59,130 adres is gestoor met 'n y het 'n char-- dieselfde ding met Z wees. 781 00:37:59,130 --> 00:38:05,840 In dieselfde manier, wanneer jy probeer en doen intx gelyk aan 0,4, 782 00:38:05,840 --> 00:38:09,275 dit gaan gil op jou en wees soos nee, jy het gesê dat jy 'n int wou hê. 783 00:38:09,275 --> 00:38:10,525 Dit is veronderstel om 'n int te wees. 784 00:38:10,525 --> 00:38:11,900 Hou op om dit 'n float te maak. 785 00:38:11,900 --> 00:38:14,150 >> So laat dinge wees wat hulle wil wees. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Laat dinge self. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 So groot ding is net watter tipe wyser 790 00:38:23,450 --> 00:38:26,101 dit is nie, dit is die enigste ding wat jy kan daar stoor. 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 Met die praktyk, soos met verlede week, alles 794 00:38:31,160 --> 00:38:32,817 lyk regtig soort van abstrakte. 795 00:38:32,817 --> 00:38:34,150 Ons gaan 'n paar praktyk te doen. 796 00:38:34,150 --> 00:38:36,760 Dit moet meer sin maak. 797 00:38:36,760 --> 00:38:44,580 >> So verwysing en dereferencing-- dit werklik belangrik om hierdie reguit. 798 00:38:44,580 --> 00:38:46,630 Ek het nog steeds te verfris elke nou en dan. 799 00:38:46,630 --> 00:38:48,450 En ek is soos 'n wag, wat 'n mens wil ek doen? 800 00:38:48,450 --> 00:38:56,080 So het die ampersand sal eintlik gee jy die verwysing of adres van. 801 00:38:56,080 --> 00:39:00,100 So dit gee die adres in geheue waarvan veranderlike gestoor word. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 So dit gaan eintlik na julle terugkeer 'n heksadesimaal, terwyl dereferencing dit 804 00:39:07,020 --> 00:39:10,641 is eintlik gaan om te gee die data wat daar geberg word. 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 So ons gaan om te kyk na 'n voorbeeld baie vinnig, of eintlik volgende. 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 So ons moet regtig dink versigtig hieroor. 811 00:39:21,790 --> 00:39:23,860 So hier het ons 'n paar heelgetal x. 812 00:39:23,860 --> 00:39:26,485 Ek gaan om te probeer en teken dit uit na die beste van my vermoëns. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 So ons gaan hierdie slot x te hê. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 En dit is die stoor van vyf. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Die adres is 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 Alle goeie. 822 00:39:44,100 --> 00:39:45,470 >> So nou het ons hierdie wyser. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Dit was hier. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 En die ampersand gee ons Die adres van iets. 827 00:39:57,560 --> 00:40:00,780 So, in hierdie geval, dit is die adres van x. 828 00:40:00,780 --> 00:40:01,875 Wat is die adres van x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- en dit wyser is op 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 So jy kan dink oor hierdie wyser, 04, wys net hier. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 En hulle geroep wysers want as ons meer in hierdie, 837 00:40:25,740 --> 00:40:28,450 jy gaan om te sien wat verwys na dinge. 838 00:40:28,450 --> 00:40:31,470 En een blok wys na 'n ander blok sal 'n baie meer sin maak nie. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 So hier is twee. 841 00:40:33,890 --> 00:40:38,230 En dan het ons het 'n paar kopie wat what-- 0x0c. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 En dit gaan dereference ons wyser. 844 00:40:43,420 --> 00:40:46,790 >> So wat dit sê, is OK, hier is ons wyser. 845 00:40:46,790 --> 00:40:53,090 Die waarde wat dit stoor is 0x04, En wat dit gesê word na hierdie adres 846 00:40:53,090 --> 00:40:54,300 en sê vir my wat is in dit. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 So dit is effektief wat hierdie pyl doen. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Jy kan dink van hierdie, soos jou ster. 851 00:41:01,280 --> 00:41:05,410 So OK, wanneer ons dit doen ster, beteken dit volg. 852 00:41:05,410 --> 00:41:06,810 Gaan na hierdie adres. 853 00:41:06,810 --> 00:41:11,430 En dit is basies net volgende hierdie pyl na hierdie geheue stuk. 854 00:41:11,430 --> 00:41:15,380 En gee ons wat in dit, wat 5. 855 00:41:15,380 --> 00:41:18,840 Dit is hoekom ons kopie is gelyk aan 5. 856 00:41:18,840 --> 00:41:20,120 Maak dit sin maak? 857 00:41:20,120 --> 00:41:22,769 Is daar iemand wat my nodig het om te gaan deur dat die weer, of stadiger? 858 00:41:22,769 --> 00:41:24,560 Jy wil my om te gaan deur dit een keer? 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 Ons gaan dit weer te teken. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Wanneer ons begin, ons is almal eens ons het sommige stuk van die geheue wat 'n veranderlike 864 00:41:37,205 --> 00:41:40,890 x wat ons stel gelykstaande aan 5. 865 00:41:40,890 --> 00:41:42,910 Ons beheer nie waar dit is in die geheue. 866 00:41:42,910 --> 00:41:45,520 So hierdie plek is net arbitrêr opgedra. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Goeie daar? 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 Dan inisialiseer ons 'n verwysing na 'n int. 872 00:41:53,330 --> 00:41:56,900 Dit is waarom dit toegelaat om te wys op x, want ons het 'n int hier. 873 00:41:56,900 --> 00:42:00,840 Ons het nog 'n stuk van geheue, want dit wyser 874 00:42:00,840 --> 00:42:03,485 is 'n veranderlike, net soos enigiets anders. 875 00:42:03,485 --> 00:42:06,615 Dit is arbitrêr opgedra 'n ruimte in die geheue. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 En wat dit stoor is die adres van x. 878 00:42:10,830 --> 00:42:13,200 Ampersand beteken die adres van x. 879 00:42:13,200 --> 00:42:14,575 So, wat is die adres van x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Publiek: Dit is zero-- 882 00:42:20,614 --> 00:42:21,280 Spreker 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 So then-- laaste een. 885 00:42:25,940 --> 00:42:30,650 Ons het 'n paar copy-- weer net nog 'n veranderlike. 886 00:42:30,650 --> 00:42:32,520 So laat ons ken 'n paar arbitrêre plek. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 En ons dereference ons wyser. 889 00:42:38,080 --> 00:42:42,490 Die ster beteken gaan na die adres gestoor in my wyser. 890 00:42:42,490 --> 00:42:44,480 Vertel my wat is daar. 891 00:42:44,480 --> 00:42:47,290 So die adres gestoor in ons wyser is 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 So gaan ons na daardie adres. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Dit is wys om die adres. 896 00:42:54,590 --> 00:42:57,481 Wat is in die geheue blok? 897 00:42:57,481 --> 00:42:57,980 Dit is 'n vyf. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 So dit is wat ons ken ons kopie. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Almal goeie? 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-- foto's. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> So die dop van die waardes here-- ek gaan laat julle dink hieroor. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Ons kan 'n ander prentjie teken. 909 00:43:27,750 --> 00:43:31,260 Maar ek wil hê dat jy om te probeer en die rede deur dit op jou eie vir 'n minuut. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Omdat hulle nie gee ons 'n voorbeeld adres, 912 00:44:04,149 --> 00:44:06,940 Ek gaan net ampersand x-- te doen wat behoort te help ry dit in die huis. 913 00:44:06,940 --> 00:44:07,950 Ampersand beteken adres. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> So in die eerste een, almal saam met die eerste lyn. 916 00:44:12,360 --> 00:44:15,690 Sommige x stel se five-- paar ewekansige slot in die geheue. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int ster wyser is gelyk na die adres van x, reg? 919 00:44:23,200 --> 00:44:28,180 Int ster wyser skep hierdie blok, noem dit Pointer, 920 00:44:28,180 --> 00:44:30,650 en ken dit aan die adres van x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Ek is vreeslik op-karakters. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Nou wat ons doen is ons sê OK, dereference ons wyser. 925 00:44:40,550 --> 00:44:42,760 So ons gaan OK, wat is in ons wyser? 926 00:44:42,760 --> 00:44:44,820 Dit is ampersand x. 927 00:44:44,820 --> 00:44:49,400 Gaan na ampersand x en toewys dit. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> So nou, is ampersand x gaan wees 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 So basies, as jy dereferencing, gaan jy OK. 932 00:45:05,174 --> 00:45:07,090 Jy gaan tekening foto's soos hierdie. 933 00:45:07,090 --> 00:45:09,423 Jy gaan tekening jou pyle oor waar dit is. 934 00:45:09,423 --> 00:45:16,030 So gaan na hierdie slot in die geheue en óf gee my daardie waarde terug, of dit moet verander. 935 00:45:16,030 --> 00:45:21,620 In hierdie geval, want ons is op hierdie waarde, ons toeken om dit te wees 35. 936 00:45:21,620 --> 00:45:24,700 Terwyl dit in die verlede een, as jy sien, ons 937 00:45:24,700 --> 00:45:27,680 is die toeken wat hier na iets anders. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Sodat hulle het hierdie awesome tafel. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Dit is nie so sleg nie. 942 00:45:36,890 --> 00:45:37,970 Julle werk op dit. 943 00:45:37,970 --> 00:45:39,640 Ek gaan om dit te trek uit op die bord. 944 00:45:39,640 --> 00:45:41,306 Ons gaan om dit te vul saam, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 So gryp 'n paar papier, gryp 'n vennoot, begin werk. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Ek gaan 'n te kry groter stuk van die kryt. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Want dit gaan 'n baie om te wees. 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 PROFESSOR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Kom ons begin met die eerste ry. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Ons sal daar begin, dan kan jy ouens kan dalk werk deur 'n paar meer. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 'n gelyk b keer c so wat is 'n? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Dit is nie 'n truuk vraag, ek belowe. 963 00:48:23,260 --> 00:48:24,440 >> STUDENT: 4 keer 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESSOR: 4 keer 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 So, wat is b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 STUDENT: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> PROFESSOR: en C? 971 00:48:31,043 --> 00:48:31,542 STUDENT: 5. 972 00:48:31,542 --> 00:48:32,083 PROFESSOR: 5. 973 00:48:32,083 --> 00:48:35,960 En dan is dit net gaan om te word-teken 'n, ampersand b, 974 00:48:35,960 --> 00:48:38,575 ampersand c, reg? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Nie sleg nie. 977 00:48:40,596 --> 00:48:42,081 Dit is eenvoudig genoeg. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 So die volgende een. 980 00:48:44,300 --> 00:48:48,725 A is gelyk aan 'n keer c, in die geval iemand was nie vertroud met dit. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Is almal vertroud met die tye gelyk? 983 00:48:53,300 --> 00:49:00,105 OK, al hierdie means-- dit snelskrif vir 'gelyk aan 'n keer c. 984 00:49:00,105 --> 00:49:04,840 Jy kan dit ook doen met afdeling, met Verder, met aftrek. 985 00:49:04,840 --> 00:49:12,130 Wat jy kan doen 'n leeftyd, of 'n plus gelyk c 'n gelyk aan 'n plus c, 'n minus gelyk 986 00:49:12,130 --> 00:49:15,190 c sou wees om 'gelyk aan 'n minus c. 987 00:49:15,190 --> 00:49:16,690 Dis net sintaktiese suiker. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> So, in hierdie geval, 'n is gelyk aan 'n keer c sal ons wat gee? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Weereens, nie 'n truuk vraag. 992 00:49:28,186 --> 00:49:28,965 >> STUDENT: 100. 993 00:49:28,965 --> 00:49:29,300 >> PROFESSOR: 100. 994 00:49:29,300 --> 00:49:30,383 Is daar enigiets anders verander? 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 Miskien sal ek uiteindelik beter op my-karakters. 999 00:49:39,850 --> 00:49:42,047 >> STUDENT: OK, jammer, hoe het jy 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESSOR: OK. 1001 00:49:42,630 --> 00:49:46,594 So 'n is gelyk aan 'n keer c, so 'n keer c. 1002 00:49:46,594 --> 00:49:48,510 STUDENT: O, jy gebruik 'n vir die previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESSOR: Ja. 1004 00:49:49,135 --> 00:49:51,450 So dit is ons mees onlangse waardes. 1005 00:49:51,450 --> 00:49:53,990 Dit is wat jy moet wees deur gebruik te maak soos ons af beweeg, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 So, b is die enigste ding wat verander, reg? 1008 00:50:01,520 --> 00:50:02,910 So laat vul in alles anders. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Wat is b gaan wees? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Om te wees of nie te wees nie. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 So, wat is dit? 1015 00:50:20,240 --> 00:50:21,605 Wat is die ster pa doen? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> STUDENT: Kode van die ligging van pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> STUDENT: Nee, nie heeltemal nie. 1020 00:50:27,480 --> 00:50:29,470 So dit is 'n d verwysing. 1021 00:50:29,470 --> 00:50:31,580 >> STUDENT: So b oorhandig waarde van pa. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESSOR: Ja, so pa is die adres van 'n, reg? 1023 00:50:37,340 --> 00:50:42,430 So dit sê gaan na waar a gestoor en gee dit daardie waarde. 1024 00:50:42,430 --> 00:50:43,884 So, wat is b? 1025 00:50:43,884 --> 00:50:44,425 STUDENT: 100. 1026 00:50:44,425 --> 00:50:46,534 PROFESSOR: 100. 1027 00:50:46,534 --> 00:50:47,450 Volmaak. 1028 00:50:47,450 --> 00:50:49,879 OK, so PC is wat verander. 1029 00:50:49,879 --> 00:50:51,170 Alles bly dieselfde. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Wat is 'n rekenaar gaan wees? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Eenvoudige opdrag. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 PC is gelyk aan pa, en wat is pa? 1036 00:51:05,990 --> 00:51:07,049 >> STUDENT: ampersand a. 1037 00:51:07,049 --> 00:51:07,840 PROFESSOR: Perfect. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Nou kry ons interessant. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, kom ons breek hierdie een af. 1042 00:51:15,230 --> 00:51:21,110 Eerstens, wat is b keer c, want dit is die maklike deel van hierdie een, reg? 1043 00:51:21,110 --> 00:51:22,360 B tye c is-- 1044 00:51:22,360 --> 00:51:23,320 >> STUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESSOR: Ja, so wat hierdie een doen, 1046 00:51:28,880 --> 00:51:33,705 As dit ster pb, wat verander? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> STUDENT: Wat is in the-- 1049 00:51:37,242 --> 00:51:38,200 PROFESSOR: Wat is in b? 1050 00:51:38,200 --> 00:51:41,340 STUDENT: Wat is in die ruimte dat pb dui op. 1051 00:51:41,340 --> 00:51:43,406 PROFESSOR: En pb wys aan- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESSOR: B. Dus is die enigste ding verandering is b, reg. 1054 00:51:46,740 --> 00:51:50,800 So b keer c, 500. 1055 00:51:50,800 --> 00:51:52,367 So dit is wat nou verander. 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 Pragtige. 1060 00:52:00,840 --> 00:52:01,905 Julle doen groot. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Alle reg, hierdie een af ​​te breek. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C is verander, reg? 1065 00:52:09,630 --> 00:52:11,530 Sodat ons in alles kan vul. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Kom ons kyk. 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 Ons weet dat c gaan die wees produk van twee getalle, reg? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Watter twee getalle, al is? 1074 00:52:27,980 --> 00:52:28,970 >> Student: a en c? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESSOR: So 'n is reg vir die eerste een. 1076 00:52:31,930 --> 00:52:34,385 So ons d verwysing p van 'n, reg? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P van 'n punte na 'n, sodat ons weet dat dit gaan 100 keer wat? 1079 00:52:42,870 --> 00:52:46,232 Tye wat nie PC punt? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Dui op 'n. 1082 00:52:48,740 --> 00:52:55,038 So 100 keer 100 is 10,000. 1083 00:52:55,038 --> 00:52:56,170 Doen wat sin maak? 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 Pylvak, ouens, laaste ry. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Wat hier te verander? 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 PROFESSOR: A. Perfect, so alles kan dieselfde bly. 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 En wat is 'n? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 So dit is 'n tyd wat? 1097 00:53:26,060 --> 00:53:27,120 Dit is ster pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 So ster pb beteken hier is pb, pb punte te b. 1100 00:53:34,490 --> 00:53:35,370 >> STUDENT: 500. 1101 00:53:35,370 --> 00:53:36,230 >> PROFESSOR: 500. 1102 00:53:36,230 --> 00:53:39,236 So het ons 'n 500 keer 100. 1103 00:53:39,236 --> 00:53:41,758 Dit is 50.000. 1104 00:53:41,758 --> 00:53:43,216 Sjoe! 1105 00:53:43,216 --> 00:53:45,646 Kyk na daardie. 1106 00:53:45,646 --> 00:53:47,982 >> STUDENT: Hoekom het ons die & C vir die last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESSOR: Jammer. 1108 00:53:48,690 --> 00:53:50,080 STUDENT: O, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESSOR: My slegte. 1110 00:53:51,600 --> 00:53:52,890 Baie van die skrif. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Almal goeie? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Nie te sleg nie, reg? 1115 00:53:56,660 --> 00:53:58,490 Neem net 'n bietjie terwyl deur te werk. 1116 00:53:58,490 --> 00:54:01,080 As jy breek dit af, verstaan ​​wat elke deel 1117 00:54:01,080 --> 00:54:03,197 verwys aan- as met alles wat dit is, 1118 00:54:03,197 --> 00:54:05,780 yes-- breek dit af na die klein probleme en dan herkombineer, 1119 00:54:05,780 --> 00:54:07,345 en jy kan 'n paar awesome dinge doen. 1120 00:54:07,345 --> 00:54:08,970 Daar is die antwoorde nie, maar ons het dit gedoen. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Wyser rekenkundige. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ag. 1125 00:54:14,460 --> 00:54:15,510 My hande is al kalk. 1126 00:54:15,510 --> 00:54:17,970 So voeg of af te trek int pas die wyser 1127 00:54:17,970 --> 00:54:21,890 deur die grootte van die tipe wyser. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Onthou hoe elke tipe het 'n ander grootte? 1130 00:54:28,390 --> 00:54:34,890 Dus, net soos 'n dubbel of 'n lang lank is agt en int is vier, maar kar is een. 1131 00:54:34,890 --> 00:54:38,360 >> So wat jy wil doen is-- een ding om te onthou 1132 00:54:38,360 --> 00:54:44,080 is net dat hoeveel jou wyser waarde eintlik verander 1133 00:54:44,080 --> 00:54:46,550 sal afhang van die tipe wyser dit is. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Almal goed met dit? 1136 00:54:51,820 --> 00:54:52,760 Kan ek vee dit? 1137 00:54:52,760 --> 00:54:53,440 Ons is goed? 1138 00:54:53,440 --> 00:54:53,940 Awesome. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> So as ons 'n paar wyser that-- dit gaan be-- ek 1141 00:55:07,501 --> 00:55:08,834 gaan dit 'n int wyser te maak. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Dit slaan nie. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 As jy wyser om te sê plus een, wat dit gaan doen 1146 00:55:20,170 --> 00:55:23,420 is dit gaan om te werk dit deur die grootte van 'n int 1147 00:55:23,420 --> 00:55:25,950 want dit is die tipe wyser dit is. 1148 00:55:25,950 --> 00:55:28,260 >> Met C, alles is baie streng en gereguleer. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Die int wyser gaan werk deur die bedrag van die ruimte 'n int sou neem. 1151 00:55:35,260 --> 00:55:36,260 'N int vier grepe. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> So, wat sou dit draai in? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Jy is net die toevoeging van vier op hierdie. 1156 00:55:44,390 --> 00:55:50,040 Nou is jou wyser sou be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> So as dit was 'n kar en ons het wyser plus een, wat sou dit nou wees? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 As dit started-- voorgee ons started-- nou is dit 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Kom ons nou sê dat dit 'n char wyser, en ons het een. 1163 00:56:10,850 --> 00:56:11,850 Wat sou dit verander na? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Hoeveel grepe is 'n kar? 1166 00:56:16,030 --> 00:56:16,680 >> Publiek: Een. 1167 00:56:16,680 --> 00:56:17,304 >> Spreker 1: Een. 1168 00:56:17,304 --> 00:56:18,309 Publiek: So 0x09. 1169 00:56:18,309 --> 00:56:19,600 Spreker 1: So sal dit nege wees. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 So net iets om te onthou. 1172 00:56:23,820 --> 00:56:28,340 Net wanneer jy een by te voeg, dit is nie die toevoeging van een nie, tensy dit is 'n teken. 1173 00:56:28,340 --> 00:56:34,190 Dit is die toevoeging van hoeveel grepe die tipe wat dit is, 1174 00:56:34,190 --> 00:56:36,960 wat is die rede waarom ons het hierdie vergelyking hier. 1175 00:56:36,960 --> 00:56:40,190 So dit is int keer die grootte van die tipe wyser. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> So het ons die voorbeeld hier. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y is tot daardie waarde, 0x4 opgedra, toe ons y plus gelyk aan een. 1180 00:56:54,430 --> 00:56:56,830 Wat is in dit, wat is in x, nie verander nie. 1181 00:56:56,830 --> 00:56:58,610 Wat beteken verandering is wat in y. 1182 00:56:58,610 --> 00:57:04,980 Die adres gestoor in y bygewerk deur vier want daar is vier grepe in 'n int 1183 00:57:04,980 --> 00:57:06,097 en dit is 'n int wyser. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Alle regte. 1186 00:57:07,790 --> 00:57:09,123 So nou het ons 'n oefening. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 So die vraag is wat sal druk. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Enige idees? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Publiek: Die aantal karakters in gelukkige kat? 1193 00:57:43,699 --> 00:57:44,490 Spreker 1: Presies. 1194 00:57:44,490 --> 00:57:45,531 So graag met jou string. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Nie almal kry dit? 1197 00:57:48,260 --> 00:57:49,509 Wil ons dit deur te loop? 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 So wat ons het here-- ek soos hierdie so veel meer. 1201 00:57:57,385 --> 00:57:59,340 Ek het nie [Onhoorbaar] belaglik. 1202 00:57:59,340 --> 00:58:01,690 >> So het ons ons string hier, gelukkig kat. 1203 00:58:01,690 --> 00:58:02,950 Pragtige. 1204 00:58:02,950 --> 00:58:05,080 Ons het 'n paar counter dat ons hou van. 1205 00:58:05,080 --> 00:58:11,430 So ons het 'n paar char * wyser dat net is gelyk aan Str. 1206 00:58:11,430 --> 00:58:14,320 Wat dit doen, is dit toeken 'n wyser 1207 00:58:14,320 --> 00:58:16,380 aan die begin van die string. 1208 00:58:16,380 --> 00:58:19,840 Want ek is seker, as dit is in lesing genoem, 1209 00:58:19,840 --> 00:58:22,290 ons het julle dit gegee ouens data tipe genoem string. 1210 00:58:22,290 --> 00:58:29,070 >> Maar regtig snare is net 'n skikking of-- soos char *. 1211 00:58:29,070 --> 00:58:32,330 Dit is 'n verwysing na 'n klomp van die karakters wat aangrensend is in die geheue. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 So dit stel dit net gelyk aan enige string is 1214 00:58:36,280 --> 00:58:38,980 geïdentifiseer deur waar sy eerste karakter is. 1215 00:58:38,980 --> 00:58:42,710 So dit is net die opstel van 'n sekere punt gelyk aan die begin van die string. 1216 00:58:42,710 --> 00:58:44,130 Almal goeie daar? 1217 00:58:44,130 --> 00:58:44,960 Cool. 1218 00:58:44,960 --> 00:58:49,840 >> So, dit is dereferencing ons wyser. 1219 00:58:49,840 --> 00:58:53,760 So dit is eintlik gaan gee ons 'n bietjie waarde in hier, 1220 00:58:53,760 --> 00:58:55,610 in ons string wat ons praat. 1221 00:58:55,610 --> 00:58:58,342 En ons is so lank as wat gesê dit is nie nul Terminator. 1222 00:58:58,342 --> 00:59:00,550 So hou gaan totdat jy aan die einde van die tou. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Werk jou wyser deur een. 1225 00:59:04,190 --> 00:59:09,250 So r, sal dit eintlik werk deur een elke keer, want dit is 'n kar, 1226 00:59:09,250 --> 00:59:09,820 die kar *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> So dit gaan om deur te gaan. 1229 00:59:12,340 --> 00:59:13,290 Dit gaan om te werk. 1230 00:59:13,290 --> 00:59:16,705 Dus is die eerste keer dat dit loop, dit gaan by h hier te wees. 1231 00:59:16,705 --> 00:59:17,590 Dit gaan om te werk. 1232 00:59:17,590 --> 00:59:18,185 >> Dit sal 'n 'n wees. 1233 00:59:18,185 --> 00:59:21,310 Dit sal 'n p, y wees, en so aan en so voort. 1234 00:59:21,310 --> 00:59:22,300 Ons sal werk toonbank. 1235 00:59:22,300 --> 00:59:26,160 Wanneer dit bereik die einde, is dit net druk hoe ver dit is gekry. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Ja. 1238 00:59:28,050 --> 00:59:31,475 >> Publiek: So dit tel die ruimte as een, reg? 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 >> Spreker 1: dink so. 1242 00:59:35,222 --> 00:59:36,830 Is dit 'n question-- 1243 00:59:36,830 --> 00:59:37,746 >> Publiek: [onhoorbaar]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> Spreker 1: Geen sorge. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Dit sal ek dit doen. 1248 00:59:42,736 --> 00:59:47,710 Alle reg, sodat die een ding wat ek verstaan, is dat met 'n skikking, 1249 00:59:47,710 --> 00:59:51,736 jy kan ook beskou dit as 'n wyser omdat skikkings is net 1250 00:59:51,736 --> 00:59:52,860 deurlopende kolle van die geheue. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Sodat jy dit kan hanteer op dieselfde manier. 1253 00:59:56,380 --> 00:59:59,000 Jy kan dit manipuleer met wysers, ook. 1254 00:59:59,000 --> 01:00:04,770 So in plaas van om in hierdie geval, die analoog ding 1255 01:00:04,770 --> 01:00:07,490 sou wees skikking 0 gelyk aan 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Maar in dieselfde manier waarop die 'n string word bepaal 1258 01:00:15,210 --> 01:00:18,740 deur die begin van waar sy eerste karakter is, 1259 01:00:18,740 --> 01:00:22,270 'n skikking word bepaal deur waar sy eerste element is. 1260 01:00:22,270 --> 01:00:25,120 Want ons weet, ons is gewaarborg nie, dat hierdie 1261 01:00:25,120 --> 01:00:27,985 gaan deurlopende te wees blokke van die geheue. 1262 01:00:27,985 --> 01:00:29,360 Dit is wat ons in staat stel om dit te doen. 1263 01:00:29,360 --> 01:00:31,193 Ons weet hulle is deurlopende blokke van die geheue. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> So in hierdie geval, deur dereferencing net skikking, wat ons vertel, 1266 01:00:36,500 --> 01:00:40,800 OK, gaan na die begin van jou skikking, wat is hier. 1267 01:00:40,800 --> 01:00:42,640 So kan jy stel dit gelyk aan een. 1268 01:00:42,640 --> 01:00:48,610 En in hierdie geval, ongeag jou skikking tipe is, wanneer jy dit werk vir een, 1269 01:00:48,610 --> 01:00:50,830 dit is net soos die opdatering dit na die volgende indeks. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Jy kan dit doen omdat jy weet wat in jou skikking. 1272 01:00:56,360 --> 01:00:59,770 So hy weet hoeveel om te werk jou wyser deur, 1273 01:00:59,770 --> 01:01:02,925 wat dit aan so te werk dat jy by die volgende slot. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> So dit is net 'n ander manier skryf skikking 0 gelyk aan 1, 1276 01:01:09,400 --> 01:01:15,114 skikking 1 is gelyk aan 2, skikking bracket 2 is gelyk aan 3. 1277 01:01:15,114 --> 01:01:16,780 Dit is net 'n ander manier om te dink oor dit. 1278 01:01:16,780 --> 01:01:19,600 Want hulle is deurlopende blokke in die geheue, 1279 01:01:19,600 --> 01:01:21,830 jy kan verwys na hulle óf deur die skikking notation-- 1280 01:01:21,830 --> 01:01:24,390 wat ek persoonlik vind easier-- maar miskien 1281 01:01:24,390 --> 01:01:27,347 wat jy nodig het om dit te manipuleer streng deur geheue adresse. 1282 01:01:27,347 --> 01:01:28,930 En dit is die manier waarop jy dit sou doen. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Soort van meer as 'n cool ding wat jy kan doen 1285 01:01:32,630 --> 01:01:35,213 versus miskien nie iets wat jy eintlik gaan om te implementeer. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Ek gebruik dit in 61. 1288 01:01:38,630 --> 01:01:41,710 Julle waarskynlik nie nodig nie bekommerd te wees oor dit te veel. 1289 01:01:41,710 --> 01:01:43,693 Maar as jy belangstel, neem 61 volgende jaar. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Ons is in die pylvak ouens. 1292 01:01:46,560 --> 01:01:47,510 Ek weet, dit is 'n lang. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dinamiese Memory Allocation-- sodat ons weet dat 'n mens 1295 01:01:58,880 --> 01:02:01,790 dinge wanneer ons gepraat tydens ons eerste artikel saam, 1296 01:02:01,790 --> 01:02:04,560 Ons kyk na 'n ruil funksie waar dit was 1297 01:02:04,560 --> 01:02:08,010 buite die omvang van ons belangrikste funksie. 1298 01:02:08,010 --> 01:02:14,370 En ons is verby in hierdie waardes wat effektief was kopieë. 1299 01:02:14,370 --> 01:02:20,570 >> En sodra ruil klaar uitvoering, is dit net 'n stapel gelaat. 1300 01:02:20,570 --> 01:02:22,830 Onthou, ons het 'n stapel raamwerk vir omruil. 1301 01:02:22,830 --> 01:02:26,070 Dit laat en diegene waardes laat met dit. 1302 01:02:26,070 --> 01:02:27,050 En hulle is weg. 1303 01:02:27,050 --> 01:02:28,615 Ons kan niks doen nie saam met hulle en ons was hartseer 1304 01:02:28,615 --> 01:02:29,989 want ons kan nie ons waardes ruil. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Maar met C, soos ek genoem het, het jy het 'n baie mag oor die geheue. 1307 01:02:36,560 --> 01:02:43,310 So, wat jy kan doen is jy kan ken die dinge wat op die hoop hier 1308 01:02:43,310 --> 01:02:46,830 wat sal daar bly totdat jy hulle vertel anders. 1309 01:02:46,830 --> 01:02:48,280 >> Hulle is soos goeie kinders. 1310 01:02:48,280 --> 01:02:49,150 Hulle bly daar. 1311 01:02:49,150 --> 01:02:50,270 Hulle laat nie. 1312 01:02:50,270 --> 01:02:52,750 Hulle sal daar bly totdat jy soos, OK, jy kan weg te gaan. 1313 01:02:52,750 --> 01:02:55,920 >> Terwyl die dinge wat op die stapel, wat- hulle is soos stout kinders. 1314 01:02:55,920 --> 01:02:59,160 Hulle sal net hardloop weg wanneer jy wil om daar te wees en dan is hulle weg. 1315 01:02:59,160 --> 01:03:00,160 Jy kan nie kry hulle terug. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> So het die hoop is-- ons gaan praat oor malloc en vry, wat 1318 01:03:07,187 --> 01:03:08,895 Ek is seker dat jy ouens hore in lesing. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 En dit is basies 'n manier baie aanhoudende data te hê. 1321 01:03:14,210 --> 01:03:18,920 So kan jy die data hou om so lank as wat jy wil. 1322 01:03:18,920 --> 01:03:19,546 Mhm. 1323 01:03:19,546 --> 01:03:21,475 >> Publiek: Kan jy hoop definieer en stapel? 1324 01:03:21,475 --> 01:03:24,030 Is hulle graag plekke om dinge te sit? 1325 01:03:24,030 --> 01:03:26,630 >> Spreker 1: So hulle is basies just-- hulle 1326 01:03:26,630 --> 01:03:29,530 die manier waarop ons verwys net na die geheue. 1327 01:03:29,530 --> 01:03:37,300 So hoop net plekke waar geheue dinamies toegeken is, 1328 01:03:37,300 --> 01:03:40,960 terwyl stapel verwys meer rame te stapel 1329 01:03:40,960 --> 01:03:45,950 wat meer sentraal tot die funksies wat eintlik hardloop. 1330 01:03:45,950 --> 01:03:47,200 Jy het nie regtig beheer. 1331 01:03:47,200 --> 01:03:50,690 >> Die groot verskil, jy het beheer oor die hoop as jy wil. 1332 01:03:50,690 --> 01:03:52,710 Jy het minder beheer oor die stapel. 1333 01:03:52,710 --> 01:03:55,030 Die stapel hang af van die funksies wat uitgevoer word, 1334 01:03:55,030 --> 01:03:58,320 en die volgorde waarin hulle is hardloop, en hoe dinge teruggekeer. 1335 01:03:58,320 --> 01:04:01,290 Terwyl met die hoop, as ons sal sien, jy kan sê, 1336 01:04:01,290 --> 01:04:06,639 OK, ek wil hierdie waarde te wees rond totdat ek jou sê anders. 1337 01:04:06,639 --> 01:04:08,180 Jy word nie toegelaat om ontslae te raak van dit. 1338 01:04:08,180 --> 01:04:09,300 Jy is nie toegelaat om dit te ignoreer. 1339 01:04:09,300 --> 01:04:11,675 Jy gaan dit om rond te hou vir so lank as wat ek vir jou sê. 1340 01:04:11,675 --> 01:04:15,780 Jy kry om die baas te wees in die hoop, terwyl die stack-- miskien as jy 1341 01:04:15,780 --> 01:04:18,080 soos bedrieg jou pad kan jy die baas te wees. 1342 01:04:18,080 --> 01:04:19,340 Maar nie heeltemal. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 En dit is regtig net die geheue. 1345 01:04:22,070 --> 01:04:24,260 Dis net verskillende maniere verwys na die geheue. 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 So met dit, hoe om te beheer van jou geheue. 1349 01:04:28,630 --> 01:04:32,070 Dit is met malloc, wat jy gaan kry om te gebruik. 1350 01:04:32,070 --> 01:04:37,100 So dit is net kort vir die toekenning van geheue. 1351 01:04:37,100 --> 01:04:38,459 Dit is al wat dit is. 1352 01:04:38,459 --> 01:04:41,250 Daar is 'n klomp van die ander cool funksies wat alloc aan die einde, 1353 01:04:41,250 --> 01:04:42,750 en hulle staan ​​vir verskillende dinge. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> So wanneer jy dit nodig berging wat nodig jou huidige funksie te oorleef so 1356 01:04:49,050 --> 01:04:51,010 dat wanneer jou huidige funksie hardloop weg, 1357 01:04:51,010 --> 01:04:55,774 het jy nog die data wat jy het van dit, wat jy wil malloc te gebruik. 1358 01:04:55,774 --> 01:04:57,190 Dit sal dit inisialiseer op die hoop. 1359 01:04:57,190 --> 01:05:00,140 En soos ek gesê het, en hou sê, jy sal dit daar te hou 1360 01:05:00,140 --> 01:05:03,050 totdat jy dit vertel anders, wat is die belangrikste ding hier. 1361 01:05:03,050 --> 01:05:08,450 >> So een ding om op te let, en dit is tipies baie belangrik, 1362 01:05:08,450 --> 01:05:13,620 is dat hierdie sizeof is super nuttig te gebruik 1363 01:05:13,620 --> 01:05:16,440 want afhangende van die tipe van die masjien jy hardloop, 1364 01:05:16,440 --> 01:05:22,470 dit het verskillende bedrae geheue wat dit neem. 1365 01:05:22,470 --> 01:05:26,870 So jy wil altyd die grootte van so te gebruik dat jy nie die masjien afhanklik is, 1366 01:05:26,870 --> 01:05:30,300 sodat jou kode sal loop op 'n masjien. 1367 01:05:30,300 --> 01:05:32,360 >> En dit is net 'n deel van die skryf van goeie-kode. 1368 01:05:32,360 --> 01:05:34,610 As dit werk op 'n masjien, maar nie enige van die ander, 1369 01:05:34,610 --> 01:05:36,440 Hoe bruikbaar was jou program? 1370 01:05:36,440 --> 01:05:38,420 Sodat jy altyd wil maak seker en gebruik sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Publiek: So is dit soos die grootte van 10 duim [onhoorbaar]? 1372 01:05:41,306 --> 01:05:43,698 >> Spreker 1: Dit is die grootte van 10 SY. 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 So grootte van SY sal terugkeer hoeveel kos een int neem. 1376 01:05:48,830 --> 01:05:51,530 Of grootte van kar, hoe Hoeveel kos een kar nie. 1377 01:05:51,530 --> 01:05:54,150 En dan hoeveel blokke van daardie wil jy hê? 1378 01:05:54,150 --> 01:05:57,590 >> So in hierdie geval, ons wil iets dat ons 10 SY te kan stoor. 1379 01:05:57,590 --> 01:06:00,240 En dit sal ongeag werk van die masjien, wat is cool. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 So hoeveel grepe sal wat eintlik vir jou? 1382 01:06:04,846 --> 01:06:06,190 Vinnige wiskunde. 1383 01:06:06,190 --> 01:06:06,787 >> Publiek: 40. 1384 01:06:06,787 --> 01:06:07,370 Spreker 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Presies. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 So 'n groot ding. 1388 01:06:12,030 --> 01:06:14,840 Wyser of malloc kan terugkeer null. 1389 01:06:14,840 --> 01:06:17,910 >> So weer, altyd kyk na sien of dit nul teruggekeer 1390 01:06:17,910 --> 01:06:19,620 voordat jy probeer om iets te doen met dit. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 As jy probeer en dereference hierdie wyser nou, 1393 01:06:27,350 --> 01:06:29,720 dit is net gaan om te segfault want jy gaan en probeer 1394 01:06:29,720 --> 01:06:31,730 aan te raak nul wanneer jy nie moet hê. 1395 01:06:31,730 --> 01:06:34,000 So altyd gaan vir nul. 1396 01:06:34,000 --> 01:06:36,075 Weereens, kan alles wat jy doen. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Dit kan terugkeer null. 1399 01:06:39,720 --> 01:06:42,740 Dit sal terugkeer nul as jy óf uit die ruimte, of vir watter rede ookal 1400 01:06:42,740 --> 01:06:44,350 dit het in 'n paar geheue fout. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Dit het soms terug net null. 1403 01:06:47,510 --> 01:06:48,990 So jy moet net om te kyk vir dit. 1404 01:06:48,990 --> 01:06:51,050 Dit is al wat hierdie skyfie sê. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 En dan wat ons het hier is 'n oproep te bevry. 1407 01:06:55,240 --> 01:07:00,550 So in die dieselfde manier dat as jy open 'n lêer moet jy 'n lêer te sluit, 1408 01:07:00,550 --> 01:07:04,340 As jy malloc geheue, het jy jy moet bevry dat die geheue. 1409 01:07:04,340 --> 01:07:06,530 En julle sal kry regtig cool dinge om te doen. 1410 01:07:06,530 --> 01:07:09,624 >> En daar is 'n program wat jy kan hardloop sien as jy ooit lek geheue. 1411 01:07:09,624 --> 01:07:11,040 Maar jy wil nie geheue te lek. 1412 01:07:11,040 --> 01:07:11,820 Dit is regtig 'n slegte. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Net gemors dinge. 1415 01:07:15,020 --> 01:07:20,939 >> Dit is sleg om te doen net soos ontwikkeling wyse vir die ontwerp doeltreffendheid. 1416 01:07:20,939 --> 01:07:22,980 Maar dit is ook net 'n soort van sleg vir jou rekenaar. 1417 01:07:22,980 --> 01:07:26,780 Dus net gratis dinge wanneer jy malloc hulle. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Julle sien die simmetrieë hier. 1420 01:07:30,210 --> 01:07:31,180 Super eenvoudig. 1421 01:07:31,180 --> 01:07:33,010 Net vrye en dan Wat ook al jou wyser, 1422 01:07:33,010 --> 01:07:34,843 Wat ook al die naam van jou wyser is, en dit 1423 01:07:34,843 --> 01:07:36,710 sal sorg bevry dit vir jou. 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 >> Dan het ons hierdie. 1428 01:07:42,530 --> 01:07:44,770 So ons is net gaan om te loop deur middel van hierdie program. 1429 01:07:44,770 --> 01:07:46,560 En dan moet jy die ouens gedoen word. 1430 01:07:46,560 --> 01:07:50,240 >> So [onhoorbaar] net belangrikste. 1431 01:07:50,240 --> 01:07:51,690 So ons het 'n paar int * wyser. 1432 01:07:51,690 --> 01:07:53,648 So het ons 'n wyser wat gaan SY te hou. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 En hoeveel SY gaan dit hou? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Net een. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Grootte van 'n int. 1439 01:08:01,100 --> 01:08:03,900 >> Ons gaan om te sien of wyser is nul, want dit 1440 01:08:03,900 --> 01:08:06,130 is, wil ons sê nie niks doen nie. 1441 01:08:06,130 --> 01:08:07,065 Dit is sleg. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Sodat ons druk 'n fout uit geheue, mees dikwels terug 1 1444 01:08:12,130 --> 01:08:14,260 as julle gewoond is. 1445 01:08:14,260 --> 01:08:17,390 >> En dan het ons hier, ons dereference ons wyser. 1446 01:08:17,390 --> 01:08:22,840 So dit beteken dat ons gaan om te slaan iets op die plek wat aan ons gegee. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * wyser, of malloc, gee die adres van waar dit ter syde stel hierdie 1449 01:08:30,830 --> 01:08:31,750 geheue vir jou. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 So dit is basies gee jou like-- as jy 1452 01:08:34,800 --> 01:08:38,149 dink oor 'n klomp van die huise in 'n woonbuurt 1453 01:08:38,149 --> 01:08:40,640 wat jy wil om te sit jou meubels in, malloc 1454 01:08:40,640 --> 01:08:43,850 is soos OK, jy te gaan na die huis van drie. 1455 01:08:43,850 --> 01:08:45,800 En dit gee jou die adres van die huis van drie. 1456 01:08:45,800 --> 01:08:48,775 >> So hierdie reg nou, hierdie wyser winkels 'n adres, 1457 01:08:48,775 --> 01:08:50,149 slaan die adres van jou huis. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * Ptr middel, OK, ek is by my huis. 1460 01:08:54,640 --> 01:08:55,326 Cool. 1461 01:08:55,326 --> 01:08:56,580 Ek moet 'n paar heelgetal te kry. 1462 01:08:56,580 --> 01:08:59,229 >> So jy vra vir iemand gee jou meubels nou. 1463 01:08:59,229 --> 01:09:00,430 So jy kry 'n int. 1464 01:09:00,430 --> 01:09:05,100 En sit dit in jou wyser waar dit verwys na. 1465 01:09:05,100 --> 01:09:08,670 >> En dan is dit net afdrukke uit, jy betree waar. 1466 01:09:08,670 --> 01:09:11,060 En weer, die verwysing. 1467 01:09:11,060 --> 01:09:15,649 So dit is soos jy na hierdie spreek en jy sien wat daar was. 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 >> En dan natuurlik ons ​​bevry ons wyser. 1471 01:09:20,174 --> 01:09:21,590 Moenie vergeet om jou wyser te bevry. 1472 01:09:21,590 --> 01:09:22,933 Moenie vergeet om te kyk vir nul. 1473 01:09:22,933 --> 01:09:24,349 Moenie vergeet om jou wyser te bevry. 1474 01:09:24,349 --> 01:09:27,270 Jy het twee dinge wat jy onthou van dit of dat jy moet onthou. 1475 01:09:27,270 --> 01:09:27,770 Ja. 1476 01:09:27,770 --> 01:09:31,590 Publiek: [onhoorbaar] dinge soos wat, die kar * s. 1477 01:09:31,590 --> 01:09:33,760 Hoe kom ons nooit bevry diegene? 1478 01:09:33,760 --> 01:09:34,529 >> Spreker 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Publiek: Is dit soos snare? 1480 01:09:36,450 --> 01:09:39,160 Jy het gesê snare is net soos char * s, reg? 1481 01:09:39,160 --> 01:09:41,200 So hoekom doen ons nie bevry snare? 1482 01:09:41,200 --> 01:09:43,204 >> Spreker 1: Jy moet net te gratis as jy mallocing. 1483 01:09:43,204 --> 01:09:44,620 Publiek: Ag, as jy mallocing. 1484 01:09:44,620 --> 01:09:47,399 Spreker 1: So malloc en vry is twee dinge 1485 01:09:47,399 --> 01:09:49,000 dat jy altyd moet saam. 1486 01:09:49,000 --> 01:09:51,630 f oop, f naby, twee dinge julle saam moet hê. 1487 01:09:51,630 --> 01:09:54,471 In beide gevalle, kyk vir nul. 1488 01:09:54,471 --> 01:09:54,971 Ja. 1489 01:09:54,971 --> 01:09:57,130 >> Publiek: So vry is net sodat iets anders 1490 01:09:57,130 --> 01:09:59,690 om daar te wees gestoor na hierdie program is dit gebruik? 1491 01:09:59,690 --> 01:10:01,946 >> Spreker 1: Dit is net sê, OK, ek is klaar met hierdie. 1492 01:10:01,946 --> 01:10:03,320 Jy hoef nie om dit te hou rond. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Anders jou rekenaar Net soos probeer en hou dit daar. 1495 01:10:08,190 --> 01:10:10,910 En dan moet jy can't-- dit loop in die geheue kwessies later. 1496 01:10:10,910 --> 01:10:13,660 Jy wil altyd om dit te bevry, want dit vertel jou rekenaar, OK, ek is 1497 01:10:13,660 --> 01:10:15,190 gedoen met hierdie plek van die geheue. 1498 01:10:15,190 --> 01:10:17,190 Jy kan dit terug vir my om later te gebruik. 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 Ja. 1502 01:10:21,320 --> 01:10:26,950 >> Publiek: Ons gebruik die% d net omdat 'n dubbel wat kom terug, 1503 01:10:26,950 --> 01:10:28,330 of waarom is-- [onhoorbaar]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Publiek: Kan jy% i gebruik? 1506 01:10:31,620 --> 01:10:32,760 >> Spreker 1: Jy kan% i gebruik. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Enige laaste minuut vrae? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Gaan voort. 1511 01:10:38,985 --> 01:10:40,610 Publiek: Ek het net 'n vinnige vraag. 1512 01:10:40,610 --> 01:10:50,200 So het die ptr veranderlike, that's-- soos met die int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 dit is net sê dit is verwys na 'n plek in memory-- 1514 01:10:54,142 --> 01:10:55,600 Spreker 1: Wil jy [onhoorbaar]? 1515 01:10:55,600 --> 01:10:58,050 Publiek: --that is die grootte of-- nee, dit is OK. 1516 01:10:58,050 --> 01:11:01,292 Maar dit is net te wys op 'n plek in geheue wat net soos vier grepe. 1517 01:11:01,292 --> 01:11:02,000 Spreker 1: Right. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 So malloc die grootte van int sê, OK, ek gaan om te gaan afloop, 1520 01:11:07,070 --> 01:11:08,780 vind vier grepe van die geheue vir jou. 1521 01:11:08,780 --> 01:11:10,700 Wanneer dit bevind dat vier grepe van die geheue, is dit 1522 01:11:10,700 --> 01:11:14,030 gee jou terug die adres van waar dit begin, 1523 01:11:14,030 --> 01:11:16,160 en dit is wat gestoor in wyser, of ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Goed. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Julle kyk minder verward as die meeste mense wanneer ek praat oor wyser, 1528 01:11:21,700 --> 01:11:23,670 so ek voel redelik goed nou. 1529 01:11:23,670 --> 01:11:24,520 >> Alle regte. 1530 01:11:24,520 --> 01:11:27,960 Soos altyd, moet jy die ouens almal gekry om jou pset2 grade deur die nou. 1531 01:11:27,960 --> 01:11:32,769 Ek weet daar is 'n paar onstabiel gewees dinge waar dit sê, formule nie geldig 1532 01:11:32,769 --> 01:11:33,310 of iets. 1533 01:11:33,310 --> 01:11:36,166 As jy kry wat almal jou grade geldig is aan my kant. 1534 01:11:36,166 --> 01:11:38,040 So ek kan jou ' screenshots van jou grade. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Laat my net weet net so goed as jy ontbreek enige grade of iets 1537 01:11:41,760 --> 01:11:43,060 Dit lyk nie of dit sin maak. 1538 01:11:43,060 --> 01:11:43,720 Kom na my toe. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Ek het super trots op jou ouens reeds, so hou dit aan. 1541 01:11:48,830 --> 01:11:50,640 En het 'n goeie res van jou week. 1542 01:11:50,640 --> 01:11:53,440 Ek is seker ek sal sien 'n paar van julle by kantoorure. 1543 01:11:53,440 --> 01:11:55,414