1 00:00:00,000 --> 00:00:02,670 >> [TEMO MUSIC] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Saluton, ĉiuj. 4 00:00:13,365 --> 00:00:14,365 Bonvenon al sekcio. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Lovely tago out-- tial mi estas certe, estas nur kvar el vi tien 7 00:00:18,700 --> 00:00:21,180 kaj ne nia kutima pack. 8 00:00:21,180 --> 00:00:22,670 Mi estis malsana dum ĉi tiu semajnfino. 9 00:00:22,670 --> 00:00:24,294 Do mi ne devas Starburst por vi uloj. 10 00:00:24,294 --> 00:00:26,400 Kaj mi rajtas komenci tusante terure tra tiu. 11 00:00:26,400 --> 00:00:27,790 Do simple toleru min. 12 00:00:27,790 --> 00:00:30,624 Mi iras al vere provi kaj trairi tiun unuan, 13 00:00:30,624 --> 00:00:32,290 tamen, antaŭ ol mi havas tusado atakon. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Sed nur esti facila en mi iom bit-- jen ĉio mi petas. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Do nia agendo por today-- nur reminder-- vian kvizon estas proksima semajno. 18 00:00:44,289 --> 00:00:46,830 Mi rakontis al vi tiun lastan semajnon tiel ne kaptas vin desprevenidos. 19 00:00:46,830 --> 00:00:47,954 Do mi memorigas vin denove. 20 00:00:47,954 --> 00:00:49,180 Sekva semajno vian kvizon. 21 00:00:49,180 --> 00:00:52,730 Al tiu fino, la proksima semajno sekcio estos multe pli 22 00:00:52,730 --> 00:00:55,180 of-- mi provos kaj laboron en iu recenzo. 23 00:00:55,180 --> 00:00:58,130 Do se vi uloj povis helpi min sendante al mi 24 00:00:58,130 --> 00:01:00,990 kion vi estas komforta kun, ke vi estas maltrankviligita, 25 00:01:00,990 --> 00:01:03,530 temoj kiuj vi ŝatus por min kovros, tio estus granda. 26 00:01:03,530 --> 00:01:05,740 Do mi povas provi kaj labori ilin en nia sekcio proksima semajno 27 00:01:05,740 --> 00:01:11,540 aŭ sendu vin ekstra materialo aŭ prep ke vi eble ne ricevi aliloke. 28 00:01:11,540 --> 00:01:12,150 >> Yeah! 29 00:01:12,150 --> 00:01:13,520 Pli homoj venas! 30 00:01:13,520 --> 00:01:17,320 Mi pensis, mi faris tion malbone lasta semajno, ke neniu volas reveni? 31 00:01:17,320 --> 00:01:18,065 Mi estas timigita. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Do la aliaj tri aferoj ke ni tuj iru super 34 00:01:21,100 --> 00:01:24,850 Estas redirección, dosiero I / O, kaj tiam punteros kaj dinamika memoro. 35 00:01:24,850 --> 00:01:29,160 Mi certas ke vi ĉiuj super ekscitita pri pointers-- ĉies preferataj temo, 36 00:01:29,160 --> 00:01:31,310 tiel simplajn por kompreni. 37 00:01:31,310 --> 00:01:33,130 Mi certas ke vi uloj ĉiuj ricevis tion, ĉu ne? 38 00:01:33,130 --> 00:01:39,510 >> Do unue aĵojn unua, redirection-- tio estas esence nur vojo 39 00:01:39,510 --> 00:01:42,920 kontroli, kiel vi enigo tion en vian programon, 40 00:01:42,920 --> 00:01:44,606 kiel vi eligo aferojn de via programo. 41 00:01:44,606 --> 00:01:46,980 La ĉefaj manieroj kiuj vi uloj estis interagante kun ĝi 42 00:01:46,980 --> 00:01:51,650 Estas nur tra normo ekster kun via preso ekrano tie. 43 00:01:51,650 --> 00:01:55,940 Sed ekzistas manieroj pipe-- kiel ni vidas tie 44 00:01:55,940 --> 00:01:58,980 Estas unu el niaj words-- speco de nafto ke informoj 45 00:01:58,980 --> 00:02:02,850 aux datumojn en dosiero de dosiero. 46 00:02:02,850 --> 00:02:05,820 Estas nur malsamaj manieroj Getting Things en vian programon 47 00:02:05,820 --> 00:02:10,681 kaj el via programo, anstataŭ nur presi ilin ĉi ekrano 48 00:02:10,681 --> 00:02:12,430 aŭ inputting aferoj el la komandlinio. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Do unue oni iom granda ol caret. 51 00:02:18,030 --> 00:02:22,085 Do output-- ĝi simple presas la eligo al dosiero anstataŭ via ekrano. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Do se vi havas ion ke presita "Saluton, mondo!" al la ekrano, 54 00:02:29,500 --> 00:02:32,400 Se vi metis ĝin anstataŭe al output.text, ke 55 00:02:32,400 --> 00:02:35,220 kreas dosiero nomata output.text. 56 00:02:35,220 --> 00:02:38,550 Kaj kiam vi malfermas ĝin, ĝi malebligos diri "Saluton, mondo!" tien. 57 00:02:38,550 --> 00:02:41,410 Tio povas esti súper utila se vi havas ton de eraroj 58 00:02:41,410 --> 00:02:43,430 vere, kiel ni vidas en ĉi tiu. 59 00:02:43,430 --> 00:02:46,810 Se vi faru du caret, ĝi estos presi la erarmesaĝojn. 60 00:02:46,810 --> 00:02:52,090 >> Do se vi havas problemon kun la kompilita, ĝi havas multan eraroj 61 00:02:52,090 --> 00:02:56,770 kaj vi fariĝas enkaĉiĝis en klopodante rulumi tra viaj komandlinio 62 00:02:56,770 --> 00:02:59,110 tra ĉiuj ilin, vi povas nur presi ilin al dosiero, 63 00:02:59,110 --> 00:03:02,130 malfermi tiu dosiero por ke vi povas rulumi tra ilin facile. 64 00:03:02,130 --> 00:03:05,160 Mi fakte uzis tiun pli tre kiam mi estis elpurigante 65 00:03:05,160 --> 00:03:07,970 Miaj 181 psets por maŝino lernado. 66 00:03:07,970 --> 00:03:10,000 Do ĝi povas esti súper utila poste. 67 00:03:10,000 --> 00:03:18,370 Ĝi estas ankaŭ utila se vi havas programon kiu eble estas generante biblioteko 68 00:03:18,370 --> 00:03:20,430 aŭ generante iu aro de kordoj, kaj vi 69 00:03:20,430 --> 00:03:22,846 bezonas por povi vidi ke ĝi estas generi ilin konvene. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Tiu estas la maniero por fari tion. 72 00:03:25,160 --> 00:03:28,280 >> Do se vi presi ilin al dosiero, vi povas pli facile ekzameni ilin, ĉu ne? 73 00:03:28,280 --> 00:03:30,930 Kontraŭ provas rulumu tra via komandlinio. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 Kaj poste ion noti estas ke kun nur la plej granda 76 00:03:35,820 --> 00:03:40,090 ol caret, se vi skribas al dosiero kiu jam exists-- 77 00:03:40,090 --> 00:03:44,990 tiel kiel se ni kuris ĉi la unua tempo, ni metas ĝin output.text, 78 00:03:44,990 --> 00:03:49,970 kaj do ni havis duan programon kiuj presis tion kiel programo du 79 00:03:49,970 --> 00:03:54,250 kaj faris grandan ol output.text, ĝi anstataŭigi that-- tiel 80 00:03:54,250 --> 00:03:56,715 anstataŭigi kio estis iam en ke dosiero por komenci kun. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Do se vi volas alfiksus al dosiero, kiel ni vidas ĉi tie, 83 00:04:00,750 --> 00:04:04,779 vi nur faru du pli grandaj ol signoj. 84 00:04:04,779 --> 00:04:05,820 Kaj tio postglui al ĝi. 85 00:04:05,820 --> 00:04:06,750 Ĝi ne anstataŭigi ĝin. 86 00:04:06,750 --> 00:04:09,770 Do se vi bezonas por funkcii multnombraj programoj kaj tipon de konservi 87 00:04:09,770 --> 00:04:13,170 spuro de kio ĉiu de ili estas reveninte al vi en dosiero, 88 00:04:13,170 --> 00:04:14,190 tio estas maniero por fari ĝin. 89 00:04:14,190 --> 00:04:17,231 Se vi ne zorgas kio estas en via dosiero kaj estas permesita por anstataŭigi, 90 00:04:17,231 --> 00:04:19,204 vi povas simple uzi solan granda ol. 91 00:04:19,204 --> 00:04:20,600 Ĉu tio havas sencon por ĉiuj? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Publiko: Kiel dot slash saluton granda ol eligo dot teksto, kiel duoble, 94 00:04:31,140 --> 00:04:34,030 ĝi devos simple nur montrigi eligo dot teksto duan time-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Ĝuste. 96 00:04:34,810 --> 00:04:40,450 Do ĝi farus esence nur tute anstataŭigi kio estis tie por komenci kun. 97 00:04:40,450 --> 00:04:44,260 Se ĉi tiu dosiero tie, la output.text jam 98 00:04:44,260 --> 00:04:48,230 Ekzistas, esence kion vi nomas ke denove kun sola granda 99 00:04:48,230 --> 00:04:51,920 ol vi povas simple pensi pri tio kiel kiel ĝi anstataŭis la dosiero. 100 00:04:51,920 --> 00:04:54,824 Kiel kiam vi savante Vorto dokumento kaj vi savos kiel, 101 00:04:54,824 --> 00:04:57,365 kaj vi observos la sama nomo, kaj tio tute overwrites it-- 102 00:04:57,365 --> 00:04:58,680 ĉi tiu estas la sama tipo de aĵoj. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Iu havas demandojn pri nur outputting al dosiero? 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 >> Do evidente, se vi reverso arrow direkto, ĝi povas fari enigo. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Do kiam vi uloj havis kiel Cezaro aŭ Visioneer 110 00:05:19,960 --> 00:05:23,195 kaj vi havis enigi ion, Vi havis komandlinio argumento 111 00:05:23,195 --> 00:05:24,960 kiu fakte input ĝin. 112 00:05:24,960 --> 00:05:27,410 Tio estas alia maniero por fari tion. 113 00:05:27,410 --> 00:05:30,520 Do anstataŭ atendante por komando prompto: 114 00:05:30,520 --> 00:05:33,800 kiel kiam vi petis viajn mesaĝo Cezaro aŭ Visioneer, 115 00:05:33,800 --> 00:05:36,490 se vi havus tekstdosiero kiu havis vian mesaĝon, 116 00:05:36,490 --> 00:05:38,280 Vi povus simple tajpu ĝin en tiu. 117 00:05:38,280 --> 00:05:44,930 >> Do se tio estis kiel skalara slash Cezaro 3 malpli ol sago eniga teksto, kiu 118 00:05:44,930 --> 00:05:47,240 Estas via mesaĝo, ke kurus nur fajna. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Kiam via Caesar programo reale petis enigon el la uzanto, 121 00:05:54,020 --> 00:05:57,360 ĝi jam havas ĝin ĉar vi jam tajpis en tiu dosiero. 122 00:05:57,360 --> 00:05:58,830 Tio estas nur alia maniero. 123 00:05:58,830 --> 00:06:02,445 Nur dorsflanko de output-- nur input viajn datumojn. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> Kaj tiam la lasta estas pipo. 126 00:06:06,680 --> 00:06:07,780 Do ĉi onia bela malvarmeta. 127 00:06:07,780 --> 00:06:09,890 Ĉar ĝi permesas preni la eligo de unu 128 00:06:09,890 --> 00:06:13,695 programo kaj meti ĝin kiel enigo al alia programo. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Mi ne scias ĉu iu el vi ludis kun la Decipher 131 00:06:18,630 --> 00:06:20,590 ke CS50 havu vin, sed estus 132 00:06:20,590 --> 00:06:27,380 permesas vin preni specimenon dosiero, tajpu ĝin en vian ĉifrado, 133 00:06:27,380 --> 00:06:30,350 kaj tiam el tie tajpi ke en via malĉifro 134 00:06:30,350 --> 00:06:32,470 certigi rezultis la sama. 135 00:06:32,470 --> 00:06:34,050 Do ĝi estas speco de kiel triopa buklo. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Iri por ĝi. 138 00:06:39,423 --> 00:06:41,785 >> Publiko: Se programo havas multnombraj enigoj, 139 00:06:41,785 --> 00:06:47,646 ekzistas maniero sciigi kio enigo uzi la tekstan dosieron aŭ la eliro? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Ĝi havas multnombraj enigoj. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Ajn dosieron vian input-- kiam estas petante input tiu unua fojo, ĝi estas 143 00:07:00,430 --> 00:07:03,240 tuj supozas, mi pensas, estas tuj pipon en la tuta dosiero. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Do se vi havas plurajn enirojn, vi estas tuj estos muzikis en plurajn dosierojn. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Do se vi petante mesaĝojn trifoje en via kodo, 148 00:07:12,390 --> 00:07:15,230 vi tuj metante en tri malsamaj dosieroj. 149 00:07:15,230 --> 00:07:15,980 Kaj metas freneza. 150 00:07:15,980 --> 00:07:18,188 Kaj vi ne devus devi maltrankviligi ke ĝuste nun. 151 00:07:18,188 --> 00:07:19,150 Sed tio estas la ideo. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Do jes, fluto estas nur eligo de unu programo uzas enigo en la alia. 154 00:07:26,822 --> 00:07:27,665 CXiu bona tie? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Malvarmeta. 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 Vi probable ne havos fari tro multe per ĝi. 160 00:07:32,890 --> 00:07:35,670 Sed vi devas kompreni manieroj vi povas uzi tiun. 161 00:07:35,670 --> 00:07:38,910 Kaj estas kelkaj kazoj kiujn vi eble deziras uzi ĝin. 162 00:07:38,910 --> 00:07:44,590 >> Do file mi / O-- Mi scias, kion vi estas komencis diri estas kutimitaj legi el 163 00:07:44,590 --> 00:07:50,500 kaj skribante al nia ekrano tie, kiu estas normo en kaj normo eksteren. 164 00:07:50,500 --> 00:07:54,370 Kaj tio estas kion vi uloj estis fari ekde la komenco de klasoj tie. 165 00:07:54,370 --> 00:07:58,220 Sed vi povas ankaŭ legi kaj skribi dosierojn, kio estas ĉio dosieron mi / O-- tiom file enigo, 166 00:07:58,220 --> 00:07:59,850 eligo estas ĉio tio signifas. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Do tio esence signifas ke Vi povas stoki viajn datumojn nun. 169 00:08:04,360 --> 00:08:08,460 >> Kiam vi simple presas ĝin al la ekrano, ĝi estas esence malaperis, dekstra? 170 00:08:08,460 --> 00:08:12,507 Kiam vi faras "Saluton mondo "kaj kuri" Saluton mondo " 171 00:08:12,507 --> 00:08:14,090 presas "Saluton mondo" al la ekrano. 172 00:08:14,090 --> 00:08:16,370 Sed vi ne povas vere fari nenio kun ĝin de tie. 173 00:08:16,370 --> 00:08:18,950 Se vi stoki en teksto dosiero, tiam subite 174 00:08:18,950 --> 00:08:22,789 vi havas tiun informon kiu vi permesis manipuli aŭ meti ĝin en dosieron, 175 00:08:22,789 --> 00:08:24,080 aŭ meti ĝin en programo poste. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Unu el la kialoj kial ni faros ĉi estas nur 178 00:08:29,290 --> 00:08:31,560 kiel maniero por stoki datumojn por posta uzo. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Mi havas kelkaj paŝoj tien nur irante tra normo 181 00:08:37,279 --> 00:08:39,450 I / O. En paŝo, vi bezonas krei referenco 182 00:08:39,450 --> 00:08:43,480 al la dosiero kun ĉiuj kaskedoj Dosiero stelo dosiero. 183 00:08:43,480 --> 00:08:45,740 Tiel ke ĝi kreas puntero al dosiero. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Sekve vi volas malfermi ĝin. 186 00:08:49,650 --> 00:08:52,940 Kaj vi diras, laŭvorte, nur dosiero egalas fopen. 187 00:08:52,940 --> 00:08:57,400 Kaj tiu tuj resendas montrilon al la dosiero vi ĵus malfermis. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Mi vidis paron de vi infanoj oficejo horoj. 190 00:09:01,460 --> 00:09:07,400 >> Sed unu el la aĵoj Estas remember-- punteros 191 00:09:07,400 --> 00:09:10,409 povas esti iu adreso aŭ nulan, dekstra? 192 00:09:10,409 --> 00:09:12,700 Se ni iam havas kazon kie iu povas reveni nula, 193 00:09:12,700 --> 00:09:14,990 Kion ni devas fari antaŭ ni iam uzi ĝin? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Ni devas kontroli ĉu ĝi estas nula aŭ ne, ĉu? 196 00:09:19,000 --> 00:09:23,600 Ĉar kelkaj de vi eble havis la demando kie ajn objekto 197 00:09:23,600 --> 00:09:26,110 estis reveninta en Breakout estis nula. 198 00:09:26,110 --> 00:09:28,170 Vi provis realigi iu funkcio en ĝi. 199 00:09:28,170 --> 00:09:29,770 Kaj via komputilo ejo faulted. 200 00:09:29,770 --> 00:09:30,725 Rajto? 201 00:09:30,725 --> 00:09:33,640 Mi vetas paro de vi eble havis tiun temon. 202 00:09:33,640 --> 00:09:38,890 >> Do kun fopen, fopen volo ĉu reveni puntero al la dosiero, 203 00:09:38,890 --> 00:09:41,200 aux se iu eliras malbone, ĝi tuj revenos nula. 204 00:09:41,200 --> 00:09:45,980 Do vi ĉiam bezonas kontroli ke ĝi ne redonis nula 205 00:09:45,980 --> 00:09:47,880 antaŭ vi provas fari ion alian. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Ĉi tio estas kiel norma paradigmo ke vi tuj bezonos tie. 208 00:09:51,974 --> 00:09:54,390 Se okazas iam eblecon ke iu povis reveni nula, 209 00:09:54,390 --> 00:09:56,590 kontroli por certiĝi ke ne antaŭ vi procedi. 210 00:09:56,590 --> 00:09:58,911 Alie, vi tuj akiri belan lokon faŭltoj. 211 00:09:58,911 --> 00:10:00,410 Kaj neniu ŝatas trakti tiujn. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Do kiel ni vidas ĉi tie, la unua argumento estas nur la vojo al la dosiero. 214 00:10:06,410 --> 00:10:09,380 Se tiu dosiero ne ekzistas, ĝi tuj krei tiun dosieron. 215 00:10:09,380 --> 00:10:10,713 Kaj estas ĝuste tuj estos malplena. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 Kaj tiam la dua argumento estas la modo kiun vi volas. 218 00:10:13,080 --> 00:10:14,610 Ĉu ni volas legi de ĉi tiu dosiero? 219 00:10:14,610 --> 00:10:15,560 Ĉu vi volas skribi gxin? 220 00:10:15,560 --> 00:10:16,476 Ĉu vi volas alfiksus? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Do efektive, kion mi ĵus said-- se la dosiero ne ekzistas 223 00:10:20,670 --> 00:10:23,400 kaj vi provas legi de ĝin, tuj ĵetos eraro. 224 00:10:23,400 --> 00:10:26,890 Se la dosiero name-- ŝatus se file.text ne ekzistanta 225 00:10:26,890 --> 00:10:29,250 kaj vi volas skribi al ĝi, ĝi kreos 226 00:10:29,250 --> 00:10:33,110 malplenan dosieron nomatan file.text por vi. 227 00:10:33,110 --> 00:10:36,612 Kaj se vi volas alfiksus, vi faru la samon. 228 00:10:36,612 --> 00:10:38,081 Ĉu tio havas sencon? 229 00:10:38,081 --> 00:10:40,580 Se vi provas legi de dosiero, kiu ne ekzistas ankoraŭ, 230 00:10:40,580 --> 00:10:41,590 ĝi ĵetos eraro. 231 00:10:41,590 --> 00:10:44,340 Alie, ĝi kreos la dosieron cxar vi faras tion, kion vi deziras ĝin. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Malvarmeta. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Nun ni povas legi de la dosiero. 236 00:10:48,880 --> 00:10:52,570 Kaj tiu estas ĝuste speco de iri tra la malsamaj funkcioj 237 00:10:52,570 --> 00:10:58,980 ke ni havas por dosiero / S. Tiu volo necesa en tiu semajno pset, 238 00:10:58,980 --> 00:11:00,505 se mi memoras ĝuste. 239 00:11:00,505 --> 00:11:02,880 Jes, tio absolute estos necesa en tiu semajno pset. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Do fgetc revenas la proksiman karakteron. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets simple resendas linio de teksto. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Ĝi revenos ion ĝis nova linio, kaj ĝi rompiĝis. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Do fread legas iun nombro da bajtoj kaj lokoj ilin 248 00:11:18,700 --> 00:11:20,700 en tabelo, kiu Estas io, kion vi povus 249 00:11:20,700 --> 00:11:25,485 volas fari kun re-size-- povus esti utila. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Kiom da homoj legis la pset spec, la vojo? 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 [Inaudible] 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 Bone. 258 00:11:37,530 --> 00:11:41,940 Definitive legi that-- estas amuza pset. 259 00:11:41,940 --> 00:11:51,320 Vi akiras rekuperi forviŝita memoro card-- vere ekscita kiam funkcias. 260 00:11:51,320 --> 00:11:54,100 Sed definitive, komenci legi tion. 261 00:11:54,100 --> 00:11:56,280 Venu talk min se vi havas demandojn pri tio. 262 00:11:56,280 --> 00:11:59,290 >> OK, do kiel mi komencis diri, fread legas certa nombro da bajtoj. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Tio estas iom arbitra nombro ke vi tuj metis. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 Kaj tiam fseek simple movas al certa pozicio. 267 00:12:08,260 --> 00:12:11,150 Do eble vi ne zorgas pri la venonta 10 bajtoj. 268 00:12:11,150 --> 00:12:12,880 Vi nur volas salti antaŭen. 269 00:12:12,880 --> 00:12:14,030 Vi ne zorgas pri tiuj. 270 00:12:14,030 --> 00:12:16,280 Vi volas legi ekde bajto 11. 271 00:12:16,280 --> 00:12:18,252 fseek permesas fari tion. 272 00:12:18,252 --> 00:12:20,710 Do permesu vin esti selectivo pri kio vi legas. 273 00:12:20,710 --> 00:12:25,880 Ĉar fgetc, fgets kaj fread legado de iu loko en la dosiero. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Maniero pensas pri tiu estas se tiu Estas nia dosiero, kiam vi unue malfermi ĝin, 276 00:12:35,090 --> 00:12:41,140 vi havas ĉi tiun pozicion en la dosiero kiu komenciĝas je la komenco. 277 00:12:41,140 --> 00:12:45,040 Whenever vi nomas fgetc, fgetf aux fread, 278 00:12:45,040 --> 00:12:48,875 ĝi tuj komencos de tiu pozicio markilo. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Imagu ke vi simple volas legi tiu bloko de memoro super tie. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Vi ne povas simple nomi. 283 00:12:57,960 --> 00:13:02,430 Vi devas serĉi pli tie kaj tiam legis el tie 284 00:13:02,430 --> 00:13:06,540 aŭ legis, ricevas aux getc, dependante de kion vi volas. 285 00:13:06,540 --> 00:13:09,310 Do serĉi nur permesas skip porciojn da memoro. 286 00:13:09,310 --> 00:13:11,590 Kaj tio estas la sola Tiel vi povos salti aferoj 287 00:13:11,590 --> 00:13:14,012 sen legi ilin en viajn bufro. 288 00:13:14,012 --> 00:13:15,470 Ĉu tio havas sencon por ĉiuj? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Evidente, tie estas multajn paralelajn here-- 291 00:13:24,780 --> 00:13:27,780 nia eliro aux input redirección, Vi legas kaj skribas. 292 00:13:27,780 --> 00:13:31,800 Do fputc nur skribas karaktero en la dosiero. 293 00:13:31,800 --> 00:13:33,655 fputs skribas linion. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf presas formatitan eligo. 296 00:13:37,420 --> 00:13:41,190 Do se vi havas pestañas, aŭ spaco, aŭ whatnot. 297 00:13:41,190 --> 00:13:44,180 Kaj tiam fwrite skribas kelkajn tabelo de bitokoj al dosiero. 298 00:13:44,180 --> 00:13:48,860 Do ĉi tiu estas la sama vojo fwrite kaj fread estas analoga 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs kaj tiam fputc kaj fgetc-- lotojn 300 00:13:57,550 --> 00:14:00,710 de freneza, rapidaj aferoj. 301 00:14:00,710 --> 00:14:05,300 >> Nur speco de subteni ĉi handy-- vi havos malsamajn fojojn 302 00:14:05,300 --> 00:14:08,680 kie eble vi simple volas unu signo samtempe. 303 00:14:08,680 --> 00:14:09,890 Eble vi volas tutan linion. 304 00:14:09,890 --> 00:14:14,320 Kun via vortaro pset-- kiu estas en du psets, 305 00:14:14,320 --> 00:14:19,690 Mi kredas, ni donos al vi tutan vortaro en teksto formato 306 00:14:19,690 --> 00:14:22,252 kiu havas ĉiu vorto apartigitaj per linio. 307 00:14:22,252 --> 00:14:24,210 Do se vi volas legi unuvorte samtempe, 308 00:14:24,210 --> 00:14:31,769 kio povus oni uzas se vi legas kaj ili ĉiuj disigitaj sur novaj linioj, 309 00:14:31,769 --> 00:14:33,310 kaj vi volas nur unu vorton samtempe? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Publiko: Fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Ĝuste. 313 00:14:36,748 --> 00:14:39,960 Fgets-- ĉar kiu revenas kiom estas en unu linio. 314 00:14:39,960 --> 00:14:42,750 Kaj se ĉiu vorto estas ĝia propra linio, ni povas uzi fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Malvarmeta. 317 00:14:45,010 --> 00:14:47,290 Ĉu tio havas sencon, ĉiuj? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Jes, ni iras por atingi la amuza parto kun montriloj 320 00:14:50,020 --> 00:14:51,728 tre frue, kie vi alveni al fari iuj math. 321 00:14:51,728 --> 00:14:52,776 Kaj estos granda. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Lasta step-- fermi vian dosieron. 324 00:14:57,740 --> 00:15:01,090 Kun tiom da aferoj tie, unu el niaj paradigmoj 325 00:15:01,090 --> 00:15:03,550 estas se ĝi povas reveni nula, kontroli nula. 326 00:15:03,550 --> 00:15:06,160 Se vi malfermas ion, vi prefere fermi ĝin. 327 00:15:06,160 --> 00:15:10,419 OK, do vi ne faris tion ĝis vi farita se vi fermis ĝin. 328 00:15:10,419 --> 00:15:12,585 Speco de kiel ĝi estas ne super ĝis la dika sinjorino kantas. 329 00:15:12,585 --> 00:15:14,130 Tio estas kiel fermante via dosiero. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Kiel ĝi diras ĉi tie, ĝuste ripeti, ĉiam 332 00:15:19,190 --> 00:15:21,750 malfermu vian dosieron antaux vi legi aŭ skribi al ĝi. 333 00:15:21,750 --> 00:15:24,450 Kaj ĉiam fermi ĝin se vi jam malfermis. 334 00:15:24,450 --> 00:15:25,460 Bone? 335 00:15:25,460 --> 00:15:25,960 Malvarmeta. 336 00:15:25,960 --> 00:15:26,835 >> Do jen ekzemplo. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Do tiny-- Mi ne scias, ĉu vi infanoj povas vidi ke tre bone. 339 00:15:34,330 --> 00:15:36,805 Se nur ni povus pliigi la brilo iel. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Lasu min reale fari ĉi se mi povas. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, vi uloj povas ne vere vidu, tute ne, ĉu vi? 344 00:15:51,470 --> 00:15:52,905 OK, ni tuj fari tion, do. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Inaudible] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Mi supozas ĉi estas multe pli bone vidi. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Ĉu iu povas vidi kie mia muso iris estas la demando? 351 00:17:19,455 --> 00:17:22,837 Ha, tie is-- kio batalas! 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 Esence, vi uloj devus havi speco de ideo de kion ĉi faras. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Ĝi ne estas perfekta. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Sed mi preferus klarigos ol pasigi pli tempo provante formati ĝin taŭge. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Esence, kiel vi vidas tie, Ni komencu per dosiero malfermita. 361 00:18:07,280 --> 00:18:09,620 Kaj ni havas kelkajn datumbaza dosiero kiu ni estas 362 00:18:09,620 --> 00:18:12,300 malfermante kiuj diras ke estas niaj lernantoj. 363 00:18:12,300 --> 00:18:14,020 Kaj ni tuj skribu al ĝi. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Do kompreneble revenas nula. 366 00:18:17,720 --> 00:18:19,650 Do ni devas kontroli nula. 367 00:18:19,650 --> 00:18:22,930 Kaj tiam se ĝi ne estas nula, ni trairu. 368 00:18:22,930 --> 00:18:25,660 Kaj kiel vi vidas, ni estas looping tra tie. 369 00:18:25,660 --> 00:18:26,960 Tie estas studentoj. 370 00:18:26,960 --> 00:18:30,520 Studentoj estas hash difinita kiel tri. 371 00:18:30,520 --> 00:18:34,060 Kaj kion ni faras estas ni presi la dosieron, dekstra? 372 00:18:34,060 --> 00:18:36,975 Do kion ni presi al nia arkivo? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Publiko: La partituroj kiuj estas en la tabelo? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Jes. 376 00:18:49,680 --> 00:18:50,980 La partituroj kiuj estas en la array-- ekzakte. 377 00:18:50,980 --> 00:18:53,050 Do ni malfermante ĉi datumbaza dosiero, kiu 378 00:18:53,050 --> 00:18:56,040 Mi supozas estas ia de gradoj datumbazo. 379 00:18:56,040 --> 00:19:01,100 Kaj ni simple videbligi la partiturojn de ĉiu studento por tiu dosiero. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Bonan. 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 Ni reiri to-- 386 00:19:06,950 --> 00:19:08,646 >> Publiko: mi havas rapida demando. 387 00:19:08,646 --> 00:19:11,570 Estas la printf ne en la por buklo? 388 00:19:11,570 --> 00:19:12,870 Tio estas nur en la se buklo? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Ne, ĝi estas en la buklo. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Mi ne povas vidi Mian muso tre bone ĝis tie. 392 00:19:18,810 --> 00:19:21,359 Do mi luktanta formaton kiu ĝuste. 393 00:19:21,359 --> 00:19:22,525 Ĉi krampo devus foriru. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Ĝi devus esti cxi tie. 396 00:19:25,130 --> 00:19:26,605 Tiu estas kio estas en via por buklo. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Tie. 399 00:20:11,180 --> 00:20:12,160 Nun estas bela. 400 00:20:12,160 --> 00:20:16,720 Do tiel estas kiel ĝi devus be-- krom por ke lasta krampo ke mi foriru. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Ĉu tio havas sencon por ĉiuj? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Ni tuj pluiri al la sekva afero then-- 405 00:20:23,750 --> 00:20:26,180 kiu, fakte, vi tuj al bezonas vidi la kodon. 406 00:20:26,180 --> 00:20:28,370 Do mi simple tuj kopiu ke pli ĝuste nun. 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 Do mi tuj montros al vi uloj tiu kodo. 410 00:20:35,110 --> 00:20:38,240 Mi volas ke vi provu figuro el kio ĝi estas supozita fari. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Do donita that-- preni minuton. 413 00:20:52,480 --> 00:20:54,440 Provi elkompreni kio okazas tie. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Ajna ideoj? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Ni scias, ke ni havas almenaŭ du argumentojn en la komanda linio, dekstra? 418 00:22:12,470 --> 00:22:16,270 Mi supozas unu el kiuj tuj estos ke [inaudible] de nia programo estas 419 00:22:16,270 --> 00:22:17,530 kaj tiam io alia. 420 00:22:17,530 --> 00:22:19,980 Ĉar se [inaudible] estas malpli ol du, ni krias al ili. 421 00:22:19,980 --> 00:22:21,140 Rajto? 422 00:22:21,140 --> 00:22:25,300 Kaj de la uzado, ĝi aspektas kiel ĝi tuj estos ia dosiero. 423 00:22:25,300 --> 00:22:26,260 Ni ĉiuj konsentas pri tio? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Do nun, kio estas la buklo faras? 426 00:22:31,570 --> 00:22:32,570 Kio ĝi trairis? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Publiko: Ĉiuj dosieroj. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Ekzakte. 430 00:22:37,240 --> 00:22:39,650 Ĝi okazas tra la tuta dosieroj kiujn ni input tie. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Do por ĉiu dosiero, estas malfermante kelkajn kordo tie. 433 00:22:46,040 --> 00:22:47,560 Ĝi estas malfermi tiu dosiero. 434 00:22:47,560 --> 00:22:48,060 Rajto? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 Kaj ĝin legante el ĝi. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Kompreneble, kontrolanta se estas nula. 439 00:22:55,540 --> 00:22:57,220 Kaj tiam ĝi estas presanta. 440 00:22:57,220 --> 00:23:01,460 Se ĝi estas nula, nur dirante nin ke tio ne estas dosiero kiu ekzistas. 441 00:23:01,460 --> 00:23:04,290 Ĉar rememoru, kun legi nian dosieron devas ekzisti. 442 00:23:04,290 --> 00:23:04,810 Rajto? 443 00:23:04,810 --> 00:23:06,870 Kun registran kaj append, vi povas akiri for kun gxi. 444 00:23:06,870 --> 00:23:08,970 Sed kun legado, nia dosiero devas ekzisti. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> Kaj tiam se ĝi ne ekzistas, kion ni faras cxi tie? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Ni komencu tie. 449 00:23:15,780 --> 00:23:18,815 Kio estas tio do-- tiu unua karaktero. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Kion ĝi faras? 452 00:23:21,790 --> 00:23:24,100 Li ricevas unu signo, dekstra? 453 00:23:24,100 --> 00:23:25,400 Do kio estas tiu faras? 454 00:23:25,400 --> 00:23:26,775 Ĝi faras la unuan karakteron. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Iu scias EOF? 457 00:23:30,200 --> 00:23:31,170 >> Publiko: Fino de dosiero? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Fino de file-- ekzakte. 459 00:23:32,680 --> 00:23:35,310 Do tuj trairos la tuta dosiero, dekstra? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 Kaj tiam tuj ĝisdatigi per atingi ĉiun postan karakteron. 462 00:23:40,780 --> 00:23:41,565 Rajto? 463 00:23:41,565 --> 00:23:43,636 Kaj kio ĝi faras? 464 00:23:43,636 --> 00:23:44,760 Publiko: Metante ke in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: Putchar prints al viaj ekrankurteno. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Inaudible] la karaktero. 469 00:23:51,950 --> 00:23:54,300 Kaj poste kiam [inaudible] ĉi fermos la dosiero. 470 00:23:54,300 --> 00:23:57,370 >> Publiko: Ĉu vi ne bezonos [? alia? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Ne nepre. 472 00:23:59,005 --> 00:24:01,480 Mi volas diri, ĝi estas ia implicita en tio. 473 00:24:01,480 --> 00:24:06,780 Pro tiu revenas, kvankam, kiel longe kiel tiu ne kaptas ĉi, vi estas bela. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Mi volas diri estas probable bona ekzerci por fari alie. 476 00:24:10,250 --> 00:24:15,755 Sed alie ne ĉiam necese speciale 477 00:24:15,755 --> 00:24:17,610 se vi havas ion kiel reveno, kiu 478 00:24:17,610 --> 00:24:20,640 signifas ke en ĉi tiu kazo, se ĝi kaptas ĝin, via programo tuj finos 479 00:24:20,640 --> 00:24:21,850 kaj neniam atingi ĉi. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Ĝi estas pli por la kazo kie vi estas Ne nepre redoni ion. 482 00:24:29,190 --> 00:24:31,370 Ĉar se tiu ne estis reveninte ion, 483 00:24:31,370 --> 00:24:34,430 tio signifus ke se ĉi tio estis vera, la resto de ĉi tiu estus ankoraŭ kuras. 484 00:24:34,430 --> 00:24:36,138 En tiu kazo, vi volus malvera. 485 00:24:36,138 --> 00:24:38,240 Se ĝi estas reveni, kaj via programo finaĵo, 486 00:24:38,240 --> 00:24:41,960 oni alie ne estas necesa ĉiuj La tempo, depende de kunteksto. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jakob vi havas demandon? 489 00:24:44,375 --> 00:24:46,100 Publiko: Yeah. 490 00:24:46,100 --> 00:24:49,300 Tiel faras fgetc akiri la venonta signo? 491 00:24:49,300 --> 00:24:50,734 Kiel la karaktero pliigi? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Jes. 493 00:24:51,400 --> 00:24:52,774 Do fgetc ekhavas la venonta signo. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Vi povas pensi pri tio kiel C ++ en senso. 496 00:24:56,866 --> 00:24:58,350 >> Publiko: Do ​​kio EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF estas fino de dosiero. 498 00:25:00,877 --> 00:25:03,960 Estas nur markilo kiu permesas koni ke vi estas ĉe la fino de via dosiero. 499 00:25:03,960 --> 00:25:06,742 Do tiu tuj presi al viaj norma eksteren. 500 00:25:06,742 --> 00:25:08,950 Kaj tiam tuj fermos la dosiero kiam ĝi estos farita. 501 00:25:08,950 --> 00:25:10,700 Kaj poste ni iros al la sekvantan dosieron, dekstra? 502 00:25:10,700 --> 00:25:12,660 Do entute, kion signifas tiu programo faras? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Inaudible] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Jes. 506 00:25:16,900 --> 00:25:18,770 Ĝi simple presas el ĉio tie. 507 00:25:18,770 --> 00:25:23,270 Do se vi uloj iam uzita CAT kaj tiam la nomo de iu file-- 508 00:25:23,270 --> 00:25:26,240 Mi ne scias ĉu iu el vi havas iam faris tion en via fina stacio. 509 00:25:26,240 --> 00:25:29,630 Sed se vi iam uzi la komando CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 kaj tiam ajn dosieron vi havas there-- ĝi 511 00:25:31,880 --> 00:25:37,260 presas gxin por via fina stacio, kiu povas esti super oportuna por kelkaj aferoj. 512 00:25:37,260 --> 00:25:38,746 Mi uzas ĝin tre. 513 00:25:38,746 --> 00:25:40,120 Ĉu tio havas sencon por ĉiuj? 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 viaj tasko now-- ĉu per mem aŭ kun la homoj ĉirkaŭ you-- 517 00:25:46,530 --> 00:25:54,930 estas ĝuste skribi simplan programon kiu nur skribas "Saluton, mondo!" 518 00:25:54,930 --> 00:25:56,255 al dosiero. 519 00:25:56,255 --> 00:26:00,215 >> [Inaudible] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Inaudible] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: mi estis kiel, faris Mi faras tion malbone pasintsemajne? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Mi ne pensas, ke estis malbona. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Mi ĝojas ke vi estas ĉiuj ĉi tie. 527 00:27:03,520 --> 00:27:04,655 Ĝi vere igas min feliĉa. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Mi estas knabino de simplaj plezuroj. 530 00:27:10,160 --> 00:27:11,688 Mi nur ŝatas kiam mian sekcio ĉeestu. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Do mi nur nun ĉi komenciĝis pro vi uloj tiel ke ni povas programi kune. 533 00:27:18,270 --> 00:27:22,290 Mi ne ŝatas meti iun en surloke se vi volas esti. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Publiko: Por la kvizo, do ni devas skribi programon? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Vi povas esti petis skribi simplajn programojn mane. 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 >> Publiko: La kvizo estas proksima semajno, dekstra? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: La kvizo estas proksima merkredo. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Tio signifas ke estas bela [? CSE?] grading partio poste, kion 543 00:27:43,730 --> 00:27:50,390 signifas ke vi ricevos vian partituroj reacxeti night-- je kioma horo? 544 00:27:50,390 --> 00:27:50,890 Kiu scias? 545 00:27:50,890 --> 00:27:51,973 Sed estos tiunokte. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Bone. 548 00:28:02,855 --> 00:28:04,250 Kiel ni volas komenci ĉi? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Mi donos al vi hint-- komenciĝas kun tiu. 551 00:28:09,630 --> 00:28:11,455 >> Publiko: vi devas malfermi dosieron. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Jes. 553 00:28:12,250 --> 00:28:14,060 Do kion vi volas nomi tion? 554 00:28:14,060 --> 00:28:16,150 Ĉu vi simple volas nomi ĝin "dosiero"? 555 00:28:16,150 --> 00:28:17,480 Ni faras ĝin facile. 556 00:28:17,480 --> 00:28:26,752 Do fopen-- kio estas nia eligo provo tuj estos? 557 00:28:26,752 --> 00:28:36,130 Nomu ĝin "Saluton." 558 00:28:36,130 --> 00:28:37,810 Kaj kia estas nia modo? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Kion ni faras al ĉi tiu dosiero? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Publiko: Read. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Skribante. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Ni skribas al ĝi. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Amindaj. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, do ni havas ĉi tiun dosieron nun. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Kion ni devas fari? 572 00:28:56,212 --> 00:28:57,420 Publiko: Kontrolu se estas nula. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Kontrolu se estas null-- ekzakte. 574 00:28:59,820 --> 00:29:01,980 Tio estas kion mi ŝatus aŭdi. 575 00:29:01,980 --> 00:29:05,930 Tio devus esti aŭtomata, speciale sufiĉe tre de ĉi tiu punkto sur. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Se vi komencas segfaulting, vi probable Ne kontroli nula ie. 578 00:29:10,950 --> 00:29:12,480 Naŭ fojojn el dek, tio estas tuj estos via eraro. 579 00:29:12,480 --> 00:29:15,400 Do se vi povus simple preni la kutimo, ĉiam kontroli se estas nula, 580 00:29:15,400 --> 00:29:18,150 via vivo Iĝos bele easy-- aŭ facila. 581 00:29:18,150 --> 00:29:19,480 >> Do kontrolu por vidi se estas nula. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Do se tio ne estas nula, kiu diras la bang egalas 584 00:29:24,820 --> 00:29:26,784 means-- ne null-- estas valida. 585 00:29:26,784 --> 00:29:27,700 Kion ni volas fari? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Ni nur volas presi tiun dosieron, dekstra? 588 00:29:31,570 --> 00:29:32,923 Do kion ni tuj uzos? 589 00:29:32,923 --> 00:29:34,092 >> Publiko: Fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: Fprintf-- bela. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 Kaj fprintf prenas du arguments-- kie ĝi okazas kaj kion ni volas presi. 593 00:29:44,000 --> 00:29:45,820 Do kio estas la unua? 594 00:29:45,820 --> 00:29:46,570 Kie ĝi iras? 595 00:29:46,570 --> 00:29:47,490 >> Publiko: Dosiero. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Ĝi okazas al dosiero. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 Kaj kion ni volas presi? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Saluton, mondo!" 601 00:29:58,065 --> 00:29:58,565 Bone. 602 00:29:58,565 --> 00:30:03,670 Ni havas unu lastan thing-- alia granda paradigmo tie. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Publiko: Close. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Close. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Tie vi iru. 608 00:30:10,540 --> 00:30:13,384 >> Publiko: Ĉu ĉi tio okazas Se la dosiero estas nula? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Ne, tio estas, se ĝi estas ne nula. 610 00:30:15,050 --> 00:30:16,881 Publiko: Ho, se estas not-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Por la fopen kaj tiam la du argumentojn kiuj iras ene, 613 00:30:25,410 --> 00:30:27,655 kion la unua argumento signifas denove? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: La argumento estas ĝuste kiel la nomo de la dosiero 615 00:30:30,392 --> 00:30:31,350 ke vi deziras iri. 616 00:30:31,350 --> 00:30:36,020 Do post tiu kuras, vi farus havi iun dosieron nomatan "saluton" 617 00:30:36,020 --> 00:30:38,320 kiuj havis "Saluton mondo" en ĝi. 618 00:30:38,320 --> 00:30:38,820 Tio estas ĉio. 619 00:30:38,820 --> 00:30:39,500 Nur la nomo. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Publiko: Kaj ĉar ĝi estas la skribo, la dosiero ne devas jam ekzisti. 622 00:30:48,650 --> 00:30:49,675 Ĉu tio, kion vi diris? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Ĝuste. 624 00:30:50,410 --> 00:30:50,910 Ĝuste. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Se "Saluton" kiel dosieron ne ekzistanta, estas 627 00:30:55,839 --> 00:30:58,380 tuj krei dosieron nomatan Saluton "kaj skribi ĝin por vi. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> Publiko: Kiam vi rakontis la programo skribis al la dosiero, 630 00:31:03,610 --> 00:31:08,075 kial vi skribas "dosiero" anstataŭ la nomo de la dosiero kaj fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Ĉar en tiu kazo, ni havas ke granda FILE-- ĉiuj en caps-- stelo, 632 00:31:13,600 --> 00:31:14,260 dosiero. 633 00:31:14,260 --> 00:31:17,370 Do estas puntero al la dosiero ke vi parolas. 634 00:31:17,370 --> 00:31:19,930 Tiu estas la maniero ke Ni nur aludas al ĝi. 635 00:31:19,930 --> 00:31:24,850 Do en ĉi tiu kazo, vi povas pensi file-- ha! 636 00:31:24,850 --> 00:31:31,271 ni povas uzi this-- dosieron tie aludas al la malfermo de "Saluton" 637 00:31:31,271 --> 00:31:32,145 kaj lasante ŝin skribi. 638 00:31:32,145 --> 00:31:34,728 >> Publiko: Could ni metis "Saluton" anstataŭ [? de justa?] f dosieron? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Ne, ĉar "Saluton" bezonas esti malfermitaj kaj konservebla. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Dosiera tie estas kiel designador kiu diras OK, ni 642 00:31:45,980 --> 00:31:49,190 havas ĉi file-- hello-- ke ni rigardas. 643 00:31:49,190 --> 00:31:50,680 Ĝi estis malfermita. 644 00:31:50,680 --> 00:31:52,140 Kaj ni tuj skribu al ĝi. 645 00:31:52,140 --> 00:31:55,130 Se vi simple uzu "Saluton", kiu encapsuladas en ĝi. 646 00:31:55,130 --> 00:31:56,846 Do tuj Freak Out. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Mi volas diri, vi povus esti nomata ĝin. 649 00:32:00,300 --> 00:32:03,960 Vi povus fari dosieron, stelo, "Saluton", egalas tio. 650 00:32:03,960 --> 00:32:07,840 Sed la tuta punkto estas ke vi bezonas dosiero stelo puntero por 651 00:32:07,840 --> 00:32:09,281 por povi uzi tiujn funkciojn. 652 00:32:09,281 --> 00:32:11,280 Publiko: Ĉu vi povas fari dosiero, stelo, arkivo, "Saluton" 653 00:32:11,280 --> 00:32:13,113 aŭ ĉu vi devus meti file stelo, dosieron per ĝi? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Vi povis fari dosieron, stelo, "Saluton." 655 00:32:16,330 --> 00:32:19,790 Vi povas ŝanĝi tion por ajn nomon vi deziras. 656 00:32:19,790 --> 00:32:22,114 Ĝi estas tute arbitra kion tiu nomo estas. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Vi povas nomi ĝin io. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Enoficigi ĝin flugantaj spagetoj, se vi volas. 661 00:32:28,020 --> 00:32:29,690 >> Publiko: Kio estas la "w" en citilojn por? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: La "w" estas nur la modo. 663 00:32:31,540 --> 00:32:33,170 Do ni skribas al ĉi tiu dosiero. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 CXiu bona? 666 00:32:35,320 --> 00:32:36,227 Klara? 667 00:32:36,227 --> 00:32:36,981 Jes. 668 00:32:36,981 --> 00:32:40,365 >> Publiko: Do ​​kiam skribas ĉi dosiero, kie ni poste trovas ke tiu dosiero? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: ĝi estos en la sama dosierujo kiun vi aktuale. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Se vi estas en pset tri vi kuros ĉi, ene vian pset 672 00:32:48,880 --> 00:32:52,600 tri dosierujo tuj estos tiu dosiero nomata "Saluton." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 CXiu bona? 675 00:32:53,757 --> 00:32:55,840 Mi sentas kiel vi estas ĉiuj atingi ĝin, kiu estas granda. 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 Do al mia slide show-- Mi amas kiam tio funkcios. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Ĉu vi uloj ekscitas? 680 00:33:08,674 --> 00:33:09,465 Punteros estas grandaj. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Ili prenu iom envolver vian kapon ĉirkaŭe. 683 00:33:13,580 --> 00:33:15,288 Tiu estas mia dua jaro instruado punteros. 684 00:33:15,288 --> 00:33:16,850 Kaj mi opinias, ke mi fine akiris ĝin. 685 00:33:16,850 --> 00:33:18,650 Do se vi luktas, ĝi estas en ordo. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Kiel mi diris antaŭe, desegnante bildoj helpas multe kun aĵoj en CS, 688 00:33:24,070 --> 00:33:27,400 kiom mi pensas, ke homoj emas pensi ho, ni estas ĉe komputilo. 689 00:33:27,400 --> 00:33:28,399 Ni devus nur kodo. 690 00:33:28,399 --> 00:33:30,190 No-- desegno bildoj Mi vere helpi vin. 691 00:33:30,190 --> 00:33:32,773 Mi vere rekomendas al vi frapeti en vian kindergartner flanko 692 00:33:32,773 --> 00:33:35,010 kaj elirigos crayons aŭ markiloj kaj egaleco. 693 00:33:35,010 --> 00:33:36,110 Ĉar ĝi helpos vin. 694 00:33:36,110 --> 00:33:39,380 Kaj se vi vidos min en oficejo horoj, mi estos portante ĉirkaŭ stakoj da papero 695 00:33:39,380 --> 00:33:41,580 kun plumoj desegnante tion eksteren. 696 00:33:41,580 --> 00:33:44,370 >> Tiel precipe per pointers-- desegni portretojn. 697 00:33:44,370 --> 00:33:47,970 Kaj mi estas certa ke ni efektive tuj esti desegnante fotojn tie ankaŭ. 698 00:33:47,970 --> 00:33:51,270 >> Do vi uloj ĉiuj alvenis al vidi Binky, tiu malvarmeta Claymation afero. 699 00:33:51,270 --> 00:33:54,720 Kaj ni pensas, ke estas vere amuza kiam li eksplodas en faskon da pecoj. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Estas iom komika por klaso. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [inaudible] tiun grandan kapablon por povi kontroli memoro. 704 00:34:05,900 --> 00:34:10,090 Kaj ĝi estas unu el la aĵoj kiuj vere faras tia potenca lingvo. 705 00:34:10,090 --> 00:34:13,469 Sed kun granda potenco venas grandan respondecon. 706 00:34:13,469 --> 00:34:16,230 Kaj frenezaj aĵoj povas okazi Se vi ne estas zorgema. 707 00:34:16,230 --> 00:34:18,560 Do kiam vi uzas punteros, vi volas fari 708 00:34:18,560 --> 00:34:21,440 certe vi vere komprenas precize kion vi faras. 709 00:34:21,440 --> 00:34:25,530 Espereble la sekva iom da tempo helpos vin vere kompreni 710 00:34:25,530 --> 00:34:27,850 punteros, kiel uzi ilin, kaj kiel manipuli ilin. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Do memory-- mi certas ke ni vidis tiun diagramon antaŭe. 713 00:34:33,460 --> 00:34:38,540 Do tio estas nur simpla diagramo de kiel aferoj povus esti stokita memoro. 714 00:34:38,540 --> 00:34:43,145 Do esence havi tiujn grandega arrays de unu bajto blokoj 715 00:34:43,145 --> 00:34:46,000 kion ni havas here-- malpeza pliigoj de unu ĉiufoje. 716 00:34:46,000 --> 00:34:51,810 Ĉi tio estas en deksesuma [inaudible] tiel ok bitoj blokoj. 717 00:34:51,810 --> 00:34:55,510 Kaj ĉiu bloko estas asociita kun iuj deksesuma adreso. 718 00:34:55,510 --> 00:34:58,750 Do se vi iam vidis la 0x, tio estas nur notating 719 00:34:58,750 --> 00:35:00,670 ke ĝi estas deksesuma adreso. 720 00:35:00,670 --> 00:35:03,970 Vi povas supozi ĉi signifas iuj adreson en memoron. 721 00:35:03,970 --> 00:35:06,935 Ni parolas pri memoro adresoj kiam vi vidos deksesuma. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Ni havas ints estas ŝanĝiĝemaj, ŝoveliloj estas variabloj kiuj stokas. 724 00:35:14,630 --> 00:35:16,260 Do ints vendejo ints. 725 00:35:16,260 --> 00:35:17,430 Flosoj vendejo flosas. 726 00:35:17,430 --> 00:35:20,260 Do ni ankaŭ havas punteros kiuj tendencas memoro adresoj. 727 00:35:20,260 --> 00:35:21,660 Tio estas speco de surĵeto. 728 00:35:21,660 --> 00:35:24,240 Punteros estas ekskluzive por memoro adresoj. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Do jen kiel via tipo tie. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Via aparato estas 32 bitoj, kio signifas ke via memoro adreso estas kvar bajtoj. 733 00:35:34,470 --> 00:35:37,830 Do neniu puntero ke vi havas ankaŭ tuj estos kvar bajtoj. 734 00:35:37,830 --> 00:35:43,200 Alie, se ĝi estas kvar bajtoj, memoro estas kvar bajtoj. 735 00:35:43,200 --> 00:35:44,790 Pointers vendejo memoro. 736 00:35:44,790 --> 00:35:46,430 Do, ili estas kvar bajtoj. 737 00:35:46,430 --> 00:35:48,460 Cool-- nur volas plifortigi tion. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Vi devus akiri ĉi komika nun. 740 00:35:52,220 --> 00:35:55,040 Mi ne scias kiom multaj el vi Estas xkcd fanoj, sed mi amas xkcd. 741 00:35:55,040 --> 00:35:55,780 Ĝi estas granda. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Bone. 744 00:35:57,790 --> 00:36:01,640 Do krei pointers-- kiel mi diris, estas preskaux nur ŝatas ion alian. 745 00:36:01,640 --> 00:36:02,930 Vi havas tipon. 746 00:36:02,930 --> 00:36:04,050 Vi havas nomon. 747 00:36:04,050 --> 00:36:04,810 Rajto? 748 00:36:04,810 --> 00:36:10,410 Tio estas kion ni havas tie. [? Hex?] Stelo signifas estas puntero, 749 00:36:10,410 --> 00:36:12,250 kaj tiam ajn vi volas nomi ĝin. 750 00:36:12,250 --> 00:36:15,770 Do la tipo reprezentas kion vi povas stoki. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Bone? 753 00:36:17,990 --> 00:36:24,350 En la sama maniero kiu se ni faras ints, ni scias ni stokante la int tie. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Kun puntero, ĝi tenas memoron adreso. 756 00:36:30,280 --> 00:36:34,240 Sed kion ĝi signifas that-- tie estas kie desegno tuj veni en oportuna. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Do en ĉi tiu kazo, ni havas iuj value-- diru kvar. 759 00:36:45,980 --> 00:36:49,306 Kvar estas cxe adreso unu. 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 >> Tiu unua tie signifas ke estas puntero 2x. 763 00:36:56,170 --> 00:36:56,740 Rajto? 764 00:36:56,740 --> 00:36:57,628 Estas iuj montrilo x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x povas esti io ajn. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Ajn x is-- diri x estas kvar. 769 00:37:05,130 --> 00:37:07,280 Ĝi tuj stoki la memoro adreso tie. 770 00:37:07,280 --> 00:37:12,260 Tiel int, stelo, x-- tio iuj aliaj fendo en memory-- 771 00:37:12,260 --> 00:37:13,590 kiu scias kia estas. 772 00:37:13,590 --> 00:37:15,430 Sed tuj stoki adreson ĉi tie. 773 00:37:15,430 --> 00:37:27,040 Do tiu estus like-- tiukaze ajn, 774 00:37:27,040 --> 00:37:32,630 estas stokita ĉe 0x1-- ajn stokas ĉe la adreso kiun nia montrilo tenas, 775 00:37:32,630 --> 00:37:35,280 devas parigi kun kion ni designado. 776 00:37:35,280 --> 00:37:40,330 Do je 0x1, en tiu kazo, tio estas x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Tiu nur povas iam esti int dum ni uzas ĉi. 779 00:37:49,340 --> 00:37:52,950 >> Simile, se ni havas alia 1y ajn 780 00:37:52,950 --> 00:37:59,130 adreso estas stokita per y havas esti char-- samon kun z. 781 00:37:59,130 --> 00:38:05,840 En la sama maniero, kiam ajn vi provu fari intx egalas 0,4, 782 00:38:05,840 --> 00:38:09,275 ĝi tuj krias al vi kaj estos kiel ne, vi diris ke vi volis int. 783 00:38:09,275 --> 00:38:10,525 Tiu estas supozata esti int. 784 00:38:10,525 --> 00:38:11,900 Ĉesi provi fari ĝin kaleŝego. 785 00:38:11,900 --> 00:38:14,150 >> Do tio estos kion ili volas esti. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Lasu tion esti samaj. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Tiom granda afero estas simple ajn tipo de puntero 790 00:38:23,450 --> 00:38:26,101 tio estas, tio estas la sola afero vi povas stoki tie. 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 Kun praktiko, kiel kun lasta semajno, ĉiu 794 00:38:31,160 --> 00:38:32,817 Ŝajnas vere ia abstrakta. 795 00:38:32,817 --> 00:38:34,150 Ni tuj faros iun praktikon. 796 00:38:34,150 --> 00:38:36,760 Ĝi devus fari pli senco. 797 00:38:36,760 --> 00:38:44,580 >> Do referenco kaj dereferencing-- estas vere grava akiri tiuj rektaj. 798 00:38:44,580 --> 00:38:46,630 Mi ankoraŭ devas refreŝigi ĉiu nun kaj tiam. 799 00:38:46,630 --> 00:38:48,450 Kaj mi estas kiel atendas, kiu mi volas? 800 00:38:48,450 --> 00:38:56,080 Do la ampersand efektive donu vi la referenco aŭ adreso de. 801 00:38:56,080 --> 00:39:00,100 Do ĝi redonas la adreson en memoro pri kiu variablo estas stokita. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Do tuj efektive revenos al vi deksesuma, dum dereferencing ĝi 804 00:39:07,020 --> 00:39:10,641 Efektive tuj donos al vi la datumoj kiuj stokas tie. 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 Do ni iras por rigardi ekzemplo vere rapida, aŭ fakte ĝis nun. 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 Do ni devas pensi vere zorgeme pri tio. 811 00:39:21,790 --> 00:39:23,860 Do jen ni havas iu entjero x. 812 00:39:23,860 --> 00:39:26,485 Mi tuj provos ellogu ĉi el la plej bonaj el miaj kapabloj. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Do ni tuj havos ĉi fendo x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 Kaj ĝin stoki kvin. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Lia adreso estas 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 Ĉiuj bonaj. 822 00:39:44,100 --> 00:39:45,470 >> Do nun ni havas ĉi puntero. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Ĝi finiĝis ĉi tie. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 Kaj la ampersand donas ni La adreso de io. 827 00:39:57,560 --> 00:40:00,780 Do, en ĉi tiu kazo, ĝi estas la adreso de x. 828 00:40:00,780 --> 00:40:01,875 Kio estas la adreso de x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- kaj ĉi puntero estas 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 Do vi povas pensi pri tio montrilo, 04, ĝuste punktoj super tie. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 Kaj ili estas nomitaj punteros ĉar kiel ni atingos pli en tiun, 837 00:40:25,740 --> 00:40:28,450 Vi tuj vidos indikante tion. 838 00:40:28,450 --> 00:40:31,470 Kaj unu bloko montrante alian bloko faros multe pli sentita. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Do tie estas du. 841 00:40:33,890 --> 00:40:38,230 Kaj tiam ni havas kelkajn kopion, kiu estas what-- 0x0c. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 Kaj tuj dereference nia montrilo. 844 00:40:43,420 --> 00:40:46,790 >> Do kio ĝi estas diras estas OK, jen nia montrilo. 845 00:40:46,790 --> 00:40:53,090 La valoro stokas estas 0x04: Kaj kion ĝi estas jene estas iri al tiu adreso 846 00:40:53,090 --> 00:40:54,300 kaj diru al mi kio estas en ĝi. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Do tio estas efike kion ĉi sago faras. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Vi povas pensi pri tio kiel via stelo. 851 00:41:01,280 --> 00:41:05,410 Do bone, kiam ni frakasas, ĝi signifas sekvi. 852 00:41:05,410 --> 00:41:06,810 Iru al tiu adreso. 853 00:41:06,810 --> 00:41:11,430 Kaj tio estas esence nur sekvante ĉi sago al tiu memoro chunk. 854 00:41:11,430 --> 00:41:15,380 Kaj donu al ni kio estas en ĝi, kiuj estas 5. 855 00:41:15,380 --> 00:41:18,840 Ĝi estas kial nia kopio estas egala al 5. 856 00:41:18,840 --> 00:41:20,120 Ĉu tio havas sencon? 857 00:41:20,120 --> 00:41:22,769 Ĉu iu bezonas min iri tra ĉesu, aŭ pli malrapide? 858 00:41:22,769 --> 00:41:24,560 Vi volas ke mi iru tra ĝi pli tempo? 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 Ni tuj redesegni ĝin denove. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Kiam ni komencos, ni ĉiuj samopinias ni havas iuj eron de memoro kiu estas ŝanĝiĝema 864 00:41:37,205 --> 00:41:40,890 x ke ni starigu egala al 5. 865 00:41:40,890 --> 00:41:42,910 Ni ne kontrolas kie estas en memoro. 866 00:41:42,910 --> 00:41:45,520 Do tiu makulo estas nur arbitre atribuita. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Bonan tie? 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 Tiam ni pravalorizi puntero al int. 872 00:41:53,330 --> 00:41:56,900 Tio estas kial ĝi estas permesita indikas x ĉar ni havas int tien. 873 00:41:56,900 --> 00:42:00,840 Ni havas alian eron de memoro ĉar ĉi puntero 874 00:42:00,840 --> 00:42:03,485 estas variablo simple kiel io alia. 875 00:42:03,485 --> 00:42:06,615 Ĝi estas arbitre atribuita iun spacon en memoro. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 Kaj kion ĝi stokas estas la adreso de x. 878 00:42:10,830 --> 00:42:13,200 Ampersand signifas adreso de x. 879 00:42:13,200 --> 00:42:14,575 Do kio estas la adreso de x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Publiko: Estas 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 Do then-- lasta. 885 00:42:25,940 --> 00:42:30,650 Ni havas kelkajn copy-- denove nur alia variablo. 886 00:42:30,650 --> 00:42:32,520 Do ni atribui iun arbitran lokon. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 Kaj ni dereference nia montrilo. 889 00:42:38,080 --> 00:42:42,490 La stelo signifas iri al la adreso stokitaj en mia montrilo. 890 00:42:42,490 --> 00:42:44,480 Diru al mi kio estas tie. 891 00:42:44,480 --> 00:42:47,290 Do la adreso stokita en nia puntero estas 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Do ni iru al tiu adreso. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Ĝi estas indikante ke adreson. 896 00:42:54,590 --> 00:42:57,481 Kio estas interne tiu memoro bloko? 897 00:42:57,481 --> 00:42:57,980 Estas kvin. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Do, tio estas kion ni atribuos nia kopio. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 CXiu bona? 902 00:43:04,860 --> 00:43:05,360 Malvarmeta. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- fotoj. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Do spuras la valorojn here-- min lasos vi uloj pensas pri tio. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Ni atingu alian bildon. 909 00:43:27,750 --> 00:43:31,260 Sed mi deziras, ke vi provu motivon per tio sur via propra por unu minuto. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Ĉar ili ne donis ni ekzemplon adreson, 912 00:44:04,149 --> 00:44:06,940 Mi nur tuj faros ampersand x-- kiu devus helpi forpeli ĝin hejmen. 913 00:44:06,940 --> 00:44:07,950 Ampersand signifas adreso. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Do, en la unua, ĉiuj iru kun la unua linio. 916 00:44:12,360 --> 00:44:15,690 Iu x aro de five-- iuj hazarda fendo en memoro. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int stelo puntero estas egalaj al la adreso de x, dekstra? 919 00:44:23,200 --> 00:44:28,180 Int stelo montrilo kreas tiu bloko, flamo Pointer, 920 00:44:28,180 --> 00:44:30,650 kaj asignas ĝin al la adreso de x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Mi estas terura ĉe ampersands. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Nun kion ni faras estas ni diru OK, dereference nia montrilo. 925 00:44:40,550 --> 00:44:42,760 Do ni iru OK, kio estas en nia montrilo? 926 00:44:42,760 --> 00:44:44,820 Estas ampersand x. 927 00:44:44,820 --> 00:44:49,400 Iru al ampersand x kaj religi ĝin. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Do nun, ampersand x tuj estos 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Do esence, kiam estas dereferencing, vi iru OK. 932 00:45:05,174 --> 00:45:07,090 Vi tuj estos desegnante bildoj kiel ĉi. 933 00:45:07,090 --> 00:45:09,423 Vi tuj estos desegnante Viaj sagoj sur kie estas. 934 00:45:09,423 --> 00:45:16,030 Do iru al tiu fendo en memoro kaj aŭ donu al mi ke valoro reen, aŭ ŝanĝi ĝin. 935 00:45:16,030 --> 00:45:21,620 En ĉi tiu kazo, ĉar ni estas en tiu valoro, ni atribuante ĝin al esti 35. 936 00:45:21,620 --> 00:45:24,700 Dum kiu en la lasta unu se vi rimarkas, ni 937 00:45:24,700 --> 00:45:27,680 estis asignanta kio tien por io alia. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Do ili havas ĉi awesome tablo. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Ne estas tiel malbone. 942 00:45:36,890 --> 00:45:37,970 Vi uloj laboras sur ĝi. 943 00:45:37,970 --> 00:45:39,640 Mi tuj eltiros gxin sur la tabulo. 944 00:45:39,640 --> 00:45:41,306 Ni tuj plenigi ĝin kune, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Do, prenu iom da papero, grab partnero, komenci labori. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Mi iras por ricevi grandan pecon da kreto. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Ĉar tuj estos multe. 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 PROFESORO: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Komencu kun la unua vico. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Ni komencas tie, tiam vi uloj povas eble funkcios tra iuj pli. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 a egalas b fojojn c tia kiu estas? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Tio ne estas lertaĵo demando, mi promesas. 963 00:48:23,260 --> 00:48:24,440 >> Student: 4 fojoj 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESORO: 4 fojoj 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Do kio estas 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 >> PROFESORO: kaj C? 971 00:48:31,043 --> 00:48:31,542 Student: 5. 972 00:48:31,542 --> 00:48:32,083 PROFESORO: 5. 973 00:48:32,083 --> 00:48:35,960 Kaj tiam tiu estas ĝuste tuj esti ampersand a, ampersand b, 974 00:48:35,960 --> 00:48:38,575 ampersand c, ĉu ne? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Ne malbona. 977 00:48:40,596 --> 00:48:42,081 Ĝi estas sufiĉe simpla. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Do la sekvanta unu. 980 00:48:44,300 --> 00:48:48,725 A egalas al fojojn c, en kazo Iu estis nekonataj kun tio. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Estas ĉiuj konataj kun la tempoj egalas? 983 00:48:53,300 --> 00:49:00,105 OK, ĉiuj ĉi means-- tio stenografio por egalas unu fojojn c. 984 00:49:00,105 --> 00:49:04,840 Vi ankaŭ povas fari tion per divido, kun aldono, kun subtraho. 985 00:49:04,840 --> 00:49:12,130 Vi povas fari egalaj, aŭ pli egalas c signifas egalas alpago c, minus egalaj 986 00:49:12,130 --> 00:49:15,190 c estus egalas al minus c. 987 00:49:15,190 --> 00:49:16,690 Estas nur sintaksa sukero. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Do, en ĉi tiu kazo, ĝi estas egala al unu fojojn c donus al ni kion? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Denove, ne estas lertaĵo demando. 992 00:49:28,186 --> 00:49:28,965 >> Student: 100. 993 00:49:28,965 --> 00:49:29,300 >> PROFESORO: 100. 994 00:49:29,300 --> 00:49:30,383 Ĉu io alia ŝanĝi? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 No. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Eble mi fine akiri bona ĉe mia ampersands. 999 00:49:39,850 --> 00:49:42,047 >> Student: OK, pardonon, kiel vi akiris 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESORO: OK. 1001 00:49:42,630 --> 00:49:46,594 Do estas egala al fojoj c, do fojojn c. 1002 00:49:46,594 --> 00:49:48,510 Student: Ho, vi uzas a por la previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESORO: Jes. 1004 00:49:49,135 --> 00:49:51,450 Do tiuj estas niaj plej freŝaj valoroj. 1005 00:49:51,450 --> 00:49:53,990 Tio estas kion vi devus esti uzante kiel ni iru malsupren, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Do, b estas la sola ŝanĝo, ĉu ne? 1008 00:50:01,520 --> 00:50:02,910 Do ni plenigi cxion alian. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Kio b iĝos? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Esti aŭ ne esti. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Do kio estas tiu faras? 1015 00:50:20,240 --> 00:50:21,605 Kio estas la stelo pa faras? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> Student: Kodo la situon de Pensilvanio. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> Student: Ne, ne tute. 1020 00:50:27,480 --> 00:50:29,470 Do ĉi tiu estas d referenco. 1021 00:50:29,470 --> 00:50:31,580 >> Student: Tiel b estas manoj valoro de Pensilvanio. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESORO: Yeah, do pa trovas La adreso de, dekstra? 1023 00:50:37,340 --> 00:50:42,430 Do ĝi estas vorto iru al kie a estas stokitaj kaj donu tiun valoron. 1024 00:50:42,430 --> 00:50:43,884 Do kio estas b? 1025 00:50:43,884 --> 00:50:44,425 Student: 100. 1026 00:50:44,425 --> 00:50:46,534 PROFESORO: 100. 1027 00:50:46,534 --> 00:50:47,450 Perfekta. 1028 00:50:47,450 --> 00:50:49,879 OK, do pc estas kio ŝanĝiĝas. 1029 00:50:49,879 --> 00:50:51,170 Ĉio alia restas la sama. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Kio pc iĝos? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Simpla asigno. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc egalas pa, kaj kio estas la pa? 1036 00:51:05,990 --> 00:51:07,049 >> Student: ampersand al. 1037 00:51:07,049 --> 00:51:07,840 PROFESORO: Perfekta. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Nun ni ricevas interesajn. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, ni rompos ĉi tiu suben. 1042 00:51:15,230 --> 00:51:21,110 Unue, kio estas b fojojn c, ĉar tio la facila parto de ĉi tiu, ĉu ne? 1043 00:51:21,110 --> 00:51:22,360 B fojojn c is-- 1044 00:51:22,360 --> 00:51:23,320 >> Student: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESORO: Yeah, do kio estas tiu, kiu faras, 1046 00:51:28,880 --> 00:51:33,705 se ĝia stelo pb, kio ŝanĝas? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> Student: Kio estas en the-- 1049 00:51:37,242 --> 00:51:38,200 PROFESORO: Kio estas en b? 1050 00:51:38,200 --> 00:51:41,340 Student: Kio estas en la spaco ke pb notas al. 1051 00:51:41,340 --> 00:51:43,406 PROFESORO: Kaj pb notas to-- 1052 00:51:43,406 --> 00:51:43,905 Student: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESORO: B. Do la sola afero sxangxigxi estas b, dekstre. 1054 00:51:46,740 --> 00:51:50,800 Do b fojojn c, 500. 1055 00:51:50,800 --> 00:51:52,367 Do jen kion ŝanĝas nun. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Malvarmeta. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Amindaj. 1060 00:52:00,840 --> 00:52:01,905 Vi uloj faras grandajn. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Bone, rompante tiu unu suben. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C ŝanĝiĝas, ĉu ne? 1065 00:52:09,630 --> 00:52:11,530 Do ni povas plenigi cxion alian. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Ni vidu. 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 Ni scias, ke c tuj estos la produkto de du nombroj, dekstra? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Kio du nombroj, kvankam? 1074 00:52:27,980 --> 00:52:28,970 >> Student: A kaj C? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESORO: Do estas rajto por la unua. 1076 00:52:31,930 --> 00:52:34,385 Do ni d referenco p de, dekstra? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P de punktoj al a, do ni scias ke ĉi tiu tuj estos 100 fojojn kio? 1079 00:52:42,870 --> 00:52:46,232 Fojoj kion faras pc punkto? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Notas al. 1082 00:52:48,740 --> 00:52:55,038 Do 100 fojojn 100 estas 10,000. 1083 00:52:55,038 --> 00:52:56,170 Ĉu tio havas sencon? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Malvarmeta. 1086 00:52:58,200 --> 00:53:00,500 Hejmo sekcio, knaboj, lasta vico. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Kio ŝanĝanta tie? 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 PROFESORO: A. Perfekta, do ĉio povas resti la sama. 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 Kaj kio estas? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Do ĝi estas foje kio? 1097 00:53:26,060 --> 00:53:27,120 Tio estas stelo pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Do stelo pb signifas jen pb: pb punktoj al b. 1100 00:53:34,490 --> 00:53:35,370 >> Student: 500. 1101 00:53:35,370 --> 00:53:36,230 >> PROFESORO: 500. 1102 00:53:36,230 --> 00:53:39,236 Do ni havas 500 fojojn 100. 1103 00:53:39,236 --> 00:53:41,758 Tio estas 50,000. 1104 00:53:41,758 --> 00:53:43,216 Whew! 1105 00:53:43,216 --> 00:53:45,646 Rigardu tiun. 1106 00:53:45,646 --> 00:53:47,982 >> Student: Kial ni havas la & c por la last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESORO: Pardonu. 1108 00:53:48,690 --> 00:53:50,080 Student: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESORO: Mia malbona. 1110 00:53:51,600 --> 00:53:52,890 Amasoj de skribo. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 CXiu bona? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Ne tro malbone, ĉu? 1115 00:53:56,660 --> 00:53:58,490 Nur prenas iom dum labori tra. 1116 00:53:58,490 --> 00:54:01,080 Se vi rompas ĝin malsupren, kompreni kion ĉiu parto 1117 00:54:01,080 --> 00:54:03,197 raportas to-- kiel kun ĉio estas, 1118 00:54:03,197 --> 00:54:05,780 yes-- rompas ĝin malsupren al la malgranda problemoj kaj tiam recombine, 1119 00:54:05,780 --> 00:54:07,345 kaj vi povas fari iujn awesome stuff. 1120 00:54:07,345 --> 00:54:08,970 Tie estas la respondoj, sed ni faris tion. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Puntero aritmetiko. 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 Miaj manoj estas ĉiuj yesosas. 1126 00:54:15,510 --> 00:54:17,970 Do aldonante nek forprenante int ĝustigas la montrilon 1127 00:54:17,970 --> 00:54:21,890 de la grandeco de la tipo de puntero. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Memoru, kiel ĉiu tipo havas malsaman grandecon? 1130 00:54:28,390 --> 00:54:34,890 Do kiel duobla aŭ longa tempo estas ok kaj int estas kvar sed char estas unu. 1131 00:54:34,890 --> 00:54:38,360 >> Do kion vi volas fari is-- unu afero memori 1132 00:54:38,360 --> 00:54:44,080 Estas nur tio kiom via montrilo valoro reale ŝanĝas 1133 00:54:44,080 --> 00:54:46,550 dependos de la Tipo de puntero estas. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 CXiu bona kun tio? 1136 00:54:51,820 --> 00:54:52,760 Ĉu mi povas forviŝi ĝin? 1137 00:54:52,760 --> 00:54:53,440 Ni estas bonaj? 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 >> Do se ni havas iun montrilon that-- tiu tuj be-- min 1141 00:55:07,501 --> 00:55:08,834 tuj faros gxin int montrilo. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Stokas ĉi. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Se vi dirus montrilon plus unu, kio tuj faros 1146 00:55:20,170 --> 00:55:23,420 Estas ĝi tuj ĝisdatigi gxi de grandeco de int 1147 00:55:23,420 --> 00:55:25,950 ĉar tio estas la Tipo de puntero estas. 1148 00:55:25,950 --> 00:55:28,260 >> Kun C, ĉiu estas tre strikta kaj reguligita. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 La int puntero tuj ĝisdatigi per la kvanto de spaco de int prenus. 1151 00:55:35,260 --> 00:55:36,260 An int estas kvar bajtoj. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Do kion devus ĉi igi? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Vi simple aldonas kvar sur ĉi. 1156 00:55:44,390 --> 00:55:50,040 Nun via montrilo estus be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Do se tio estis char ni faris montrilon plus unu, kio ĝi estos nun? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Se started-- ŝajnigante nin started-- nun estas 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Ni diru ke tio estis char pointer, kaj ni aldonis unu. 1163 00:56:10,850 --> 00:56:11,850 Kion tio ŝanĝas? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Kiom da bajtoj estas char? 1166 00:56:16,030 --> 00:56:16,680 >> Publiko: Unu. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: Unu. 1168 00:56:17,304 --> 00:56:18,309 Publiko: Do ​​0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Do estus naŭ. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Do ĝuste ion memori. 1172 00:56:23,820 --> 00:56:28,340 Ĝuste kiam vi aldonas unu, ne aldonante krom se ĝi estas char. 1173 00:56:28,340 --> 00:56:34,190 Ĝi estas aldono kiom bajtoj la tipo kiu estas, 1174 00:56:34,190 --> 00:56:36,960 tial ni havas ĉi ekvacion tie supre. 1175 00:56:36,960 --> 00:56:40,190 Do estas int fojojn la grandeco de la tipo de puntero. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Do ni havas la ekzemplon tie. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y estis atribuita al tiu valoro, 0x4, Kiam ni faris y plus egalas unu. 1180 00:56:54,430 --> 00:56:56,830 Kio estas en ĝi, kio estas en x, ne ŝanĝi. 1181 00:56:56,830 --> 00:56:58,610 Kia ŝanĝo estas kio estas en kaj. 1182 00:56:58,610 --> 00:57:04,980 La adreso stokitaj en y ĝisdatigita de kvar ĉar estas kvar bajtoj en int 1183 00:57:04,980 --> 00:57:06,097 kaj ĝi estas int montrilo. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Bone. 1186 00:57:07,790 --> 00:57:09,123 Do nun ni havas alian ekzercon. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Do la demando estas, kion presos. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Ajna ideoj? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Publiko: La nombro de karakteroj en feliĉa kato? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Ekzakte. 1194 00:57:44,490 --> 00:57:45,531 Tiel ŝatas vian ĉenon. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Ĉu ĉiuj bonstata? 1197 00:57:48,260 --> 00:57:49,509 Ĉu ni volas promeni tra ĝi? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Jes, bone. 1200 00:57:52,010 --> 00:57:57,385 Do kion ni havas here-- mi kiel ĉi tiel pli. 1201 00:57:57,385 --> 00:57:59,340 Mi ne devas [Inaudible] ridinde. 1202 00:57:59,340 --> 00:58:01,690 >> Do ni havos niajn kordo tien, feliĉa kato. 1203 00:58:01,690 --> 00:58:02,950 Amindaj. 1204 00:58:02,950 --> 00:58:05,080 Ni havas vendotablo ke ni konservanta trako de. 1205 00:58:05,080 --> 00:58:11,430 Do ni havas iun char * puntero ke nur estas metita egala al Str. 1206 00:58:11,430 --> 00:58:14,320 Kion tiu faras estas ĝi estas atribui iun montrilon 1207 00:58:14,320 --> 00:58:16,380 al la komenco de via ŝnuro. 1208 00:58:16,380 --> 00:58:19,840 Ĉar mi certas, kiel estis menciita en prelego, 1209 00:58:19,840 --> 00:58:22,290 ni donas al vi onkloj ĉi datumtipo nomata ŝnuro. 1210 00:58:22,290 --> 00:58:29,070 >> Sed vere kordoj estas nur tabelo of-- kiel char *. 1211 00:58:29,070 --> 00:58:32,330 Ĝi estas puntero al faskon de karakteroj kiuj estas apudaj en memoro. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Tiel ĉi nur diferencigas ĝin egala al ajna ĉeno estas 1214 00:58:36,280 --> 00:58:38,980 identigitaj de kie lia unua karaktero estas. 1215 00:58:38,980 --> 00:58:42,710 Do tio estas ĵus subiris iu punkto egala al la komenco de la kordo. 1216 00:58:42,710 --> 00:58:44,130 CXiu bona tie? 1217 00:58:44,130 --> 00:58:44,960 Malvarmeta. 1218 00:58:44,960 --> 00:58:49,840 >> Do tio estas dereferencing nia montrilo. 1219 00:58:49,840 --> 00:58:53,760 Do ĝi estas vere tuj doni ni iu valoro en ĉi tie, 1220 00:58:53,760 --> 00:58:55,610 en nia ĉeno kiu ni parolas. 1221 00:58:55,610 --> 00:58:58,342 Kaj ni diris kiel longe kiel ĝi estas ne nula Terminator. 1222 00:58:58,342 --> 00:59:00,550 Observu do irante ĝis vi ricevas al la fino de la kordo. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Ĝisdatigi vian montrilon per unu. 1225 00:59:04,190 --> 00:59:09,250 Do r, ĝi fakte ĝisdatigi per unu ĉiu tempo ĉar tiu estas char, 1226 00:59:09,250 --> 00:59:09,820 La char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Do tuj trairos. 1229 00:59:12,340 --> 00:59:13,290 Ĝi tuj ĝisdatigi. 1230 00:59:13,290 --> 00:59:16,705 Do la unua fojo ĉi tiu kuras, ĝi tuj estos tie je h. 1231 00:59:16,705 --> 00:59:17,590 Ĝi tuj ĝisdatigi. 1232 00:59:17,590 --> 00:59:18,185 >> Ĝi devos esti al. 1233 00:59:18,185 --> 00:59:21,310 Estos p, y, kaj tiel plu kaj tiel plu. 1234 00:59:21,310 --> 00:59:22,300 Ni ĝisdatigos vendotablo. 1235 00:59:22,300 --> 00:59:26,160 Kiam ĝi atingas la finon, tio nur presas, kiel malproksime ĝi estas alveninta. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Jes. 1238 00:59:28,050 --> 00:59:31,475 >> Publiko: Do ​​Rakontas la spaco kiel unu, ĉu ne? 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: Pensu tiel. 1242 00:59:35,222 --> 00:59:36,830 Ĉu tio estas question-- 1243 00:59:36,830 --> 00:59:37,746 >> Publiko: [inaudible]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Neniu maltrankviliĝas. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Mi faras tion. 1248 00:59:42,736 --> 00:59:47,710 Bone, do unu aferon mi kompreni estas kiu kun tabelo, 1249 00:59:47,710 --> 00:59:51,736 vi ankaŭ povas trakti ĝin kiel puntero ĉar arrays estas nur 1250 00:59:51,736 --> 00:59:52,860 kontinua makuloj de memoro. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Do vi povas trakti ĝin sammaniere. 1253 00:59:56,380 --> 00:59:59,000 Vi povas manipuli ilin kun punteros, tro. 1254 00:59:59,000 --> 01:00:04,770 Do anstataŭ fari, en tio kazo, la analoga afero 1255 01:00:04,770 --> 01:00:07,490 estus tabelo 0 egalas 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Sed en la sama maniero kiu ŝnureto estas determinita 1258 01:00:15,210 --> 01:00:18,740 per la komenco de kie lia unua karaktero estas, 1259 01:00:18,740 --> 01:00:22,270 tabelo estas difinita per kie ĝia unua elemento estas. 1260 01:00:22,270 --> 01:00:25,120 Ĉar ni scias, ni estas garantiita, ke tiuj 1261 01:00:25,120 --> 01:00:27,985 tuj estos kontinua blokoj de memoro. 1262 01:00:27,985 --> 01:00:29,360 Tio estas kion nin permesas fari tion. 1263 01:00:29,360 --> 01:00:31,193 Ni scias ke ili estas kontinua blokoj de memoro. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Do en tiu kazo, por dereferencing nur tabelo, kiu rakontas al ni, 1266 01:00:36,500 --> 01:00:40,800 OK, iru al la komenco de via tabelo, kiu estas tie. 1267 01:00:40,800 --> 01:00:42,640 Do vi povas agordi ŝin egala al unu. 1268 01:00:42,640 --> 01:00:48,610 Kaj en ĉi tiu kazo, kion ajn via tabelo tipo estas, kiam vi ĝisdatigi ĝin per unu, 1269 01:00:48,610 --> 01:00:50,830 tio estas nur kiel ĝisdatigi ĝin al la proksima indico. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Vi povas fari tion, ĉar vi scias kio estas en via tabelo. 1272 01:00:56,360 --> 01:00:59,770 Do sciu kiom ĝisdatigi vian montrilon per, 1273 01:00:59,770 --> 01:01:02,925 kio adreso por ĝisdatigi ĝin por tiel ke vi estas je la flanko fendo. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Do tio estas nur malsama vojo skribi tabelo 0 egalas 1, 1276 01:01:09,400 --> 01:01:15,114 tabelo 1 egalas 2, tabelo krampo 2 egalas 3. 1277 01:01:15,114 --> 01:01:16,780 Estas nur alia vojo por pensi pri ĝi. 1278 01:01:16,780 --> 01:01:19,600 Ĉar ili estas kontinua blokoj en la memoro, 1279 01:01:19,600 --> 01:01:21,830 vi povas referi al ili ĉu de la tabelo notation-- 1280 01:01:21,830 --> 01:01:24,390 kiun mi persone trovi easier-- sed eble 1281 01:01:24,390 --> 01:01:27,347 vi bezonas manipuli ĝin strikte por memoro adresoj. 1282 01:01:27,347 --> 01:01:28,930 Kaj tiu estas la vojo vi farus tion. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Speco de pli de kiel malvarmeta afero vi povas fari 1285 01:01:32,630 --> 01:01:35,213 kontre eble ne estas io vi estas fakte tuj apliki. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Mi uzos ĝin en 61. 1288 01:01:38,630 --> 01:01:41,710 Vi uloj verŝajne ne bezonas maltrankviligi tro multe. 1289 01:01:41,710 --> 01:01:43,693 Sed se vi estas interesita, preni 61 venontjare. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Ni estas en la hejmo tiras infanoj. 1292 01:01:46,560 --> 01:01:47,510 Mi scias, estas longa. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dinamika Memoro Allocation-- tial ni scias ke oni 1295 01:01:58,880 --> 01:02:01,790 de aĵoj kiam ni interparolis dum nian unuan sekcion kune, 1296 01:02:01,790 --> 01:02:04,560 ni rigardis swap funkcio kie estis 1297 01:02:04,560 --> 01:02:08,010 ekster la atingo de nia ĉefa funkcio. 1298 01:02:08,010 --> 01:02:14,370 Kaj ni pasis en tiuj valoroj kiuj efike kopioj. 1299 01:02:14,370 --> 01:02:20,570 >> Kaj fojo swap finita ekzekutinte, ĝi simple lasis pilo. 1300 01:02:20,570 --> 01:02:22,830 Memoru, ni havas stako por interŝanĝo. 1301 01:02:22,830 --> 01:02:26,070 Ĝi forlasas tiujn valoroj forlasi ĝin. 1302 01:02:26,070 --> 01:02:27,050 Kaj ili iris. 1303 01:02:27,050 --> 01:02:28,615 Ni ne povis fari ion kun ili kaj ni estis malĝoja 1304 01:02:28,615 --> 01:02:29,989 ĉar ni ne povas interŝanĝi niajn valorojn. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Sed kun C, kiel mi menciis, vi havas multe da potenco super memoro. 1307 01:02:36,560 --> 01:02:43,310 Do, kion vi povas fari, estas vi povas atribui aĵojn sur la havaĵon tie 1308 01:02:43,310 --> 01:02:46,830 ke restos tie ĝis vi diros al ili se ne. 1309 01:02:46,830 --> 01:02:48,280 >> Ili estas kiel bonaj infanoj. 1310 01:02:48,280 --> 01:02:49,150 Ili restu tie. 1311 01:02:49,150 --> 01:02:50,270 Ili ne foriros. 1312 01:02:50,270 --> 01:02:52,750 Ili restos tie ĝis vi kiel, nu bone, vi povas foriri. 1313 01:02:52,750 --> 01:02:55,920 >> Dum aferoj sur la stako, who-- ili estas kiel malbonkondutaj infanoj. 1314 01:02:55,920 --> 01:02:59,160 Ili devos simple forkuri kiam vi volas esti tie kaj tiam ili estos for. 1315 01:02:59,160 --> 01:03:00,160 Vi ne povas akiri ilin. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Do la havaĵon is-- ni tuj paroli pri malloc kaj libera, kio 1318 01:03:07,187 --> 01:03:08,895 Mi certas ke vi uloj auxdinte pri en prelego. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 Kaj tio estas esence formo havi tre persista datumoj. 1321 01:03:14,210 --> 01:03:18,920 Do vi povas gardi la datumojn ĉirkaŭ tiom longe kiom vi volas. 1322 01:03:18,920 --> 01:03:19,546 Mhm. 1323 01:03:19,546 --> 01:03:21,475 >> Publiko: Ĉu vi povas difini ruino kaj pilo? 1324 01:03:21,475 --> 01:03:24,030 Ĉu ili ŝatas lokojn meti tion? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Do ili estas esence just-- ili estas 1326 01:03:26,630 --> 01:03:29,530 la vojo nin raportas ĝuste al memoro. 1327 01:03:29,530 --> 01:03:37,300 Do havaĵo estas nur lokoj kie memoro asignitaj dinamike, 1328 01:03:37,300 --> 01:03:40,960 dum stako aludas pli pilo kadroj 1329 01:03:40,960 --> 01:03:45,950 kiuj estas pli centra al la funkcioj kiuj reale kuri. 1330 01:03:45,950 --> 01:03:47,200 Vi ne vere havas kontrolon. 1331 01:03:47,200 --> 01:03:50,690 >> La granda diferenco, vi havas kontrolon trans la monteto, se vi volas. 1332 01:03:50,690 --> 01:03:52,710 Vi havas malpli kontrolon super la stako. 1333 01:03:52,710 --> 01:03:55,030 La stako dependas la funkcioj kiuj kuras, 1334 01:03:55,030 --> 01:03:58,320 kaj la ordo en kiu ili estas kuri, kaj kiom ajn estas redonita. 1335 01:03:58,320 --> 01:04:01,290 Dum kiu kun la amaso, kiel ni vidos, vi povas diri: 1336 01:04:01,290 --> 01:04:06,639 OK, mi volas ke tiu valoro estos ĉirkaŭe ĝis mi diros alimaniere. 1337 01:04:06,639 --> 01:04:08,180 Vi ne rajtas forigi ĝin. 1338 01:04:08,180 --> 01:04:09,300 Vi ne rajtas nuligi ĝin. 1339 01:04:09,300 --> 01:04:11,675 Vi tuj konservi ĝin ĉirkaŭ tiel longe kiel mi diras. 1340 01:04:11,675 --> 01:04:15,780 Povas esti la estro en la muro, dum la stack-- eble se vi 1341 01:04:15,780 --> 01:04:18,080 kiel finagle vian vojon Vi povas esti la estro. 1342 01:04:18,080 --> 01:04:19,340 Sed ne tute. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 Kaj estas vere nur memoro. 1345 01:04:22,070 --> 01:04:24,260 Estas nur malsamaj manieroj de referenco al memoro. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Malvarmeta. 1348 01:04:26,400 --> 01:04:28,630 Do kun tio, kiel kontroli vian memoron. 1349 01:04:28,630 --> 01:04:32,070 Estas kun malloc, kiu vi tuj akiri uzi. 1350 01:04:32,070 --> 01:04:37,100 Do estas nur mallonga por memoro atribuo. 1351 01:04:37,100 --> 01:04:38,459 Jen ĉio estas. 1352 01:04:38,459 --> 01:04:41,250 Ekzistas aro da aliaj malvarmeta funkcioj, kiuj havas alloc fine, 1353 01:04:41,250 --> 01:04:42,750 kaj ili reprezentas malsamajn aferojn. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Do kiam vi bezonos stokado kiu bezonas al outlast via nuna funkcio tiel 1356 01:04:49,050 --> 01:04:51,010 Se viaj nunaj funkcio kuras for, 1357 01:04:51,010 --> 01:04:55,774 Vi ankoraŭ havas la informon, kiun vi prenata, vi volas uzi malloc. 1358 01:04:55,774 --> 01:04:57,190 Tio estos pravalorizi ĝin sur la monteto. 1359 01:04:57,190 --> 01:05:00,140 Kaj kiel mi diris kaj teni dirante, ke vi tenu ĝin tie 1360 01:05:00,140 --> 01:05:03,050 ĝis vi sciigus tion alimaniere, kiu estas la grava afero ĉi tie. 1361 01:05:03,050 --> 01:05:08,450 >> Do unu afero rimarki, kaj tio estas tipe vere grava, 1362 01:05:08,450 --> 01:05:13,620 estas ke ĉi sizeof Estas súper utila por uzi 1363 01:05:13,620 --> 01:05:16,440 ĉar dependanta sur la tipo de maŝino, ke vi uzas, 1364 01:05:16,440 --> 01:05:22,470 ĝi povas havi diversajn kvantojn de memoro kiu portas. 1365 01:05:22,470 --> 01:05:26,870 Do vi ĉiam volas uzi grandeco de tiel ke vi ne estas maŝino dependa, 1366 01:05:26,870 --> 01:05:30,300 por ke via kodo kuri sur iu maŝino. 1367 01:05:30,300 --> 01:05:32,360 >> Kaj tio estas nur parto verki bonan kodon. 1368 01:05:32,360 --> 01:05:34,610 Se ĝi funkcias sur unu maŝino, sed ne ĉiu el la aliaj, 1369 01:05:34,610 --> 01:05:36,440 kiom utila estis via programo? 1370 01:05:36,440 --> 01:05:38,420 Do vi ĉiam volas certiĝu kaj uzi sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Publiko: Tiel estas kiu same kiel la grandeco de 10 coloj [inaudible]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Tio estas la grandeco de 10 ints. 1373 01:05:43,698 --> 01:05:44,197 yeah. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Do grandeco de ints revenos Kiom oni int preni. 1376 01:05:48,830 --> 01:05:51,530 Aŭ grandecon de char, kiel multe faras unu char iom. 1377 01:05:51,530 --> 01:05:54,150 Kaj tiam kiom blokoj el kiuj vi volas? 1378 01:05:54,150 --> 01:05:57,590 >> Do en ĉi tiu kazo, ni volas ion ke ni povas stoki 10 ints al. 1379 01:05:57,590 --> 01:06:00,240 Kaj laboros sendistinge de maŝino, kiu estas malvarmeta. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Do kiom da bajtoj volo ke efektive donu al vi? 1382 01:06:04,846 --> 01:06:06,190 Rapida math. 1383 01:06:06,190 --> 01:06:06,787 >> Publiko: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Ĝuste. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Do alia granda afero. 1388 01:06:12,030 --> 01:06:14,840 Pointer aŭ malloc povas reveni nula. 1389 01:06:14,840 --> 01:06:17,910 >> Do denove, ĉiam kontroli por rigardu, cxu gxi revenis nula 1390 01:06:17,910 --> 01:06:19,620 antaŭ provi kaj fari ion ajn kun ĝi. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Se vi provas kaj dereference ĉi puntero nun, 1393 01:06:27,350 --> 01:06:29,720 Estas nur tuj segfault ĉar vi iris kaj provis 1394 01:06:29,720 --> 01:06:31,730 tuŝi nula kiam vi ne devus havi. 1395 01:06:31,730 --> 01:06:34,000 Do ĉiam kontroli nula. 1396 01:06:34,000 --> 01:06:36,075 Denove, ĉiuj vi povas fari. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Povus reveni nula. 1399 01:06:39,720 --> 01:06:42,740 Ĝi revenos nula se vi ĉu el spaco, aŭ ial ajn 1400 01:06:42,740 --> 01:06:44,350 ĝi koliziis iu memoro cimon. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Ĝi foje nur revenas nula. 1403 01:06:47,510 --> 01:06:48,990 Do vi nur devas kontroli ĝin. 1404 01:06:48,990 --> 01:06:51,050 Tio estas ĉio ĉi slide diras. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 Kaj tiam kion ni havas tie estas alvoko liberigi. 1407 01:06:55,240 --> 01:07:00,550 Tiel same, ke se vi malfermi dosieron vi devas fermi dosieron: 1408 01:07:00,550 --> 01:07:04,340 se vi malloc memoro, vi vi devas liberigi tiu memoro. 1409 01:07:04,340 --> 01:07:06,530 Kaj vi uloj ricevos fari vere malvarmeta aĵoj. 1410 01:07:06,530 --> 01:07:09,624 >> Kaj tie estas programo povas kuri al rigardu, cxu vi iam likanta memoro. 1411 01:07:09,624 --> 01:07:11,040 Sed vi ne deziras filtri memoro. 1412 01:07:11,040 --> 01:07:11,820 Ĝi estas vere malbona. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Nur salaton aĵojn. 1415 01:07:15,020 --> 01:07:20,939 >> Estas malbona fari ĝuste kiel programado saĝa por dezajno eficiencia. 1416 01:07:20,939 --> 01:07:22,980 Sed estas ankaŭ ĝuste speco de malbona por via komputilo. 1417 01:07:22,980 --> 01:07:26,780 Do ĝuste libera aferoj kiam vi malloc ilin. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Vi ĉiuj vidas la simetrioj tie. 1420 01:07:30,210 --> 01:07:31,180 Super simpla. 1421 01:07:31,180 --> 01:07:33,010 Nur libera kaj tiam ajn via montrilo, 1422 01:07:33,010 --> 01:07:34,843 ajn la nomo de via puntero estas, kaj tio 1423 01:07:34,843 --> 01:07:36,710 prizorgos liberigante ĝin por vi. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Malvarmeta. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Tiam ni havis ĉi. 1428 01:07:42,530 --> 01:07:44,770 Do ni nur tuj marŝi tra tiu programo. 1429 01:07:44,770 --> 01:07:46,560 Kaj tiam vi uloj estas farita. 1430 01:07:46,560 --> 01:07:50,240 >> Do [inaudible] simple ĉefa. 1431 01:07:50,240 --> 01:07:51,690 Do ni havas kelkajn int * puntero. 1432 01:07:51,690 --> 01:07:53,648 Do ni havas montrilon ke tuj tenos ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 Kaj kiom ints estas ĝi tuj teni? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Nur unu. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Grandeco de int. 1439 01:08:01,100 --> 01:08:03,900 >> Ni kontrolu por vidi se puntero estas nulaj ĉar 1440 01:08:03,900 --> 01:08:06,130 estas, ni volas diri nenion faru. 1441 01:08:06,130 --> 01:08:07,065 Ĝi estas malbona. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Do ni presi iun eraron el memoro, plej ofte revenas 1 1444 01:08:12,130 --> 01:08:14,260 kiel vi infanoj uzas por. 1445 01:08:14,260 --> 01:08:17,390 >> Kaj tiam ni havas ĉi tie, ni dereference nia montrilo. 1446 01:08:17,390 --> 01:08:22,840 Do tio signifas ke ni tuj stoki ion ĉe la situo donas al ni. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * puntero, aŭ malloc, revenas la adreso de kie flankenmetis ĉi 1449 01:08:30,830 --> 01:08:31,750 memoro por vi. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Do ĝi estas esence donante vin like-- se vi 1452 01:08:34,800 --> 01:08:38,149 pensi faskon da domoj en kvartalo 1453 01:08:38,149 --> 01:08:40,640 ke vi volas meti viajn meblojn en, malloc 1454 01:08:40,640 --> 01:08:43,850 Estas kiel OK, vi ricevos iri por gastigi tri. 1455 01:08:43,850 --> 01:08:45,800 Kaj ĝi donas al vi la adreso de domo tri. 1456 01:08:45,800 --> 01:08:48,775 >> Do ĉi tiu momento, ĉi montrilo tendencas adreson, 1457 01:08:48,775 --> 01:08:50,149 stokas la adreson de via domo. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * PTR rimedoj, OK, mi estas en mia domo. 1460 01:08:54,640 --> 01:08:55,326 Malvarmeta. 1461 01:08:55,326 --> 01:08:56,580 Mi bezonos akiri iu entjero. 1462 01:08:56,580 --> 01:08:59,229 >> Do vi petante iun doni vin mebloj nun. 1463 01:08:59,229 --> 01:09:00,430 Do vi ricevas iujn int. 1464 01:09:00,430 --> 01:09:05,100 Kaj tio metas ĝin en vian montrilon kie ĝi estas indikante. 1465 01:09:05,100 --> 01:09:08,670 >> Kaj tiam simple prints ekstere, vi eniris kien. 1466 01:09:08,670 --> 01:09:11,060 Kaj denove, la referenco. 1467 01:09:11,060 --> 01:09:15,649 Do ĉi tio estas kiel vi venis al tiu ĉi alparoli kaj vi vidis, kio estis tie. 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 >> Kaj do kompreneble ni liberigi nian montrilo. 1471 01:09:20,174 --> 01:09:21,590 Ne forgesu liberigi vian montrilo. 1472 01:09:21,590 --> 01:09:22,933 Ne forgesu kontroli nula. 1473 01:09:22,933 --> 01:09:24,349 Ne forgesu liberigi vian montrilo. 1474 01:09:24,349 --> 01:09:27,270 Vi havas du aferojn vi memoras el ĉi, aŭ ke vi devus memori. 1475 01:09:27,270 --> 01:09:27,770 Jes. 1476 01:09:27,770 --> 01:09:31,590 Publiko: [inaudible] stuff tiel, la char * s. 1477 01:09:31,590 --> 01:09:33,760 Kial ni neniam liberigi tiujn? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Publiko: Ĉu tiuj kiel kordojn? 1480 01:09:36,450 --> 01:09:39,160 Vi diris kordoj estas ĝuste kiel char * s, dekstra? 1481 01:09:39,160 --> 01:09:41,200 Do kial ni ne liberigi kordojn? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: Vi nur al libera se vi mallocing. 1483 01:09:43,204 --> 01:09:44,620 Publiko: Ho, se vi mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Do malloc kaj libera estas du aĵoj 1485 01:09:47,399 --> 01:09:49,000 ke vi devus ĉiam havas kune. 1486 01:09:49,000 --> 01:09:51,630 f malfermita, f apude, du aferoj Vi devus havi kune. 1487 01:09:51,630 --> 01:09:54,471 En ambaŭ tiuj kazoj, kontroli nula. 1488 01:09:54,471 --> 01:09:54,971 Jes. 1489 01:09:54,971 --> 01:09:57,130 >> Publiko: Do ​​libera estas nur permesante io 1490 01:09:57,130 --> 01:09:59,690 esti stokita tie post tiu programo uzas ĝin? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: Ĝi simple dirante, OK, mi agis kun cxi tiu. 1492 01:10:01,946 --> 01:10:03,320 Vi ne bezonas konservi ĝin ĉirkaŭe. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Alie via komputilo nur ŝatas provi kaj konservi ĝin tie. 1495 01:10:08,190 --> 01:10:10,910 Kaj tiam vi can't-- kuras en memoro temoj poste. 1496 01:10:10,910 --> 01:10:13,660 Vi ĉiam volas liberigi lin pro ĝi diras via komputilo, OK, mi estas 1497 01:10:13,660 --> 01:10:15,190 farita kun ĉi loko de memoro. 1498 01:10:15,190 --> 01:10:17,190 Vi povas havi ŝin reen por mi uzi poste. 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 Jes. 1502 01:10:21,320 --> 01:10:26,950 >> Publiko: Do ​​ni uzas la% d simple ĉar duobla kiu venas reen, 1503 01:10:26,950 --> 01:10:28,330 aŭ kial is-- [inaudible]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Publiko: Cxu vi uzas% i? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Vi povas uzi% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Ajna lasta minuto demandoj? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Iri antaŭen. 1511 01:10:38,985 --> 01:10:40,610 Publiko: Mi nur havas rapidan demandon. 1512 01:10:40,610 --> 01:10:50,200 Do la PTR variablo that's-- kiel, kun la int * PTR = malloc, 1513 01:10:50,200 --> 01:10:54,142 Tio estas nur por diri ke estas indikante lokon en memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Ĉu vi volas [inaudible]? 1515 01:10:55,600 --> 01:10:58,050 Publiko: --kiu estas la grandeco of-- ne, ĝi estas en ordo. 1516 01:10:58,050 --> 01:11:01,292 Sed ĝi simple indikante lokon en memoro tio estas nur kiel kvar bajtoj. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Ĝuste. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Do malloc la grandeco de int diras, OK, mi tuj iros kuri for, 1520 01:11:07,070 --> 01:11:08,780 trovi kvar bajtoj de memoro por vi. 1521 01:11:08,780 --> 01:11:10,700 Kiam li trovas ke kvar bajtoj de memoro, ĝi 1522 01:11:10,700 --> 01:11:14,030 donas vin apogi la adreso de kie startas, 1523 01:11:14,030 --> 01:11:16,160 kaj tio stokita en puntero, aŭ PTR. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Bonan. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Vi ĉiuj aspektas malpli konfuza ol la plimulto homoj, kiam mi parolas pri pointer, 1528 01:11:21,700 --> 01:11:23,670 do mi sentas min sufiĉe bona nun. 1529 01:11:23,670 --> 01:11:24,520 >> Bone. 1530 01:11:24,520 --> 01:11:27,960 Kiel ĉiam, vi uloj devus havi ĉiuj alveninta vian pset2 gradoj nun. 1531 01:11:27,960 --> 01:11:32,769 Mi scias ke estis iuj wonky aferoj kie diras, formulo ne validas 1532 01:11:32,769 --> 01:11:33,310 aŭ ion. 1533 01:11:33,310 --> 01:11:36,166 Se vi fariĝas tio, ĉiuj Via gradoj estas validaj sur mia flanko. 1534 01:11:36,166 --> 01:11:38,040 Do mi povas sendi al vi ekrankopioj de viaj kvalifikoj. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Nur lasu min scii bone se vi estas mankas ajna gradoj aŭ iu 1537 01:11:41,760 --> 01:11:43,060 Ne ŝajnas sencon. 1538 01:11:43,060 --> 01:11:43,720 Venu al mi. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Mi estis super fiera pri vi infanoj jam, tiel konservi ĝin. 1541 01:11:48,830 --> 01:11:50,640 Kaj havas bonan ripozon de viaj semajnon. 1542 01:11:50,640 --> 01:11:53,440 Mi certe vidos iun de vi ĉe oficejo horoj. 1543 01:11:53,440 --> 01:11:55,414