1 00:00:00,000 --> 00:00:02,670 >> [THEMA MUZIEK] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Hallo, iedereen. 4 00:00:13,365 --> 00:00:14,365 Welkom terug bij sectie. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Mooie dag out-- dat is waarom, ik ben zeker, zijn er slechts vier van jullie hier 7 00:00:18,700 --> 00:00:21,180 en niet onze gebruikelijke verpakking. 8 00:00:21,180 --> 00:00:22,670 Ik heb dit weekend ziek geweest. 9 00:00:22,670 --> 00:00:24,294 Dus ik heb geen Starburst voor jullie. 10 00:00:24,294 --> 00:00:26,400 En ik kan beginnen hoesten verschrikkelijk in deze. 11 00:00:26,400 --> 00:00:27,790 Dus gewoon geduld met mij. 12 00:00:27,790 --> 00:00:30,624 Ik ga echt proberen en krijgen door middel van deze eerste, 13 00:00:30,624 --> 00:00:32,290 echter, voordat ik een hoestaanval. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Maar gewoon gemakkelijk op mij een weinig bit-- dat is alles wat ik vraag. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Dus onze agenda voor today-- slechts een reminder-- uw quiz is volgende week. 18 00:00:44,289 --> 00:00:46,830 Ik zei toch dat dit vorige week dus het niet je zou overrompelen. 19 00:00:46,830 --> 00:00:47,954 Dus ik u eraan te herinneren opnieuw. 20 00:00:47,954 --> 00:00:49,180 Volgende week van je quiz. 21 00:00:49,180 --> 00:00:52,730 Daartoe volgende week sectie zal veel meer zijn 22 00:00:52,730 --> 00:00:55,180 van-- Ik zal proberen en te werken in sommige beoordeling. 23 00:00:55,180 --> 00:00:58,130 Dus als jullie konden help me out door het sturen van mij 24 00:00:58,130 --> 00:01:00,990 dingen die u comfortabel bent met, dat u zich zorgen over maakt, 25 00:01:00,990 --> 00:01:03,530 onderwerpen die u wilt voor mij te dekken, dat zou geweldig zijn. 26 00:01:03,530 --> 00:01:05,740 Dus ik kan proberen en werken ze in onze rubriek volgende week 27 00:01:05,740 --> 00:01:11,540 of stuur je extra materiaal of prep dat je niet elders zou kunnen krijgen. 28 00:01:11,540 --> 00:01:12,150 >> Yeah! 29 00:01:12,150 --> 00:01:13,520 Meer mensen komen! 30 00:01:13,520 --> 00:01:17,320 Ik dacht, ik heb dat slecht laatste doen week, dat niemand wil om terug te komen? 31 00:01:17,320 --> 00:01:18,065 Ik ben bang. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Zodat de andere drie dingen dat we gaan dan gaan 34 00:01:21,100 --> 00:01:24,850 zijn redirection, file I / O, en dan pointers en dynamisch geheugen. 35 00:01:24,850 --> 00:01:29,160 Ik weet zeker dat je al super enthousiast over pointers-- ieders favoriete onderwerp, 36 00:01:29,160 --> 00:01:31,310 zo eenvoudig te begrijpen. 37 00:01:31,310 --> 00:01:33,130 Ik weet zeker dat jullie allemaal, toch? 38 00:01:33,130 --> 00:01:39,510 >> Dus eerst iets anders, redirection-- dit is eigenlijk gewoon een manier 39 00:01:39,510 --> 00:01:42,920 om te bepalen hoe u invoert dingen in uw programma, 40 00:01:42,920 --> 00:01:44,606 hoe je uitgang dingen vanuit uw programma. 41 00:01:44,606 --> 00:01:46,980 De belangrijkste manieren waarop jullie zijn interactie met het 42 00:01:46,980 --> 00:01:51,650 is gewoon via standaard uit met uw print screen hier. 43 00:01:51,650 --> 00:01:55,940 Maar er zijn manieren om pipe-- zoals we hier zien 44 00:01:55,940 --> 00:01:58,980 is een van onze words-- soort van pijp die informatie 45 00:01:58,980 --> 00:02:02,850 of dat gegevens in een bestand van een bestand. 46 00:02:02,850 --> 00:02:05,820 Het is gewoon verschillende manieren van het krijgen van dingen in uw programma 47 00:02:05,820 --> 00:02:10,681 en uit uw programma, in plaats van ze gewoon af te drukken om dit scherm 48 00:02:10,681 --> 00:02:12,430 of het invoeren van de dingen vanaf de opdrachtregel. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Dus eerst een weinig groter dan dakje. 51 00:02:18,030 --> 00:02:22,085 Dus output-- het gewoon print de uitgang naar een bestand in plaats van uw scherm. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Dus als je iets dat gedrukt had "Hallo, wereld!" naar het scherm, 54 00:02:29,500 --> 00:02:32,400 als je het in plaats daarvan te output.text, dat 55 00:02:32,400 --> 00:02:35,220 creëert dit bestand genaamd output.text. 56 00:02:35,220 --> 00:02:38,550 En wanneer u het opent, zal het zeggen: "Hallo, wereld!" in daar. 57 00:02:38,550 --> 00:02:41,410 Dit kan super handig zijn als je een ton van fouten 58 00:02:41,410 --> 00:02:43,430 eigenlijk, zoals we zien in deze. 59 00:02:43,430 --> 00:02:46,810 Als je twee dakje doen, het zal afdrukken van de foutmeldingen. 60 00:02:46,810 --> 00:02:52,090 >> Dus als je een probleem met compileren, het heeft veel fouten 61 00:02:52,090 --> 00:02:56,770 en je bent vast te lopen in het proberen om door te bladeren in je command line 62 00:02:56,770 --> 00:02:59,110 door alle hen, je kan ze gewoon af te drukken naar een bestand, 63 00:02:59,110 --> 00:03:02,130 openstellen van dat bestand, zodat u kan via hen makkelijker scrollen. 64 00:03:02,130 --> 00:03:05,160 Ik eigenlijk gebruikt dat de veel toen ik het debuggen 65 00:03:05,160 --> 00:03:07,970 mijn 181 psets voor machine learning. 66 00:03:07,970 --> 00:03:10,000 Zo kan super nuttig zijn later. 67 00:03:10,000 --> 00:03:18,370 Het is ook handig als je een programma dat misschien is het genereren van een bibliotheek 68 00:03:18,370 --> 00:03:20,430 of het genereren van een aantal set van snaren, en je 69 00:03:20,430 --> 00:03:22,846 moeten in staat zijn om te zien dat het is goed te genereren van hen. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Dit is de manier om dat te doen. 72 00:03:25,160 --> 00:03:28,280 >> Dus als je ze wilt afdrukken naar een bestand, je kunnen ze gemakkelijker te onderzoeken, toch? 73 00:03:28,280 --> 00:03:30,930 Versus proberen te scrollen via je command line. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 En dan een ding om op te merken dat met alleen de grotere 76 00:03:35,820 --> 00:03:40,090 dan dakje, als je schrijft naar een bestand dat al exists-- 77 00:03:40,090 --> 00:03:44,990 dus alsof we liepen dit de eerste tijd, zetten we het aan output.text, 78 00:03:44,990 --> 00:03:49,970 en dan hadden we een tweede programma dat dit afgedrukt als programma twee 79 00:03:49,970 --> 00:03:54,250 en deed een groter dan tot output.text, het zal overschrijven dat-- zo 80 00:03:54,250 --> 00:03:56,715 overschrijven wat er ooit in dat bestand om mee te beginnen. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Dus als je wilt toevoegen naar een bestand, zoals we hier zien, 83 00:04:00,750 --> 00:04:04,779 je gewoon twee groter dan tekenen. 84 00:04:04,779 --> 00:04:05,820 En het zal toevoegen aan het. 85 00:04:05,820 --> 00:04:06,750 Het zal deze niet vervangen. 86 00:04:06,750 --> 00:04:09,770 Dus als je nodig hebt om meerdere draaien programma's en de aard van de te houden 87 00:04:09,770 --> 00:04:13,170 bijhouden wat ze allemaal terug te keren naar u in een bestand, 88 00:04:13,170 --> 00:04:14,190 dat is een manier om het te doen. 89 00:04:14,190 --> 00:04:17,231 Als je niet kan schelen wat er in uw dossier en het is mogen worden overschreven, 90 00:04:17,231 --> 00:04:19,204 u kunt gewoon gebruik maken van een enkele groter dan. 91 00:04:19,204 --> 00:04:20,600 Is dat zinvol voor iedereen? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Publiek: Net dot slash hallo groter dan uitgang dot tekst, zoals twee keer, 94 00:04:31,140 --> 00:04:34,030 het zal gewoon alleen laten zien op de output dot tekst een tweede tijd-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Recht. 96 00:04:34,810 --> 00:04:40,450 Dus het zou eigenlijk gewoon helemaal overschrijven wat er was om mee te beginnen. 97 00:04:40,450 --> 00:04:44,260 Als dit bestand hier, de output.text al 98 00:04:44,260 --> 00:04:48,230 bestaat, in feite alles wat je belt dat weer met een enkele grotere 99 00:04:48,230 --> 00:04:51,920 dan kun je gewoon denken zo als het vervangen van het bestand. 100 00:04:51,920 --> 00:04:54,824 Net als wanneer je het opslaan van een Word document en je opslaan als, 101 00:04:54,824 --> 00:04:57,365 en je blijft met dezelfde naam, en het volledig overschreven het-- 102 00:04:57,365 --> 00:04:58,680 dit is hetzelfde soort dingen. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Iemand nog vragen over gewoon uitvoeren naar een bestand? 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 >> Zo duidelijk, als je achteruit de pijl richting, kan het ingang doen. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Dus als jullie hadden zoals Caesar of Visioneer 110 00:05:19,960 --> 00:05:23,195 en je moest invoeren iets, je een command line argument had 111 00:05:23,195 --> 00:05:24,960 die daadwerkelijk ingang het. 112 00:05:24,960 --> 00:05:27,410 Dit is een andere manier om dat te doen. 113 00:05:27,410 --> 00:05:30,520 Dus in plaats van te wachten voor een opdrachtprompt 114 00:05:30,520 --> 00:05:33,800 zoals wanneer je gevraagd om je bericht Caesar of Visioneer, 115 00:05:33,800 --> 00:05:36,490 als je een tekstbestand gehad dat uw bericht gehad, 116 00:05:36,490 --> 00:05:38,280 je kon gewoon typ het in dat. 117 00:05:38,280 --> 00:05:44,930 >> Dus als deze waren als dot slash Caesar 3 minder dan pijl tekst invoeren, die 118 00:05:44,930 --> 00:05:47,240 is uw boodschap, dat zou lopen prima. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Wanneer uw Caesar programma eigenlijk gevraagd om input van de gebruiker, 121 00:05:54,020 --> 00:05:57,360 zou het al omdat u hebt getypt in dit bestand. 122 00:05:57,360 --> 00:05:58,830 Dat is gewoon een andere manier. 123 00:05:58,830 --> 00:06:02,445 Net een omgekeerde van output-- gewoon input voor uw gegevens. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> En dan de laatste is pijp. 126 00:06:06,680 --> 00:06:07,780 Dus deze is wel cool. 127 00:06:07,780 --> 00:06:09,890 Omdat het u toestaat om neemt de uitgang van een 128 00:06:09,890 --> 00:06:13,695 programma en zet het als input voor een ander programma. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Ik weet niet of iemand van jullie gespeeld met het ontcijferen 131 00:06:18,630 --> 00:06:20,590 dat CS50 zou kunnen hebben u gegeven, maar het zou 132 00:06:20,590 --> 00:06:27,380 kunt u een aantal monster nemen bestand, typt u deze in uw codering, 133 00:06:27,380 --> 00:06:30,350 en dan vanaf daar typt dat in uw decryptie 134 00:06:30,350 --> 00:06:32,470 om ervoor te zorgen dat het bleek hetzelfde. 135 00:06:32,470 --> 00:06:34,050 Dus het is een soort van drie-weg loop. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Ga ervoor. 138 00:06:39,423 --> 00:06:41,785 >> PUBLIEK: Als een programma meerdere ingangen heeft, 139 00:06:41,785 --> 00:06:47,646 is er een manier om het te vertellen welke ingang het tekstbestand of de uitgang voor gebruiken? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Het heeft meerdere ingangen. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Wat ook het bestandssysteem van uw input-- wanneer het vragen om input die eerste keer, het is 143 00:07:00,430 --> 00:07:03,240 ga ervan uit, denk ik, het is ga pijp in het gehele bestand. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Dus als je meerdere ingangen, je bent gaat worden leidingen in meerdere bestanden. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Dus als je vraagt ​​voor berichten drie keer in de code, 148 00:07:12,390 --> 00:07:15,230 je gaat om te zetten in drie verschillende bestanden. 149 00:07:15,230 --> 00:07:15,980 En het wordt gek. 150 00:07:15,980 --> 00:07:18,188 En je moet niet te zorgen over dat moment. 151 00:07:18,188 --> 00:07:19,150 Maar dat is het idee. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Dus ja, pijp is gewoon output van één programma gebruikt inbreng in het andere. 154 00:07:26,822 --> 00:07:27,665 Iedereen goed 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 Je zult waarschijnlijk niet te veel te doen met het. 160 00:07:32,890 --> 00:07:35,670 Maar je moet begrijpen manieren waarop u kunt dit gebruiken. 161 00:07:35,670 --> 00:07:38,910 En er zijn een aantal zaken die je zou willen om het te gebruiken. 162 00:07:38,910 --> 00:07:44,590 >> Dus file I / O- Ik weet wat je bent saying-- we gewend aan het lezen van 163 00:07:44,590 --> 00:07:50,500 en schriftelijk aan ons scherm er, dat is standaard in en standaard uit. 164 00:07:50,500 --> 00:07:54,370 En dat is wat jullie zijn geweest gedaan sinds het begin van de les hier. 165 00:07:54,370 --> 00:07:58,220 Maar je kunt ook bestanden lezen en schrijven, dat is alles wat file I / O- dus bestand input, 166 00:07:58,220 --> 00:07:59,850 uitgang is alles waar het voor staat. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Dus dit betekent in feite dat kunt u uw gegevens nu opslaan. 169 00:08:04,360 --> 00:08:08,460 >> Als je gewoon afdrukken op de scherm, is het in principe weg, toch? 170 00:08:08,460 --> 00:08:12,507 Zodra je maakt "Hallo wereld "en run" Hello world " 171 00:08:12,507 --> 00:08:14,090 het drukt "Hello world" op het scherm. 172 00:08:14,090 --> 00:08:16,370 Maar je kunt niet echt doen niets mee van daar. 173 00:08:16,370 --> 00:08:18,950 Als u op te slaan in een tekstbestand bestand, dan plotseling 174 00:08:18,950 --> 00:08:22,789 je hebt deze gegevens die jij mag te manipuleren of zet het in een bestand, 175 00:08:22,789 --> 00:08:24,080 of zet het in een programma later. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Een van de redenen waarom we dit doen is gewoon 178 00:08:29,290 --> 00:08:31,560 als een manier om gegevens op te slaan voor later gebruik. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Ik heb een paar stappen hier gewoon wandelen door standaard 181 00:08:37,279 --> 00:08:39,450 I / O. In stap één, u nodig hebt om een ​​referentie te creëren 182 00:08:39,450 --> 00:08:43,480 het bestand met caps FILE ster file. 183 00:08:43,480 --> 00:08:45,740 Zodat creëert een aanwijzer naar een bestand. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Dus dan wil je om het te openen. 186 00:08:49,650 --> 00:08:52,940 En je zegt, letterlijk, gewoon bestand is gelijk aan fopen. 187 00:08:52,940 --> 00:08:57,400 En dit gaat om een ​​terug pointer naar het bestand dat je net hebt geopend. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Ik zag een paar van jullie jongens op kantooruren. 190 00:09:01,460 --> 00:09:07,400 >> Maar een van de dingen is remember-- pointers 191 00:09:07,400 --> 00:09:10,409 kunnen sommige adres of null, toch? 192 00:09:10,409 --> 00:09:12,700 Als we ooit een geval waarin iets kan null terugkeren, 193 00:09:12,700 --> 00:09:14,990 wat hebben we te doen voordat we ooit gebruiken? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 We moeten om te controleren of het is null of niet, toch? 196 00:09:19,000 --> 00:09:23,600 Omdat sommigen van jullie misschien hebben gehad het probleem waar wat object 197 00:09:23,600 --> 00:09:26,110 werd teruggegeven inch breakout was null. 198 00:09:26,110 --> 00:09:28,170 U hebt geprobeerd om te presteren een functie op. 199 00:09:28,170 --> 00:09:29,770 En uw computer website verweten. 200 00:09:29,770 --> 00:09:30,725 Right? 201 00:09:30,725 --> 00:09:33,640 Ik wed dat een paar van jullie kan dat probleem hebben gehad. 202 00:09:33,640 --> 00:09:38,890 >> Dus met fopen, zal fopen ofwel terugkeren een pointer naar het bestand 203 00:09:38,890 --> 00:09:41,200 of als er iets misgaat, het gaat om null terug. 204 00:09:41,200 --> 00:09:45,980 Zodat je altijd moet controleren dat niet nul is teruggekeerd 205 00:09:45,980 --> 00:09:47,880 voordat u probeert 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 als een standaard paradigma dat je gaat hier nodig hebt. 208 00:09:51,974 --> 00:09:54,390 Als er ooit een kans dat iets kon null terug, 209 00:09:54,390 --> 00:09:56,590 controleren om ervoor te zorgen dat het niet voordat u verder gaat. 210 00:09:56,590 --> 00:09:58,911 Anders, je gaat om mooie locatie fouten te krijgen. 211 00:09:58,911 --> 00:10:00,410 En niemand vindt het leuk om te gaan met deze. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Dus als we hier zien, het eerste argument is gewoon het pad naar het bestand. 214 00:10:06,410 --> 00:10:09,380 Als dat bestand niet bestaat, het gaat om dat bestand te maken. 215 00:10:09,380 --> 00:10:10,713 En het is gewoon leeg te zijn. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 En dan het tweede argument is de modus die u wilt. 218 00:10:13,080 --> 00:10:14,610 Willen we lezen van deze afbeelding? 219 00:10:14,610 --> 00:10:15,560 Wilt u schrijven vanuit het? 220 00:10:15,560 --> 00:10:16,476 Wilt u toevoegen? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Dus eigenlijk wat ik net said-- als het bestand niet bestaat 223 00:10:20,670 --> 00:10:23,400 en je probeert te lezen uit het, het gaat om een ​​fout te gooien. 224 00:10:23,400 --> 00:10:26,890 Als het bestand name-- leuk vinden als file.text nog niet bestaat 225 00:10:26,890 --> 00:10:29,250 en u wilt schrijven het zal het creëren 226 00:10:29,250 --> 00:10:33,110 een leeg bestand genaamd file.text voor u. 227 00:10:33,110 --> 00:10:36,612 En als je wilt toevoegen, je moet hetzelfde doen. 228 00:10:36,612 --> 00:10:38,081 Heeft dat zin? 229 00:10:38,081 --> 00:10:40,580 Als je probeert te lezen uit een bestand dat nog niet bestaat, 230 00:10:40,580 --> 00:10:41,590 het zal een fout te gooien. 231 00:10:41,590 --> 00:10:44,340 Anders zal hij het bestand aan te maken voor u doen wat u wilt. 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 Nu kunnen we lezen uit het bestand. 236 00:10:48,880 --> 00:10:52,570 En dit is gewoon een soort van gaan door de verschillende functies 237 00:10:52,570 --> 00:10:58,980 die we hebben voor file I / O. Dit zal zijn noodzakelijk in deze week PSET, 238 00:10:58,980 --> 00:11:00,505 als ik me goed herinner. 239 00:11:00,505 --> 00:11:02,880 Ja, absoluut zal noodzakelijk in deze week pset. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Dus fgetc geeft het volgende teken. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets net terug van een regel tekst. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Het zal iets omhoog terug naar een nieuwe regel en het zal breken. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Dus fread leest een zekere aantal bytes en plaatsen ze 248 00:11:18,700 --> 00:11:20,700 in een array, welke is iets wat je zou kunnen 249 00:11:20,700 --> 00:11:25,485 wilt doen met re-omvang-- kan nuttig zijn. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Hoeveel mensen hebben gelezen de PSET spec, trouwens? 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 [Onverstaanbaar] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: OK. 257 00:11:36,580 --> 00:11:37,530 Prima. 258 00:11:37,530 --> 00:11:41,940 Zeker lezen dat-- het is een leuke pset. 259 00:11:41,940 --> 00:11:51,320 U krijgt om een ​​verwijderde geheugen terug kaart-- echt spannend als het werkt. 260 00:11:51,320 --> 00:11:54,100 Maar zeker, begint te lezen dat. 261 00:11:54,100 --> 00:11:56,280 Kom met me praten als je hebben vragen over. 262 00:11:56,280 --> 00:11:59,290 >> OK, dus zoals ik al zei, fread leest een aantal bytes. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Dat is een willekeurig nummer dat je gaat stellen. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 En dan fseek net beweegt een bepaalde positie. 267 00:12:08,260 --> 00:12:11,150 Dus misschien heb je niet schelen de volgende 10 bytes. 268 00:12:11,150 --> 00:12:12,880 Je wil gewoon om vooruit te spoelen. 269 00:12:12,880 --> 00:12:14,030 Je hoeft niet de zorg over hen. 270 00:12:14,030 --> 00:12:16,280 U wilt lezen vanaf byte 11. 271 00:12:16,280 --> 00:12:18,252 fseek kun je dat doen. 272 00:12:18,252 --> 00:12:20,710 Zodat het u toestaat om selectief te zijn over wat je leest. 273 00:12:20,710 --> 00:12:25,880 Omdat fgetc, fgets en fread gelezen vanaf een bepaalde plaats in het dossier. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Een manier om na te denken over dit is als dit is onze file, wanneer u voor het eerst opent, 276 00:12:35,090 --> 00:12:41,140 je hebt deze positie in bestand die begint bij het begin. 277 00:12:41,140 --> 00:12:45,040 Wanneer u belt fgetc, fgetf of fread, 278 00:12:45,040 --> 00:12:48,875 Het gaat om te beginnen uit deze positie marker. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Laten we zeggen dat je gewoon wilt lezen Dit stuk van het geheugen hier. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Je kunt niet zomaar roepen. 283 00:12:57,960 --> 00:13:02,430 Je hebt hier dan te zoeken en lees dan vanaf daar 284 00:13:02,430 --> 00:13:06,540 of gelezen, krijgt, of getc, afhankelijk van wat je wilt. 285 00:13:06,540 --> 00:13:09,310 Dus zoek gewoon kunt u skip gedeelten van het geheugen. 286 00:13:09,310 --> 00:13:11,590 En dat is het enige Zo kun je dingen overslaan 287 00:13:11,590 --> 00:13:14,012 zonder ze te lezen in uw buffer. 288 00:13:14,012 --> 00:13:15,470 Is dat zinvol voor iedereen? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Uiteraard is er nog een veel parallelle hier-- 291 00:13:24,780 --> 00:13:27,780 onze output of invoer omleiding, je hebt lezen en schrijven. 292 00:13:27,780 --> 00:13:31,800 Dus fputc gewoon schrijft een karakter in het bestand. 293 00:13:31,800 --> 00:13:33,655 fputs schrijft een lijn. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf drukt een opgemaakte uitvoer. 296 00:13:37,420 --> 00:13:41,190 Dus als je tabs, of ruimte, of wat al niet. 297 00:13:41,190 --> 00:13:44,180 En dan schrijft fwrite sommige reeks bytes naar een bestand. 298 00:13:44,180 --> 00:13:48,860 Zodat dit dezelfde manier fwrite en fread zijn analoog 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs, en Vervolgens fputc en fgetc-- veel 300 00:13:57,550 --> 00:14:00,710 van gekke, snelle dingen. 301 00:14:00,710 --> 00:14:05,300 >> Gewoon een soort van houden deze handy-- je hebt verschillende tijden 302 00:14:05,300 --> 00:14:08,680 waar misschien wilt u gewoon één karakter per keer. 303 00:14:08,680 --> 00:14:09,890 Misschien wil je een hele lijn. 304 00:14:09,890 --> 00:14:14,320 Met uw woordenboek pset-- die is in twee psets, 305 00:14:14,320 --> 00:14:19,690 Ik geloof, geven wij u een hele woordenboek in een tekstformaat 306 00:14:19,690 --> 00:14:22,252 die heeft elk woord gescheiden door een lijn. 307 00:14:22,252 --> 00:14:24,210 Dus als je wilde om te lezen in één woord per keer, 308 00:14:24,210 --> 00:14:31,769 wat zou je gebruiken als je dit leest en ze zijn allemaal gescheiden op nieuwe lijnen, 309 00:14:31,769 --> 00:14:33,310 en je wil gewoon een woord op een moment? 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 >> SPEAKER 1: Recht. 313 00:14:36,748 --> 00:14:39,960 Fgets-- want dat keert terug wat er op één regel. 314 00:14:39,960 --> 00:14:42,750 En als elk woord is zijn eigen lijn, kunnen we fgets gebruiken. 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 Is dat zinvol, iedereen? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Ja, we gaan om te krijgen het leuke gedeelte met pointers 320 00:14:50,020 --> 00:14:51,728 zeer binnenkort, waar u krijgen om wat wiskunde te doen. 321 00:14:51,728 --> 00:14:52,776 En het zal geweldig zijn. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Laatste step-- uw bestand te sluiten. 324 00:14:57,740 --> 00:15:01,090 Met zo veel dingen hier, een van paradigma 325 00:15:01,090 --> 00:15:03,550 is als het kan terugkeren null, controleren op null. 326 00:15:03,550 --> 00:15:06,160 Als je iets te openen, zou je beter sluiten. 327 00:15:06,160 --> 00:15:10,419 OK, dus je bent nog niet klaar tot je gedaan tenzij u deze heeft afgesloten. 328 00:15:10,419 --> 00:15:12,585 Zoiets als het is nog niet voorbij totdat de dikke dame zingt. 329 00:15:12,585 --> 00:15:14,130 Dat is hetzelfde als het sluiten van het bestand. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Zoals het hier, zegt enkel te herhalen, altijd 332 00:15:19,190 --> 00:15:21,750 Open je bestand voordat je bent lezen of schrijven naar het. 333 00:15:21,750 --> 00:15:24,450 En altijd sluiten als je het hebt geopend. 334 00:15:24,450 --> 00:15:25,460 Oké? 335 00:15:25,460 --> 00:15:25,960 Cool. 336 00:15:25,960 --> 00:15:26,835 >> Dus hier is een voorbeeld. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Dus tiny-- Ik weet niet of je jongens kunnen zien dat heel goed. 339 00:15:34,330 --> 00:15:36,805 Konden we verhogen de helderheid of andere manier. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Laat me eigenlijk dit doen als ik kan. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, jullie kunnen niet echt zie dat helemaal niet, kunt u? 344 00:15:51,470 --> 00:15:52,905 OK, we gaan dit doen, dan. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Onverstaanbaar] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Ik neem aan dat dit is veel beter te zien. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Kan iedereen zien waar mijn muis ging is de vraag? 351 00:17:19,455 --> 00:17:22,837 Ah, daar is het is-- wat worstelt! 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 In principe moet jullie soort hebben van een idee van wat dit doet. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Het is niet perfect. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Maar ik heb liever uitleggen dan besteden meer tijd proberen om het goed te formatteren. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Kortom, zoals je hier ziet, we beginnen met het bestand geopend. 361 00:18:07,280 --> 00:18:09,620 En we hebben een aantal databasebestand dat we zijn 362 00:18:09,620 --> 00:18:12,300 opening die zegt dat het onze studenten. 363 00:18:12,300 --> 00:18:14,020 En we gaan schrijven. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Dus natuurlijk, terug null. 366 00:18:17,720 --> 00:18:19,650 Dus hebben we om te controleren op null. 367 00:18:19,650 --> 00:18:22,930 En dan als het niet null, gaan we door. 368 00:18:22,930 --> 00:18:25,660 En zoals je ziet, we zijn doorlussen hier. 369 00:18:25,660 --> 00:18:26,960 Er zijn studenten. 370 00:18:26,960 --> 00:18:30,520 Studenten is hash gedefinieerd als drie. 371 00:18:30,520 --> 00:18:34,060 En wat we doen is dat we zijn het afdrukken van het bestand, toch? 372 00:18:34,060 --> 00:18:36,975 Dus wat moeten we afdrukken van onze bestand? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Publiek: De scores die in de matrix? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Ja. 376 00:18:49,680 --> 00:18:50,980 De scores die in de array-- precies. 377 00:18:50,980 --> 00:18:53,050 Dus we zijn het openen van deze database-bestand, dat 378 00:18:53,050 --> 00:18:56,040 Ik neem aan dat een soort cijferlijst database. 379 00:18:56,040 --> 00:19:01,100 En we zijn gewoon uit te printen van de scores van elke leerling naar dat bestand. 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 Laten we terug to-- 386 00:19:06,950 --> 00:19:08,646 >> Publiek: Ik heb een snelle vraag. 387 00:19:08,646 --> 00:19:11,570 Is de printf niet in de lus? 388 00:19:11,570 --> 00:19:12,870 Dat is gewoon in de if-lus? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Nee, het is in de lus. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Ik kan niet goed zien mijn muis omhoog hier. 392 00:19:18,810 --> 00:19:21,359 Dus ik heb moeite om formaat dat goed. 393 00:19:21,359 --> 00:19:22,525 Deze beugel moet worden gegaan. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Het moet hier beneden. 396 00:19:25,130 --> 00:19:26,605 Dit is wat er in je lus. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Er. 399 00:20:11,180 --> 00:20:12,160 Nu is het mooi. 400 00:20:12,160 --> 00:20:16,720 Dus dat is hoe het zou moeten be-- behalve voor die laatste beugel dat ik ontslagen. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Is dat zinvol voor iedereen? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 We gaan om verder te gaan naar het volgende ding then-- 405 00:20:23,750 --> 00:20:26,180 die, in feite, je gaat nodig hebben om de code te zien. 406 00:20:26,180 --> 00:20:28,370 Dus ik ga gewoon kopieert dat meer dan nu. 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 Dus ik ga je laten zien jullie deze code. 410 00:20:35,110 --> 00:20:38,240 En ik wil dat je om te proberen en figuur komen wat het verondersteld wordt te doen. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Dus gegeven dat-- een minuut of zo te nemen. 413 00:20:52,480 --> 00:20:54,440 Proberen erachter te komen wat er aan de hand hier. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Het even welke ideeën? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> We weten dat we op zijn minst twee argumenten in de command line, toch? 418 00:22:12,470 --> 00:22:16,270 Ik neem aan dat een van die gaat worden dat [onverstaanbaar] van ons programma is 419 00:22:16,270 --> 00:22:17,530 en dan iets anders. 420 00:22:17,530 --> 00:22:19,980 Want als [onverstaanbaar] is minder dan twee, schreeuwen we naar hen. 421 00:22:19,980 --> 00:22:21,140 Right? 422 00:22:21,140 --> 00:22:25,300 En uit het gebruik, het lijkt erop dat het gaat om een ​​soort van bestand zijn. 423 00:22:25,300 --> 00:22:26,260 We het allemaal eens met dat? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Dus nu, wat is de lus aan het doen? 426 00:22:31,570 --> 00:22:32,570 Wat gaat het door? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Publiek: Alle bestanden. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Precies. 430 00:22:37,240 --> 00:22:39,650 Het gaat door alle bestanden die we hebben ingevoerd daar. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Dus voor elk bestand, het het openstellen van een stukje tekst daar. 433 00:22:46,040 --> 00:22:47,560 Het openstellen van dat bestand. 434 00:22:47,560 --> 00:22:48,060 Right? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 En het is het lezen van het. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Natuurlijk, te controleren of hij null. 439 00:22:55,540 --> 00:22:57,220 En dan is het af te drukken. 440 00:22:57,220 --> 00:23:01,460 Als het null, het is gewoon ons te vertellen dat is niet een bestand dat bestaat. 441 00:23:01,460 --> 00:23:04,290 Want vergeet niet, met Lees ons dossier heeft te bestaan. 442 00:23:04,290 --> 00:23:04,810 Right? 443 00:23:04,810 --> 00:23:06,870 Met schrijven en append, je kunt wegkomen met het. 444 00:23:06,870 --> 00:23:08,970 Maar met lezen, ons dossier heeft te bestaan. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> En als het bestaat, wat doen we hier? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Laten we beginnen gewoon hier. 449 00:23:15,780 --> 00:23:18,815 Wat is dit doen-- dit eerste teken. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Wat doet het? 452 00:23:21,790 --> 00:23:24,100 Hij krijgt één teken, toch? 453 00:23:24,100 --> 00:23:25,400 Dus wat is dit? 454 00:23:25,400 --> 00:23:26,775 Het wordt het eerste teken. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Iedereen weet EOF? 457 00:23:30,200 --> 00:23:31,170 >> Publiek: Einde van het bestand? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Einde van file-- precies. 459 00:23:32,680 --> 00:23:35,310 Dus het gaat om te gaan door het hele bestand, toch? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 En dan dat het gaat om te werken door krijgt elke volgende karakter. 462 00:23:40,780 --> 00:23:41,565 Right? 463 00:23:41,565 --> 00:23:43,636 En wat doet het? 464 00:23:43,636 --> 00:23:44,760 Publiek: Putting dat in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: putchar prints aan uw screensaver. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Onverstaanbaar] het karakter. 469 00:23:51,950 --> 00:23:54,300 En dan als het [onverstaanbaar] zal dit het bestand te sluiten. 470 00:23:54,300 --> 00:23:57,370 >> Publiek: Denk je niet een [nodig? anders? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Niet per se. 472 00:23:59,005 --> 00:24:01,480 Ik bedoel, het is een soort van impliciete in deze. 473 00:24:01,480 --> 00:24:06,780 Omdat deze retourneert, maar, mits als dit niet deze te vangen, ben je prima. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Ik bedoel het is waarschijnlijk goed oefenen om een ​​anders te doen. 476 00:24:10,250 --> 00:24:15,755 Maar een andere is niet altijd noodzakelijk vooral 477 00:24:15,755 --> 00:24:17,610 als je iets hebt als een terugkeer, die 478 00:24:17,610 --> 00:24:20,640 betekent dat in dit geval als het vangt het, je programma gaat eindigen 479 00:24:20,640 --> 00:24:21,850 en het zal nooit naar dit. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Het is meer voor het geval dat je bent niet noodzakelijkerwijs iets terug. 482 00:24:29,190 --> 00:24:31,370 Want als dit niet was iets terug, 483 00:24:31,370 --> 00:24:34,430 het zou betekenen dat als dit waar zou zijn, de rest zou nog draaien. 484 00:24:34,430 --> 00:24:36,138 En in dat geval moet u zou willen een valse. 485 00:24:36,138 --> 00:24:38,240 Als het terug te keren, en van uw programma einde, 486 00:24:38,240 --> 00:24:41,960 Een andere is het niet noodzakelijk alle de tijd, afhankelijk van de context. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, heb je een vraag? 489 00:24:44,375 --> 00:24:46,100 Publiek: Ja. 490 00:24:46,100 --> 00:24:49,300 Dus doet fgetc het volgende karakter te krijgen? 491 00:24:49,300 --> 00:24:50,734 Hoe werkt het karakter te verhogen? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Ja. 493 00:24:51,400 --> 00:24:52,774 Dus fgetc krijgt het volgende teken. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 U kunt hierbij denken aan het als C ++ in een zin. 496 00:24:56,866 --> 00:24:58,350 >> Publiek: Dus wat was EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF is het einde van het bestand. 498 00:25:00,877 --> 00:25:03,960 Het is gewoon een marker die u laat weten dat je aan het einde van het bestand. 499 00:25:03,960 --> 00:25:06,742 Dus dit gaat om af te drukken om uw standaard uit. 500 00:25:06,742 --> 00:25:08,950 En dan gaat sluiten het bestand wanneer het klaar is. 501 00:25:08,950 --> 00:25:10,700 En dan laten we naar het volgende bestand, toch? 502 00:25:10,700 --> 00:25:12,660 Dus over het algemeen, wat heeft dit programma doen? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Onverstaanbaar] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Ja. 506 00:25:16,900 --> 00:25:18,770 Hij drukt gewoon alles daar. 507 00:25:18,770 --> 00:25:23,270 Dus als jullie ooit heb gebruikt CAT en vervolgens de naam van sommige file-- 508 00:25:23,270 --> 00:25:26,240 Ik weet niet of iemand van jullie dat ooit gedaan op uw terminal. 509 00:25:26,240 --> 00:25:29,630 Maar als je ooit gebruik maken van de command CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 en dan wat dan ook bestand je hebt er-- het 511 00:25:31,880 --> 00:25:37,260 print het uit aan uw terminal, die kan zijn super handig voor sommige dingen. 512 00:25:37,260 --> 00:25:38,746 Ik gebruik het veel. 513 00:25:38,746 --> 00:25:40,120 Is dat zinvol voor iedereen? 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 dus je taak now-- hetzij door zelf of met de mensen om u krijge 517 00:25:46,530 --> 00:25:54,930 is om gewoon te schrijven een eenvoudig programma dat zal gewoon schrijven "Hallo, wereld!" 518 00:25:54,930 --> 00:25:56,255 uit naar een bestand. 519 00:25:56,255 --> 00:26:00,215 >> [Onverstaanbaar] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Onverstaanbaar] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: Ik was als, deed Ik doe dat slecht afgelopen week? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Ik wist niet dat het zo erg was. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Ik ben blij dat u allen hier bent. 527 00:27:03,520 --> 00:27:04,655 Het maakt me echt blij. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Ik ben een meisje van eenvoudige genoegens. 530 00:27:10,160 --> 00:27:11,688 Ik net als toen mijn sectie bijwoont. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Dus ik ben net begonnen met deze voor jullie, zodat we samen kunnen coderen. 533 00:27:18,270 --> 00:27:22,290 Ik hou niet van het zetten iedereen op ter plaatse, tenzij je wilt zijn. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Publiek: voor de quiz, doen we hebben om een ​​programma te schrijven? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: U kunt gevraagd worden om schrijf eenvoudige programma's met de 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: De quiz is volgende week, toch? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: De quiz is volgende week woensdag. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Dat betekent dat er een mooie [? CSE?] indeling party achteraf, die 543 00:27:43,730 --> 00:27:50,390 betekent dat je je scores te krijgen terug dat nacht-- op welk moment? 544 00:27:50,390 --> 00:27:50,890 Wie weet? 545 00:27:50,890 --> 00:27:51,973 Maar het zal die nacht zijn. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Prima. 548 00:28:02,855 --> 00:28:04,250 Hoe gaan we dit willen beginnen? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Ik geef je een hint-- begint met dit. 551 00:28:09,630 --> 00:28:11,455 >> Publiek: Je moet een bestand te openen. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Ja. 553 00:28:12,250 --> 00:28:14,060 Dus wat wil je dit noemen? 554 00:28:14,060 --> 00:28:16,150 Wil je gewoon om het te noemen "bestand"? 555 00:28:16,150 --> 00:28:17,480 Laten we maken het u gemakkelijk. 556 00:28:17,480 --> 00:28:26,752 Dus fopen-- wat is onze output test gaat worden? 557 00:28:26,752 --> 00:28:36,130 Noem het "Hallo." 558 00:28:36,130 --> 00:28:37,810 En wat is onze mode? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Wat moeten we doen om dit bestand? 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 Schrijven. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: We schrijven naar het. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lovely. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, dus we hebben nu dit bestand. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Wat moeten we doen? 572 00:28:56,212 --> 00:28:57,420 Publiek: Controleer of het is null. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Controleer of het is precies null--. 574 00:28:59,820 --> 00:29:01,980 Dat is wat ik graag horen. 575 00:29:01,980 --> 00:29:05,930 Dat moet automatisch zijn, vooral vrij veel vanaf dit punt. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Als je segfaulting, u waarschijnlijk beginnen niet controleren op null ergens. 578 00:29:10,950 --> 00:29:12,480 Negen van de tien keer, dat is gaat om uw fout te zijn. 579 00:29:12,480 --> 00:29:15,400 Dus als je gewoon zou kunnen krijgen in de gewoonte, altijd controleren of het null, 580 00:29:15,400 --> 00:29:18,150 je leven gaat worden mooi en easy-- of makkelijker. 581 00:29:18,150 --> 00:29:19,480 >> Dus check om te zien of het is null. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Dus als het niet null, die is wat de knal gelijk 584 00:29:24,820 --> 00:29:26,784 means-- niet null-- deze geldig is. 585 00:29:26,784 --> 00:29:27,700 Wat willen we doen? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 We willen gewoon afdrukken naar dat bestand, toch? 588 00:29:31,570 --> 00:29:32,923 Dus wat gaan we gebruiken? 589 00:29:32,923 --> 00:29:34,092 >> Publiek: Fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- mooi. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 En fprintf duurt twee arguments-- waar het gaat en wat we willen gedrukt. 593 00:29:44,000 --> 00:29:45,820 Dus wat is het eerste? 594 00:29:45,820 --> 00:29:46,570 Waar gaat het naartoe? 595 00:29:46,570 --> 00:29:47,490 >> Publiek: Bestand. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Het gaat naar bestand. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 En wat willen we gedrukt? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Hallo, wereld!" 601 00:29:58,065 --> 00:29:58,565 Prima. 602 00:29:58,565 --> 00:30:03,670 We hebben nog een laatste thing-- een andere grote paradigma hier. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Publiek: Sluiten. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Sluiten. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Daar ga je. 608 00:30:10,540 --> 00:30:13,384 >> Publiek: Is dit het gebeuren als het bestand is null? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Nee, dit is als het niet null. 610 00:30:15,050 --> 00:30:16,881 PUBLIEK: Oh, als het niet-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Voor de fopen en vervolgens de twee argumenten die naar binnen gaan, 613 00:30:25,410 --> 00:30:27,655 wat doet het eerste argument betekenen weer? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: Het argument is evenals de naam van het bestand 615 00:30:30,392 --> 00:30:31,350 die u wilt gaan. 616 00:30:31,350 --> 00:30:36,020 Dus na dit loopt, zou je hebben een aantal bestand genaamd "hello" 617 00:30:36,020 --> 00:30:38,320 dat "Hallo, wereld" had binnen het. 618 00:30:38,320 --> 00:30:38,820 Dat is alles. 619 00:30:38,820 --> 00:30:39,500 Alleen de naam. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Publiek: En omdat het schrijven, de bestand hoeft niet te bestaan. 622 00:30:48,650 --> 00:30:49,675 Is dat wat je zegt? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Recht. 624 00:30:50,410 --> 00:30:50,910 Precies. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Als "Hello" als een bestand bestaat nog niet, het is 627 00:30:55,839 --> 00:30:58,380 gaan naar een bestand met de naam te maken Hello "en schrijf het voor je. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> PUBLIEK: Als je vertelt het programma om een ​​brief aan het bestand, 630 00:31:03,610 --> 00:31:08,075 waarom schrijf je "file" in plaats van de naam van het bestand en fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Omdat in dit geval, we hebben dat grote FILE-- alle in caps-- ster, 632 00:31:13,600 --> 00:31:14,260 bestand. 633 00:31:14,260 --> 00:31:17,370 Dus het is een verwijzing naar het bestand dat je het over hebt. 634 00:31:17,370 --> 00:31:19,930 Dit is de manier waarop we alleen verwijzen naar het. 635 00:31:19,930 --> 00:31:24,850 Dus in dit geval, je kan bedenken file-- aha, 636 00:31:24,850 --> 00:31:31,271 kunnen we dit-- bestand hier gebruiken verwijst naar de opening van "Hello" 637 00:31:31,271 --> 00:31:32,145 en ze te laten schrijven. 638 00:31:32,145 --> 00:31:34,728 >> Publiek: Kunnen we een "Hello" plaats [? van slechts?] f-bestand? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Nee, want "Hello" moet open en beschrijfbaar te zijn. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Bestand hier is als een aanduiding die OK zegt, we 642 00:31:45,980 --> 00:31:49,190 hebben deze file-- hello-- dat we naar kijken. 643 00:31:49,190 --> 00:31:50,680 Het is geopend. 644 00:31:50,680 --> 00:31:52,140 En we gaan schrijven. 645 00:31:52,140 --> 00:31:55,130 Als je gewoon gebruik maken van "Hello", dat is ingekapseld in. 646 00:31:55,130 --> 00:31:56,846 Dus het gaat flippen. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Ik bedoel, je zou kunnen hebben genoemd. 649 00:32:00,300 --> 00:32:03,960 Je zou het bestand hebben gedaan, ster, "Hello", gelijk aan dat. 650 00:32:03,960 --> 00:32:07,840 Maar het hele punt is dat je hebben behoefte aan een bestand ster pointer om 651 00:32:07,840 --> 00:32:09,281 kunnen deze functies. 652 00:32:09,281 --> 00:32:11,280 Publiek: Kun je bestand, ster, file, "Hello" 653 00:32:11,280 --> 00:32:13,113 of heb je te zetten bestand ster, file door het? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Je zou doen bestand, ster, "Hallo." 655 00:32:16,330 --> 00:32:19,790 U kunt dit wijzigen in welke naam je wilt. 656 00:32:19,790 --> 00:32:22,114 Het is volkomen willekeurig wat die naam is. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Je kunt het noemen wat dan ook. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Noem het vliegende spaghetti, als je wilde. 661 00:32:28,020 --> 00:32:29,690 >> Publiek: Wat is de "w" tussen aanhalingstekens voor? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: De "w" is gewoon de mode. 663 00:32:31,540 --> 00:32:33,170 Dus we schrijven naar dit bestand. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Iedereen goed? 666 00:32:35,320 --> 00:32:36,227 Duidelijk? 667 00:32:36,227 --> 00:32:36,981 Ja. 668 00:32:36,981 --> 00:32:40,365 >> Publiek: Dus als het schrijft dit file, waar vinden we dan dat bestand? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: Het zal in dezelfde directory die je op dat moment bent. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Als je in pset drie en u dit, lopen binnen uw pset 672 00:32:48,880 --> 00:32:52,600 drie map gaat worden Dit bestand genaamd "Hallo." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Iedereen goed? 675 00:32:53,757 --> 00:32:55,840 Ik heb het gevoel alsof je alles het krijgen van het, dat is geweldig. 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 Dus terug naar mijn dia show-- Ik hou als de dingen werken. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Zijn jullie opgewonden? 680 00:33:08,674 --> 00:33:09,465 Pointers zijn geweldig. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Ze nemen een klein beetje om je hoofd wikkelen rond. 683 00:33:13,580 --> 00:33:15,288 Dit is mijn tweede jaar onderwijs pointers. 684 00:33:15,288 --> 00:33:16,850 En ik denk dat ik het eindelijk. 685 00:33:16,850 --> 00:33:18,650 Dus als je moeite, het is OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Zoals ik al eerder zei, tekeningen te maken helpt veel met dingen in het CS, 688 00:33:24,070 --> 00:33:27,400 zo veel als ik denk dat mensen de neiging te denken oh, we zijn op een computer. 689 00:33:27,400 --> 00:33:28,399 We moeten gewoon code. 690 00:33:28,399 --> 00:33:30,190 No-- tekeningen te maken zal je echt helpen. 691 00:33:30,190 --> 00:33:32,773 En ik u aanmoedigen om boren in uw kleuter kant 692 00:33:32,773 --> 00:33:35,010 en brengen kleurpotloden of markers en draw. 693 00:33:35,010 --> 00:33:36,110 Want het zal u helpen. 694 00:33:36,110 --> 00:33:39,380 En als je me ziet op kantooruren, I zal de uitvoering rond stapels papier 695 00:33:39,380 --> 00:33:41,580 met pennen tekenen dingen uit. 696 00:33:41,580 --> 00:33:44,370 >> Dus vooral pointers-- tekeningen maken. 697 00:33:44,370 --> 00:33:47,970 En ik weet zeker dat we daadwerkelijk gaan zijn enkele foto's trekken hier ook. 698 00:33:47,970 --> 00:33:51,270 >> Dus jullie allemaal om Binky te zien, deze coole claymation ding. 699 00:33:51,270 --> 00:33:54,720 En we denken dat het is echt grappig wanneer hij explodeert in een bos van stukken. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Het is wat comic relief voor de klas. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [onverstaanbaar] deze grote capaciteit kunnen geheugen controleren. 704 00:34:05,900 --> 00:34:10,090 En het is een van de dingen die echt maakt het zo'n krachtige taal. 705 00:34:10,090 --> 00:34:13,469 Maar met grote kracht komt grote verantwoordelijkheid. 706 00:34:13,469 --> 00:34:16,230 En gekke dingen kunnen gebeuren als je niet oppast. 707 00:34:16,230 --> 00:34:18,560 Dus wanneer u gebruik maakt pointers, je wilt maken 708 00:34:18,560 --> 00:34:21,440 ervoor dat je echt begrijpt precies wat je aan het doen bent. 709 00:34:21,440 --> 00:34:25,530 Hopelijk is het volgende stukje de tijd zal je helpen echt te begrijpen 710 00:34:25,530 --> 00:34:27,850 wijzers, hoe ze te gebruiken, en hoe ze te manipuleren. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Dus memory-- Ik weet zeker dat we hebben eerder gezien dit diagram. 713 00:34:33,460 --> 00:34:38,540 Dus dit is gewoon een simpel schema van hoe de dingen zouden kunnen worden opgeslagen geheugen. 714 00:34:38,540 --> 00:34:43,145 Zodat u in principe hebben deze grote arrays van één byte blokken 715 00:34:43,145 --> 00:34:46,000 is wat we hebben hier-- lichte stappen telkens met één. 716 00:34:46,000 --> 00:34:51,810 Dit is in hex [onverstaanbaar] dus acht-bit blokken. 717 00:34:51,810 --> 00:34:55,510 En elk blok wordt geassocieerd met enkele hexadecimaal adres. 718 00:34:55,510 --> 00:34:58,750 Dus als je ooit de 0x, dat is gewoon het noteren 719 00:34:58,750 --> 00:35:00,670 dat het een hexadecimaal adres. 720 00:35:00,670 --> 00:35:03,970 U kunt ervan uitgaan dat betekent sommige adres in het geheugen. 721 00:35:03,970 --> 00:35:06,935 We hebben het over geheugenadressen wanneer je ziet hexadecimaal. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> We hebben integers zijn variabelen praalwagens zijn variabelen die op te slaan. 724 00:35:14,630 --> 00:35:16,260 Dus ints store ints. 725 00:35:16,260 --> 00:35:17,430 Praalwagens winkel drijft. 726 00:35:17,430 --> 00:35:20,260 Dus hebben we ook pointers die winkel geheugenadressen. 727 00:35:20,260 --> 00:35:21,660 Dat is een soort van mapping. 728 00:35:21,660 --> 00:35:24,240 Pointers zijn uitsluitend voor geheugenadressen. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Dus dat is net als uw type er. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Het apparaat is 32 bits, hetgeen betekent dat je geheugen adres is vier bytes. 733 00:35:34,470 --> 00:35:37,830 Dus elke pointer die je hebt gaat ook zijn vier bytes. 734 00:35:37,830 --> 00:35:43,200 Of anders als het vier bytes, geheugen is vier bytes. 735 00:35:43,200 --> 00:35:44,790 Pointers store geheugen. 736 00:35:44,790 --> 00:35:46,430 Daarom, ze zijn vier bytes. 737 00:35:46,430 --> 00:35:48,460 Cool-- wil gewoon dat versterken. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> U dient deze comic nu krijgen. 740 00:35:52,220 --> 00:35:55,040 Ik weet niet hoeveel van jullie zijn xkcd fans, maar ik hou van xkcd. 741 00:35:55,040 --> 00:35:55,780 Het is geweldig. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Prima. 744 00:35:57,790 --> 00:36:01,640 Dus het creëren pointers-- zoals ik al zei, het is vrijwel net iets anders willen. 745 00:36:01,640 --> 00:36:02,930 Je hebt een type. 746 00:36:02,930 --> 00:36:04,050 Je hebt een naam. 747 00:36:04,050 --> 00:36:04,810 Right? 748 00:36:04,810 --> 00:36:10,410 Dat is wat we daar hebben. [? Hex?] Ster betekent dat het een pointer, 749 00:36:10,410 --> 00:36:12,250 en dan wat je ook wilt noemen. 750 00:36:12,250 --> 00:36:15,770 Dus het type vertegenwoordigt wat u kunt opslaan. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Oké? 753 00:36:17,990 --> 00:36:24,350 Op dezelfde manier als we integers doen, we weten dat we een int opslaan daar. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Met een pointer, het heeft een geheugen adres. 756 00:36:30,280 --> 00:36:34,240 Maar wat het betekent dat-- is hier is waar een tekening zal van pas komen. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Dus in dit geval, we hebben sommige value-- laten we zeggen vier. 759 00:36:45,980 --> 00:36:49,306 Vier is op het adres één. 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 >> Dit eerste betekent hier dat het een pointer 2x. 763 00:36:56,170 --> 00:36:56,740 Right? 764 00:36:56,740 --> 00:36:57,628 Het is wat wijzer x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x kan iets zijn, wat dan ook. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Wat x is-- zeggen x is vier. 769 00:37:05,130 --> 00:37:07,280 Het gaat om het op te slaan geheugenadres hier. 770 00:37:07,280 --> 00:37:12,260 Dus int, ster, x-- dit is een 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 het gaat hier een adres op te slaan. 773 00:37:15,430 --> 00:37:27,040 Dus dit like-- zou in dit geval dan ook, 774 00:37:27,040 --> 00:37:32,630 wordt opgeslagen 0x1-- wat er opgeslagen is op het adres dat onze pointer bevat, 775 00:37:32,630 --> 00:37:35,280 moet overeenkomen met wat wij hebben aangewezen. 776 00:37:35,280 --> 00:37:40,330 Dus op 0x1, in dit geval, dit is x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Dit kan alleen ooit een int terwijl we met behulp van deze. 779 00:37:49,340 --> 00:37:52,950 >> Evenzo, als we andere 1y, wat 780 00:37:52,950 --> 00:37:59,130 adres wordt opgeslagen met een y een char-- hetzelfde met z zijn. 781 00:37:59,130 --> 00:38:05,840 Op dezelfde manier, wanneer je proberen te doen inTX gelijk 0,4, 782 00:38:05,840 --> 00:38:09,275 het zal je schreeuwt en zijn als geen, je zei dat je een int wilde. 783 00:38:09,275 --> 00:38:10,525 Dit wordt verondersteld een int. 784 00:38:10,525 --> 00:38:11,900 Stop met het proberen om er een vlotter maken. 785 00:38:11,900 --> 00:38:14,150 >> Dus laten we de dingen zijn wat ze willen zijn. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Laat dingen zelf. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Zo groot ding is gewoon ongeacht het type pointer 790 00:38:23,450 --> 00:38:26,101 het is, dat is het enige wat je kunt daar op te slaan. 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 de praktijk, net als bij vorige week, alles 794 00:38:31,160 --> 00:38:32,817 lijkt echt een soort van abstract. 795 00:38:32,817 --> 00:38:34,150 We gaan wat oefening doen. 796 00:38:34,150 --> 00:38:36,760 Het zou logischer zijn. 797 00:38:36,760 --> 00:38:44,580 >> Dus verwijzen en dereferencing-- het is echt belangrijk om deze recht te krijgen. 798 00:38:44,580 --> 00:38:46,630 Ik heb nog steeds te vernieuwen zo nu en dan. 799 00:38:46,630 --> 00:38:48,450 En ik heb zoiets van wachten, die men wil ik? 800 00:38:48,450 --> 00:38:56,080 Dus de ampersand daadwerkelijk zal geven u de verwijzing of het adres van. 801 00:38:56,080 --> 00:39:00,100 Dus het adres in terugkeert geheugen waarvan waarde wordt opgeslagen. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Dus het gaat om daadwerkelijk terug te keren naar je een hexadecimale, terwijl dereferentie het 804 00:39:07,020 --> 00:39:10,641 er werkelijk gaande is om u de gegevens dat wordt opgeslagen. 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 Dus we gaan kijken naar een voorbeeld heel snel, of eigenlijk 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 Dus we moeten echt denken goed na over dit. 811 00:39:21,790 --> 00:39:23,860 Dus hier hebben we een aantal integer x. 812 00:39:23,860 --> 00:39:26,485 Ik ga proberen en trek deze uit om het beste van mijn kunnen. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Dus we gaan naar dit slot x hebben. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 En het is het opslaan van vijf. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Zijn 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 Allemaal goed. 822 00:39:44,100 --> 00:39:45,470 >> Dus nu hebben we deze pointer. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Het was meer dan hier. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 En de ampersand geeft ons het adres van iets. 827 00:39:57,560 --> 00:40:00,780 Dus, in dit geval is het adres van x. 828 00:40:00,780 --> 00:40:01,875 Wat is het adres van x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04 en deze wijzer 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 Zo kunt u denken aan deze wijzer, 04, wijst hier net voorbij. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 En ze pointers genoemd want naarmate we meer in deze, 837 00:40:25,740 --> 00:40:28,450 je gaat zien wijzen naar dingen. 838 00:40:28,450 --> 00:40:31,470 En een blok verwijzing naar een andere blok zal veel meer zin te maken. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Dus hier zijn twee. 841 00:40:33,890 --> 00:40:38,230 En dan hebben we een aantal blad, dat what-- 0x0c. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 En het gaat om dereferentie onze pointer. 844 00:40:43,420 --> 00:40:46,790 >> Dus wat het zegt is OK, hier is onze pointer. 845 00:40:46,790 --> 00:40:53,090 De waarde slaat is 0x04, En wat het is te zeggen is ga naar dit adres 846 00:40:53,090 --> 00:40:54,300 en vertel me wat er in zit. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Dus dat is effectief wat deze pijl aan het doen is. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Je kunt denken aan dit als je ster. 851 00:41:01,280 --> 00:41:05,410 Dus OK, als we ster doen, betekent het volgen. 852 00:41:05,410 --> 00:41:06,810 Ga naar dit adres. 853 00:41:06,810 --> 00:41:11,430 En dat is eigenlijk gewoon volgende deze pijl om dit geheugen brok. 854 00:41:11,430 --> 00:41:15,380 En geef ons wat er in zit, dat is 5. 855 00:41:15,380 --> 00:41:18,840 Het is de reden waarom onze kopie is gelijk aan 5. 856 00:41:18,840 --> 00:41:20,120 Heeft dat zin? 857 00:41:20,120 --> 00:41:22,769 Is er iemand die me nodig hebben om te gaan door dat opnieuw, of langzamer? 858 00:41:22,769 --> 00:41:24,560 Wil je dat ik ga door het nog 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 We gaan het weer opnieuw te tekenen. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Wanneer we beginnen, we het allemaal eens dat we hebben sommige brok van het geheugen dat is een variabele 864 00:41:37,205 --> 00:41:40,890 x dat we gelijk aan 5. 865 00:41:40,890 --> 00:41:42,910 Wij hebben geen controle over waar het in het geheugen. 866 00:41:42,910 --> 00:41:45,520 Dus deze plek is gewoon willekeurig toegewezen. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Goed 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 Vervolgens initialiseren we een pointer naar een int. 872 00:41:53,330 --> 00:41:56,900 Dat is waarom het is toegestaan ​​om te wijzen op x want we hebben een int in hier. 873 00:41:56,900 --> 00:42:00,840 We hebben nog een brok van geheugen omdat deze pointer 874 00:42:00,840 --> 00:42:03,485 is een variabele net als iets anders. 875 00:42:03,485 --> 00:42:06,615 Het is willekeurig toegewezen wat ruimte in het geheugen. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 En wat het slaat is het adres van x. 878 00:42:10,830 --> 00:42:13,200 Ampersand betekent het adres van x. 879 00:42:13,200 --> 00:42:14,575 Dus wat is het adres van x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Publiek: Het is zero-- 882 00:42:20,614 --> 00:42:21,280 SPEAKER 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Dus then-- laatste. 885 00:42:25,940 --> 00:42:30,650 We hebben een aantal copy-- weer gewoon een andere variabele. 886 00:42:30,650 --> 00:42:32,520 Dus laten toewijzen enkele willekeurige plaats. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 En we dereferentie onze pointer. 889 00:42:38,080 --> 00:42:42,490 De ster betekent ga naar de adres opgeslagen in mijn pointer. 890 00:42:42,490 --> 00:42:44,480 Vertel me wat er is. 891 00:42:44,480 --> 00:42:47,290 Dus het adres opgeslagen in onze pointer is 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Dus gaan we naar dat adres. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Het wijst naar dat adres. 896 00:42:54,590 --> 00:42:57,481 Wat zit er in dit geheugen blok? 897 00:42:57,481 --> 00:42:57,980 Het is een vijf. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Dus dat is wat we onze kopie toe te wijzen. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Iedereen goed? 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. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Dus het bijhouden van de waarden hier-- ik ben zal laten jullie denken over dit. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 We kunnen nog een foto te trekken. 909 00:43:27,750 --> 00:43:31,260 Maar ik wil u om te proberen en reden door deze op uw eigen voor een minuut. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Omdat ze niet geven ons een voorbeeld adres, 912 00:44:04,149 --> 00:44:06,940 Ik ga gewoon ampersand x-- doen die moeten helpen te rijden naar huis. 913 00:44:06,940 --> 00:44:07,950 Ampersand betekent adres. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Dus in de eerste iedereen gaan met de eerste lijn. 916 00:44:12,360 --> 00:44:15,690 Sommige x set's five-- sommige willekeurige sleuf in het geheugen. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int ster pointer is gelijk aan het adres van x, toch? 919 00:44:23,200 --> 00:44:28,180 Int ster pointer creëert dit blok, noemt het wijzer, 920 00:44:28,180 --> 00:44:30,650 en wijst deze toe aan het adres van x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Ik ben slecht in ampersands. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Nu wat we doen is dat we zeggen OK, dereferentie onze pointer. 925 00:44:40,550 --> 00:44:42,760 Dus we gaan OK, wat er in onze pointer? 926 00:44:42,760 --> 00:44:44,820 Het is ampersand x. 927 00:44:44,820 --> 00:44:49,400 Ga naar ampersand x en ken het. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Dus nu wordt ampersand x gaat worden 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Dus eigenlijk, als je dereferentie, ga je op OK. 932 00:45:05,174 --> 00:45:07,090 Je gaat om te tekenen foto's als deze. 933 00:45:07,090 --> 00:45:09,423 Je gaat om te tekenen uw pijlen dan waar het is. 934 00:45:09,423 --> 00:45:16,030 Dus, ga naar deze sleuf in het geheugen en ofwel geef mij die waarde terug, of wijzigen. 935 00:45:16,030 --> 00:45:21,620 In dit geval, omdat we op deze waarde, we zijn toe te wijzen aan zijn 35. 936 00:45:21,620 --> 00:45:24,700 Overwegende dat in de laatste één, als u merkt, we 937 00:45:24,700 --> 00:45:27,680 werden toewijzen wat was in hier om iets anders. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Dus ze hebben deze geweldige tafel. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Het is niet zo slecht. 942 00:45:36,890 --> 00:45:37,970 Jullie werken. 943 00:45:37,970 --> 00:45:39,640 Ik ga het uit te tekenen op het bord. 944 00:45:39,640 --> 00:45:41,306 We gaan het samen invullen, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Dus pak wat papier, grab een partner, beginnen met werken. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Ik ga naar een te krijgen groter stuk van krijt. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Omdat het gaat om een ​​stuk te zijn. 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 Laten we beginnen met de eerste rij. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 We zullen er starten, dan jullie kan misschien werken door middel van wat meer. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 a is gelijk aan b keer c dus wat is een? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Het is geen strikvraag, dat beloof ik. 963 00:48:23,260 --> 00:48:24,440 >> STUDENT: 4 maal 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESSOR: 4 maal 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Dus 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 gewoon gaan worden ampersand a, ampersand b, 974 00:48:35,960 --> 00:48:38,575 ampersand c, toch? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Niet slecht. 977 00:48:40,596 --> 00:48:42,081 Het is eenvoudig genoeg. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Dus de volgende. 980 00:48:44,300 --> 00:48:48,725 A gelijk is aan een keer c, indien iedereen was onbekend met dat. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Is iedereen vertrouwd met de tijd gelijk? 983 00:48:53,300 --> 00:49:00,105 OK, dit alles means-- dit afkorting voor een gelijk een keer c. 984 00:49:00,105 --> 00:49:04,840 Je kunt het ook doen met verdeeldheid, met toevoeging met aftrekken. 985 00:49:04,840 --> 00:49:12,130 Je kunt doen een gelijken, of een plus evenaart c : een gelijk een plus c, a minus gelijk 986 00:49:12,130 --> 00:49:15,190 c zou een gelijk een min c. 987 00:49:15,190 --> 00:49:16,690 Het is gewoon syntactische suiker. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Dus, in dit geval, a gelijk aan een keer c zou ons wat te geven? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Nogmaals, niet een strikvraag. 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 Heeft iets anders veranderen? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Nee 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Misschien dat ik eindelijk beter bij mijn ampersands. 999 00:49:39,850 --> 00:49:42,047 >> STUDENT: OK, sorry, hoe heb je 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESSOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Dus gelijk aan een c keer, dus een maal c. 1002 00:49:46,594 --> 00:49:48,510 STUDENT: Oh, je bent met behulp van een voor de previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESSOR: Ja. 1004 00:49:49,135 --> 00:49:51,450 Dus dit zijn onze meest recente waarden. 1005 00:49:51,450 --> 00:49:53,990 Dit zijn wat je zou moeten zijn gebruik als we naar beneden te verplaatsen, op OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Dus, b is het enige wat veranderen, toch? 1008 00:50:01,520 --> 00:50:02,910 Dus laten we in al het andere vullen. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Wat is b zal worden? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Om te zijn of niet te zijn. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Dus wat is dit? 1015 00:50:20,240 --> 00:50:21,605 Wat is de ster pa aan het doen? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> STUDENT: Code naar de locatie van pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> STUDENT: Nee, niet helemaal. 1020 00:50:27,480 --> 00:50:29,470 Dus dit is een d referentie. 1021 00:50:29,470 --> 00:50:31,580 >> STUDENT: Dus b is handed waarde van pa. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESSOR: Ja, dus pa is het adres van een, toch? 1023 00:50:37,340 --> 00:50:42,430 Dus het zegt ga naar waar een is opgeslagen en geef het die waarde. 1024 00:50:42,430 --> 00:50:43,884 Dus 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 Perfect. 1028 00:50:47,450 --> 00:50:49,879 OK, dus pc is wat er aan het veranderen. 1029 00:50:49,879 --> 00:50:51,170 Al het andere blijft hetzelfde. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Wat is pc gaat worden? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Eenvoudige opdracht. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc is gelijk aan pa, en wat is pa? 1036 00:51:05,990 --> 00:51:07,049 >> STUDENT: Ampersand een. 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 Nu komen we interessant. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, laten we breken deze af. 1042 00:51:15,230 --> 00:51:21,110 Ten eerste, wat is b keer c, want dat is het makkelijke gedeelte van deze, toch? 1043 00:51:21,110 --> 00:51:22,360 B maal C is-- 1044 00:51:22,360 --> 00:51:23,320 >> STUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESSOR: Ja, dus wat dit doet, 1046 00:51:28,880 --> 00:51:33,705 als de star pb, wat aan het veranderen? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> STUDENT: Wat zit er in the-- 1049 00:51:37,242 --> 00:51:38,200 Hoogleraar: Wat zit er in b? 1050 00:51:38,200 --> 00:51:41,340 STUDENT: Wat zit er in de ruimte dat pb wijst. 1051 00:51:41,340 --> 00:51:43,406 PROFESSOR: En pb wijst to-- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESSOR: B. Dus de enige ding veranderen is b, rechts. 1054 00:51:46,740 --> 00:51:50,800 Dus b tijden c, 500. 1055 00:51:50,800 --> 00:51:52,367 Dus dat is wat nu verandert. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Cool. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lovely. 1060 00:52:00,840 --> 00:52:01,905 Jullie doen het uitstekend. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Oké, het breken van deze naar beneden. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C is aan het veranderen, toch? 1065 00:52:09,630 --> 00:52:11,530 Zo kunnen we in al het andere vullen. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Laten we eens kijken. 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 We weten dat c gaat het worden product van twee getallen, toch? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Welke twee getallen, hoewel? 1074 00:52:27,980 --> 00:52:28,970 >> STUDENT: A en C? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESSOR: Dus een is goed voor de eerste. 1076 00:52:31,930 --> 00:52:34,385 Dus we d verwijzingen p van een, toch? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P van een puntensysteem om een, dus we weten dat dit gaat om 100 keer wat? 1079 00:52:42,870 --> 00:52:46,232 Keer wat doet pc wijs? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Wijst op een. 1082 00:52:48,740 --> 00:52:55,038 Dus 100 maal 100 is 10.000. 1083 00:52:55,038 --> 00:52:56,170 Is dat zinvol? 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 Loodjes, jongens, laatste rij. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Wat is hier het veranderen? 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, dus al het andere kan hetzelfde blijven. 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 een? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Dus het is een keer 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 Dus ster pb betekent hier is pb, pb punten 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 Dus hebben we 500 keer 100. 1103 00:53:39,236 --> 00:53:41,758 Dat is 50.000. 1104 00:53:41,758 --> 00:53:43,216 Oef! 1105 00:53:43,216 --> 00:53:45,646 Kijk naar die. 1106 00:53:45,646 --> 00:53:47,982 >> STUDENT: Waarom hebben we de & C voor de last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESSOR: Sorry. 1108 00:53:48,690 --> 00:53:50,080 STUDENT: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESSOR: Mijn slecht. 1110 00:53:51,600 --> 00:53:52,890 Veel schrijven. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Iedereen goed? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Niet slecht, toch? 1115 00:53:56,660 --> 00:53:58,490 Duurt alleen een beetje terwijl doorwerken. 1116 00:53:58,490 --> 00:54:01,080 Als je het af te breken, begrijpen wat elk onderdeel 1117 00:54:01,080 --> 00:54:03,197 verwijst to-- als met alles wat het is, 1118 00:54:03,197 --> 00:54:05,780 yes-- af te breken naar de kleine problemen en vervolgens recombineren, 1119 00:54:05,780 --> 00:54:07,345 en je kunt een aantal geweldige dingen te doen. 1120 00:54:07,345 --> 00:54:08,970 Er zijn de antwoorden, maar we deden dat. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Pointer rekenkunde. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Mijn handen zijn allemaal krijtachtige. 1126 00:54:15,510 --> 00:54:17,970 Dus het optellen of aftrekken int past de aanwijzer 1127 00:54:17,970 --> 00:54:21,890 door de grootte van het type pointer. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Weet je nog hoe elk type heeft een ander formaat? 1130 00:54:28,390 --> 00:54:34,890 Dus als een dubbele of een lange lange wil acht en int is vier maar char is één. 1131 00:54:34,890 --> 00:54:38,360 >> Dus wat je wilt doen is-- één ding om te onthouden 1132 00:54:38,360 --> 00:54:44,080 is alleen dat hoeveel uw pointer waarde daadwerkelijk verandert 1133 00:54:44,080 --> 00:54:46,550 zal afhangen van de type pointer is. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Iedereen goed met dit? 1136 00:54:51,820 --> 00:54:52,760 Kan ik wist het? 1137 00:54:52,760 --> 00:54:53,440 We zijn 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 >> Dus als we wat wijzer dat-- dit gaat be-- ik ben 1141 00:55:07,501 --> 00:55:08,834 ga het een int pointer maken. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Slaat dit. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Als je zou wijzer zeggen plus één, wat het gaat doen 1146 00:55:20,170 --> 00:55:23,420 is dat het gaat om te werken door de grootte van een int 1147 00:55:23,420 --> 00:55:25,950 want dat is de type pointer is. 1148 00:55:25,950 --> 00:55:28,260 >> Met C, is alles zeer strenge en gereguleerd. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 De int pointer zal werken door de ruimte int zou nemen. 1151 00:55:35,260 --> 00:55:36,260 Een int is vier bytes. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Dus wat zou dit veranderen in? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Je bent gewoon het toevoegen van vier op dit. 1156 00:55:44,390 --> 00:55:50,040 Nu je wijzer zou be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Dus als het een char en we deden pointer plus één, wat zou het zijn nu? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Als het started-- doen alsof we started-- nu is het 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Laten we nu zeggen dat dit een char pointer, en voegden we een. 1163 00:56:10,850 --> 00:56:11,850 Wat zou er veranderen aan? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Hoeveel bytes is een char? 1166 00:56:16,030 --> 00:56:16,680 >> Publiek: One. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: One. 1168 00:56:17,304 --> 00:56:18,309 Publiek: Dus 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Dus het zou zijn negen. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Dus gewoon iets om te onthouden. 1172 00:56:23,820 --> 00:56:28,340 Net wanneer je een toe te voegen, het is niet het toevoegen van één tenzij het een char. 1173 00:56:28,340 --> 00:56:34,190 Het toevoegen van hoeveel bytes van het type dat is, 1174 00:56:34,190 --> 00:56:36,960 dat is waarom we hebben deze vergelijking hier. 1175 00:56:36,960 --> 00:56:40,190 Dus het is int keer zo groot van het type pointer. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Dus we hebben hier het voorbeeld. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y werd toegewezen aan die waarde, 0x4, toen we y plus gelijk aan één. 1180 00:56:54,430 --> 00:56:56,830 Wat er in zit, wat is x, niet verandert. 1181 00:56:56,830 --> 00:56:58,610 Wat wel verandert is wat er in y. 1182 00:56:58,610 --> 00:57:04,980 Het adres opgeslagen in y bijgewerkt door vier omdat er vier bytes per int 1183 00:57:04,980 --> 00:57:06,097 en het is een int pointer. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Prima. 1186 00:57:07,790 --> 00:57:09,123 Dus nu hebben we een andere oefening. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Dus de vraag is wat er zal worden afgedrukt. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Het even welke ideeën? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Publiek: Het aantal personages in gelukkige kat? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Precies. 1194 00:57:44,490 --> 00:57:45,531 Dus graag met je string. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Krijgt iedereen dat? 1197 00:57:48,260 --> 00:57:49,509 Willen we er doorheen lopen? 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 Dus wat we hebben hier-- I dit zoals zo veel meer. 1201 00:57:57,385 --> 00:57:59,340 Ik hoef niet te [Onverstaanbaar] belachelijk. 1202 00:57:59,340 --> 00:58:01,690 >> Dus hebben we onze reeks hier, tevreden kat. 1203 00:58:01,690 --> 00:58:02,950 Lovely. 1204 00:58:02,950 --> 00:58:05,080 We hebben een aantal teller die we zijn het bijhouden van. 1205 00:58:05,080 --> 00:58:11,430 Dus hebben we een aantal char * pointer die net is gelijk str stellen. 1206 00:58:11,430 --> 00:58:14,320 Wat dit doet is dat het het toewijzen van een aantal pointer 1207 00:58:14,320 --> 00:58:16,380 aan het begin van je string. 1208 00:58:16,380 --> 00:58:19,840 Want ik weet zeker dat, als het werd in collegezaal genoemd, 1209 00:58:19,840 --> 00:58:22,290 We hebben u dit gegeven kerels datatype genaamd string. 1210 00:58:22,290 --> 00:58:29,070 >> Maar echt snaren zijn slechts een array van-- als char *. 1211 00:58:29,070 --> 00:58:32,330 Het is een pointer naar een stel tekens die aangrenzend zijn in het geheugen. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Dus dit zet het gewoon gelijk aan elke string is 1214 00:58:36,280 --> 00:58:38,980 geïdentificeerd door waar het eerste teken is. 1215 00:58:38,980 --> 00:58:42,710 Dus dit is gewoon de instelling een bepaald punt gelijk aan het begin van de string. 1216 00:58:42,710 --> 00:58:44,130 Iedereen goed daar? 1217 00:58:44,130 --> 00:58:44,960 Cool. 1218 00:58:44,960 --> 00:58:49,840 >> Dus dit is dereferentie onze pointer. 1219 00:58:49,840 --> 00:58:53,760 Dus het is eigenlijk gaat geef ons wat waarde in hier, 1220 00:58:53,760 --> 00:58:55,610 in onze reeks die we over praten. 1221 00:58:55,610 --> 00:58:58,342 En we zijn zo lang als zeggen het is niet null terminator. 1222 00:58:58,342 --> 00:59:00,550 Dus blijven gaan totdat je aan het einde van de string. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Update uw muisaanwijzer op een rijtje. 1225 00:59:04,190 --> 00:59:09,250 Dus r, zal het eigenlijk werken door een elke keer, want dit is een char, 1226 00:59:09,250 --> 00:59:09,820 de char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Dus het gaat om door te gaan. 1229 00:59:12,340 --> 00:59:13,290 Het gaat om te werken. 1230 00:59:13,290 --> 00:59:16,705 Dus de eerste keer dat dit wordt uitgevoerd, het gaat om hier op h. 1231 00:59:16,705 --> 00:59:17,590 Het gaat om te werken. 1232 00:59:17,590 --> 00:59:18,185 >> Het zal een een te zijn. 1233 00:59:18,185 --> 00:59:21,310 Het zal een p, y, en zo verder en zo voort. 1234 00:59:21,310 --> 00:59:22,300 We zullen teller updaten. 1235 00:59:22,300 --> 00:59:26,160 Wanneer het einde is bereikt, gewoon drukt hoe ver het is geworden. 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: Dus Het telt de ruimte als een, toch? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 1: denk het wel. 1242 00:59:35,222 --> 00:59:36,830 Is dat een question-- 1243 00:59:36,830 --> 00:59:37,746 >> Publiek: [onverstaanbaar]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Geen zorgen. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Dat ik dat doen. 1248 00:59:42,736 --> 00:59:47,710 Oké, dus een ding dat ik begrijpen dat met een array, 1249 00:59:47,710 --> 00:59:51,736 kunt u ook behandelen als een pointer omdat arrays zijn slechts 1250 00:59:51,736 --> 00:59:52,860 continue spots geheugen. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Dus u kunt het te behandelen op dezelfde manier. 1253 00:59:56,380 --> 00:59:59,000 Je kunt ze manipuleren met pointers, ook. 1254 00:59:59,000 --> 01:00:04,770 Dus in plaats van het doen van, in dit geval de analoge ding 1255 01:00:04,770 --> 01:00:07,490 zou matrix 0 gelijk aan 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Maar op dezelfde manier een string wordt bepaald 1258 01:00:15,210 --> 01:00:18,740 de start waar het eerste teken is, 1259 01:00:18,740 --> 01:00:22,270 een array wordt bepaald door waarbij het eerste element. 1260 01:00:22,270 --> 01:00:25,120 Omdat we weten, we zijn gegarandeerd, dat deze 1261 01:00:25,120 --> 01:00:27,985 zullen continu beschouwd geheugenblokken. 1262 01:00:27,985 --> 01:00:29,360 Dat is wat ons in staat stelt om dit te doen. 1263 01:00:29,360 --> 01:00:31,193 We weten dat ze continu geheugenblokken. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Dus in dit geval, door dereferentie gewoon array, die ons vertelt, 1266 01:00:36,500 --> 01:00:40,800 OK, ga dan naar de start van array, die hier is. 1267 01:00:40,800 --> 01:00:42,640 Zo kunt u instellen dat gelijk is aan één. 1268 01:00:42,640 --> 01:00:48,610 En in dit geval, wat de array type is, als je het vernieuwt door een, 1269 01:00:48,610 --> 01:00:50,830 dat is net als het updaten het naar de volgende index. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 U kunt dat doen omdat je weten wat er in uw array. 1272 01:00:56,360 --> 01:00:59,770 Hij weet dus hoe veel te update uw wijzer door, 1273 01:00:59,770 --> 01:01:02,925 welk adres om het zo te werken dat je bij het volgende slot. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Dus dit is gewoon een andere manier van schrijfmatrix 0 gelijk is aan 1, 1276 01:01:09,400 --> 01:01:15,114 serie 1 gelijk is aan 2, array beugel 2 is gelijk aan 3. 1277 01:01:15,114 --> 01:01:16,780 Het is gewoon een andere manier over na te denken. 1278 01:01:16,780 --> 01:01:19,600 Omdat ze voortdurend blokken in het geheugen, 1279 01:01:19,600 --> 01:01:21,830 U kunt verwijzen naar hen beide door de array notation-- 1280 01:01:21,830 --> 01:01:24,390 die ik persoonlijk vinden easier-- maar misschien 1281 01:01:24,390 --> 01:01:27,347 je nodig hebt om het te manipuleren strikt door geheugenadressen. 1282 01:01:27,347 --> 01:01:28,930 En dit is de manier waarop je dat zou doen. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Soort meer van als een cool ding je zou kunnen doen 1285 01:01:32,630 --> 01:01:35,213 versus misschien niet iets wat je bent daadwerkelijk gaan implementeren. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Ik gebruik het in 61. 1288 01:01:38,630 --> 01:01:41,710 Jullie waarschijnlijk niet nodig zorgen te maken over het te veel. 1289 01:01:41,710 --> 01:01:43,693 Maar als je geïnteresseerd bent, nemen 61 volgend jaar. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 We zitten in de laatste loodjes jongens. 1292 01:01:46,560 --> 01:01:47,510 Ik weet het, het is lang. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic Memory Allocation-- dus we weten dat één 1295 01:01:58,880 --> 01:02:01,790 dingen toen we spraken tijdens onze eerste deel samen, 1296 01:02:01,790 --> 01:02:04,560 we keken naar een swap functie waarbij het 1297 01:02:04,560 --> 01:02:08,010 buiten de reikwijdte van onze belangrijkste functie. 1298 01:02:08,010 --> 01:02:14,370 En we waren op doorreis in deze waarden die effectief waren kopieën. 1299 01:02:14,370 --> 01:02:20,570 >> En zodra swap klaar uitvoeren, het is gewoon liet een stapel. 1300 01:02:20,570 --> 01:02:22,830 Vergeet niet, we hebben een stack frame voor swap. 1301 01:02:22,830 --> 01:02:26,070 Laat en die waarden verlaten met het. 1302 01:02:26,070 --> 01:02:27,050 En weg waren ze. 1303 01:02:27,050 --> 01:02:28,615 We konden niets doen met hen en we waren triestig 1304 01:02:28,615 --> 01:02:29,989 want we kunnen niet onze waarden te wisselen. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Maar met C, zoals ik al zei, je hebben veel macht over het geheugen. 1307 01:02:36,560 --> 01:02:43,310 Dus wat je kunt doen is dat je kunt dingen wijzen op de hoop hier 1308 01:02:43,310 --> 01:02:46,830 dat zal daar blijven tot je ze anders vertellen. 1309 01:02:46,830 --> 01:02:48,280 >> Ze zijn als goede kinderen. 1310 01:02:48,280 --> 01:02:49,150 Ze blijven daar. 1311 01:02:49,150 --> 01:02:50,270 Ze niet vertrekken. 1312 01:02:50,270 --> 01:02:52,750 Ze zullen daar blijven tot je als, OK, je weg kan gaan. 1313 01:02:52,750 --> 01:02:55,920 >> Overwegende dat dingen op de stapel, who-- ze zijn als stoute kinderen. 1314 01:02:55,920 --> 01:02:59,160 Ze zullen gewoon weglopen wanneer je wilt om daar te zijn en dan zijn ze weg. 1315 01:02:59,160 --> 01:03:00,160 Je kunt ze niet terug te krijgen. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Dus de hoop is-- wij gaan praten over malloc en gratis, die 1318 01:03:07,187 --> 01:03:08,895 Ik weet zeker dat jullie gehoord in collegezalen. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 En dat is eigenlijk een manier als zeer persistent data hebben. 1321 01:03:14,210 --> 01:03:18,920 Dus u kunt de gegevens met rond zo lang als je wilt. 1322 01:03:18,920 --> 01:03:19,546 Mhm. 1323 01:03:19,546 --> 01:03:21,475 >> Publiek: Kunt u hoop te definiëren en te stapelen? 1324 01:03:21,475 --> 01:03:24,030 Zijn ze willen plaatsen om dingen te zetten? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Dus ze zijn principe gewoon-- ze 1326 01:03:26,630 --> 01:03:29,530 de manier verwijzen we gewoon naar het geheugen. 1327 01:03:29,530 --> 01:03:37,300 Dus hoop is gewoon plaatst waar geheugen wordt dynamisch toegewezen, 1328 01:03:37,300 --> 01:03:40,960 terwijl stack verwijst meer frames stapelen 1329 01:03:40,960 --> 01:03:45,950 die meer centraal in de functies die daadwerkelijk worden uitgevoerd. 1330 01:03:45,950 --> 01:03:47,200 Je hoeft niet echt controle. 1331 01:03:47,200 --> 01:03:50,690 >> Het grote verschil, je hebt controle over de hoop als je wilt. 1332 01:03:50,690 --> 01:03:52,710 Je hebt minder controle over de stapel. 1333 01:03:52,710 --> 01:03:55,030 De stapel is afhankelijk van de functies die worden uitgevoerd, 1334 01:03:55,030 --> 01:03:58,320 en de volgorde waarin zij lopen, en hoe de dingen worden geretourneerd. 1335 01:03:58,320 --> 01:04:01,290 Overwegende dat met de hoop, zoals we zullen zien, kun je zeggen, 1336 01:04:01,290 --> 01:04:06,639 OK, ik wil deze waarde te zijn rond totdat ik je vertellen anders. 1337 01:04:06,639 --> 01:04:08,180 Het is niet toegestaan ​​om zich te ontdoen van het. 1338 01:04:08,180 --> 01:04:09,300 Het is niet toegestaan ​​om het te negeren. 1339 01:04:09,300 --> 01:04:11,675 Je gaat om het rond te houden voor zo lang als ik je vertellen. 1340 01:04:11,675 --> 01:04:15,780 U krijgt om de baas te zijn in de hoop, terwijl de stack-- misschien als je 1341 01:04:15,780 --> 01:04:18,080 zoals finagle je weg kunt u de baas zijn. 1342 01:04:18,080 --> 01:04:19,340 Maar niet helemaal. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 En het is eigenlijk gewoon geheugen. 1345 01:04:22,070 --> 01:04:24,260 Het is gewoon verschillende manieren verwijzen naar het geheugen. 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 Dus met dat, hoe de controle van uw geheugen. 1349 01:04:28,630 --> 01:04:32,070 Het is met malloc, die je gaat krijgen om te gebruiken. 1350 01:04:32,070 --> 01:04:37,100 Dus het is gewoon kort voor het toewijzen van geheugen. 1351 01:04:37,100 --> 01:04:38,459 Dat is alles wat het is. 1352 01:04:38,459 --> 01:04:41,250 Er is een heleboel andere leuke functies alloc aan het eind, 1353 01:04:41,250 --> 01:04:42,750 en ze staan ​​voor verschillende dingen. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Dus als je opslag nodig hebt dat moet om uw huidige functie langer meegaat dan zo 1356 01:04:49,050 --> 01:04:51,010 dat wanneer uw huidige functie loopt weg, 1357 01:04:51,010 --> 01:04:55,774 je nog steeds de gegevens die u kreeg van het, u wilt malloc gebruiken. 1358 01:04:55,774 --> 01:04:57,190 Dat zal het initialiseren op de heap. 1359 01:04:57,190 --> 01:05:00,140 En zoals ik al zei en bewaar zeggen, dat je het daar te houden 1360 01:05:00,140 --> 01:05:03,050 totdat je het anders vertellen, dat is het belangrijkste hier. 1361 01:05:03,050 --> 01:05:08,450 >> Dus een ding om op te merken, en dat is meestal echt belangrijk, 1362 01:05:08,450 --> 01:05:13,620 dat deze sizeof is super handig om te gebruiken 1363 01:05:13,620 --> 01:05:16,440 omdat afhankelijk van het type van machine je draait, 1364 01:05:16,440 --> 01:05:22,470 kan variërende hoeveelheden hebben van het geheugen dat het duurt. 1365 01:05:22,470 --> 01:05:26,870 Zodat u altijd wilt gebruiken grootte van zo dat je machine afhankelijke niet bent, 1366 01:05:26,870 --> 01:05:30,300 zodat uw code zal draaien op een machine. 1367 01:05:30,300 --> 01:05:32,360 >> En dat is slechts een deel van het schrijven van goede code. 1368 01:05:32,360 --> 01:05:34,610 Als het werkt op een machine, maar geen van de anderen, 1369 01:05:34,610 --> 01:05:36,440 hoe nuttig was uw programma? 1370 01:05:36,440 --> 01:05:38,420 Dus wil je altijd ervoor te zorgen en te gebruiken sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Publiek: Dus is dat als de grootte van 10 inch [onverstaanbaar]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Dit is de grootte van 10 ints. 1373 01:05:43,698 --> 01:05:44,197 ja. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Dus grootte van ints zal terugkeren hoeveel kost een int nemen. 1376 01:05:48,830 --> 01:05:51,530 Of grootte van char, hoe kost een char take. 1377 01:05:51,530 --> 01:05:54,150 En dan hoeveel blokken van dat wil je? 1378 01:05:54,150 --> 01:05:57,590 >> Dus in dit geval willen we iets dat we 10 ints te kunnen opslaan. 1379 01:05:57,590 --> 01:06:00,240 En het zal onafhankelijk werken van de machine, dat is cool. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Dus hoeveel bytes zal dat je eigenlijk geven? 1382 01:06:04,846 --> 01:06:06,190 Quick wiskunde. 1383 01:06:06,190 --> 01:06:06,787 >> Publiek: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Precies. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Dus een ander groot ding. 1388 01:06:12,030 --> 01:06:14,840 Pointer of malloc kan null terugkeren. 1389 01:06:14,840 --> 01:06:17,910 >> Dus nogmaals, altijd controleren zien of het null geretourneerd 1390 01:06:17,910 --> 01:06:19,620 voordat je probeert iets te doen met het. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Als je het probeert en dereferentie Deze wijzer nu, 1393 01:06:27,350 --> 01:06:29,720 het is gewoon te segfault want je ging en probeerde 1394 01:06:29,720 --> 01:06:31,730 aan te raken null wanneer je niet zou moeten hebben. 1395 01:06:31,730 --> 01:06:34,000 Dus altijd controleren op null. 1396 01:06:34,000 --> 01:06:36,075 Nogmaals, kan alles wat je doet. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Het is misschien null terug. 1399 01:06:39,720 --> 01:06:42,740 Het zal null terug als je een van beide uit de ruimte, of om welke reden 1400 01:06:42,740 --> 01:06:44,350 Het liep in sommige geheugen bug. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Het soms gewoon null geretourneerd. 1403 01:06:47,510 --> 01:06:48,990 Dus je hoeft alleen te controleren op het. 1404 01:06:48,990 --> 01:06:51,050 Dat is alles wat deze dia zegt. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 En dan wat we hebben hier is een oproep om te bevrijden. 1407 01:06:55,240 --> 01:07:00,550 Dus op dezelfde manier als je opent u een bestand moet u een bestand sluit, 1408 01:07:00,550 --> 01:07:04,340 als je malloc geheugen, je moet je bevrijden dat geheugen. 1409 01:07:04,340 --> 01:07:06,530 En jullie zullen krijgen om echt leuke dingen te doen. 1410 01:07:06,530 --> 01:07:09,624 >> En er is een programma dat u kunt uitvoeren om zien of je ooit lekkende geheugen. 1411 01:07:09,624 --> 01:07:11,040 Maar je wilt niet het geheugen lekken. 1412 01:07:11,040 --> 01:07:11,820 Het is echt slecht. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Gewoon verknoeien dingen. 1415 01:07:15,020 --> 01:07:20,939 >> Het is slecht te doen, net als de programmering wijs voor design efficiency. 1416 01:07:20,939 --> 01:07:22,980 Maar het is ook gewoon een soort van slecht voor uw computer. 1417 01:07:22,980 --> 01:07:26,780 Dus gewoon gratis dingen als je ze malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Jullie zien hier de symmetrieën. 1420 01:07:30,210 --> 01:07:31,180 Super simpel. 1421 01:07:31,180 --> 01:07:33,010 Gewoon gratis en dan wat je wijzer, 1422 01:07:33,010 --> 01:07:34,843 ongeacht de naam van aanwijzer is, en het 1423 01:07:34,843 --> 01:07:36,710 zal zorg dragen voor het vrijmaken van het voor u. 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 hebben we dit. 1428 01:07:42,530 --> 01:07:44,770 Dus we gaan gewoon wandeling door dit programma. 1429 01:07:44,770 --> 01:07:46,560 En dan jullie gedaan. 1430 01:07:46,560 --> 01:07:50,240 >> Dus [onverstaanbaar] gewoon main. 1431 01:07:50,240 --> 01:07:51,690 Dus hebben we een aantal int * pointer. 1432 01:07:51,690 --> 01:07:53,648 Dus hebben we een pointer dat gaat om ints houden. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 En hoeveel ints gaat het om vast te houden? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Eentje maar. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Grootte van een int. 1439 01:08:01,100 --> 01:08:03,900 >> We controleren om te zien of pointer is ongeldig omdat het 1440 01:08:03,900 --> 01:08:06,130 is, we willen zeggen doe niets. 1441 01:08:06,130 --> 01:08:07,065 Het is slecht. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Dus een fout van een afdruk geheugen, het vaakst terugkeert 1, 1444 01:08:12,130 --> 01:08:14,260 zoals jullie gewend zijn. 1445 01:08:14,260 --> 01:08:17,390 >> En dan hebben we hier, we dereferentie onze pointer. 1446 01:08:17,390 --> 01:08:22,840 Dus dat betekent dat we gaan om te slaan iets ter plaatse aan ons. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * pointer, of malloc, geeft de adres van waar het opzij zetten dit 1449 01:08:30,830 --> 01:08:31,750 geheugen voor u. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Dus het is eigenlijk waardoor u like-- als je 1452 01:08:34,800 --> 01:08:38,149 na te denken over een stelletje huizen in een buurt 1453 01:08:38,149 --> 01:08:40,640 dat u wilt zetten uw meubels in, malloc 1454 01:08:40,640 --> 01:08:43,850 is als OK, krijg je naar drie huis. 1455 01:08:43,850 --> 01:08:45,800 En dat je het geeft het adres van het huis drie. 1456 01:08:45,800 --> 01:08:48,775 >> Dus dit nu, dit wijzer slaat een adres, 1457 01:08:48,775 --> 01:08:50,149 slaat het adres van uw huis. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * Ptr middelen, OK, ik ben in mijn huis. 1460 01:08:54,640 --> 01:08:55,326 Cool. 1461 01:08:55,326 --> 01:08:56,580 Ik moet wat integer te krijgen. 1462 01:08:56,580 --> 01:08:59,229 >> Dus je vraagt ​​iemand om u nu te geven meubels. 1463 01:08:59,229 --> 01:09:00,430 Zo krijg je een aantal int. 1464 01:09:00,430 --> 01:09:05,100 En het zet het in je pointer waar het wijst. 1465 01:09:05,100 --> 01:09:08,670 >> En dan is het gewoon afdrukken out, u hebt ingevoerd waar. 1466 01:09:08,670 --> 01:09:11,060 En nogmaals, de referentie. 1467 01:09:11,060 --> 01:09:15,649 Dus dit is als je naar deze aan te pakken en je zag wat er 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 natuurlijk bevrijden we ons wijzer. 1471 01:09:20,174 --> 01:09:21,590 Vergeet niet om de aanwijzer te bevrijden. 1472 01:09:21,590 --> 01:09:22,933 Vergeet niet om te controleren op null. 1473 01:09:22,933 --> 01:09:24,349 Vergeet niet om de aanwijzer te bevrijden. 1474 01:09:24,349 --> 01:09:27,270 Je hebt twee dingen die je herinneren van dit, of dat je moet onthouden. 1475 01:09:27,270 --> 01:09:27,770 Ja. 1476 01:09:27,770 --> 01:09:31,590 Publiek: [onverstaanbaar] stuff als dat, de char * s. 1477 01:09:31,590 --> 01:09:33,760 Hoe komt het dat we nooit vrij die? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Publiek: Zijn die als snaren? 1480 01:09:36,450 --> 01:09:39,160 Je zei snaren zijn net als char * s, toch? 1481 01:09:39,160 --> 01:09:41,200 Dus waarom niet wij gratis strings? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: U alleen gratis als je mallocing. 1483 01:09:43,204 --> 01:09:44,620 PUBLIEK: Oh, als je mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Dus malloc en vrij zijn twee dingen 1485 01:09:47,399 --> 01:09:49,000 dat je altijd bij elkaar zouden moeten hebben. 1486 01:09:49,000 --> 01:09:51,630 f open f dicht, twee dingen je samen zou moeten hebben. 1487 01:09:51,630 --> 01:09:54,471 In beide gevallen, controleren op null. 1488 01:09:54,471 --> 01:09:54,971 Ja. 1489 01:09:54,971 --> 01:09:57,130 >> Publiek: Dus gratis is gewoon waardoor iets anders 1490 01:09:57,130 --> 01:09:59,690 er na opslaan dit programma heeft het gebruikt? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: Het is gewoon te zeggen, OK, ik ben klaar met dit. 1492 01:10:01,946 --> 01:10:03,320 U hoeft niet om het rond te houden. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Anders zal uw computer gewoon graag proberen en daar te houden. 1495 01:10:08,190 --> 01:10:10,910 En dan can't-- je het draait in het geheugen problemen later. 1496 01:10:10,910 --> 01:10:13,660 Je wilt altijd te bevrijden omdat het vertelt je computer, OK, ik ben 1497 01:10:13,660 --> 01:10:15,190 gedaan met deze spot geheugen. 1498 01:10:15,190 --> 01:10:17,190 U kunt het terug hebben voor mij om later te gebruiken. 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: Dus gebruikten we de% d net omdat een dubbel dat komt terug, 1503 01:10:26,950 --> 01:10:28,330 of waarom is-- [onverstaanbaar]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Publiek: Kunt u% i gebruiken? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: U kunt gebruik maken van% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Op het laatste moment nog vragen? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Ga je gang. 1511 01:10:38,985 --> 01:10:40,610 Publiek: Ik heb net een snelle vraag. 1512 01:10:40,610 --> 01:10:50,200 Dus de ptr variabele, that's-- achtig, met de int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 Dat is gewoon zeggen dat het wijst naar een plek in memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Wilt u [onverstaanbaar]? 1515 01:10:55,600 --> 01:10:58,050 Publiek: --that is de grootte van-- nee, het is OK. 1516 01:10:58,050 --> 01:11:01,292 Maar het is gewoon te wijzen op een plaats in geheugen dat is net als vier bytes. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Recht. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Dus malloc de grootte van int zegt: OK, ik ga om te gaan vandoor, 1520 01:11:07,070 --> 01:11:08,780 vinden vier bytes van het geheugen voor u. 1521 01:11:08,780 --> 01:11:10,700 Wanneer hij vaststelt dat de vier bytes van geheugen, 1522 01:11:10,700 --> 01:11:14,030 geeft je het adres terug waar het begint, 1523 01:11:14,030 --> 01:11:16,160 en dat is wat opgeslagen in pointer, 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 Jullie kijken minder verward dan de meeste mensen als ik het over wijzer, 1528 01:11:21,700 --> 01:11:23,670 dus ik voel me vrij goed op dit moment. 1529 01:11:23,670 --> 01:11:24,520 >> Prima. 1530 01:11:24,520 --> 01:11:27,960 Zoals altijd, moet jullie allemaal gekregen uw pset2 kwaliteiten door nu. 1531 01:11:27,960 --> 01:11:32,769 Ik weet dat er sommige wankel geweest dingen waar het zegt, formule niet geldig 1532 01:11:32,769 --> 01:11:33,310 of zoiets. 1533 01:11:33,310 --> 01:11:36,166 Als je krijgt dat allemaal je cijfers zijn geldig op mijn kant. 1534 01:11:36,166 --> 01:11:38,040 Dus ik kan je sturen screenshots van je cijfers. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Laat me gewoon zo goed als je weet ontbreekt elke kwaliteiten of iets 1537 01:11:41,760 --> 01:11:43,060 lijkt niet zinvol. 1538 01:11:43,060 --> 01:11:43,720 Kom naar mij. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Ik ben super trots op je geweest jongens al, dus ga zo door. 1541 01:11:48,830 --> 01:11:50,640 En hebben een goede rest van uw week. 1542 01:11:50,640 --> 01:11:53,440 Ik weet zeker dat ik wat zie van u op kantooruren. 1543 01:11:53,440 --> 01:11:55,414