1 00:00:00,000 --> 00:00:04,875 2 00:00:04,875 --> 00:00:05,750 ANDI Peng: D'acord. 3 00:00:05,750 --> 00:00:08,240 Benvinguts a la quarta setmana de la secció. 4 00:00:08,240 --> 00:00:10,280 Fa un dia precios aquí a New Haven 5 00:00:10,280 --> 00:00:14,370 així que realment crec que l'escassa dispersió dels nens que 6 00:00:14,370 --> 00:00:17,530 es va unir a mi per a la secció d'avui, gràcies. 7 00:00:17,530 --> 00:00:21,517 >> Així que ràpidament, just abans que començar, l'agenda d'avui. 8 00:00:21,517 --> 00:00:23,600 Anem a anar a través d'una alguns anuncis breus. 9 00:00:23,600 --> 00:00:26,224 Tenim un horari molt boig que vénen en les pròximes dues setmanes 10 00:00:26,224 --> 00:00:28,010 més o menys, així que anem a anar sobre això. 11 00:00:28,010 --> 00:00:30,410 En segon lloc, ho sé topic-- favorit de tots 12 00:00:30,410 --> 00:00:33,572 Estic segur que això es va fondre la seva ment durant la conferència, no es preocupi, 13 00:00:33,572 --> 00:00:34,780 Encara espècie que no ho entenc. 14 00:00:34,780 --> 00:00:35,444 Està bé. 15 00:00:35,444 --> 00:00:36,110 Això va ser una broma. 16 00:00:36,110 --> 00:00:37,450 En realitat, jo ho entenc. 17 00:00:37,450 --> 00:00:40,234 Però m'asseguraré que vostès ho aconsegueix, també. 18 00:00:40,234 --> 00:00:42,400 Així que anem a passar un molt, molt bona quantitat 19 00:00:42,400 --> 00:00:44,020 temps parlant de punter d'avui. 20 00:00:44,020 --> 00:00:47,012 Com es pot veure, Candy xerrada és enorme avui. 21 00:00:47,012 --> 00:00:49,220 Estem realment va a mantenir que-- Sí, això és correcte. 22 00:00:49,220 --> 00:00:49,890 Seguiu prenent dolços. 23 00:00:49,890 --> 00:00:51,556 Vaig a passar a ells al voltant en aquest moment. 24 00:00:51,556 --> 00:00:55,150 25 00:00:55,150 --> 00:00:56,510 No et preocupis. 26 00:00:56,510 --> 00:00:59,570 Intentarem de veritat per mantenir el sucre en la sang de les persones 27 00:00:59,570 --> 00:01:04,390 perquè aquest cervell es va a cremar alguns avui oxigen a causa punters 28 00:01:04,390 --> 00:01:05,652 són molt, molt difícil. 29 00:01:05,652 --> 00:01:08,360 Llavors anem a parlar sobre gestió de memòria que tipus de és 30 00:01:08,360 --> 00:01:09,487 en el mateix regne. 31 00:01:09,487 --> 00:01:11,570 I mourem a redirecció i arxiu 32 00:01:11,570 --> 00:01:15,297 I / S que són sintaxi just, agradable coses que hem de parlar. 33 00:01:15,297 --> 00:01:17,130 I després, finalment, estic va intentar una vegada més 34 00:01:17,130 --> 00:01:19,070 deixar com 10, 15 minuts per pset4. 35 00:01:19,070 --> 00:01:21,820 Això és degut als pocs dies, així que estem va realment amable de donar 36 00:01:21,820 --> 00:01:24,850 alguns consells útils si Ja es va iniciar en això. 37 00:01:24,850 --> 00:01:26,141 Fresc. 38 00:01:26,141 --> 00:01:26,640 D'ACORD. 39 00:01:26,640 --> 00:01:30,710 Així que alguns anuncis per aquesta propera setmana. 40 00:01:30,710 --> 00:01:31,805 Classificació. 41 00:01:31,805 --> 00:01:33,930 No sé realment en aquest punt quants de vostès 42 00:01:33,930 --> 00:01:37,180 nois estan realment en el meu et secció- bé allà? 43 00:01:37,180 --> 00:01:38,020 D'ACORD. 44 00:01:38,020 --> 00:01:40,150 Però, per a aquells de vostès que estan en la meva secció, 45 00:01:40,150 --> 00:01:42,180 només un parell comenta sobre qualificacions. 46 00:01:42,180 --> 00:01:44,899 >> En primer treball realment bo, de comentar. 47 00:01:44,899 --> 00:01:47,940 Aquells de vostès que no fan cap comentari, vostè saben qui són, ja que probablement 48 00:01:47,940 --> 00:01:50,610 té alguns punts d'estil dinged aquesta setmana. 49 00:01:50,610 --> 00:01:53,920 Només assegureu-vos que en la totalitat del seu programes afegeixen un parell de comentaris. 50 00:01:53,920 --> 00:01:56,960 Realment, l'estil és molt fàcil aconseguir punts correctes en el seu àmbit d'aplicació. 51 00:01:56,960 --> 00:01:58,710 Així que per a nosaltres, simplement fer Segur que ets una mica 52 00:01:58,710 --> 00:02:03,770 d'afegir una breu descripció en tot seus programes sobre el que estàs fent. 53 00:02:03,770 --> 00:02:09,190 >> Secondly-- això és un gran problema per una gran part del TA aquesta week-- passat 54 00:02:09,190 --> 00:02:12,020 així que assegureu-vos que hi ha la possibilitat de pujar a la carpeta correcta amb correctament 55 00:02:12,020 --> 00:02:13,370 programes amb nom. 56 00:02:13,370 --> 00:02:16,820 I la raó per la qual demanem això és perquè, en el curs d'anivellament, 57 00:02:16,820 --> 00:02:20,820 realment executar un script en el seu codi que descarrega automàticament 58 00:02:20,820 --> 00:02:24,780 tots els conjunts de processadors, corre proves d'exactitud en tots ells, 59 00:02:24,780 --> 00:02:27,550 a continuació, càrrega teves puntuacions directament en el llibre de qualificacions. 60 00:02:27,550 --> 00:02:32,140 No obstant això, en qualsevol moment, si anomenat incorrectament seu programa, 61 00:02:32,140 --> 00:02:34,510 cargols ell cap amunt tota la programa per a tothom. 62 00:02:34,510 --> 00:02:37,280 >> I així, legítimament, aquesta bella guió 63 00:02:37,280 --> 00:02:40,260 que hem escrit que fa tot això per a nosaltres, completament 64 00:02:40,260 --> 00:02:43,070 es bloqueja si no té el seu programa nomenat correctament. 65 00:02:43,070 --> 00:02:46,020 Així que només pujar a la correcta carpeta, haver-los cridat correctament, 66 00:02:46,020 --> 00:02:47,372 i llavors la vida és bona. 67 00:02:47,372 --> 00:02:49,080 Amb si els seus conjunts de processadors de tornada a vostès anteriors 68 00:02:49,080 --> 00:02:51,110 perquè em permet qualificar-los ràpidament. 69 00:02:51,110 --> 00:02:52,461 Sí. 70 00:02:52,461 --> 00:02:52,960 D'ACORD. 71 00:02:52,960 --> 00:02:57,870 I també parlarem sobre-- Yale té un molt, molt 72 00:02:57,870 --> 00:02:59,950 horari boig en aquestes properes dues setmanes. 73 00:02:59,950 --> 00:03:02,460 Així que aquells de vostès en Harvard, això no s'aplica. 74 00:03:02,460 --> 00:03:05,585 Però per a nosaltres, els nens encantadors de Yale tenim cosa que es diu caiguda break-- sento, 75 00:03:05,585 --> 00:03:08,430 Harvard-- on tenim cinc dies de descans de l'escola. 76 00:03:08,430 --> 00:03:12,270 I si bé això és preciosa, tipus de fa malbé el nostre ritme pset 77 00:03:12,270 --> 00:03:14,104 perquè conjunts de processadors s'han Dijous, divendres. 78 00:03:14,104 --> 00:03:16,020 I pel que si no som aquí Dijous, divendres, que 79 00:03:16,020 --> 00:03:18,640 no pot tenir una feina per a vostès degut dijous, els divendres. 80 00:03:18,640 --> 00:03:23,832 >> Així que el que farem és-- estem com el 99% segur que això és el que està passant, 81 00:03:23,832 --> 00:03:25,540 pot haver alguna canviar, però crec que és 82 00:03:25,540 --> 00:03:28,460 subtle-- és que anem a tener-- aquesta setmana és normal. 83 00:03:28,460 --> 00:03:32,130 Així que tenim la nostra secció de Dimarts, seguit de les hores d'oficina 84 00:03:32,130 --> 00:03:35,190 tota la resta de la setmana i després pset4 venç el divendres. 85 00:03:35,190 --> 00:03:38,180 Llavors, com vostès saben, com Els vaig recordar nois la setmana passada, 86 00:03:38,180 --> 00:03:41,700 tenim la nostra prova 0 pujant dimecres. 87 00:03:41,700 --> 00:03:44,400 >> I així, sent un estudiant a mi mateix, Sé que molt pocs de vosaltres 88 00:03:44,400 --> 00:03:49,110 nois en realitat estar treballant en pset5 els dos dies abans de la seva prova. 89 00:03:49,110 --> 00:03:51,110 Llavors, què anem a probablement acabar fent és, 90 00:03:51,110 --> 00:03:54,840 que la nit de dilluns, anem en realitat, 5: 30-07: 00, 91 00:03:54,840 --> 00:03:59,970 tenir una breu ressenya període de sessions sobre els temes coberts. 92 00:03:59,970 --> 00:04:02,040 No queda clar si es tracta d'un revisar sessió o un Q & A. 93 00:04:02,040 --> 00:04:04,650 Serà una espècie d'opinió forma en què anem a cobrir 94 00:04:04,650 --> 00:04:06,640 alguns temes d'interès per a vosaltres. 95 00:04:06,640 --> 00:04:09,886 >> I després el dilluns i dimarts a la nit d'aquesta setmana 8: 00-11: 00, 96 00:04:09,886 --> 00:04:11,260 tindrem horari d'oficina. 97 00:04:11,260 --> 00:04:14,500 Aquestes hores d'oficina va més probablement més de simplement entrar, 98 00:04:14,500 --> 00:04:17,564 demanar TA seves preguntes sobre qualsevol concepte que vostè està confós sobre, 99 00:04:17,564 --> 00:04:20,480 i van a classe d'anar amb vosaltres i conceptes de revisió de la prova. 100 00:04:20,480 --> 00:04:22,920 Qüestionari 0, si estàs en la Dilluns, dimecres secció, 101 00:04:22,920 --> 00:04:26,480 serà el dimecres de durant class-- dimecres durant la classe. 102 00:04:26,480 --> 00:04:29,530 I llavors, si vostè està en el Dimarts, Dijous secció, 103 00:04:29,530 --> 00:04:32,577 serà també durant la classe dijous. 104 00:04:32,577 --> 00:04:34,410 Realment no es pot triar quina la que vas. 105 00:04:34,410 --> 00:04:35,640 Si vostè és un dilluns, dimecres, has d'anar a dimecres. 106 00:04:35,640 --> 00:04:38,056 Si estàs en dimarts, dijous has d'anar a dijous. 107 00:04:38,056 --> 00:04:42,277 Però després d'aquella nit, nosaltres el personal és encantador, es 108 00:04:42,277 --> 00:04:45,360 tenir una prova gegant classificació de festa en que arribarem a les seves puntuacions de nou a vostè 109 00:04:45,360 --> 00:04:46,190 Aquella nit. 110 00:04:46,190 --> 00:04:46,900 A quina hora? 111 00:04:46,900 --> 00:04:51,190 Incert, qui sap, però ho farà estar de tornada en el termini de 24 hores 112 00:04:51,190 --> 00:04:53,700 perquè vostès amb sort tenir una mica de retroalimentació per al divendres. 113 00:04:53,700 --> 00:04:55,870 >> I després tenim una setmana molt boig. 114 00:04:55,870 --> 00:05:00,330 Així pset5 és una de les conjunts de processadors més difícils de l'any. 115 00:05:00,330 --> 00:05:03,370 Així que ho sento nois. 116 00:05:03,370 --> 00:05:06,520 El que anem a tractar de fer és que tindrem 117 00:05:06,520 --> 00:05:08,380 algun suport real d'aquest cap de setmana. 118 00:05:08,380 --> 00:05:12,970 Perquè, com vostès poden veure, el pset s'ha de abans de les vacances de tardor. 119 00:05:12,970 --> 00:05:16,760 No tenim suport a nois durant les vacances de tardor 120 00:05:16,760 --> 00:05:18,897 i pel que realment tipus de vull expressar això com, 121 00:05:18,897 --> 00:05:21,230 anem a acabar amb això, treballarem molt, molt dur 122 00:05:21,230 --> 00:05:25,380 aquestes properes dues setmanes, reben aquest qüestionari i afegir aquests dos conjunts de processadors fets amb 123 00:05:25,380 --> 00:05:29,650 i després vostès tenen un bon relaxant set dies sense pensar en CS. 124 00:05:29,650 --> 00:05:33,750 >> Així que perquè a succeir, és probable que estiguem 125 00:05:33,750 --> 00:05:36,870 va a moure la meva secció per a les tardes de diumenge. 126 00:05:36,870 --> 00:05:39,070 Es va filmar el que no es preocupi si vostè no pot venir. 127 00:05:39,070 --> 00:05:41,595 Però la filmació en línia ho farà ser-hi i accessible 128 00:05:41,595 --> 00:05:47,630 perquè vostès tenen Diumenge, Dilluns, dimarts, per treballar en pset5. 129 00:05:47,630 --> 00:05:50,205 I llavors és caiguda trencar-se i cap CS i després 130 00:05:50,205 --> 00:05:51,830 tornem i la seva tornada a la rutina. 131 00:05:51,830 --> 00:05:54,926 >> Però serà un setmana meravellosa per a les vacances de tardor 132 00:05:54,926 --> 00:05:58,050 i realment volem que sigui el més estrès gratis per a tothom com sigui possible, que 133 00:05:58,050 --> 00:06:02,620 És per això que ens vam traslladar al conjunt de processadors que s'ha de abans de les vacances de tardor en lloc de després. 134 00:06:02,620 --> 00:06:07,601 A causa és-- Vull dir, em sento una mica com en contra del propòsit de tenir 135 00:06:07,601 --> 00:06:10,850 la data límit després de les vacances de tardor si hi ha cap suport de totes maneres durant les vacances de tardor. 136 00:06:10,850 --> 00:06:14,670 Així que és rather-- Crec preferim centrar-nos en això ara. 137 00:06:14,670 --> 00:06:16,950 Algú té preguntes sobre aquest horari? 138 00:06:16,950 --> 00:06:17,830 Qualsevol cosa confusa? 139 00:06:17,830 --> 00:06:18,330 Sí. 140 00:06:18,330 --> 00:06:20,944 >> AUDIÈNCIA: Tenim encara tenim una conferència sobre el 21? 141 00:06:20,944 --> 00:06:21,610 ANDI Peng: Sí. 142 00:06:21,610 --> 00:06:26,421 Així que el dia 21, que serà una conferència que és en viu des Harvard. 143 00:06:26,421 --> 00:06:29,170 No sé si David és el rodatge o si en realitat està donant conferències, 144 00:06:29,170 --> 00:06:32,430 però que estarà disponible en línia per a vostès a l'accés. 145 00:06:32,430 --> 00:06:35,510 Així que assegureu-vos de tallar 1 hores en algun lloc de les vacances de tardor 146 00:06:35,510 --> 00:06:39,375 així que vostès poden agafar en aquesta conferència. 147 00:06:39,375 --> 00:06:39,875 Sí? 148 00:06:39,875 --> 00:06:40,300 >> AUDIÈNCIA: Sí. 149 00:06:40,300 --> 00:06:40,422 Ho sento. 150 00:06:40,422 --> 00:06:41,280 Tinc ací un couple-- 151 00:06:41,280 --> 00:06:41,640 >> ANDI Peng: No es preocupi. 152 00:06:41,640 --> 00:06:42,556 Aquí, prendre una mica de caramel. 153 00:06:42,556 --> 00:06:45,350 154 00:06:45,350 --> 00:06:47,800 >> AUDIÈNCIA: Hey, em va cridar això. 155 00:06:47,800 --> 00:06:53,869 Així que per recapitular, no demà, però el Dimecres després d'això, tenim un concurs. 156 00:06:53,869 --> 00:06:54,660 ANDI Peng: Correcte. 157 00:06:54,660 --> 00:06:59,207 AUDIÈNCIA: I va ser-- ¿Quin és el format de la prova? 158 00:06:59,207 --> 00:06:59,790 ANDI Peng: Oh. 159 00:06:59,790 --> 00:07:03,870 Així t'enviarem un correu electrònic que cobreix tot el més en profunditat. 160 00:07:03,870 --> 00:07:06,590 Però, en essència, que només cobreix temes bàsics ja coberts 161 00:07:06,590 --> 00:07:09,042 en la primera meitat del semestre. 162 00:07:09,042 --> 00:07:12,250 Tindrem sessions de revisió i pregunta i respostes pel que no es preocupa per això. 163 00:07:12,250 --> 00:07:14,107 Però anem a anar sobre això també. 164 00:07:14,107 --> 00:07:16,940 AUDIÈNCIA: ¿Va a ser, ens portar als nostres ordinadors i codi allà- 165 00:07:16,940 --> 00:07:17,140 ANDI Peng: No. 166 00:07:17,140 --> 00:07:20,130 Va a ser que vostès escriuen i respondre a les preguntes de la mà. 167 00:07:20,130 --> 00:07:21,160 >> AUDIÈNCIA: Oh. 168 00:07:21,160 --> 00:07:23,160 >> ANDI Peng: Així que anem a donar pràctiques fora i coses 169 00:07:23,160 --> 00:07:26,420 així que vostès poden voler anar potser enrere i reescriure Mario amb la mà just 170 00:07:26,420 --> 00:07:28,100 per assegurar-se que vostès tenen una idea de com fer-ho. 171 00:07:28,100 --> 00:07:29,933 Perquè a vegades quan escriviu per que la mà 172 00:07:29,933 --> 00:07:32,656 oblidar comes i altres coses i això és molt dolent. 173 00:07:32,656 --> 00:07:34,156 AUDIÈNCIA: ¿No serà [inaudible]? 174 00:07:34,156 --> 00:07:38,290 Igual, que està rebent un punt i coma en tu-- 175 00:07:38,290 --> 00:07:40,270 >> ANDI Peng: Sí i no. 176 00:07:40,270 --> 00:07:43,170 Parlarem més en profunditat sobre com el disseny de qüestionari és 177 00:07:43,170 --> 00:07:44,550 i com anem a grau. 178 00:07:44,550 --> 00:07:47,425 Però, en essència, només sé que el format general serà vostè 179 00:07:47,425 --> 00:07:49,930 nois, ja sigui interpretant code-- respondre a les preguntes bàsiques. 180 00:07:49,930 --> 00:07:51,370 Si jo li vaig preguntar, què és una biblioteca? 181 00:07:51,370 --> 00:07:53,450 Vostès han de saber el que una la biblioteca fa i escriure això. 182 00:07:53,450 --> 00:07:56,283 O es em permet dir-ho, escriure un programa que imprimeix Hello World a la pantalla. 183 00:07:56,283 --> 00:08:01,140 Vostès escriuria, int main void printf hola coma món. 184 00:08:01,140 --> 00:08:01,908 Sí. 185 00:08:01,908 --> 00:08:04,398 >> AUDIÈNCIA: ¿Així que no va estar en qualsevol lloc [inaudible] 186 00:08:04,398 --> 00:08:05,900 nivell de dificultat del problema estableix? 187 00:08:05,900 --> 00:08:06,170 >> ANDI Peng: No. 188 00:08:06,170 --> 00:08:06,380 No. 189 00:08:06,380 --> 00:08:07,046 Ens won't-- si. 190 00:08:07,046 --> 00:08:10,030 Escriu la totalitat de la joc de 15 a 20 minuts, vaja. 191 00:08:10,030 --> 00:08:12,120 No, no serà això. 192 00:08:12,120 --> 00:08:12,801 No. 193 00:08:12,801 --> 00:08:13,342 AUDIÈNCIA: OK. 194 00:08:13,342 --> 00:08:15,326 Així que aquest és el dimecres. 195 00:08:15,326 --> 00:08:19,017 Durant aquesta setmana també han creat el problema més difícil? 196 00:08:19,017 --> 00:08:19,600 ANDI Peng: No. 197 00:08:19,600 --> 00:08:22,970 Així que el problema el va posar per el dia abans de les vacances de tardor. 198 00:08:22,970 --> 00:08:25,690 El schedule-- el correu electrònic va ser enviar realment fos 199 00:08:25,690 --> 00:08:27,232 Fa 20 minuts respecte a tot això. 200 00:08:27,232 --> 00:08:28,689 Així que vostès simplement consultar el seu correu electrònic. 201 00:08:28,689 --> 00:08:29,430 Serà allà. 202 00:08:29,430 --> 00:08:30,060 Sí. 203 00:08:30,060 --> 00:08:31,701 No et preocupis. 204 00:08:31,701 --> 00:08:32,200 Fresc. 205 00:08:32,200 --> 00:08:34,900 206 00:08:34,900 --> 00:08:38,900 >> Teniu alguna pregunta generals sobre anuncis, classificació, qüestionaris, 207 00:08:38,900 --> 00:08:41,659 Abans d'aprofundir la dreta en punters que consumirà 208 00:08:41,659 --> 00:08:45,060 la major part del nostre temps secció d'avui? 209 00:08:45,060 --> 00:08:47,030 Fresc. 210 00:08:47,030 --> 00:08:47,530 Tot bé. 211 00:08:47,530 --> 00:08:50,905 Així ho van fer vostès tots Veure aquest lovely-- No sé el que ells diuen. 212 00:08:50,905 --> 00:08:53,490 El que l'animació amb plastilina va volar a si mateixa, ja que 213 00:08:53,490 --> 00:08:54,820 no utilitzar un punter correctament. 214 00:08:54,820 --> 00:08:57,629 Bé, el programa va probablement esclatar a si mateixa si 215 00:08:57,629 --> 00:08:59,170 no utilitzi punters correctament també. 216 00:08:59,170 --> 00:09:01,250 Així que farem Segur que això no succeeixi. 217 00:09:01,250 --> 00:09:04,810 >> Avui anem a fer una mica de diversió punter. 218 00:09:04,810 --> 00:09:08,970 Vaig a anar sobre les coses tan bé com crec 219 00:09:08,970 --> 00:09:10,790 que és possible en un marc de temps petit. 220 00:09:10,790 --> 00:09:14,592 Però hi ha tantes coses per cobrir que realment vull que vostès, 221 00:09:14,592 --> 00:09:17,300 si vostè no entén alguna cosa, que no només em va permetre seguir endavant. 222 00:09:17,300 --> 00:09:18,580 Perquè si no ho fa entendre alguna cosa, 223 00:09:18,580 --> 00:09:21,329 és probable que no va a entendre res del que dic després d'això. 224 00:09:21,329 --> 00:09:23,310 Així que per favor em parar i fer una pregunta. 225 00:09:23,310 --> 00:09:25,380 A causa de que tota la classe de boles de neu junts. 226 00:09:25,380 --> 00:09:27,800 Igual que, punters condueixen a plom de memòria en altres coses. 227 00:09:27,800 --> 00:09:31,710 I pel que si vostè no entén punters, aturar-me i nosaltres ho resoldrem 228 00:09:31,710 --> 00:09:35,070 i la vida va a estar bé. 229 00:09:35,070 --> 00:09:35,680 >> Fresc. 230 00:09:35,680 --> 00:09:39,050 Llavors, quants de vostès en la conferència, quan David va esmentar punters, 231 00:09:39,050 --> 00:09:42,050 seus cervells tipus de convertir en gelatina? 232 00:09:42,050 --> 00:09:42,550 Sí. 233 00:09:42,550 --> 00:09:44,190 Bé. 234 00:09:44,190 --> 00:09:46,900 Anem a tractar de de-Jell-O el teu cervell avui. 235 00:09:46,900 --> 00:09:50,300 Anem a realment sistemàtica passar pel que exactament un punter és, 236 00:09:50,300 --> 00:09:52,530 el que fa, i com els utilitzen. 237 00:09:52,530 --> 00:09:56,620 >> Així que tot el pointers-- normalment amb les variables 238 00:09:56,620 --> 00:10:00,920 hem estat utilitzant en la codificació, com variables com nombres sencers o cadenes 239 00:10:00,920 --> 00:10:04,790 o flotadors, tots són essencialment un valor que se'ls assigna 240 00:10:04,790 --> 00:10:06,870 així com una adreça que apunta a aquest valor. 241 00:10:06,870 --> 00:10:08,895 Així que vaig a treure això ara mateix. 242 00:10:08,895 --> 00:10:14,270 243 00:10:14,270 --> 00:10:16,140 Gairebé no tenim guix però això està bé. 244 00:10:16,140 --> 00:10:25,550 >> Així, per exemple, normalment la forma en què hem 245 00:10:25,550 --> 00:10:30,860 estat utilitzant variables és que vam crear el nom de la variable de tipus int, anem a 246 00:10:30,860 --> 00:10:31,360 només dir. 247 00:10:31,360 --> 00:10:37,360 Així que aquí tenim int x i estem inicialitzar que int a 50. 248 00:10:37,360 --> 00:10:42,390 Així que aquí, en aquest bloc de memòria en la nostra ordinadors que hem emmagatzemat un nombre de 50. 249 00:10:42,390 --> 00:10:46,170 Llavors, on punters entren en joc és que l'equip itself--, aquí, 250 00:10:46,170 --> 00:10:48,880 físicament en el disc dur en la RAM del meu computer-- 251 00:10:48,880 --> 00:10:51,147 que només té una quantitat finita de memòria. 252 00:10:51,147 --> 00:10:53,980 No es pot mantenir l'emmagatzematge de les coses a la part superior de les coses a la part superior de les coses 253 00:10:53,980 --> 00:10:54,990 i tenen tots ells. 254 00:10:54,990 --> 00:10:59,570 >> Així que la forma en què dinàmicament assignem memòria per poder emmagatzemar el que volem 255 00:10:59,570 --> 00:11:03,150 i accedir-hi, és per tenir punters. 256 00:11:03,150 --> 00:11:06,210 Així que imagina't en el seu espai en la memòria, a la dreta. 257 00:11:06,210 --> 00:11:10,420 Si aquest és el RAM de la seva ordinador, vostè té aquests petits trossos 258 00:11:10,420 --> 00:11:14,540 o blocs o bytes de memòria en which-- aquests són només poc 259 00:11:14,540 --> 00:11:18,120 blocs que han estat assignats a terme en el disc dur o la memòria RAM del seu ordinador, 260 00:11:18,120 --> 00:11:21,950 i dins de cada un d'aquests blocs pots emmagatzemar diferents coses. 261 00:11:21,950 --> 00:11:26,990 Així, per exemple, un array en aquest exemple 262 00:11:26,990 --> 00:11:29,984 aquí és un byte que és que consta de vuit bits. 263 00:11:29,984 --> 00:11:32,900 El nombre canvia depenent del sistema operatiu del seu ordinador. 264 00:11:32,900 --> 00:11:35,942 Per exemple, quants de vostès tenen sentit parlar de 32 bits enfront de 64 bits de funcionament 265 00:11:35,942 --> 00:11:36,441 sistemes? 266 00:11:36,441 --> 00:11:37,070 Exactament. 267 00:11:37,070 --> 00:11:38,860 >> Així que tot el que està dient és que el memory-- 268 00:11:38,860 --> 00:11:42,420 que la forma en què l'equip gestiona la memòria és diferent. 269 00:11:42,420 --> 00:11:45,370 Què és això que és molt important entendre 270 00:11:45,370 --> 00:11:49,450 quines funcions si mateix en lloc de memòria de prestar atenció als números. 271 00:11:49,450 --> 00:11:52,400 Així que en realitat no importa el gran que aquesta matriu 272 00:11:52,400 --> 00:11:55,710 És a dir, només hem de importa el gran que què necessitem un int a ser, 273 00:11:55,710 --> 00:11:58,350 què tan gran Necessitem una cadena ser, què tan gran és un punter? 274 00:11:58,350 --> 00:12:00,630 275 00:12:00,630 --> 00:12:01,130 D'ACORD. 276 00:12:01,130 --> 00:12:03,690 Així que serà molt , La informació densa de pesada. 277 00:12:03,690 --> 00:12:07,005 Vaig a donar a vostès un parell de moments d'alleugeriment d'historietes aquí. 278 00:12:07,005 --> 00:12:09,130 Tots Vostès haurien de poder entendre això ara. 279 00:12:09,130 --> 00:12:12,550 Perquè sabem que punters són direccions, 280 00:12:12,550 --> 00:12:14,480 i els que són diferents de variables. 281 00:12:14,480 --> 00:12:14,980 D'ACORD. 282 00:12:14,980 --> 00:12:15,610 Fresc. 283 00:12:15,610 --> 00:12:17,065 Acudits CS són els millors, no? 284 00:12:17,065 --> 00:12:19,800 285 00:12:19,800 --> 00:12:23,450 >> Així que la forma en què anem sobre la creació d'un punter 286 00:12:23,450 --> 00:12:25,750 és un tipus molt específic de sintaxi. 287 00:12:25,750 --> 00:12:27,870 Igual que amb la creació de qualsevol tipus de variable, és 288 00:12:27,870 --> 00:12:30,240 serà una específica Sintaxi fem servir per crear-la. 289 00:12:30,240 --> 00:12:34,830 Així que quan es declara cap punter, un punter és només essentially-- 290 00:12:34,830 --> 00:12:37,040 Crec que l'important part de punters és 291 00:12:37,040 --> 00:12:41,650 que, mentre que una variable té tant un valor i una direcció, 292 00:12:41,650 --> 00:12:44,100 un punter és una adreça. 293 00:12:44,100 --> 00:12:45,740 El seu valor és una adreça. 294 00:12:45,740 --> 00:12:48,120 Així que és una adreça emmagatzemada en una direcció diferent. 295 00:12:48,120 --> 00:12:49,120 Si això té algun sentit. 296 00:12:49,120 --> 00:12:52,390 Anem a repassar això amb més detall, però aquesta és la forma genèrica 297 00:12:52,390 --> 00:12:54,370 de què-- de com s'emmagatzema una impressora. 298 00:12:54,370 --> 00:12:58,900 >> Així que la forma en què es crea un punter és fent qualsevol tipus de dades 299 00:12:58,900 --> 00:13:02,840 que el punter es va ser referència i llavors-- 300 00:13:02,840 --> 00:13:05,324 amb el star-- i després el nom del punter. 301 00:13:05,324 --> 00:13:07,240 Així que aquí, si volíem per crear un punter que 302 00:13:07,240 --> 00:13:11,640 apuntant cap a un nombre sencer, i ens volia el nom del punter sigui x, 303 00:13:11,640 --> 00:13:13,880 faríem int estrelles x. 304 00:13:13,880 --> 00:13:14,380 Sí? 305 00:13:14,380 --> 00:13:16,680 >> AUDIÈNCIA: I pel que si la següent línia que 306 00:13:16,680 --> 00:13:20,045 fer int x, int serà l'estrella de x indicar la ubicació de la x 307 00:13:20,045 --> 00:13:21,170 estàs definint després? 308 00:13:21,170 --> 00:13:22,000 >> ANDI Peng: Molt bona pregunta. 309 00:13:22,000 --> 00:13:23,860 Anem a repassar això en una parella llisca més tard. 310 00:13:23,860 --> 00:13:24,920 Sí. 311 00:13:24,920 --> 00:13:27,610 I després el mateix amb carbó i les mateixes carrosses cosa. 312 00:13:27,610 --> 00:13:29,950 Només sé que en aquest moment hem creat un punter, 313 00:13:29,950 --> 00:13:32,470 que en realitat no hem fixat de la mateixa manera res encara. 314 00:13:32,470 --> 00:13:34,110 En realitat no hem referenciat ella. 315 00:13:34,110 --> 00:13:36,087 El mateix aquí quan es crea una variable, 316 00:13:36,087 --> 00:13:39,420 que ha creat el nom de la variable, que en realitat no ha establert un valor a la mateixa. 317 00:13:39,420 --> 00:13:41,410 El mateix aquí. 318 00:13:41,410 --> 00:13:42,110 >> D'ACORD. 319 00:13:42,110 --> 00:13:44,670 Llavors, ¿com es defineixen els valors dels punters? 320 00:13:44,670 --> 00:13:47,190 És referenciant i eliminació de referències. 321 00:13:47,190 --> 00:13:52,260 Així que la forma en què podem referenciar 1 varia-- un punter, en essència 322 00:13:52,260 --> 00:13:56,630 tornem la direcció en la memòria dels quals s'emmagatzema una variable. 323 00:13:56,630 --> 00:14:02,550 Així que si jo tingués un pointer-- vaig a dibuixar aquesta vegada arribem a la següent diapositiva, 324 00:14:02,550 --> 00:14:05,760 però només sé que, en essència, la i- el signe 325 00:14:05,760 --> 00:14:10,240 i tot el que la variable-- fa és dir-li a la direcció 326 00:14:10,240 --> 00:14:11,780 d'on alguna cosa s'emmagatzema. 327 00:14:11,780 --> 00:14:15,730 I dereferencing és el contrari d'això, que és només l'estrella. 328 00:14:15,730 --> 00:14:18,950 L'estrella simplement li dóna la real les dades emmagatzemades en aquesta direcció. 329 00:14:18,950 --> 00:14:21,090 >> Així que un li dóna l'adreça emmagatzemat en una direcció, 330 00:14:21,090 --> 00:14:23,945 l'altre li dóna la real valor emmagatzemat en la direcció. 331 00:14:23,945 --> 00:14:25,820 Així que els dos d'ells donen que coses diferents. 332 00:14:25,820 --> 00:14:27,755 333 00:14:27,755 --> 00:14:29,880 Un cop més, els portaobjectes es tots en línia de manera que no es preocupi 334 00:14:29,880 --> 00:14:33,200 si vostès no poden copiar això en el temps. 335 00:14:33,200 --> 00:14:36,330 >> Així que anem a fer una ullada en aquest exemple. 336 00:14:36,330 --> 00:14:40,530 Així que tenim un gegant matriu de memòria aquí, oi? 337 00:14:40,530 --> 00:14:42,920 Quan només tenim blocs de memòria o bytes de memòria, 338 00:14:42,920 --> 00:14:45,060 en el qual podem emmagatzemar diferents coses. 339 00:14:45,060 --> 00:14:47,310 Diguem que es tracta de la punts de direcció en la memòria. 340 00:14:47,310 --> 00:14:51,350 Així que cada vegada que tingui - veure el 0x, tot el que està dient vostè és que 341 00:14:51,350 --> 00:14:52,930 això és un dígit hexadecimal. 342 00:14:52,930 --> 00:14:56,310 Com vostès saben, els números podria basar-se en diferents bases. 343 00:14:56,310 --> 00:14:58,770 Base 10 és la forma en què normalment interpretar els nombres. 344 00:14:58,770 --> 00:15:00,550 També hi ha base 2, que és binari. 345 00:15:00,550 --> 00:15:03,366 I en aquest cas, hexadecimal és base 16. 346 00:15:03,366 --> 00:15:06,240 És només una forma diferent de dir de zero a 10-- o zero a nou 347 00:15:06,240 --> 00:15:10,904 i després també A, B, C, D, E, F. També fa referència a un nombre diferent. 348 00:15:10,904 --> 00:15:12,570 David es va acostar això en conferència breument. 349 00:15:12,570 --> 00:15:14,280 Si vostès són confós, busca-ho a google. 350 00:15:14,280 --> 00:15:17,370 Hi ha maneres molt fàcils d'aprendre el que és un dígit hexadecimal és. 351 00:15:17,370 --> 00:15:19,510 Tot el que és realment rellevant en aquest moment és per a vostè 352 00:15:19,510 --> 00:15:24,170 nois que saben que una dígits hexadecimals en C 353 00:15:24,170 --> 00:15:27,090 usted-- diu que típicament li diu que és un punter. 354 00:15:27,090 --> 00:15:29,150 O això és una adreça. 355 00:15:29,150 --> 00:15:33,310 >> Així que en aquest exemple aquí, int x és igual a 5. 356 00:15:33,310 --> 00:15:36,350 Estem creant un integer-- Ho sentim, una variable de tipus 357 00:15:36,350 --> 00:15:39,090 sencer i estem inicialitzar a 5. 358 00:15:39,090 --> 00:15:47,040 Així que aquí a la nostra targeta de memòria, podem veure que x està en la direcció de 0x0 359 00:15:47,040 --> 00:15:50,550 i el valor que tens emmagatzemat a l'interior de la mateixa és de 5. 360 00:15:50,550 --> 00:15:52,370 Això hauria de donar-li sentit a tothom, no? 361 00:15:52,370 --> 00:15:53,030 D'ACORD. 362 00:15:53,030 --> 00:15:56,520 >> I llavors el que hem fet en la segona línia de codi 363 00:15:56,520 --> 00:16:00,290 és que hem creat un punter de tipus int. 364 00:16:00,290 --> 00:16:02,750 Això és el que el int indicador de l'estrella està fent. 365 00:16:02,750 --> 00:16:07,320 I això és igual que el signe x és que li dóna l'adreça d'alguna cosa. 366 00:16:07,320 --> 00:16:12,120 Així que la direcció de x en aquest exemple és 0x0. 367 00:16:12,120 --> 00:16:15,630 I perquè la direcció està sent emmagatzemat en aquest punter. 368 00:16:15,630 --> 00:16:17,360 ¿Això té sentit per a tothom? 369 00:16:17,360 --> 00:16:19,965 >> Així que pensar en esto-- pensar en pointers-- aquí 370 00:16:19,965 --> 00:16:24,780 en Yale tenim un sistema d'apartat postal on cada estudiant té un mailing 371 00:16:24,780 --> 00:16:26,960 enfront d'on es pot anar al soterrani de LW 372 00:16:26,960 --> 00:16:30,492 i vostè pot simplement anar i agafar tot el que necessita d'aquesta direcció. 373 00:16:30,492 --> 00:16:32,450 El mateix està succeint aquí a un ordinador. 374 00:16:32,450 --> 00:16:36,770 Vostè té aquests bytes de memòria que pot emmagatzemar informació en, 375 00:16:36,770 --> 00:16:39,529 però per saber què peces d'informació 376 00:16:39,529 --> 00:16:42,570 partit del que estàs tractant de trobar i on, necessita un punter que 377 00:16:42,570 --> 00:16:43,740 et diu com anar-hi. 378 00:16:43,740 --> 00:16:47,270 >> Així, per exemple, per a mi, el meu apartat de correus, Tinc un nombre de cinc dígits específic. 379 00:16:47,270 --> 00:16:48,400 Aquesta és la meva adreça. 380 00:16:48,400 --> 00:16:51,880 Així que puc anar físicament a la memòria, Puc mirar en la direcció, 381 00:16:51,880 --> 00:16:54,507 Puc anar a la casella de correu i accedir a les dades a l'interior. 382 00:16:54,507 --> 00:16:57,090 ¿Això té sentit per a tothom L'ordinador és essencialment 383 00:16:57,090 --> 00:16:59,000 fent exactament el mateix. 384 00:16:59,000 --> 00:17:02,750 >> Així que tot punter està fent és que és només la creació d'una memòria 385 00:17:02,750 --> 00:17:06,099 i les seves dades de memòria és en realitat la direcció d'una altra cosa. 386 00:17:06,099 --> 00:17:08,210 Llavors vostè pot anar a buscar això. 387 00:17:08,210 --> 00:17:09,060 Cada un de bo? 388 00:17:09,060 --> 00:17:10,720 Tothom bo amb mi fins ara? 389 00:17:10,720 --> 00:17:11,360 D'ACORD. 390 00:17:11,360 --> 00:17:11,859 Fresc. 391 00:17:11,859 --> 00:17:14,311 392 00:17:14,311 --> 00:17:14,810 Tot bé. 393 00:17:14,810 --> 00:17:19,160 Així gairebé el mateix que abans. 394 00:17:19,160 --> 00:17:23,849 Així que tenim, primer, una variable crida x en què cas-- 395 00:17:23,849 --> 00:17:27,700 Vaig a canviar aquest valor a 5. 396 00:17:27,700 --> 00:17:31,820 Diguem que la direcció d'aquesta memòria és 0x0. 397 00:17:31,820 --> 00:17:33,070 00. 398 00:17:33,070 --> 00:17:33,570 Gran. 399 00:17:33,570 --> 00:17:35,320 >> Així doncs, en el nostre segon línia de codi, que estem 400 00:17:35,320 --> 00:17:41,210 crearà un punter anomenada punter ptr. 401 00:17:41,210 --> 00:17:45,760 I la direcció d'això, anem a Només cal dir que és 0x01 a la memòria. 402 00:17:45,760 --> 00:17:48,280 I realment volem almacén-- el signe 403 00:17:48,280 --> 00:17:50,620 x li dóna l'adreça del que X era. 404 00:17:50,620 --> 00:17:53,990 I la direcció de x era 0x00. 405 00:17:53,990 --> 00:17:57,300 Així que aquest punter ara en realitat té la direcció 406 00:17:57,300 --> 00:18:00,210 emmagatzemada com el seu valor del que X era. 407 00:18:00,210 --> 00:18:01,700 Tothom amb mi fins ara? 408 00:18:01,700 --> 00:18:02,320 Fresc. 409 00:18:02,320 --> 00:18:04,670 >> I llavors, la forma en què hauríem de copiar, 410 00:18:04,670 --> 00:18:09,650 és si volem declarar i inicialitzar un altre bloc de memòria de tipus int. 411 00:18:09,650 --> 00:18:10,150 Oi? 412 00:18:10,150 --> 00:18:11,130 Això seria un int. 413 00:18:11,130 --> 00:18:14,130 Es diria còpia. 414 00:18:14,130 --> 00:18:17,120 I vas a get-- el l'indicador de l'estrella li dóna 415 00:18:17,120 --> 00:18:19,080 les dades reals d'aquesta direcció. 416 00:18:19,080 --> 00:18:22,490 El signe et dóna l'adreça, l'estrella que dóna les dades. 417 00:18:22,490 --> 00:18:24,630 Així que les dades de punter. 418 00:18:24,630 --> 00:18:29,420 Aquest punter apunta a 5. 419 00:18:29,420 --> 00:18:33,140 I així aquesta funció aquí-- l'estrella pointer-- 420 00:18:33,140 --> 00:18:39,740 va, aconsegueix el que està en aquest bloc i ho emmagatzema aquí. 421 00:18:39,740 --> 00:18:41,730 Tothom clara sobre com va succeir això? 422 00:18:41,730 --> 00:18:45,490 >> Allà- Així que els dos operadors de la dreta el signe i la star-- 423 00:18:45,490 --> 00:18:48,250 acaba de fer coses diferents quan s'utilitza en punters. 424 00:18:48,250 --> 00:18:50,837 Un que té la direcció, un vostè obté el valor real. 425 00:18:50,837 --> 00:18:53,670 Així que assegureu-vos que quan vostès estan codificació que no confondre els dos 426 00:18:53,670 --> 00:18:55,650 perquè són molt diferents. 427 00:18:55,650 --> 00:18:58,880 Aquí tenim un bon exemple d'un 0x01. 428 00:18:58,880 --> 00:19:01,207 Aquesta és una molt agradable nombre petit per recordar. 429 00:19:01,207 --> 00:19:03,040 En l'equip real vostè va a tenir 430 00:19:03,040 --> 00:19:06,740 un nombre cul gegant que és una cosa això no és agradable, no és agradable. 431 00:19:06,740 --> 00:19:08,280 Serà un valor escombraries. 432 00:19:08,280 --> 00:19:10,920 I així va realment, realment desordenar els seus programes. 433 00:19:10,920 --> 00:19:12,670 És molt important ara que tenim 434 00:19:12,670 --> 00:19:16,150 els fonaments sota per què-- similars, el que passa físicament quan 435 00:19:16,150 --> 00:19:18,270 s'està executant aquests blocs de codi. 436 00:19:18,270 --> 00:19:19,120 Everyone-- sí? 437 00:19:19,120 --> 00:19:21,425 >> AUDIÈNCIA: Llavors int x és igual int còpia? 438 00:19:21,425 --> 00:19:24,650 439 00:19:24,650 --> 00:19:34,970 >> ANDI PENG: No, perquè, en aquest cas, int x-- el valor de x-- és igual a 5, oi? 440 00:19:34,970 --> 00:19:40,546 I després int còpia és igual a 5. 441 00:19:40,546 --> 00:19:43,420 Així que si anés a equiparar- entre si perquè són nombres enters, 442 00:19:43,420 --> 00:19:46,379 sí, s'avaluarien en true. 443 00:19:46,379 --> 00:19:49,670 Però si fossin cadenes en memòria, com el que David va fer durant exemple, 444 00:19:49,670 --> 00:19:51,670 això és diferent perquè que estan referència 445 00:19:51,670 --> 00:19:54,920 les adreces dels llocs de la memòria i que equivaldrien a fals. 446 00:19:54,920 --> 00:20:00,070 >> Així que aquí seria cert perquè estàs comparant directament values-- integers-- 447 00:20:00,070 --> 00:20:02,240 però en els altres que ets punts de referència. 448 00:20:02,240 --> 00:20:05,290 A causa que una cadena està en una matriu, i tot-- parlarem d'aquesta tarda- 449 00:20:05,290 --> 00:20:09,940 però matriu és essencialment només un Punter a un grup de caràcters en la memòria. 450 00:20:09,940 --> 00:20:11,610 Així que aquests són una mica diferents. 451 00:20:11,610 --> 00:20:14,642 Però en aquest cas, sí, vostè podria fer això. 452 00:20:14,642 --> 00:20:17,354 >> AUDIÈNCIA: Pot explicar la direcció de la còpia? 453 00:20:17,354 --> 00:20:18,020 ANDI Peng: Sí. 454 00:20:18,020 --> 00:20:20,030 Així que això és el sol-- no emplenar un valor 455 00:20:20,030 --> 00:20:23,022 però és només una mica a l'atzar una altra valor de les escombraries que no ens preocupem. 456 00:20:23,022 --> 00:20:25,730 Perquè una vegada que s'iniciï el programa t'adones que no ho fem realitat 457 00:20:25,730 --> 00:20:28,150 m'importa el que la adreces reals són, 458 00:20:28,150 --> 00:20:30,470 només hem de saber el que està en les direccions. 459 00:20:30,470 --> 00:20:31,608 Sí. 460 00:20:31,608 --> 00:20:36,034 >> AUDIÈNCIA: L'estrella al costat de int al segona línia, que és diferent no sigui: 461 00:20:36,034 --> 00:20:36,700 ANDI Peng: Sí. 462 00:20:36,700 --> 00:20:39,015 AUDIÈNCIA: --el desreferència i fer referència a l'estrella? 463 00:20:39,015 --> 00:20:39,681 ANDI Peng: Sí. 464 00:20:39,681 --> 00:20:43,180 Així que els autors de C-- qualsevol decidit a escriure el llenguatge de la C-- 465 00:20:43,180 --> 00:20:44,200 no era molt intel·ligent. 466 00:20:44,200 --> 00:20:46,830 No eren molt intel·ligents en l'intent esbrinar per què hauríem de fer això. 467 00:20:46,830 --> 00:20:49,413 Si fos jo, ho faria sens dubte utilitzar dos personatges diferents. 468 00:20:49,413 --> 00:20:52,100 Però es va decidir utilitzar la mateixa. 469 00:20:52,100 --> 00:20:56,607 >> Així que l'estrella després d'un int, que li diu a l'equip 470 00:20:56,607 --> 00:20:58,190 que vostè està a punt de crear un punter. 471 00:20:58,190 --> 00:21:00,820 Però si vostè està tractant d'eliminar la referència alguna cosa-- en altres paraules, 472 00:21:00,820 --> 00:21:03,780 anar a l'adreça i tirar les dades de somewhere-- 473 00:21:03,780 --> 00:21:05,070 l'estrella s'utilitza de manera diferent. 474 00:21:05,070 --> 00:21:08,750 Així que vostès acaba de tenir cura amb no fer malbé els dos usos. 475 00:21:08,750 --> 00:21:09,870 Fresc. 476 00:21:09,870 --> 00:21:10,605 Sí? 477 00:21:10,605 --> 00:21:14,680 >> AUDIÈNCIA: Llavors, només per repetir a assegurar-se que estic following-- 478 00:21:14,680 --> 00:21:16,252 >> ANDI Peng: Totalment bé. 479 00:21:16,252 --> 00:21:20,491 >> AUDIÈNCIA --al costat esquerre de aquesta diapositiva, fem una cosa que sabem. 480 00:21:20,491 --> 00:21:23,124 Declarem un enter [Inaudible] que són igual a 5. 481 00:21:23,124 --> 00:21:23,790 ANDI Peng: Sí. 482 00:21:23,790 --> 00:21:24,456 AUDIÈNCIA: Correcte. 483 00:21:24,456 --> 00:21:28,960 I després tenim una cosa int estrella i que diu que, d'acord, una cosa així com que 484 00:21:28,960 --> 00:21:31,235 declarar un sencer, ara estem declarant un punter. 485 00:21:31,235 --> 00:21:32,110 ANDI Peng: correctament. 486 00:21:32,110 --> 00:21:32,410 Correcte. 487 00:21:32,410 --> 00:21:32,710 >> AUDIÈNCIA: Oi? 488 00:21:32,710 --> 00:21:33,870 I el nostre punter ptr. 489 00:21:33,870 --> 00:21:34,080 >> ANDI Peng: Sí. 490 00:21:34,080 --> 00:21:35,460 El nom del punter és ptr. 491 00:21:35,460 --> 00:21:35,959 Punter. 492 00:21:35,959 --> 00:21:39,000 AUDIÈNCIA: I llavors iguals nx que simplement li diu a C 493 00:21:39,000 --> 00:21:44,667 que vol accedir al valor en sencer x-- el valor que sencer x 494 00:21:44,667 --> 00:21:45,800 va ser assignat. 495 00:21:45,800 --> 00:21:49,050 >> ANDI Peng: Aneu amb compte perquè signe x realitat 496 00:21:49,050 --> 00:21:53,120 diu usted-- l'equip que voler estirar la direcció del que x és. 497 00:21:53,120 --> 00:21:56,350 Així signe et dóna la direcció, estrelles, li dóna el valor. 498 00:21:56,350 --> 00:21:58,255 >> AUDIÈNCIA: Llavors volem la direcció. 499 00:21:58,255 --> 00:22:02,075 Diguem que x era at-- 500 00:22:02,075 --> 00:22:03,950 ANDI Peng: En realitat, saber el que x és, oi? 501 00:22:03,950 --> 00:22:06,790 Perquè sabem que x era-- estic inventant això, però anem a dir, 502 00:22:06,790 --> 00:22:08,760 arbitràriament, era 0x00. 503 00:22:08,760 --> 00:22:09,590 Oi? 504 00:22:09,590 --> 00:22:14,120 Així que sabem que la direcció és 0x00, i així quan anem i ampersand x, 505 00:22:14,120 --> 00:22:17,050 sabem que això d'avaluar tot 0x00. 506 00:22:17,050 --> 00:22:20,810 És per això que ens van guardar que com el valor de la nostra punter. 507 00:22:20,810 --> 00:22:21,924 Això té sentit? 508 00:22:21,924 --> 00:22:22,832 >> AUDIÈNCIA: Sí. 509 00:22:22,832 --> 00:22:28,057 I còpia va a ptr-- dereference 510 00:22:28,057 --> 00:22:28,765 ANDI Peng: Correcte. 511 00:22:28,765 --> 00:22:30,473 AUDIÈNCIA: -que és un punter que hem 512 00:22:30,473 --> 00:22:35,220 declarar que ens el compte direcció del nombre enter x. 513 00:22:35,220 --> 00:22:36,160 >> ANDI Peng: Sí. 514 00:22:36,160 --> 00:22:39,272 >> AUDIÈNCIA: I en aquest un cas, ptr estrelles és 515 00:22:39,272 --> 00:22:41,256 igual al valor de x que és igual a 5. 516 00:22:41,256 --> 00:22:42,744 >> ANDI Peng: Correcte. 517 00:22:42,744 --> 00:22:44,728 >> AUDIÈNCIA: Cool. 518 00:22:44,728 --> 00:22:49,382 I això és una manera més senzilla d'aconseguir això, o és que l'únic manera- 519 00:22:49,382 --> 00:22:51,840 ANDI Peng: Així que ara mateix no sembla molt lògic per a nosaltres 520 00:22:51,840 --> 00:22:54,690 passar tot aquest temps fent aquesta cosa molt complicada quan 521 00:22:54,690 --> 00:22:57,606 tot el que hem fet és simplement crear de dues sencers amb el valor de 5, oi? 522 00:22:57,606 --> 00:22:58,900 No té sentit. 523 00:22:58,900 --> 00:23:03,060 Però una vegada que anem a repassar assignació de memòria i- anem 524 00:23:03,060 --> 00:23:06,067 repassar per què això pot ser pràctic i útil més endavant. 525 00:23:06,067 --> 00:23:09,150 Confia en mi quan dic que no ho fem només crear aquestes funcions arbitràries per a vostè 526 00:23:09,150 --> 00:23:11,340 nois aprenguin perquè som tractant de ficar-se amb vostè. 527 00:23:11,340 --> 00:23:14,550 Hi ha realment utilitza per a tots ells coses i anem a parlar d'ells. 528 00:23:14,550 --> 00:23:14,950 >> AUDIÈNCIA: Awesome. 529 00:23:14,950 --> 00:23:15,350 >> ANDI Peng: Sí. 530 00:23:15,350 --> 00:23:16,150 >> AUDIÈNCIA: [inaudible]. 531 00:23:16,150 --> 00:23:16,450 >> ANDI Peng: Bona pregunta. 532 00:23:16,450 --> 00:23:17,510 >> AUDIÈNCIA: [inaudible]. 533 00:23:17,510 --> 00:23:18,000 >> ANDI Peng: No ho és. 534 00:23:18,000 --> 00:23:18,666 Realment no ho és. 535 00:23:18,666 --> 00:23:21,050 AUDIÈNCIA: Variables --Dos que també iguals [inaudible]. 536 00:23:21,050 --> 00:23:22,400 D'ACORD. 537 00:23:22,400 --> 00:23:23,070 >> ANDI Peng: Sí. 538 00:23:23,070 --> 00:23:23,570 D'ACORD. 539 00:23:23,570 --> 00:23:25,249 Abans de passar, és clar tothom? 540 00:23:25,249 --> 00:23:26,790 Sé Taylor, que va rebre en una mica tard. 541 00:23:26,790 --> 00:23:27,490 Està bé. 542 00:23:27,490 --> 00:23:28,100 Està en línia. 543 00:23:28,100 --> 00:23:30,600 Vas a veure els primers 20 minuts i estaràs bé. 544 00:23:30,600 --> 00:23:31,190 D'ACORD. 545 00:23:31,190 --> 00:23:31,690 Fresc. 546 00:23:31,690 --> 00:23:35,597 547 00:23:35,597 --> 00:23:37,140 >> Tot bé. 548 00:23:37,140 --> 00:23:41,270 Així que això és essencialment una espècie de cosa similar que simplement ho vam fer. 549 00:23:41,270 --> 00:23:43,100 És només en una forma gràfica. 550 00:23:43,100 --> 00:23:47,070 Si es va a realitzar un seguiment del que que acaba de succeir, int x és igual a 5, 551 00:23:47,070 --> 00:23:52,159 tot el que hem fet en aquest punt és crear una variable anomenada x de tipus int. 552 00:23:52,159 --> 00:23:54,200 Anem a emmagatzemar el valor de 5 en l'interior de la mateixa. 553 00:23:54,200 --> 00:23:57,366 No hi ha cap punter perquè no tenim en realitat creat un punter però, ¿no? 554 00:23:57,366 --> 00:24:00,302 I després, en la següent línia, punter int estrella, 555 00:24:00,302 --> 00:24:02,760 aquí és on som en realitat crear físicament el punter 556 00:24:02,760 --> 00:24:05,010 i estem establint que igual o referències 557 00:24:05,010 --> 00:24:07,250 el punter, amb signe x. 558 00:24:07,250 --> 00:24:10,002 Que és on arreu memòria aquest va passar a ser. 559 00:24:10,002 --> 00:24:12,210 Jo en realitat no molestar que constitueixen un valor en aquesta ocasió. 560 00:24:12,210 --> 00:24:14,900 Però en aquest cas, aquest punt que seria igual a això. 561 00:24:14,900 --> 00:24:18,060 >> I llavors allà baix, l'estrella punter és la desreferència. 562 00:24:18,060 --> 00:24:20,310 Aquí és on som tirant de la informació. 563 00:24:20,310 --> 00:24:24,170 Així que el valor en x és en realitat serà igual a 35. 564 00:24:24,170 --> 00:24:30,390 Així que en aquest punt, tenim essencialment simplement reiniciat a 35 x 565 00:24:30,390 --> 00:24:32,320 sense tocar x. 566 00:24:32,320 --> 00:24:34,560 Només a través del punter que apuntava a x, 567 00:24:34,560 --> 00:24:36,910 en realitat podem canviar el que x era. 568 00:24:36,910 --> 00:24:38,420 Vaig a treure això cap a fora també. 569 00:24:38,420 --> 00:24:52,200 >> Així que aquí hem creat alguna direcció aleatòria aquí. 570 00:24:52,200 --> 00:24:54,734 Diguem 0x00 nou. 571 00:24:54,734 --> 00:24:56,150 Diguem que aquesta és la direcció. 572 00:24:56,150 --> 00:25:00,830 I hem creat un sencer anomenat x i el valor que he assignat a es 5. 573 00:25:00,830 --> 00:25:03,840 En la segona línia, int pointer-- de manera que ara que hem 574 00:25:03,840 --> 00:25:07,820 aconseguit aquesta segona cosa aquí es diu un pointer-- 575 00:25:07,820 --> 00:25:14,310 i anem A-- diguem és alguna altra adreça de memòria aleatòria. 576 00:25:14,310 --> 00:25:18,460 >> Així que anem a establir aquest igual al que era. 577 00:25:18,460 --> 00:25:21,540 578 00:25:21,540 --> 00:25:25,880 I aquest punter va apuntar cap al valor de x 579 00:25:25,880 --> 00:25:30,090 I després, si canviem ell-- si fem indicador de l'estrella, 580 00:25:30,090 --> 00:25:32,800 això va a la valor del nostre punter. 581 00:25:32,800 --> 00:25:36,979 En aquest cas, es va a realitzar un seguiment Aquesta fletxa a aquest valor de x 582 00:25:36,979 --> 00:25:38,395 i que canviarà a 35. 583 00:25:38,395 --> 00:25:41,400 584 00:25:41,400 --> 00:25:44,760 Efectivament, només canviem x x sense tocar. 585 00:25:44,760 --> 00:25:48,970 A través de punters només fan referència, podem anar i canviar el valor de x. 586 00:25:48,970 --> 00:25:50,050 Això té sentit? 587 00:25:50,050 --> 00:25:55,200 >> Així d'aquesta manera, podem realment canviar el nom i valors rechange i reassignar 588 00:25:55,200 --> 00:25:57,750 a coses que no vam fer realment fer nosaltres mateixos. 589 00:25:57,750 --> 00:26:00,925 ¿Això té sentit per a tothom? 590 00:26:00,925 --> 00:26:01,425 Fresc. 591 00:26:01,425 --> 00:26:04,450 592 00:26:04,450 --> 00:26:05,310 D'ACORD. 593 00:26:05,310 --> 00:26:08,210 Gràfic tan complex aquí. 594 00:26:08,210 --> 00:26:09,360 Anar línia per línia. 595 00:26:09,360 --> 00:26:12,055 Essencialment, acaba de fer l'exacta el mateix que jo acabo de fer. 596 00:26:12,055 --> 00:26:15,977 597 00:26:15,977 --> 00:26:17,810 Abans de passar, em realment vull fer només 598 00:26:17,810 --> 00:26:19,370 que tothom és molt clar en això. 599 00:26:19,370 --> 00:26:26,260 Així que aquí, el codi que tenim és int a és igual a 3, b és igual a 4, c és igual a 5. 600 00:26:26,260 --> 00:26:33,130 Per això hem creat tres enters nom a, b i c que són igual a 3, 4 i 5. 601 00:26:33,130 --> 00:26:38,460 I llavors estem creant 3 punters aquest punt a cadascuna d'aquestes variables. 602 00:26:38,460 --> 00:26:41,760 >> I ara anem per repassar essencialment 603 00:26:41,760 --> 00:26:44,240 el que passa quan s'opera en ells. 604 00:26:44,240 --> 00:26:45,490 Així que treure'ls. 605 00:26:45,490 --> 00:26:48,156 Prengui un full de paper-- no ho faig saber si vostès tots tenen paper, 606 00:26:48,156 --> 00:26:50,930 però aquells de vostès que no ho fan, potser demanar prestat a aquells de vostès que ho fan. 607 00:26:50,930 --> 00:26:53,580 Prengui fulls de paper i anar línia per línia. 608 00:26:53,580 --> 00:26:59,390 I en cada operació que vostè ho fa, Vull que vostès escriuen realment a terme 609 00:26:59,390 --> 00:27:00,800 ho és a, b i c en aquest punt. 610 00:27:00,800 --> 00:27:03,550 ¿I quines són les direccions, el que són els punters que apunten a una, bic 611 00:27:03,550 --> 00:27:04,410 en aquest punt? 612 00:27:04,410 --> 00:27:07,150 >> I llavors espero que això serà amable del seu pas nois 613 00:27:07,150 --> 00:27:08,900 a través de la forma de pensar dels punters. 614 00:27:08,900 --> 00:27:10,650 No anirem a través de tots ells. 615 00:27:10,650 --> 00:27:13,450 Potser et donaré five-- com tres minuts. 616 00:27:13,450 --> 00:27:14,660 Començar a treballar en els primers. 617 00:27:14,660 --> 00:28:10,410 618 00:28:10,410 --> 00:28:10,959 Oh. 619 00:28:10,959 --> 00:28:11,459 Vaya. 620 00:28:11,459 --> 00:28:20,940 621 00:28:20,940 --> 00:28:26,950 >> AUDIÈNCIA: En la segona línia, per què no és l'estrella variable [inaudible]? 622 00:28:26,950 --> 00:28:29,410 >> ANDI Peng: Recordeu que en operadors, en la primera setmana, 623 00:28:29,410 --> 00:28:31,730 parlem de com si vostè fa iguals, a més, 624 00:28:31,730 --> 00:28:35,320 això només significa una és igual a un plus c. 625 00:28:35,320 --> 00:28:39,370 En aquest cas-- pel que aquest és un altre forma en què es podria utilitzar l'estrella. 626 00:28:39,370 --> 00:28:42,040 A més de referència i declarant punters, 627 00:28:42,040 --> 00:28:44,440 recordar que també significa la multiplicació. 628 00:28:44,440 --> 00:28:46,575 Així que en aquest cas, que acabava de sigui a és igual a vegades c. 629 00:28:46,575 --> 00:28:48,450 Això és només tan diferents forma d'escriure això. 630 00:28:48,450 --> 00:28:49,776 >> AUDIÈNCIA: una és igual a vegades c. 631 00:28:49,776 --> 00:28:50,442 ANDI Peng: Sí. 632 00:28:50,442 --> 00:30:43,488 633 00:30:43,488 --> 00:30:47,130 >> AUDIÈNCIA: Què vol dir si diu una carta signe? 634 00:30:47,130 --> 00:30:50,900 >> ANDI Peng: mitjans Ampersand vas a que-- ets 635 00:30:50,900 --> 00:30:54,760 anar al lloc el punter és apuntant i tirant de la direcció. 636 00:30:54,760 --> 00:31:01,270 Així signe et dóna l'adreça, estrelles, li dóna el valor real allà. 637 00:31:01,270 --> 00:31:03,090 >> AUDIÈNCIA: Som sobre la base de línia per línia? 638 00:31:03,090 --> 00:31:04,881 >> ANDI Peng: Ets sobre la base de línia per línia. 639 00:31:04,881 --> 00:31:07,260 Llavors només ha d'anar línia per línia un temps i llavors-- que 640 00:31:07,260 --> 00:31:08,470 no s'han de preocupar de acabar tot l'assumpte. 641 00:31:08,470 --> 00:31:10,428 Anem a tractar d'aconseguir a través de potser dos, tres línies 642 00:31:10,428 --> 00:31:12,445 i després anem a convocar i acabem això. 643 00:31:12,445 --> 00:31:15,530 644 00:31:15,530 --> 00:31:17,470 >> És totalment bé si es perden vostès. 645 00:31:17,470 --> 00:31:19,334 Aquest és un concepte molt difícil. 646 00:31:19,334 --> 00:31:22,500 Si vostès estan preocupats que la classe diu així com David estava dient, 647 00:31:22,500 --> 00:31:23,190 no ho fa. 648 00:31:23,190 --> 00:31:25,949 Estem arribant a la pic conceptual de dificultat 649 00:31:25,949 --> 00:31:27,740 i després es va a estar pendent negatiu. 650 00:31:27,740 --> 00:31:29,110 Així que nois està gairebé allà. 651 00:31:29,110 --> 00:31:31,080 Tenim un munt de caramels per aconseguir vostès a través de la gepa. 652 00:31:31,080 --> 00:31:32,940 Crec que més o menys després de la caiguda trenquem estarem sobre la gepa 653 00:31:32,940 --> 00:31:34,220 i la vida va a estar bé una altra vegada. 654 00:31:34,220 --> 00:31:36,580 Així que no et preocupis en absolut. 655 00:31:36,580 --> 00:32:30,732 656 00:32:30,732 --> 00:32:31,232 Tot bé. 657 00:32:31,232 --> 00:32:33,650 Et vaig a donar 20 nois més segons per acabar. 658 00:32:33,650 --> 00:33:12,560 659 00:33:12,560 --> 00:33:13,330 D'ACORD. 660 00:33:13,330 --> 00:33:13,830 Tot bé. 661 00:33:13,830 --> 00:33:16,370 Anem a prendre una punyalada en això. 662 00:33:16,370 --> 00:33:19,430 Com vostès em donen respostes, Jo només vaig a escriure en. 663 00:33:19,430 --> 00:33:22,140 I és d'esperar nosaltres-- puc? 664 00:33:22,140 --> 00:33:23,317 En realitat no puc escriure-la. 665 00:33:23,317 --> 00:33:24,400 Vaig a dibuixar a la pissarra. 666 00:33:24,400 --> 00:33:31,420 667 00:33:31,420 --> 00:33:35,900 >> Així que aquí en aquesta primera línia tenim una d'igual a b c estrella. 668 00:33:35,900 --> 00:33:38,060 També Elliot va plantejar una molt, molt bon punt. 669 00:33:38,060 --> 00:33:42,500 Perquè es va oblidar que a més de les dues formes en què poden utilitzar el símbol de l'estrella, 670 00:33:42,500 --> 00:33:43,750 en realitat hi ha una tercera via. 671 00:33:43,750 --> 00:33:44,990 Multiplicació. 672 00:33:44,990 --> 00:33:51,380 I així que no es confongui perquè que és la primera forma d'usar una estrella. 673 00:33:51,380 --> 00:33:54,470 És només dient l'ordinador que estic a punt de crear un punter. 674 00:33:54,470 --> 00:34:00,600 >> La segona manera de fer l'estrella del punter, 675 00:34:00,600 --> 00:34:04,320 que diu el punter que desitja accedir a les dades en aquest punter. 676 00:34:04,320 --> 00:34:06,710 I després, per descomptat, no hi ha una simple multiplicació 677 00:34:06,710 --> 00:34:09,564 entre dos nombres que et diu que vull multiplicar els dos. 678 00:34:09,564 --> 00:34:11,730 Així que hi ha un munt de maneres podem utilitzar el símbol de l'estrella. 679 00:34:11,730 --> 00:34:13,830 No es confongui. 680 00:34:13,830 --> 00:34:16,991 Només assegureu-vos que vostè els individus enteneu exactament el que els tres d'ells 681 00:34:16,991 --> 00:34:18,630 estan fent. 682 00:34:18,630 --> 00:34:22,920 >> Així que en aquesta primera línia, 1 és igual a b c. 683 00:34:22,920 --> 00:34:26,850 Així que anem a anar a través del és una, el que és b, el que és c? 684 00:34:26,850 --> 00:34:32,600 ¿I quin és el punter d'un, el punter a b, i el punter de c? 685 00:34:32,600 --> 00:34:34,050 Quins són els tots igualant? 686 00:34:34,050 --> 00:34:34,600 D'ACORD. 687 00:34:34,600 --> 00:34:38,650 >> Així que vam començar amb un igual a 3, b és igual a 4, i c és igual a 5, oi? 688 00:34:38,650 --> 00:34:42,230 Així que després d'aquesta primera línia, pot algú em digui què és? 689 00:34:42,230 --> 00:34:42,730 Sí. 690 00:34:42,730 --> 00:34:44,229 Siéntase lliure per simplement cridar respostes. 691 00:34:44,229 --> 00:34:44,929 20. 692 00:34:44,929 --> 00:34:45,550 Bé. 693 00:34:45,550 --> 00:34:46,410 Quin és b? 694 00:34:46,410 --> 00:34:47,777 >> AUDIÈNCIA: 4. 695 00:34:47,777 --> 00:34:48,610 ANDI Peng: Quin és c? 696 00:34:48,610 --> 00:34:49,659 AUDIÈNCIA: 5. 697 00:34:49,659 --> 00:34:50,770 ANDI Peng: Yay. 698 00:34:50,770 --> 00:34:51,639 Bé. 699 00:34:51,639 --> 00:34:55,707 Quins són pa, pb i pc? 700 00:34:55,707 --> 00:34:58,564 >> AUDIÈNCIA: 000.001 i 002? 701 00:34:58,564 --> 00:34:59,230 ANDI Peng: Sí. 702 00:34:59,230 --> 00:35:02,390 Així que tipus d'una pregunta amb trampa però no realment perquè aquí 703 00:35:02,390 --> 00:35:04,760 treure memòries reals. 704 00:35:04,760 --> 00:35:08,520 Però com que, per exemple, no ho fem realment saben el que aquests números són, 705 00:35:08,520 --> 00:35:10,326 només podem dir signe. 706 00:35:10,326 --> 00:35:12,200 Ni tan sols sé si pot dibuixar un símbol d'unió. 707 00:35:12,200 --> 00:35:18,022 És com-- com ho fas? 708 00:35:18,022 --> 00:35:19,790 >> AUDIÈNCIA: Com dibuixar un vuit. 709 00:35:19,790 --> 00:35:20,870 >> ANDI Peng: Igual que un vuit. 710 00:35:20,870 --> 00:35:21,580 Així. 711 00:35:21,580 --> 00:35:22,080 D'ACORD. 712 00:35:22,080 --> 00:35:23,446 AUDIÈNCIA: Bingo. 713 00:35:23,446 --> 00:35:25,350 >> ANDI Peng: Matant ell. 714 00:35:25,350 --> 00:35:28,202 Així Ampersand 1, només pot fer això. 715 00:35:28,202 --> 00:35:30,410 Perquè el que fem en realitat no importa el que el valor d'aquesta 716 00:35:30,410 --> 00:35:32,880 és, i és una mica llarga valor cul de totes maneres, 717 00:35:32,880 --> 00:35:35,220 estem utilitzant només Giong dir un signe. 718 00:35:35,220 --> 00:35:37,024 Llavors quin és pb? 719 00:35:37,024 --> 00:35:37,940 AUDIÈNCIA: [inaudible]. 720 00:35:37,940 --> 00:35:38,606 ANDI Peng: Sí. 721 00:35:38,606 --> 00:35:42,490 722 00:35:42,490 --> 00:35:43,500 Fresc. 723 00:35:43,500 --> 00:35:44,010 Tot bé. 724 00:35:44,010 --> 00:35:44,770 Fàcil primera línia. 725 00:35:44,770 --> 00:35:45,270 Vam aconseguir això. 726 00:35:45,270 --> 00:35:46,330 Els punters són fàcils. 727 00:35:46,330 --> 00:35:47,450 Està bé. 728 00:35:47,450 --> 00:35:48,740 >> Segona línia. 729 00:35:48,740 --> 00:35:52,400 I així, l'estrella és igual que és el mateix El que equival a dir unes vegades c. 730 00:35:52,400 --> 00:35:54,730 És només una manera més fàcil d'escriure. 731 00:35:54,730 --> 00:35:57,170 Així que no estem tractant de fer un punt o qualsevol cosa aquí. 732 00:35:57,170 --> 00:36:00,600 Així va fer amb la primera línia. 733 00:36:00,600 --> 00:36:05,144 Què és una a la segona línia després de fer a és igual a vegades c? 734 00:36:05,144 --> 00:36:05,777 >> AUDIÈNCIA: 100? 735 00:36:05,777 --> 00:36:06,610 ANDI Peng: És 100. 736 00:36:06,610 --> 00:36:07,795 Bé. 737 00:36:07,795 --> 00:36:08,864 Què hi ha de b? 738 00:36:08,864 --> 00:36:10,256 >> AUDIÈNCIA: [inaudible]. 739 00:36:10,256 --> 00:36:11,335 >> ANDI Peng: Què hi ha de c? 740 00:36:11,335 --> 00:36:12,490 >> AUDIÈNCIA: [inaudible]. 741 00:36:12,490 --> 00:36:14,530 >> ANDI Peng: I què hi ha dels punters? 742 00:36:14,530 --> 00:36:15,800 Són ells-- el mateix, no? 743 00:36:15,800 --> 00:36:20,640 744 00:36:20,640 --> 00:36:21,940 D'ACORD. 745 00:36:21,940 --> 00:36:23,820 Ara tercera línia. 746 00:36:23,820 --> 00:36:26,400 747 00:36:26,400 --> 00:36:27,350 Poc més complicat. 748 00:36:27,350 --> 00:36:29,760 b és igual pa estrelles. 749 00:36:29,760 --> 00:36:34,189 Pot algú dir-me, primer, el que fa pa estrelles iguals? 750 00:36:34,189 --> 00:36:36,159 >> AUDIÈNCIA: És el valor que s'emmagatzema en un. 751 00:36:36,159 --> 00:36:36,950 ANDI Peng: Exactament. 752 00:36:36,950 --> 00:36:38,070 ¿I quin és el valor que s'emmagatzema en una? 753 00:36:38,070 --> 00:36:38,860 >> AUDIÈNCIA: 100. 754 00:36:38,860 --> 00:36:39,660 >> ANDI Peng: OK. 755 00:36:39,660 --> 00:36:43,462 Així que el que anava a ser un després l'execució d'aquesta línia de codi? 756 00:36:43,462 --> 00:36:44,760 >> AUDIÈNCIA: [inaudible]. 757 00:36:44,760 --> 00:36:45,870 >> ANDI Peng: Què passa amb b? 758 00:36:45,870 --> 00:36:46,780 >> AUDIÈNCIA: 100. 759 00:36:46,780 --> 00:36:47,620 >> ANDI Peng: Sí. 760 00:36:47,620 --> 00:36:49,995 I després tota la resta és pràcticament sense canvis, no? 761 00:36:49,995 --> 00:36:51,239 A causa de que no el va tocar. 762 00:36:51,239 --> 00:36:55,370 763 00:36:55,370 --> 00:36:57,010 Fresc. 764 00:36:57,010 --> 00:36:58,390 Quarta línia. 765 00:36:58,390 --> 00:37:00,390 Una mica més complexa. 766 00:37:00,390 --> 00:37:06,910 Així pc-- un cop més, la PC és el punter que apuntaven a C-- és igual a pa. 767 00:37:06,910 --> 00:37:11,520 768 00:37:11,520 --> 00:37:12,360 Què és un? 769 00:37:12,360 --> 00:37:14,525 >> AUDIÈNCIA: 100. 770 00:37:14,525 --> 00:37:15,400 ANDI Peng: Què és la b? 771 00:37:15,400 --> 00:37:17,920 AUDIÈNCIA: 100. 772 00:37:17,920 --> 00:37:18,862 ANDI Peng: Quin és c? 773 00:37:18,862 --> 00:37:19,993 AUDIÈNCIA: 5. 774 00:37:19,993 --> 00:37:20,867 ANDI Peng: Quin és pa? 775 00:37:20,867 --> 00:37:22,775 AUDIÈNCIA: Ampersand a. 776 00:37:22,775 --> 00:37:23,730 ANDI Peng: pb? 777 00:37:23,730 --> 00:37:26,010 AUDIÈNCIA: Ampersand b. 778 00:37:26,010 --> 00:37:27,730 ANDI Peng: I complicat, quina és la PC ara? 779 00:37:27,730 --> 00:37:28,410 AUDIÈNCIA: Ampersand a. 780 00:37:28,410 --> 00:37:29,034 ANDI Peng: Yay. 781 00:37:29,034 --> 00:37:31,790 Woo Hoo. 782 00:37:31,790 --> 00:37:32,500 Vostès, ¿veuen? 783 00:37:32,500 --> 00:37:33,282 Això està bé. 784 00:37:33,282 --> 00:37:33,990 No és tan dolent. 785 00:37:33,990 --> 00:37:38,730 Tenim més dolços si no és tot bé, però crec que està bé. 786 00:37:38,730 --> 00:37:41,900 I anirem només un més abans de tirar-nos les més difícils. 787 00:37:41,900 --> 00:37:43,710 Les respostes que tenen aquí. 788 00:37:43,710 --> 00:37:47,050 >> En essència, sé que això és igual que les matemàtiques en aquest punt. 789 00:37:47,050 --> 00:37:53,240 Quan vostè té equacions simples com un més b, de vegades c, això és fàcil de fer. 790 00:37:53,240 --> 00:37:56,390 I quan s'inicia l'expansió a ella, només ha d'anar el cap de les operacions. 791 00:37:56,390 --> 00:37:57,830 El mateix que abans. 792 00:37:57,830 --> 00:38:00,030 >> Porteu un registre de si la seva estrelles està davant alguna cosa. 793 00:38:00,030 --> 00:38:01,640 Això et diu el valor. 794 00:38:01,640 --> 00:38:04,640 Si vostè té una i abans alguna cosa, que et diu la direcció. 795 00:38:04,640 --> 00:38:07,860 I vostè ha d'assignar qualsevol punters o aquest valor. 796 00:38:07,860 --> 00:38:11,260 Així que anem a repassar aquest últim ràpida real. 797 00:38:11,260 --> 00:38:12,520 No és aquest últim, ho sento. 798 00:38:12,520 --> 00:38:13,340 En realitat, vostès poden triar. 799 00:38:13,340 --> 00:38:16,006 Quin et nois vol anar més de les tres restants 800 00:38:16,006 --> 00:38:17,449 que tenim? 801 00:38:17,449 --> 00:38:20,490 No crec que només podem fer això perquè no podem simplement saltar a la línia. 802 00:38:20,490 --> 00:38:21,000 D'ACORD. 803 00:38:21,000 --> 00:38:25,700 Vostès no té una opció, és només el tercer a l'últim. 804 00:38:25,700 --> 00:38:29,228 >> Pc estrella és igual a b c. 805 00:38:29,228 --> 00:38:30,144 >> AUDIÈNCIA: Estrella pb? 806 00:38:30,144 --> 00:38:32,117 >> AUDIÈNCIA: Estrella pb. 807 00:38:32,117 --> 00:38:32,825 ANDI Peng: Ho sento? 808 00:38:32,825 --> 00:38:33,599 AUDIÈNCIA: Estrella pb. 809 00:38:33,599 --> 00:38:34,390 ANDI Peng: Star pb. 810 00:38:34,390 --> 00:38:35,100 Oh, el meu mal. 811 00:38:35,100 --> 00:38:38,647 Pb estrella és igual a b c. 812 00:38:38,647 --> 00:38:40,230 Vaig a donar a vostès 10 segons. 813 00:38:40,230 --> 00:38:41,140 Només cal pensar ràpidament. 814 00:38:41,140 --> 00:38:43,450 Això és que tenim el ara, el que passa després que 815 00:38:43,450 --> 00:38:46,770 executar aquesta cinquena línia allà? 816 00:38:46,770 --> 00:38:54,030 817 00:38:54,030 --> 00:38:55,980 D'ACORD. 818 00:38:55,980 --> 00:38:58,720 Què és un? 819 00:38:58,720 --> 00:38:59,560 >> AUDIÈNCIA: 100. 820 00:38:59,560 --> 00:39:02,470 >> ANDI Peng: 100. 821 00:39:02,470 --> 00:39:03,610 Què és b ara? 822 00:39:03,610 --> 00:39:04,330 >> AUDIÈNCIA: 500. 823 00:39:04,330 --> 00:39:05,250 >> ANDI Peng: Good. 824 00:39:05,250 --> 00:39:08,570 Vol algú explicar per a mi per què això és 500? 825 00:39:08,570 --> 00:39:10,540 No em sento com si en realitat mai tocat b. 826 00:39:10,540 --> 00:39:13,950 Com ens les arreglem per canviar la valor de b sense tocar b? 827 00:39:13,950 --> 00:39:15,090 Sí? 828 00:39:15,090 --> 00:39:18,239 >> AUDIÈNCIA: A causa pb estrelles significa el valor en PB-- 829 00:39:18,239 --> 00:39:19,030 ANDI Peng: Exactament. 830 00:39:19,030 --> 00:39:19,790 AUDIÈNCIA: -que és b. 831 00:39:19,790 --> 00:39:20,581 ANDI Peng: Exactament. 832 00:39:20,581 --> 00:39:26,880 Així que aquí al nostre diagrama, la nostra punter PB és en realitat apunta a aquest dret 833 00:39:26,880 --> 00:39:28,690 aquí, la qual cosa és el real b física. 834 00:39:28,690 --> 00:39:31,340 I així, si vas i fas pb estrelles, això és 835 00:39:31,340 --> 00:39:36,080 seguint la fletxa del punter i canviant físicament el valor de b. 836 00:39:36,080 --> 00:39:39,532 Així que per això hem canviat a B 500 sense tocar b. 837 00:39:39,532 --> 00:39:42,490 I llavors tota la resta segueix sent el mateix perquè no toquem això. 838 00:39:42,490 --> 00:39:47,060 839 00:39:47,060 --> 00:39:48,530 Això és b. 840 00:39:48,530 --> 00:39:49,420 Fresc. 841 00:39:49,420 --> 00:39:50,485 I llavors-- 842 00:39:50,485 --> 00:39:51,910 >> AUDIÈNCIA: Només tinc una pregunta. 843 00:39:51,910 --> 00:39:52,730 >> ANDI Peng: Sí? 844 00:39:52,730 --> 00:39:56,000 >> AUDIÈNCIA: Des we've-- ja no hi ha c signe, 845 00:39:56,000 --> 00:39:59,620 ¿Significa un signe redirigir a la mateixa cosa ara? 846 00:39:59,620 --> 00:40:00,520 >> ANDI Peng: Sí. 847 00:40:00,520 --> 00:40:01,582 Tan-- 848 00:40:01,582 --> 00:40:03,540 AUDIÈNCIA: Llavors la fletxa tipus de simplement mou i- 849 00:40:03,540 --> 00:40:04,030 ANDI Peng: Així essentially-- 850 00:40:04,030 --> 00:40:05,405 AUDIÈNCIA: --Ara no podem access-- 851 00:40:05,405 --> 00:40:08,387 ANDI Peng: --quan ens dereference c en-- em falsificador. 852 00:40:08,387 --> 00:40:08,970 Que ha sigut això? 853 00:40:08,970 --> 00:40:09,560 La tercera línia? 854 00:40:09,560 --> 00:40:10,060 Quarta. 855 00:40:10,060 --> 00:40:11,490 Quarta línia. 856 00:40:11,490 --> 00:40:14,910 Tot el que vam fer va ser, en essència, canviar aquesta fletxa 857 00:40:14,910 --> 00:40:16,680 i ho han apuntat cap a un lloc. 858 00:40:16,680 --> 00:40:19,480 >> AUDIÈNCIA: Així que no podem accedir c més. 859 00:40:19,480 --> 00:40:22,520 >> ANDI Peng: Si tinguessis aquesta exacta nombre, vostè pot accedir-hi. 860 00:40:22,520 --> 00:40:23,260 Però no. 861 00:40:23,260 --> 00:40:25,680 No tenim un punter c apuntant cap més. 862 00:40:25,680 --> 00:40:27,430 Crec que si volia per tornar a accedir-hi, 863 00:40:27,430 --> 00:40:30,390 crearia un altre punter que re-va assenyalar c 864 00:40:30,390 --> 00:40:32,856 o desreferenciado això i va assenyalar cap a enrere. 865 00:40:32,856 --> 00:40:35,730 Així que no, a partir d'ara, els tres punters, cap d'ells apunten a c. 866 00:40:35,730 --> 00:40:38,800 867 00:40:38,800 --> 00:40:40,110 >> Cada un de bo? 868 00:40:40,110 --> 00:40:41,440 Les respostes estan en línia. 869 00:40:41,440 --> 00:40:45,210 Siéntase lliure, després de la secció, repassen els dos últims i de prova a si mateixos. 870 00:40:45,210 --> 00:40:47,840 Els mateixos conceptes, només un poc més complicat. 871 00:40:47,840 --> 00:40:51,860 Només has de seguir a través de la lògica de per què les coses són coses diferents. 872 00:40:51,860 --> 00:40:54,530 I la seva pista, els punters són un tema que ens agrada 873 00:40:54,530 --> 00:40:58,780 per a cobrir en les proves perquè són conceptualment molt difícil. 874 00:40:58,780 --> 00:41:01,360 Així que em permeto suggerir que vostè nois tots revisin aquesta taula 875 00:41:01,360 --> 00:41:05,916 o retallar conceptes similars això abans del seu concurs de la propera setmana. 876 00:41:05,916 --> 00:41:06,864 >> AUDIÈNCIA: disculpeme. 877 00:41:06,864 --> 00:41:07,530 >> ANDI Peng: Sí? 878 00:41:07,530 --> 00:41:09,708 AUDIÈNCIA: [inaudible] última un-- [inaudible]. 879 00:41:09,708 --> 00:41:12,710 880 00:41:12,710 --> 00:41:15,770 >> ANDI Peng: 50.000? 881 00:41:15,770 --> 00:41:17,850 Que hauria de seguir un altre cop. 882 00:41:17,850 --> 00:41:22,530 Però somewhere-- Crec que la línia abans, que ha creat valor gegant c. 883 00:41:22,530 --> 00:41:26,250 c és igual a aquesta cosa gegant que és 100 vegades 500. 884 00:41:26,250 --> 00:41:27,006 No. 885 00:41:27,006 --> 00:41:28,000 >> AUDIÈNCIA: [inaudible]. 886 00:41:28,000 --> 00:41:28,625 >> ANDI Peng: Sí. 887 00:41:28,625 --> 00:41:30,620 100 vegades 100, que és de 10.000. 888 00:41:30,620 --> 00:41:32,020 La qual cosa és 10.000. 889 00:41:32,020 --> 00:41:35,410 Així que de tornada hi ets multiplicant bi c. 890 00:41:35,410 --> 00:41:43,165 Així que el punter que apunta a B-- que és el valor de 500-- vegades A-- 891 00:41:43,165 --> 00:41:44,480 >> AUDIÈNCIA: [inaudible]. 892 00:41:44,480 --> 00:41:45,730 ANDI Peng: Potser això està malament. 893 00:41:45,730 --> 00:41:49,514 AUDIÈNCIA: No, no, no ho és. [Inaudible] punter en c està ara apuntant a A-- 894 00:41:49,514 --> 00:41:50,180 ANDI Peng: Sí. 895 00:41:50,180 --> 00:41:50,840 Té raó. 896 00:41:50,840 --> 00:41:56,477 >> AUDIÈNCIA: --és en el seu en uns iguals 1 vegades-- és el valor de c. 897 00:41:56,477 --> 00:41:59,560 ANDI Peng: Pots dir que una mica mica més fort pel que tothom pot escoltar-te? 898 00:41:59,560 --> 00:42:04,879 AUDIÈNCIA: Llavors punter en c Punts ara al que el punter d'un utilitza per assenyalar 899 00:42:04,879 --> 00:42:09,460 A-- i encara does-- però apunten a el mateix que és el d'una, ¿no? 900 00:42:09,460 --> 00:42:12,925 El valor d'una, però que ha estat recentment definida. 901 00:42:12,925 --> 00:42:17,875 I al principi que ets dient un abans era 100 vegades 902 00:42:17,875 --> 00:42:21,340 el valor en b que és 500. 903 00:42:21,340 --> 00:42:24,305 I això és, per molt que sigui. 904 00:42:24,305 --> 00:42:24,805 50000. 905 00:42:24,805 --> 00:42:32,860 Et estan reasignando que al que el espai de memòria en c és-- el punter al c 906 00:42:32,860 --> 00:42:34,510 s'apunta que és un. 907 00:42:34,510 --> 00:42:38,460 Així que vostè està redefinint un ésser 50.000. 908 00:42:38,460 --> 00:42:40,210 ANDI Peng: Ella va poder secció d'ensenyar per a mi. 909 00:42:40,210 --> 00:42:41,260 La propera vegada que és tot teu. 910 00:42:41,260 --> 00:42:41,440 Aquí. 911 00:42:41,440 --> 00:42:42,564 Aquí hi ha més dolços per això. 912 00:42:42,564 --> 00:42:45,790 Et mereixes dolços per això. 913 00:42:45,790 --> 00:42:47,260 >> AUDIÈNCIA: gairebé vaig agafar això. 914 00:42:47,260 --> 00:42:47,660 >> ANDI Peng: Gairebé capturat aquest. 915 00:42:47,660 --> 00:42:48,450 Està bé. 916 00:42:48,450 --> 00:42:48,950 Sí. 917 00:42:48,950 --> 00:42:50,033 Però ella tenia raó. 918 00:42:50,033 --> 00:42:54,469 Així que el que has de fer és que-- Crec que 919 00:42:54,469 --> 00:42:56,510 de seguir el fet que els punters són ara 920 00:42:56,510 --> 00:42:57,880 apuntant a diferents valors. 921 00:42:57,880 --> 00:43:01,785 Així que la value-- sento, la punter de c tornar a apuntar a un. 922 00:43:01,785 --> 00:43:04,390 I perquè va canviar tots els nostres números. 923 00:43:04,390 --> 00:43:08,930 I per això, quan accedeixi a la valor emmagatzemat aquí, és diferent. 924 00:43:08,930 --> 00:43:10,490 Això té sentit? 925 00:43:10,490 --> 00:43:11,380 D'ACORD. 926 00:43:11,380 --> 00:43:12,820 Fresc. 927 00:43:12,820 --> 00:43:16,635 Tothom bo, abans de passar? 928 00:43:16,635 --> 00:43:25,332 >> AUDIÈNCIA: El ell-- quan vas per les files de la columna de l'esquerra, 929 00:43:25,332 --> 00:43:30,494 no la primera fila afecta la segona fila i després el second-- com, és tot-- 930 00:43:30,494 --> 00:43:31,160 ANDI Peng: Sí. 931 00:43:31,160 --> 00:43:37,610 Així que imagino que és de codi en el que acaba d'escriure en un igual a b c vegades, un estel és igual a c. 932 00:43:37,610 --> 00:43:40,290 Només imagino que tinc simplement va córrer aquest codi 933 00:43:40,290 --> 00:43:42,710 i no em imprimeixo el totes aquestes coses eren. 934 00:43:42,710 --> 00:43:46,200 Si jo fos només per imprimir la primera cosa a la part superior, que seria aquí. 935 00:43:46,200 --> 00:43:48,510 Si després em vaig trobar amb tots aquestes línies de codi, 936 00:43:48,510 --> 00:43:51,160 el que aquests valors haurien estar al final són això. 937 00:43:51,160 --> 00:43:53,290 >> Així que he fet un programa escrit aquí. 938 00:43:53,290 --> 00:43:55,840 No he fet tot la multiplicació. 939 00:43:55,840 --> 00:43:58,310 Però imagina't. 940 00:43:58,310 --> 00:44:00,370 Així que aquí només tinc una programa anomenat punters. 941 00:44:00,370 --> 00:44:04,190 Vaig a fer un zoom si guys-- acord. 942 00:44:04,190 --> 00:44:07,580 Així que he creat variables a, bi c. 943 00:44:07,580 --> 00:44:09,640 He creat iguals a 3, 4 i 5 i no tinc 944 00:44:09,640 --> 00:44:11,770 creat els seus corresponents indicadors. 945 00:44:11,770 --> 00:44:14,550 I llavors aquí només vaig imprimir el que és això. 946 00:44:14,550 --> 00:44:15,833 Així que permetin-me que corro. 947 00:44:15,833 --> 00:44:21,520 948 00:44:21,520 --> 00:44:24,750 >> Vostès veure- escombraries. 949 00:44:24,750 --> 00:44:28,150 Vostès veuen com 1, b i c són aquests valors 950 00:44:28,150 --> 00:44:33,530 però els seus punters són aquest gegant valor de les escombraries que no ens preocupem? 951 00:44:33,530 --> 00:44:36,690 Així que si jo fos a connectar realitat en tota la multiplicació 952 00:44:36,690 --> 00:44:39,770 i després tornar a imprimir tots això, s'executaria a terme 953 00:44:39,770 --> 00:44:44,509 al que és a la part inferior. 954 00:44:44,509 --> 00:44:47,300 Així que si vostès volen jugar amb la codificació en realitat físicament, 955 00:44:47,300 --> 00:44:49,000 vostès només pot connectar tots els de. 956 00:44:49,000 --> 00:44:52,860 El codi serà en línia i llavors la seva valors han d'imprimir en què després. 957 00:44:52,860 --> 00:44:56,170 >> I llavors vostè veurà com el punter direccions realitat han reassignat. 958 00:44:56,170 --> 00:44:59,190 Així veuràs com la direcció del c es converteix en realitat 959 00:44:59,190 --> 00:45:00,920 per igualar qualsevol que sigui la direcció d'una era. 960 00:45:00,920 --> 00:45:04,140 I ells s'ajusten al que sigui que gran nombre és. 961 00:45:04,140 --> 00:45:06,530 Bona pregunta. 962 00:45:06,530 --> 00:45:07,550 Tothom està bé? 963 00:45:07,550 --> 00:45:10,300 Una última trucada per a les preguntes. 964 00:45:10,300 --> 00:45:11,590 D'ACORD. 965 00:45:11,590 --> 00:45:12,090 Tot bé. 966 00:45:12,090 --> 00:45:15,940 Així es preparen per tenir la seva ment cremat una mica mica més. 967 00:45:15,940 --> 00:45:18,000 Les matrius són en realitat només els punters. 968 00:45:18,000 --> 00:45:19,010 Això és tot el que són. 969 00:45:19,010 --> 00:45:20,410 I recorda, ¿quines són les cadenes? 970 00:45:20,410 --> 00:45:21,630 També són matrius. 971 00:45:21,630 --> 00:45:23,110 Llavors, què són cadenes en realitat? 972 00:45:23,110 --> 00:45:27,100 Són com punters a la a partir d'un char de més caràcters. 973 00:45:27,100 --> 00:45:29,970 >> Així que és només conceptes que comencen per construir a la part superior de l'altra. 974 00:45:29,970 --> 00:45:32,030 Així que això és què-- vostè recordi en la conferència, David, 975 00:45:32,030 --> 00:45:34,990 quan va tenir aquesta comparació de int cadena de mama 976 00:45:34,990 --> 00:45:37,640 és una cosa i després una altra mare cadena i 977 00:45:37,640 --> 00:45:41,240 tractar d'igualar els dos entre si, et donen diferents valors. 978 00:45:41,240 --> 00:45:44,370 És perquè les cadenes si no són valors. 979 00:45:44,370 --> 00:45:48,860 Tots ells són són adreces de memòria char-- que són matrius de caràcters i matrius 980 00:45:48,860 --> 00:45:50,050 són només punters. 981 00:45:50,050 --> 00:45:54,022 >> Així, en essència, quan David era comparing-- 982 00:45:54,022 --> 00:45:55,355 Està bé si em esborro tot això? 983 00:45:55,355 --> 00:46:02,320 984 00:46:02,320 --> 00:46:09,750 Així que en la conferència quan David tenia mare és igual és igual a la mare, 985 00:46:09,750 --> 00:46:11,630 per a nosaltres que sembla ser la mateixa cosa. 986 00:46:11,630 --> 00:46:12,317 Oi? 987 00:46:12,317 --> 00:46:15,150 Però, a l'ordinador per sota de la capó, el que realment està succeint 988 00:46:15,150 --> 00:46:18,380 és que aquesta cadena, tot el que és és una matriu. 989 00:46:18,380 --> 00:46:21,420 990 00:46:21,420 --> 00:46:25,390 Amb una ampersand-- o, ho sento, amb un terminador nul al final. 991 00:46:25,390 --> 00:46:28,311 992 00:46:28,311 --> 00:46:28,810 Oi? 993 00:46:28,810 --> 00:46:29,940 Backslash 0. 994 00:46:29,940 --> 00:46:32,900 Barra invertida incorrecte. 995 00:46:32,900 --> 00:46:35,960 >> Així que tot el que were-- tot aquestes dues cadenes were-- 996 00:46:35,960 --> 00:46:40,360 són sèrie de quatre potes de mida amb les cartes de la mare i la mare. 997 00:46:40,360 --> 00:46:44,780 Però el que realment són les matrius són només punters a un lloc específic en la memòria 998 00:46:44,780 --> 00:46:47,140 que li diu que comenci la matriu. 999 00:46:47,140 --> 00:46:52,370 Així doncs, en aquest cas, tot això era era només un valor d'escombraries, 1000 00:46:52,370 --> 00:46:54,230 alguns punter a l'atzar. 1001 00:46:54,230 --> 00:46:56,330 I tot això es va anar algun altre valor d'escombraries. 1002 00:46:56,330 --> 00:46:59,830 Diguem 0x200. 1003 00:46:59,830 --> 00:47:02,410 >> I així, quan vostè tracta de la igualtat ells dos a un a l'altre, 1004 00:47:02,410 --> 00:47:06,130 avaluen com false perquè el addresses-- els punters 1005 00:47:06,130 --> 00:47:08,390 que were-- eren diferents. 1006 00:47:08,390 --> 00:47:11,400 Considerant que és diferent si ets tractar de comparar nombres enters reals. 1007 00:47:11,400 --> 00:47:15,820 Com si volgués compare-- en l'últim exemple-- int A a B, 1008 00:47:15,820 --> 00:47:17,640 que avaluarien true com va dir Elliot 1009 00:47:17,640 --> 00:47:19,431 perquè eren sencers que estaven emmagatzemats 1010 00:47:19,431 --> 00:47:21,320 i que està avaluant només els valors. 1011 00:47:21,320 --> 00:47:25,090 Aquí, perquè les cadenes són arrays i totes les matrius són punters, 1012 00:47:25,090 --> 00:47:28,080 és per això que no ho són iguals entre si. 1013 00:47:28,080 --> 00:47:31,210 >> Així que una mica confús, aquest gràfic. 1014 00:47:31,210 --> 00:47:32,450 Però anem a imaginar. 1015 00:47:32,450 --> 00:47:38,110 Tenim crear una matriu de mida 3 amb un índex de 0 a 2-- 0, 1016 00:47:38,110 --> 00:47:41,530 1, 2 amb els valors d'1, 2, 3 i emmagatzemats en ells. 1017 00:47:41,530 --> 00:47:43,820 Tota la gamma de veritat does-- aquí, anem a 1018 00:47:43,820 --> 00:47:46,720 dic que estic creant un punter a aquesta matriu que és 1019 00:47:46,720 --> 00:47:50,810 accedir al valor en el primer índex d'aquest arranjament. 1020 00:47:50,810 --> 00:47:52,890 Així que aquí seria 0. 1021 00:47:52,890 --> 00:47:53,390 Oi? 1022 00:47:53,390 --> 00:47:56,820 Tothom entén com aquesta primera línia avaluada? 1023 00:47:56,820 --> 00:47:57,420 Gran. 1024 00:47:57,420 --> 00:48:00,800 >> I així que si volies per inicialitzar els valors addicionals després d'això, 1025 00:48:00,800 --> 00:48:04,390 tot el que estem fent és la reassignació. 1026 00:48:04,390 --> 00:48:08,810 Per tant 0, 1, 2, 1. 1027 00:48:08,810 --> 00:48:12,770 Així que aquest punter que una vegada va ser assenyalant aquí, tot el que estem fent 1028 00:48:12,770 --> 00:48:15,540 es mou cap avall. 1029 00:48:15,540 --> 00:48:16,970 Això és el que el més 1 està fent. 1030 00:48:16,970 --> 00:48:18,500 I llavors podem posar 2 allà. 1031 00:48:18,500 --> 00:48:23,250 Si volguéssim posar 3 en el qual després, ens agradaria esborrar aquest indicador, 1032 00:48:23,250 --> 00:48:25,170 lloc 3 en aquest país. 1033 00:48:25,170 --> 00:48:26,420 Té sentit tothom? 1034 00:48:26,420 --> 00:48:26,920 Sí. 1035 00:48:26,920 --> 00:48:28,086 ¿Vostè té una pregunta? 1036 00:48:28,086 --> 00:48:30,711 AUDIÈNCIA: És [inaudible] té una pregunta, ho diré de totes maneres. 1037 00:48:30,711 --> 00:48:35,496 No crec que en realitat és un pregunta però- en anglès, array 1038 00:48:35,496 --> 00:48:37,448 és igual a 1 té sentit. 1039 00:48:37,448 --> 00:48:39,888 Som com, OK, el primer. 1040 00:48:39,888 --> 00:48:44,280 Però les coses són 0 Índex [Inaudible] la matriu és igual a 0 1041 00:48:44,280 --> 00:48:48,024 per indicar el primer lloc. 1042 00:48:48,024 --> 00:48:48,690 ANDI Peng: Sí. 1043 00:48:48,690 --> 00:48:53,740 Així que en realitat el que estic fent aquí és No estic accedint al primer índex. 1044 00:48:53,740 --> 00:48:57,930 Tot el que estava doing-- el primer de tot, digues-me ¿quina varietat estrella fer? 1045 00:48:57,930 --> 00:48:59,480 Què fa una estrella abans que un punter de fer? 1046 00:48:59,480 --> 00:49:00,855 >> AUDIÈNCIA: Indica un punter. 1047 00:49:00,855 --> 00:49:02,910 Que vostè està declarant un punter. 1048 00:49:02,910 --> 00:49:04,380 Es de-- 1049 00:49:04,380 --> 00:49:07,520 >> ANDI Peng: S'elimina referències els mitjans va i aconsegueix realment el valor. 1050 00:49:07,520 --> 00:49:08,020 Oi? 1051 00:49:08,020 --> 00:49:13,030 Així que en aquest cas, vol aconseguir el valor aquí i establir que a 1. 1052 00:49:13,030 --> 00:49:13,800 Sí? 1053 00:49:13,800 --> 00:49:17,050 Així que no estic actually-- no ho faig realment es preocupen per l'índex d'aquest, 1054 00:49:17,050 --> 00:49:21,406 tot el que estic fent és simplement la iteració baix movent la meva punter per la matriu. 1055 00:49:21,406 --> 00:49:23,280 I després, finalment, em ha de parar, no? 1056 00:49:23,280 --> 00:49:26,750 I la forma en què m'aturo és quan em va colpejar, en el cas 1057 00:49:26,750 --> 00:49:28,750 d'una cadena, un terminador nul. 1058 00:49:28,750 --> 00:49:32,710 Ja ho sé, oh, si em va colpejar una part posterior-- si veig barra invertida 0, sé que he acabat amb aquesta 1059 00:49:32,710 --> 00:49:35,270 i sé que puc simplement deixar d'iteració a través. 1060 00:49:35,270 --> 00:49:36,200 Molt bona pregunta. 1061 00:49:36,200 --> 00:49:40,210 >> I realment a anar més lluny en profunditat en aquesta setmana que 1062 00:49:40,210 --> 00:49:43,990 a causa de que la peça que es va a implicar una gran quantitat d'ús de punters. 1063 00:49:43,990 --> 00:49:48,459 Però només sé que en aquest moment, això és només una més-- diferent 1064 00:49:48,459 --> 00:49:51,250 això és només una manera diferent per l'ordinador per escriure, en essència, 1065 00:49:51,250 --> 00:49:52,470 el que hem estat fent. 1066 00:49:52,470 --> 00:49:54,900 Igual que David va dir a donar una conferència, la forma en què 1067 00:49:54,900 --> 00:50:01,720 accedir a una matriu és només per fer matriu 0, suport 0, si només 1068 00:50:01,720 --> 00:50:04,050 volgut per accedir al primer valor. 1069 00:50:04,050 --> 00:50:10,280 >> Tot l'equip està fent és convertir que en això i iterant si mateix. 1070 00:50:10,280 --> 00:50:13,580 Així ho anomenem sintàctica sucre, que és només 1071 00:50:13,580 --> 00:50:18,420 una forma elegant de dir fàcil d'usar maneres de nosaltres saber programar. 1072 00:50:18,420 --> 00:50:21,560 Però l'equip per sota, el que està fent, 1073 00:50:21,560 --> 00:50:23,997 en realitat és només tenir un punter que està ajustant. 1074 00:50:23,997 --> 00:50:26,330 Però la forma en què escrivim, perquè és més fàcil per a nosaltres 1075 00:50:26,330 --> 00:50:30,240 per pensar en les coses en termes de caixes i com moure per les caixes, 1076 00:50:30,240 --> 00:50:32,190 és per tenir els suports. 1077 00:50:32,190 --> 00:50:36,394 Ho sentim, però que en realitat era, molt malament però- si. 1078 00:50:36,394 --> 00:50:38,310 AUDIÈNCIA: Llavors, com es comparar dues cadenes 1079 00:50:38,310 --> 00:50:40,560 per veure si són iguals entre si? 1080 00:50:40,560 --> 00:50:42,690 >> ANDI Peng: David escriure aquest programa a la conferència 1081 00:50:42,690 --> 00:50:45,274 així que només vaig a anar més ràpidament i breument. 1082 00:50:45,274 --> 00:50:47,440 La forma en què ho faries és que ho faria realitat 1083 00:50:47,440 --> 00:50:51,300 que hagi d'anar i comparar la addresses-- o els valors 1084 00:50:51,300 --> 00:50:52,810 obtingut a partir dels punters. 1085 00:50:52,810 --> 00:50:55,140 Així que recordi, com obtenir el valor aquí? 1086 00:50:55,140 --> 00:50:56,825 No m'importa sobre la direcció aquí. 1087 00:50:56,825 --> 00:50:58,950 Com obtinc la realitat valor del que sigui aquí? 1088 00:50:58,950 --> 00:50:59,470 >> AUDIÈNCIA: [inaudible]. 1089 00:50:59,470 --> 00:51:00,261 >> ANDI Peng: Exactament. 1090 00:51:00,261 --> 00:51:05,090 Així es compara l'estrella aquí davant de l'estrella aquí. 1091 00:51:05,090 --> 00:51:06,150 Són aquelles iguals. 1092 00:51:06,150 --> 00:51:07,690 I després cal baixar. 1093 00:51:07,690 --> 00:51:09,530 Són l'estrella aquí i l'estrella aquí igual? 1094 00:51:09,530 --> 00:51:10,030 D'ACORD. 1095 00:51:10,030 --> 00:51:10,283 Són iguals. 1096 00:51:10,283 --> 00:51:12,866 I que acaba de seguir baixant fins que has arribat al final de tots dos. 1097 00:51:12,866 --> 00:51:16,190 I si tots ells són iguals, llavors vostè sap que la seva cadena és igual. 1098 00:51:16,190 --> 00:51:18,130 I C té en realitat una funció escrita diu 1099 00:51:18,130 --> 00:51:20,713 Cadena Comp, que en realitat només ho fa per vostè perquè no ' 1100 00:51:20,713 --> 00:51:22,140 has d'escriure tu mateix. 1101 00:51:22,140 --> 00:51:23,274 Sí? 1102 00:51:23,274 --> 00:51:26,970 >> AUDIÈNCIA: Crec que en la conferència és quan fem la comparem. 1103 00:51:26,970 --> 00:51:29,520 Nosaltres realment no necessitem una taulell com pi, oi? 1104 00:51:29,520 --> 00:51:34,310 >> ANDI Peng: No ho fa perquè en realitat no importa 1105 00:51:34,310 --> 00:51:36,250 quantes caixes que hem itera a través. 1106 00:51:36,250 --> 00:51:39,580 Tot el que importa és que anem a seguir endavant fins que sàpiga parar. 1107 00:51:39,580 --> 00:51:41,990 I saps que parar quan hi ha algun tipus d'indicació 1108 00:51:41,990 --> 00:51:45,310 que estàs en un terminador nul. 1109 00:51:45,310 --> 00:51:45,930 Sí. 1110 00:51:45,930 --> 00:51:47,154 Tan-- 1111 00:51:47,154 --> 00:51:48,070 AUDIÈNCIA: [inaudible]. 1112 00:51:48,070 --> 00:51:48,736 ANDI Peng: Sí. 1113 00:51:48,736 --> 00:51:51,950 Així en el cas de la comparació de cordes, jo realment no 1114 00:51:51,950 --> 00:51:54,207 tenir cura com moltes cartes tracti: Necessito comparar 1115 00:51:54,207 --> 00:51:56,540 si són veritables o falses si que són iguals entre si. 1116 00:51:56,540 --> 00:51:58,914 No m'importa com moltes cartes es troben en cada un d'ells, no? 1117 00:51:58,914 --> 00:52:01,130 Jo només m'importa que aquesta partits amb això i el 1118 00:52:01,130 --> 00:52:05,311 després dels partits i el de després partits tot el camí fins al final. 1119 00:52:05,311 --> 00:52:05,810 Oi? 1120 00:52:05,810 --> 00:52:07,000 Això té sentit? 1121 00:52:07,000 --> 00:52:10,166 >> Així que no m'importa com moltes cartes, Jo només m'importa que totes les lletres 1122 00:52:10,166 --> 00:52:11,050 partit. 1123 00:52:11,050 --> 00:52:12,910 Sí. 1124 00:52:12,910 --> 00:52:13,920 D'ACORD. 1125 00:52:13,920 --> 00:52:16,840 Puc passar d'això? 1126 00:52:16,840 --> 00:52:18,489 Gran. 1127 00:52:18,489 --> 00:52:21,280 Ens estem quedant una mica curt en temps, així que vaig a permetre que vostè acaba de 1128 00:52:21,280 --> 00:52:23,670 nois a veure breument en aquest. 1129 00:52:23,670 --> 00:52:26,430 Executar al seu ID de si vostès són curiosos. 1130 00:52:26,430 --> 00:52:30,030 I vostès poden veure el que això serà imprimint. 1131 00:52:30,030 --> 00:52:30,640 D'ACORD. 1132 00:52:30,640 --> 00:52:34,990 >> Així que una cosa que tindrem també toquem en un bit és la idea de l'aritmètica de punters. 1133 00:52:34,990 --> 00:52:38,180 La qual cosa, tot el que és, és en lloc d'ajustar 1134 00:52:38,180 --> 00:52:42,610 els valors del que s'emmagatzema en la direcció del punter, 1135 00:52:42,610 --> 00:52:45,030 és només realitat canviant la direcció de si mateix. 1136 00:52:45,030 --> 00:52:49,420 Així que si vostè com volies que és humà per ajustar el punter de forma manual, 1137 00:52:49,420 --> 00:52:52,700 la forma en què ho faries és només fer n vegades la mida del punter. 1138 00:52:52,700 --> 00:52:53,240 Oi? 1139 00:52:53,240 --> 00:52:54,810 >> Així que un int. 1140 00:52:54,810 --> 00:52:58,580 Un int-- quants bytes en la memòria és un int? 1141 00:52:58,580 --> 00:52:59,640 Són les quatre, no? 1142 00:52:59,640 --> 00:53:03,520 Així que si jo sé que tinc una gran varietat de tot sencers i ho vull perquè apunti a la 1143 00:53:03,520 --> 00:53:08,470 després, m'agradaria saber que jo només he de moure el punter cap avall quatre octets, oi? 1144 00:53:08,470 --> 00:53:12,440 I així n vegades la mida dels bytes de punter 1145 00:53:12,440 --> 00:53:15,890 és però molts bytes no ets més que va a moure el punter per. 1146 00:53:15,890 --> 00:53:20,350 >> Així, per exemple, si tenim una sèrie de sencers, el primer, anem a dir, 1147 00:53:20,350 --> 00:53:22,280 s'emmagatzema com 0x00. 1148 00:53:22,280 --> 00:53:26,150 Vostè sap que el següent va a estar a 0x04 perquè això és quatre bytes més tard. 1149 00:53:26,150 --> 00:53:31,030 I l'un després que va a ser 0x08 i així successivament i així successivament. 1150 00:53:31,030 --> 00:53:33,830 I així, nois, mirin. 1151 00:53:33,830 --> 00:53:36,640 >> Tot el que estem fent aquí és que disposa d'un punter i 1152 00:53:36,640 --> 00:53:43,700 i va afegir que al seu la memòria perquè pugui moure cap avall 1153 00:53:43,700 --> 00:53:45,559 els blocs de memòria assignats. 1154 00:53:45,559 --> 00:53:46,850 És una espècie de concepte de nivell superior. 1155 00:53:46,850 --> 00:53:48,820 Vostès no necessitaran saber per aquesta setmana, 1156 00:53:48,820 --> 00:53:51,290 però això és tot el que està fent allà. 1157 00:53:51,290 --> 00:53:55,190 1158 00:53:55,190 --> 00:53:55,900 D'ACORD. 1159 00:53:55,900 --> 00:53:56,710 >> En una altra ocasió broma. 1160 00:53:56,710 --> 00:54:01,360 1161 00:54:01,360 --> 00:54:02,780 Dues cadenes de peu en un bar. 1162 00:54:02,780 --> 00:54:05,713 Un diu, m'agradaria un rom i els valors d'escombraries de Coca-Cola. 1163 00:54:05,713 --> 00:54:08,796 L'altre diu, hauràs de disculpar el meu amic, ell no està acabada en nul. 1164 00:54:08,796 --> 00:54:10,390 Vostès ho aconsegueix. 1165 00:54:10,390 --> 00:54:10,890 Ho sento. 1166 00:54:10,890 --> 00:54:13,490 Així és com em mantinc anar quan em PREP per a la secció 1167 00:54:13,490 --> 00:54:15,650 és inserir unes diapositives parella broma. 1168 00:54:15,650 --> 00:54:16,150 De totes formes. 1169 00:54:16,150 --> 00:54:21,460 1170 00:54:21,460 --> 00:54:21,960 D'ACORD. 1171 00:54:21,960 --> 00:54:24,290 Abans de passar en-- així que, en essència, tenim 1172 00:54:24,290 --> 00:54:30,600 cobert tot el conceptual qüestions relacionades amb els punters. 1173 00:54:30,600 --> 00:54:34,090 I després anem a talk-- mòbil més, parlar sobre per què això és important 1174 00:54:34,090 --> 00:54:37,810 i com encaixa en el idea de la gestió de memòria. 1175 00:54:37,810 --> 00:54:39,810 Però abans de seguir endavant, ¿Algú té preguntes 1176 00:54:39,810 --> 00:54:43,880 sobre l'ús del punter, el que està passant quan crearà punters, 1177 00:54:43,880 --> 00:54:47,540 com són les referències de cada una altra, com es dereferencing? 1178 00:54:47,540 --> 00:54:51,760 Una pregunta sobre que abans de passar? 1179 00:54:51,760 --> 00:54:53,060 D'ACORD. 1180 00:54:53,060 --> 00:54:54,770 Gran. 1181 00:54:54,770 --> 00:54:58,170 >> Així que això ens porta a aquesta major concepte de nivell superior 1182 00:54:58,170 --> 00:55:00,310 de gestió de la memòria en el seu conjunt. 1183 00:55:00,310 --> 00:55:02,720 Per tant, bàsicament, en l'ordinador, hi ha 1184 00:55:02,720 --> 00:55:06,300 dos tipus bàsics de memòria o regions en què la memòria s'emmagatzema. 1185 00:55:06,300 --> 00:55:10,210 Vostè té aquí el que s'anomena el munt i tens aquí baix 1186 00:55:10,210 --> 00:55:11,550 el que crida l'pila. 1187 00:55:11,550 --> 00:55:13,966 I parlarem de la pila primer perquè és 1188 00:55:13,966 --> 00:55:16,910 el més finagley que quin tipus de conceptualment 1189 00:55:16,910 --> 00:55:18,570 entendre el que està passant. 1190 00:55:18,570 --> 00:55:23,930 >> Així que tota la pila és-- pensar com una pica de la memòria física 1191 00:55:23,930 --> 00:55:28,880 on es té un bloc de memòria això es van reservar per al seu programa 1192 00:55:28,880 --> 00:55:30,180 mentre s'està executant. 1193 00:55:30,180 --> 00:55:34,480 I aquí és on, en essència, tot de s'emmagatzemen les variables locals. 1194 00:55:34,480 --> 00:55:38,300 Així que això és només un zoom en la imatge d'aquesta pila. 1195 00:55:38,300 --> 00:55:41,060 La pila d'aquí baix, jo sóc simplement apropar una mica més. 1196 00:55:41,060 --> 00:55:46,170 >> Per tant, bàsicament, en una pila que té un munt de funcions en el seu programa. 1197 00:55:46,170 --> 00:55:48,250 Així que anem a tornar a la setmana dos exemples 1198 00:55:48,250 --> 00:55:51,450 on vam tenir la nostra funció principal així com una funció de cub 1199 00:55:51,450 --> 00:55:56,410 on tractem de crear una funció que cubed-- que va tenir paràmetres com a entrada, 1200 00:55:56,410 --> 00:55:59,110 tallada en glaçons ells i va tornar de tornada a principal. 1201 00:55:59,110 --> 00:56:02,459 Així que la forma en què això està emmagatzemat en la memòria és que vostè té la seva funció principal 1202 00:56:02,459 --> 00:56:03,250 aquí a la part inferior. 1203 00:56:03,250 --> 00:56:06,630 I després, amb cada funció addicional que cridi i afegir per sobre d'això, 1204 00:56:06,630 --> 00:56:07,960 la memòria simplement s'apila a la part superior. 1205 00:56:07,960 --> 00:56:10,190 Penseu en això com una pila física. 1206 00:56:10,190 --> 00:56:13,570 >> I pel que té tots vostès principal variables de les seves funcions principals, 1207 00:56:13,570 --> 00:56:15,260 tot el que està passant aquí, emmagatzema. 1208 00:56:15,260 --> 00:56:17,440 I després, quan vostè va cridar cub, va i es 1209 00:56:17,440 --> 00:56:20,810 crea còpies de tots aquells paràmetres i els emmagatzema 1210 00:56:20,810 --> 00:56:23,010 anteriorment en un lloc diferent. 1211 00:56:23,010 --> 00:56:24,280 I així, per què ens preocupem? 1212 00:56:24,280 --> 00:56:29,220 La raó per la qual ens importa és que no podem simplement utilitzar els paràmetres aquí-- les variables 1213 00:56:29,220 --> 00:56:33,080 aquí-- i canviar-los, esperem que també poden canviar aquí, oi? 1214 00:56:33,080 --> 00:56:35,910 >> La idea és que estan guardats en diferents llocs de la memòria 1215 00:56:35,910 --> 00:56:40,540 de manera que, quan s'està accedint diferent funcions, el que vostè pensa que està succeint 1216 00:56:40,540 --> 00:56:45,520 no està succeint realment, perquè el bits de memòria no estan interconnectats. 1217 00:56:45,520 --> 00:56:50,530 Per tant el dubte que realment important per a nosaltres entendre la classe de 1218 00:56:50,530 --> 00:56:54,100 És a dir, què passa si, quan ens estem quedant un programa, la mida d'una funció 1219 00:56:54,100 --> 00:56:57,159 apilar frame-- tan físicament, com la quantitat de memòria què hem de donar-li? 1220 00:56:57,159 --> 00:56:59,950 Potser és una funció gegant així que ha de donar-li aquesta quantitat de memòria. 1221 00:56:59,950 --> 00:57:02,230 Però si fos més petit que havíem necessitarà una miqueta. 1222 00:57:02,230 --> 00:57:05,980 >> Així que la idea és que quan ens estem quedant un programa la mida d'aquesta funció 1223 00:57:05,980 --> 00:57:09,100 depèn de quants variables i el tipus de variables 1224 00:57:09,100 --> 00:57:10,940 que volem donar-li. 1225 00:57:10,940 --> 00:57:13,910 Però i si el nombre de variables-- i llurs mides, 1226 00:57:13,910 --> 00:57:16,140 això no determinat perquè el codificador, però 1227 00:57:16,140 --> 00:57:20,580 es determina pel reial usuari del seu programa. 1228 00:57:20,580 --> 00:57:24,240 Així que si jo volia crear una funció que va tenir cordes de l'usuari, 1229 00:57:24,240 --> 00:57:27,630 però jo no sé realment què tan gran aquestes cadenes són, és difícil per a mi 1230 00:57:27,630 --> 00:57:30,220 assignar l'específica quantitat de memòria necessària. 1231 00:57:30,220 --> 00:57:30,920 Oi? 1232 00:57:30,920 --> 00:57:35,234 >> Perquè si aquesta function-- si Aquest usuari introdueix una cadena gegant, 1233 00:57:35,234 --> 00:57:37,650 que crearà un error del que es diu en essència 1234 00:57:37,650 --> 00:57:42,190 desbordament de pila on vagi més enllà de la límits de la memòria que vostè té. 1235 00:57:42,190 --> 00:57:44,250 I llavors, què fem? 1236 00:57:44,250 --> 00:57:47,290 Si no podem crear aquest gegant pila que pot salvar tot, 1237 00:57:47,290 --> 00:57:50,260 Què fem per resoldre aquest problema? 1238 00:57:50,260 --> 00:57:54,364 >> Així que seguirem endavant i parlar sobre aquest segon tipus de memòria 1239 00:57:54,364 --> 00:57:56,780 i llavors podrem parlar de com podem utilitzar els dos junts 1240 00:57:56,780 --> 00:57:58,550 per resoldre aquesta qüestió. 1241 00:57:58,550 --> 00:58:01,024 Així que ara anem a ascendir a una part diferent de la memòria 1242 00:58:01,024 --> 00:58:01,690 al nostre ordinador. 1243 00:58:01,690 --> 00:58:03,215 Això es diu el munt. 1244 00:58:03,215 --> 00:58:07,150 Així que tot el munt és una piscina memòria de què disposa 1245 00:58:07,150 --> 00:58:08,690 es pot assignar de forma dinàmica. 1246 00:58:08,690 --> 00:58:12,420 Així que això pot canviar, mentre que el programa s'està executant. 1247 00:58:12,420 --> 00:58:15,160 >> I així, una regió de memòria no utilitzada que pot 1248 00:58:15,160 --> 00:58:18,200 allowed-- ser que pot haver assignat amb la funció de 1249 00:58:18,200 --> 00:58:20,490 anomenada malloc, o l'assignació de memòria. 1250 00:58:20,490 --> 00:58:23,110 Per tant, bàsicament, quan s'està executant un programa, 1251 00:58:23,110 --> 00:58:29,560 pot crear dinàmicament la memòria de el munt i l'ús que de tot aquí. 1252 00:58:29,560 --> 00:58:34,280 I així llavors, totes les seves funcions aquí es pot accedir a la pila. 1253 00:58:34,280 --> 00:58:37,960 >> I així malloc, aquesta idea que David tipus de forma ràpida, breument passat per alt 1254 00:58:37,960 --> 00:58:41,570 en la conferència, és només una forma de vostè controli la seva memòria. 1255 00:58:41,570 --> 00:58:45,470 Igual que, quan estàs creant apilar funcions, quan ets a 1256 00:58:45,470 --> 00:58:48,290 que la seva funció principal amb les seves funcions aleatòries, 1257 00:58:48,290 --> 00:58:52,270 vostè pensa en ells com els nens que s'acaba es va escapar quan estava acabat amb ells. 1258 00:58:52,270 --> 00:58:53,690 Ells eren realment dolents fills. 1259 00:58:53,690 --> 00:58:55,515 Vostè els creu ensenyar alguna cosa, 1260 00:58:55,515 --> 00:58:57,640 i després quan vulgui accedir-hi de nou són 1261 00:58:57,640 --> 00:58:59,850 No hi ha perquè el seu memòria simplement va fugir. 1262 00:58:59,850 --> 00:59:04,140 >> Però malloc, o la pila, és una forma de tenir millors fills, on 1263 00:59:04,140 --> 00:59:07,090 pots espècie de crear ells, els assignen valors, 1264 00:59:07,090 --> 00:59:11,080 utilitzar ells-- que sonava realment bad-- usar-los, però, que volies, 1265 00:59:11,080 --> 00:59:14,002 però llavors ser capaç de controlar i després alliberar memòria 1266 00:59:14,002 --> 00:59:14,960 sempre que els necessiti. 1267 00:59:14,960 --> 00:59:18,085 Així que, quan hagi acabat amb la seva funció, els nens s'acostin de nou a vostè 1268 00:59:18,085 --> 00:59:20,290 i vostè encara ha de les dades allà. 1269 00:59:20,290 --> 00:59:25,690 >> Així que la forma en què malloc, o crear, la memòria és la funció void estrelles 1270 00:59:25,690 --> 00:59:26,790 mida malloc en bytes. 1271 00:59:26,790 --> 00:59:29,730 Així que això és només el prototip per què ho fem. 1272 00:59:29,730 --> 00:59:35,800 Així que un exemple és que vam crear un punter de tipus int-- iguals int estrella pointer-- 1273 00:59:35,800 --> 00:59:38,120 mida malloc de int. 1274 00:59:38,120 --> 00:59:41,734 Així que la raó per la qual fem mida de i no només un number-- 1275 00:59:41,734 --> 00:59:43,650 perquè tots sabem que 1 int és de quatre bytes, 1276 00:59:43,650 --> 00:59:48,310 dreta- però un int és només quatre bytes en certs sistemes operatius. 1277 00:59:48,310 --> 00:59:50,410 >> La idea per a nosaltres com programadors és que ens 1278 00:59:50,410 --> 00:59:53,160 voler crear codi que pot executar en tots els equips, no només 1279 00:59:53,160 --> 00:59:54,860 nostres ordinadors simples. 1280 00:59:54,860 --> 00:59:58,350 I per això ens agrada fer servir grandària i no només el número quatre. 1281 00:59:58,350 --> 00:59:59,970 ¿Això té sentit per a tothom? 1282 00:59:59,970 --> 01:00:03,930 Així mida de-- tot, és un C funció o operador que 1283 01:00:03,930 --> 01:00:09,350 li indica quants bytes de memòria fa un cert tipus de variable prengui. 1284 01:00:09,350 --> 01:00:11,150 Així que en aquest cas, la mida d'un int és de quatre. 1285 01:00:11,150 --> 01:00:12,090 Quatre bytes. 1286 01:00:12,090 --> 01:00:15,490 I malloc va a alliberar 4 bytes en el munt, 1287 01:00:15,490 --> 01:00:18,790 llavors vostè pot utilitzar en el seu principal funció per a ser capaç d'emmagatzemar memòria. 1288 01:00:18,790 --> 01:00:22,460 1289 01:00:22,460 --> 01:00:24,860 És clar que fins al moment tothom? 1290 01:00:24,860 --> 01:00:25,918 Sí? 1291 01:00:25,918 --> 01:00:28,122 >> AUDIÈNCIA: Sóc clar, però només per estar més clear-- 1292 01:00:28,122 --> 01:00:28,705 ANDI Peng: OK. 1293 01:00:28,705 --> 01:00:29,246 Totalment bé. 1294 01:00:29,246 --> 01:00:32,176 AUDIÈNCIA: --size d'es [inaudible] pot en realitat [inaudible] 1295 01:00:32,176 --> 01:00:34,384 i va a fer realment el El que nosaltres volem. 1296 01:00:34,384 --> 01:00:35,380 No és un pseudo-. 1297 01:00:35,380 --> 01:00:35,878 >> ANDI Peng: No. 1298 01:00:35,878 --> 01:00:36,874 >> AUDIÈNCIA: És com una cosa-- reals 1299 01:00:36,874 --> 01:00:37,372 >> ANDI Peng: Aquest és el codi real. 1300 01:00:37,372 --> 01:00:38,455 >> AUDIÈNCIA: --ens pot utilitzar-lo. 1301 01:00:38,455 --> 01:00:39,862 És real. 1302 01:00:39,862 --> 01:00:40,418 Fresc. 1303 01:00:40,418 --> 01:00:41,751 ANDI Peng: Mida de ve amb C. 1304 01:00:41,751 --> 01:00:43,475 AUDIÈNCIA: Això me fa la vida més feliç. 1305 01:00:43,475 --> 01:00:45,550 ANDI Peng: Sí. 1306 01:00:45,550 --> 01:00:48,610 Així que si ets un programador mandrós com quin tipus de sóc de vegades, 1307 01:00:48,610 --> 01:00:50,402 No m'agrada la memorització el que la mida d'un int 1308 01:00:50,402 --> 01:00:52,734 és, no m'agrada la memorització amb la mida d'un flotador és. 1309 01:00:52,734 --> 01:00:55,160 Grandària de tan sols li diu el que és i que és molt més fàcil. 1310 01:00:55,160 --> 01:00:59,880 1311 01:00:59,880 --> 01:01:00,440 >> Tot bé. 1312 01:01:00,440 --> 01:01:02,160 Així que una cosa important que vostès tots volem 1313 01:01:02,160 --> 01:01:04,620 a tenir en compte quan s'està usant malloc és que sempre 1314 01:01:04,620 --> 01:01:06,400 han de comprovar per veure si és nul. 1315 01:01:06,400 --> 01:01:08,630 Així com he dit, de nou a aquesta foto de la pila. 1316 01:01:08,630 --> 01:01:11,390 El munt és només aquest gegant pila de memòria que tens. 1317 01:01:11,390 --> 01:01:16,740 I vostè vol ser capaç de prendre trossos de la memòria d'ella i utilitzar-la, oi? 1318 01:01:16,740 --> 01:01:19,750 >> Però el que si vostè no té cap més memòria en aquest munt? 1319 01:01:19,750 --> 01:01:23,650 Què passa si jo ja he fet servir tot d'ella i tracte de malloc més? 1320 01:01:23,650 --> 01:01:24,864 Això no existeix. 1321 01:01:24,864 --> 01:01:26,780 Bé, això és per què estàs aconseguirà un error. 1322 01:01:26,780 --> 01:01:29,220 Esteu SEG culpa. Vas tenir una fallada de segmentació en el qual 1323 01:01:29,220 --> 01:01:30,940 tractar d'accedir a coses que no hi són. 1324 01:01:30,940 --> 01:01:33,180 I així, la forma en què fem això i la forma en què 1325 01:01:33,180 --> 01:01:36,120 evitar això és que vam comprovar per veure si nul·la del punter. 1326 01:01:36,120 --> 01:01:41,650 >> Així que si jo fos a malloc alguna cosa i jo no tenia més memòria, 1327 01:01:41,650 --> 01:01:45,501 que imprimiria un error perquè el punter retornat a tu és simplement nul·la. 1328 01:01:45,501 --> 01:01:47,750 I així, la forma en què fem esto-- això és només un gran disseny, 1329 01:01:47,750 --> 01:01:52,140 simplement memoritzar esto-- és que qualsevol vegada que intenti malloc res, 1330 01:01:52,140 --> 01:01:55,300 vostè va a necessitar comprovar per veure si és nul. 1331 01:01:55,300 --> 01:01:58,257 Perquè cada vegada que intenti obtenir memòria de la pila, 1332 01:01:58,257 --> 01:02:00,340 sempre cal fer Comprovar si hi ha memòria. 1333 01:02:00,340 --> 01:02:01,350 Això és tot el que és. 1334 01:02:01,350 --> 01:02:04,980 >> Així que més o menys aquests tres línies de codi, a aprendre de memòria. 1335 01:02:04,980 --> 01:02:06,830 Cada vegada que malloc, plop en. 1336 01:02:06,830 --> 01:02:08,190 Vostè va a necessitar. 1337 01:02:08,190 --> 01:02:10,540 Perquè jo garanteixo que anem a vostè provar en un cas i el seu equip 1338 01:02:10,540 --> 01:02:13,498 es va a explotar perquè ets va a tractar de memòria d'accés que és 1339 01:02:13,498 --> 01:02:16,680 no existeix i les coses van a accident i no serà bo. 1340 01:02:16,680 --> 01:02:19,290 Així que perforar que en el seu cervell. 1341 01:02:19,290 --> 01:02:21,370 Malloc, nul. 1342 01:02:21,370 --> 01:02:22,360 Bé. 1343 01:02:22,360 --> 01:02:22,860 Tot bé. 1344 01:02:22,860 --> 01:02:26,280 1345 01:02:26,280 --> 01:02:28,340 >> Llavors això engendra el qüestió del que succeeix 1346 01:02:28,340 --> 01:02:30,550 després que hàgim acabat amb aquesta memòria. 1347 01:02:30,550 --> 01:02:32,390 A causa de que tota la idea de tenir malloc era 1348 01:02:32,390 --> 01:02:36,460 que tenim aquest munt que podem prendre memòria des i llavors podem usar-lo. 1349 01:02:36,460 --> 01:02:37,220 Oi? 1350 01:02:37,220 --> 01:02:40,550 I llavors, què hem de recordar és que, després que hàgim acabat amb ella, 1351 01:02:40,550 --> 01:02:41,900 llavors podem alliberar-lo. 1352 01:02:41,900 --> 01:02:42,400 Deixa-ho anar. 1353 01:02:42,400 --> 01:02:43,979 Podem deixar-lo anar. 1354 01:02:43,979 --> 01:02:47,020 O si vostè també va a filtrar memòria i més coses dolentes succeiran. 1355 01:02:47,020 --> 01:02:49,010 >> Essencialment, cada vegada vostè està tocant la memòria, 1356 01:02:49,010 --> 01:02:51,800 coses dolentes succeiran si no fer les coses correctament. 1357 01:02:51,800 --> 01:02:55,150 Així que cal comprovar, en primer lloc, si vostè té la memòria disponible. 1358 01:02:55,150 --> 01:02:58,700 I després, després que hagi acabat, vostè vol alliberar-lo i permetre que el seu sistema operatiu 1359 01:02:58,700 --> 01:03:00,690 a prendre de nou. 1360 01:03:00,690 --> 01:03:04,870 Així que la forma en que fem que és només això funció, lliure de buits, i el punter 1361 01:03:04,870 --> 01:03:06,370 a aquest munt de memòria. 1362 01:03:06,370 --> 01:03:08,680 >> Així que l'exemple és punter gratuïta. 1363 01:03:08,680 --> 01:03:11,580 És bastant fàcil, simple, no vull oblidar-ho. 1364 01:03:11,580 --> 01:03:14,687 Per tal de comprovar per veure si és nul·la, lliure. 1365 01:03:14,687 --> 01:03:15,270 Cada un de bo? 1366 01:03:15,270 --> 01:03:22,660 1367 01:03:22,660 --> 01:03:27,325 Així que una vegada més, el codi que vostès pot prendre la classe de forma ràpida una mirada a. 1368 01:03:27,325 --> 01:03:34,964 1369 01:03:34,964 --> 01:03:37,880 Sé que és una gran quantitat de nova sintaxi i que està bé si ets com, ah, 1370 01:03:37,880 --> 01:03:38,963 ¿Què significa això de nou? 1371 01:03:38,963 --> 01:03:40,250 No et preocupis. 1372 01:03:40,250 --> 01:03:46,785 Tot això estava destinat a ser que es presenten una acció, com totes aquestes coses 1373 01:03:46,785 --> 01:03:47,660 es poden utilitzar junts. 1374 01:03:47,660 --> 01:03:52,190 1375 01:03:52,190 --> 01:03:54,190 Així que això és posar junts com un grup del passat 1376 01:03:54,190 --> 01:03:56,532 diapositives ens vam anar a través d'en un sol programa. 1377 01:03:56,532 --> 01:03:58,240 AUDIÈNCIA: En certa manera que podem actually-- 1378 01:03:58,240 --> 01:03:59,570 ANDI Peng: D'una manera que en realitat podem utilitzar. 1379 01:03:59,570 --> 01:04:02,379 Vostè podria plop que en el seu ID, es pot executar i que havia de funcionar. 1380 01:04:02,379 --> 01:04:02,920 AUDIÈNCIA: OK. 1381 01:04:02,920 --> 01:04:04,140 Així que això és real? 1382 01:04:04,140 --> 01:04:05,580 >> ANDI Peng: Això és real. 1383 01:04:05,580 --> 01:04:06,430 Sí. 1384 01:04:06,430 --> 01:04:08,690 Intento fer el que el fonts són diferents pel que 1385 01:04:08,690 --> 01:04:11,770 que sempre que escric reals codi de la font és un codi font 1386 01:04:11,770 --> 01:04:15,471 i que el meu codi de nota és diferent, però No sé si això funciona realment. 1387 01:04:15,471 --> 01:04:16,012 AUDIÈNCIA: No. 1388 01:04:16,012 --> 01:04:17,190 Penso que-- 1389 01:04:17,190 --> 01:04:18,213 >> ANDI Peng: OK. 1390 01:04:18,213 --> 01:04:20,578 >> AUDIÈNCIA: --sometimes [Inaudible] i estic 1391 01:04:20,578 --> 01:04:23,416 com, això seria molt bonic si era realment una cosa útil 1392 01:04:23,416 --> 01:04:24,812 però llavors no és una cosa útil. 1393 01:04:24,812 --> 01:04:26,270 M'agrada que això és una cosa útil. 1394 01:04:26,270 --> 01:04:27,010 >> ANDI Peng: OK. 1395 01:04:27,010 --> 01:04:27,510 Sí. 1396 01:04:27,510 --> 01:04:28,430 Vaig a passar això junt. 1397 01:04:28,430 --> 01:04:33,266 Sé com, David, els nens són molt trist quan s'escriu codi fals. 1398 01:04:33,266 --> 01:04:34,240 Tot bé. 1399 01:04:34,240 --> 01:04:34,740 Sí? 1400 01:04:34,740 --> 01:04:37,686 >> AUDIÈNCIA: Llavors els ptr aquí No és en realitat un punter, 1401 01:04:37,686 --> 01:04:41,130 és un bloc de memòria? 1402 01:04:41,130 --> 01:04:45,130 >> ANDI Peng: Així que estàs parlant la primera línia o el que ací baix? 1403 01:04:45,130 --> 01:04:48,170 Estàs parlant d'aquest d'aquí? 1404 01:04:48,170 --> 01:04:50,910 >> AUDIÈNCIA: El NAD és de coses diferents en-- 1405 01:04:50,910 --> 01:04:53,230 >> ANDI Peng: Bé, pel que fins aquí el que estic doing-- realitat, 1406 01:04:53,230 --> 01:04:54,660 anem a passar per aquí. 1407 01:04:54,660 --> 01:04:57,120 Aquest tipus de vincles a molt bé tots els conceptes. 1408 01:04:57,120 --> 01:05:01,840 Així que aquí tenim ptr int estrelles. 1409 01:05:01,840 --> 01:05:04,160 Així int punter, que és on en realitat estem creant 1410 01:05:04,160 --> 01:05:06,550 un punter que apunta a un sencer. 1411 01:05:06,550 --> 01:05:08,230 Bé, va apuntar a un sencer. 1412 01:05:08,230 --> 01:05:12,135 I anem a malloc, o donar-li, suficient memòria assignada 1413 01:05:12,135 --> 01:05:13,200 per emmagatzemar un nombre sencer. 1414 01:05:13,200 --> 01:05:14,910 Així que quatre octets en aquest cas. 1415 01:05:14,910 --> 01:05:18,024 >> I llavors si que és igual als iguals null-- és igual null-- anem a imprimir. 1416 01:05:18,024 --> 01:05:20,440 Oh, tens un error perquè vostè està fora de la memòria, no? 1417 01:05:20,440 --> 01:05:22,814 En cas contrari el retorn, que simplement li diu al seu programa 1418 01:05:22,814 --> 01:05:24,170 que tens un error. 1419 01:05:24,170 --> 01:05:26,850 I després si ho fa tenir aquesta memòria, que és 1420 01:05:26,850 --> 01:05:33,230 va a emmagatzemar ho aconsegueix int li dóna a la ubicació 1421 01:05:33,230 --> 01:05:35,460 i establir-ho com el valor del punter. 1422 01:05:35,460 --> 01:05:38,500 Així que en realitat va a esborrar físicament aquest valor 1423 01:05:38,500 --> 01:05:41,702 i posar ho aconsegueix int devolucions. 1424 01:05:41,702 --> 01:05:43,910 I després vas a imprimir tot el que van entrar. 1425 01:05:43,910 --> 01:05:46,080 >> AUDIÈNCIA: ¿I això és va a estar a l'munt? 1426 01:05:46,080 --> 01:05:47,060 >> ANDI Peng: Això va per estar en el munt. 1427 01:05:47,060 --> 01:05:48,768 >> AUDIÈNCIA: I perquè serà accessible. 1428 01:05:48,768 --> 01:05:51,220 ANDI Peng: Exactament. 1429 01:05:51,220 --> 01:05:52,600 Niça. 1430 01:05:52,600 --> 01:05:53,756 Bé. 1431 01:05:53,756 --> 01:05:59,289 >> AUDIÈNCIA: Així que quan ens alliberem ptr en aquest pas final, estem alliberant el punter 1432 01:05:59,289 --> 01:06:00,724 o estem alliberant el bloc? 1433 01:06:00,724 --> 01:06:01,390 ANDI Peng: Sí. 1434 01:06:01,390 --> 01:06:05,570 Així que estem alliberant a l'pointer-- així, alliberant al bloc de memòria. 1435 01:06:05,570 --> 01:06:08,780 Així que l'única manera en què podem igualar l'accés la memòria és per tenir el punter. 1436 01:06:08,780 --> 01:06:10,730 Si vostè no té el punter, ets com, oh, no sé on és, 1437 01:06:10,730 --> 01:06:11,290 Oi? 1438 01:06:11,290 --> 01:06:13,956 Així que si t'alliberes, estàs essencialment alliberant tot aquest bloc. 1439 01:06:13,956 --> 01:06:16,500 Llavors l'equip sap, oh, no hi ha res útil aquí, 1440 01:06:16,500 --> 01:06:19,396 Jo només puc posar les escombraries els valors de nou en ella de nou. 1441 01:06:19,396 --> 01:06:21,590 >> AUDIÈNCIA: Llavors existeixen nombres enters al respecte? 1442 01:06:21,590 --> 01:06:23,481 >> ANDI Peng: Existeixen els nombres enters? 1443 01:06:23,481 --> 01:06:23,980 Ho sento. 1444 01:06:23,980 --> 01:06:25,271 Es pot reformular la seva pregunta? 1445 01:06:25,271 --> 01:06:28,330 AUDIÈNCIA: vaig voler dir, després d'alliberar el punter, el sencer que s'obté, 1446 01:06:28,330 --> 01:06:29,990 caldrà encara existeixen? 1447 01:06:29,990 --> 01:06:31,360 >> ANDI Peng: No, no ho farà. 1448 01:06:31,360 --> 01:06:34,070 1449 01:06:34,070 --> 01:06:37,550 O almenys que va existir en la seva la memòria abans que el seu ordinador fa 1450 01:06:37,550 --> 01:06:40,231 el que sigui amb ell, però hi ha no hi ha manera per tu per aconseguir això. 1451 01:06:40,231 --> 01:06:41,480 Perquè alliberat el punter. 1452 01:06:41,480 --> 01:06:43,150 Vostè no sap on és més. 1453 01:06:43,150 --> 01:06:43,650 Sí. 1454 01:06:43,650 --> 01:06:46,500 1455 01:06:46,500 --> 01:06:48,560 >> Vaig a passar aquí. 1456 01:06:48,560 --> 01:06:49,060 Uf. 1457 01:06:49,060 --> 01:06:53,012 Així que estem a través d'una gran quantitat del conceptual dificultats de gestió de memòria 1458 01:06:53,012 --> 01:06:54,720 i només anem per passar essencialment 1459 01:06:54,720 --> 01:06:57,090 5, 10 minuts que van sobre les coses de sintaxi que 1460 01:06:57,090 --> 01:07:03,240 serà utilitzable i útil per a vostès, però res massa conceptualment per aquí. 1461 01:07:03,240 --> 01:07:03,740 D'ACORD. 1462 01:07:03,740 --> 01:07:06,930 >> Així que estem canviant completament engranatges aquí. 1463 01:07:06,930 --> 01:07:09,360 Gestió de la memòria, difícil. Punters, difícil. Sí. 1464 01:07:09,360 --> 01:07:10,530 És molt, molt difícil. 1465 01:07:10,530 --> 01:07:11,270 Totalment bé. 1466 01:07:11,270 --> 01:07:13,800 És per això que la seva peça és serà molt dur. 1467 01:07:13,800 --> 01:07:17,740 Però si vas i fas les coses que estem 1468 01:07:17,740 --> 01:07:19,860 suposa que ha de fer, fer que les coses són nuls, 1469 01:07:19,860 --> 01:07:21,830 vos de comprovar si les coses són null, assegureu-vos de memòria lliure, 1470 01:07:21,830 --> 01:07:23,910 fan que les coses no són fuites, podràs bona. 1471 01:07:23,910 --> 01:07:25,761 Se li ha establert. 1472 01:07:25,761 --> 01:07:26,260 Tot bé. 1473 01:07:26,260 --> 01:07:30,870 Així que anem a entrar en aquest completament nou concepte de redirecció. 1474 01:07:30,870 --> 01:07:33,201 I així, fins ara, la principal via que hem 1475 01:07:33,201 --> 01:07:35,700 estat interactuant amb el nostre programes és a través de l'entrada estàndard 1476 01:07:35,700 --> 01:07:36,533 i la sortida estàndard. 1477 01:07:36,533 --> 01:07:37,040 Oi? 1478 01:07:37,040 --> 01:07:39,230 Nosaltres, com l'entrada de l'usuari les coses i l'equip 1479 01:07:39,230 --> 01:07:42,090 escup de nou a nosaltres a la terminal. 1480 01:07:42,090 --> 01:07:44,770 >> Però hi ha una altra formes perquè puguem interactuar 1481 01:07:44,770 --> 01:07:47,810 amb l'ordinador amb el nostre programes que no són només jo 1482 01:07:47,810 --> 01:07:50,245 coses físicament mecanografia quan estic em demana. 1483 01:07:50,245 --> 01:07:52,620 I la forma en que fem que és a través de la major de pastanaga 1484 01:07:52,620 --> 01:07:53,453 i el símbol de canalització. 1485 01:07:53,453 --> 01:07:55,970 1486 01:07:55,970 --> 01:07:58,630 Així també podem llegir i escriure en arxius usant això. 1487 01:07:58,630 --> 01:08:03,230 >> Així que la forma en què fem això és el superior a la pastanaga, tot el que està fent 1488 01:08:03,230 --> 01:08:07,410 està escrivint el que la seva arxiu té un arxiu separat. 1489 01:08:07,410 --> 01:08:11,870 Així, per exemple, si volia córrer hola món 1490 01:08:11,870 --> 01:08:14,330 i volia que la sortida guardar en un altre arxiu 1491 01:08:14,330 --> 01:08:17,359 i no només imprimeix a mi, pot simplement fer més gran que la pastanaga, 1492 01:08:17,359 --> 01:08:18,410 output.txt. 1493 01:08:18,410 --> 01:08:22,609 Així que tot el que està fent és prendre meu programa hello.world, 1494 01:08:22,609 --> 01:08:26,359 i qualsevol que sigui la sortida és, és estalviar en un arxiu anomenat output.txt. 1495 01:08:26,359 --> 01:08:29,850 Així que la forma en què David va fer el .csv amb els noms dels estudiants, 1496 01:08:29,850 --> 01:08:32,310 que és el mateix que vostès poden fer. 1497 01:08:32,310 --> 01:08:35,137 >> I el que és especialment útil en aquest cas són el major 1498 01:08:35,137 --> 01:08:38,220 no sigui: els dos més gran que la pastanaga signes que es pot annexar a una sortida 1499 01:08:38,220 --> 01:08:40,795 arxiu, el que significa que vostè simplement pot afegir en la part superior de la mateixa. 1500 01:08:40,795 --> 01:08:43,420 Vostè pot simplement seguir afegint a output.txt de cada cosa addicional 1501 01:08:43,420 --> 01:08:44,490 que vostè està fent. 1502 01:08:44,490 --> 01:08:48,010 O, si vostè comença a rebre a més programes complicats, els dos més 1503 01:08:48,010 --> 01:08:50,939 que la pastanaga, que només impressions els missatges d'error. 1504 01:08:50,939 --> 01:08:53,340 Així que vostè té un gegant quantitat de missatges d'error 1505 01:08:53,340 --> 01:08:54,810 i vols llegir a través de tots ells i que 1506 01:08:54,810 --> 01:08:56,450 no vull haver de desplaçar a través del seu terminal, 1507 01:08:56,450 --> 01:08:58,651 vostè pot fer realitat més gran que output.txt 1508 01:08:58,651 --> 01:09:00,359 i que va a estalviar tots els seus errors 1509 01:09:00,359 --> 01:09:02,900 en un arxiu anomenat output.txt que vostè pot anar a través i llegir. 1510 01:09:02,900 --> 01:09:04,622 AUDIÈNCIA: On es guarda l'arxiu de text? 1511 01:09:04,622 --> 01:09:07,330 ANDI Peng: Es guarda a la mateixa directori que el seu programa és. 1512 01:09:07,330 --> 01:09:09,830 Així que vostè acaba d'anar enrere i mirar per ella. 1513 01:09:09,830 --> 01:09:11,930 I el mateix que nosaltres pot fer per entrada és 1514 01:09:11,930 --> 01:09:14,300 que en realitat podem tenir el contingut d'algun arxiu 1515 01:09:14,300 --> 01:09:16,380 i ens pot introduir això en el nostre programa. 1516 01:09:16,380 --> 01:09:19,930 Així que en lloc d'haver de fer-ho d'ordres arguments de la línia d'on físicament 1517 01:09:19,930 --> 01:09:21,680 ha d'escriure coses cada vegada, vostè 1518 01:09:21,680 --> 01:09:27,890 en realitat només hi ha un fitxer anomenat input.txt que així ho posa tot a. 1519 01:09:27,890 --> 01:09:31,970 >> I després canonada és especialment bo perquè que pot prendre la sortida d'un programa de 1520 01:09:31,970 --> 01:09:34,170 i utilitzar-lo com entrada d'un altre programa. 1521 01:09:34,170 --> 01:09:38,430 Així per exemple, en Vigenère seus nois, existeix aquesta línia de codi que ha 1522 01:09:38,430 --> 01:09:42,010 nois estan executant que potser potser realment no sabia el que era doing-- 1523 01:09:42,010 --> 01:09:46,910 aquest ./generate 1.000 canonada ./42. 1524 01:09:46,910 --> 01:09:47,510 Oi? 1525 01:09:47,510 --> 01:09:51,100 >> Així que tot el que està fent, si només fer una ullada a aquest pas a pas, 1526 01:09:51,100 --> 01:09:55,870 el ./generate, això vol dir que sóc córrer el meu programa genera. 1527 01:09:55,870 --> 01:09:58,850 Que s'està portant en 1000 en la seva entrada. 1528 01:09:58,850 --> 01:10:03,330 Així que vull per generar 1.000 a l'atzar nombres i vaig a la canonada que-- 1529 01:10:03,330 --> 01:10:07,790 o vaig a utilitzar que-- sortida com a entrada per al meu programa anomenat troballa. 1530 01:10:07,790 --> 01:10:12,110 I jo vaig a tractar de trobar 42 de els números generats a partir dels 1.000 1531 01:10:12,110 --> 01:10:13,130 nombres. 1532 01:10:13,130 --> 01:10:15,410 Té aquesta línia de codi fa sentit a tots els altres? 1533 01:10:15,410 --> 01:10:17,820 >> Així que d'aquesta manera estem estalviant nosaltres un munt de passos. 1534 01:10:17,820 --> 01:10:21,880 Nosaltres no hem de córrer a generar, desar l'arxiu i després el posen en la troballa. 1535 01:10:21,880 --> 01:10:23,800 Només podem fer-ho tot en una sola línia. 1536 01:10:23,800 --> 01:10:28,080 Així que el que generen és la sortida, plop coses bé de nou a trobar. 1537 01:10:28,080 --> 01:10:28,580 Sí? 1538 01:10:28,580 --> 01:10:32,484 >> AUDIÈNCIA: I en termes d'ordres arguments de la línia, és això-- això és 1539 01:10:32,484 --> 01:10:33,948 tres arguments de la línia d'ordres? 1540 01:10:33,948 --> 01:10:38,340 És generar, find-- no, four-- generar, 1000, trobar i 42? 1541 01:10:38,340 --> 01:10:39,134 O és ell-- 1542 01:10:39,134 --> 01:10:42,050 ANDI Peng: Així que la canonada en realitat no comptar com un argument de línia d'ordres 1543 01:10:42,050 --> 01:10:44,590 perquè el compilador o el Terminal sap que la canonada, 1544 01:10:44,590 --> 01:10:48,590 oh, jo sé que he de mirar abans la canonada, perquè aquest és el meu sortida 1545 01:10:48,590 --> 01:10:51,220 i he de vetllar pel canonada perquè aquest és el meu entrada. 1546 01:10:51,220 --> 01:10:54,520 Pel que sap el que-- ./generate i 1000, 1547 01:10:54,520 --> 01:10:57,390 aquests són dos de comandament llavors els arguments només per al primer programa. 1548 01:10:57,390 --> 01:11:01,760 I llavors el ./find 42 són dos d'ordres arguments de la línia per al segon programa. 1549 01:11:01,760 --> 01:11:02,980 Sí. 1550 01:11:02,980 --> 01:11:06,150 Tothom bo en això? 1551 01:11:06,150 --> 01:11:10,610 >> Així que molt ràpid, què fer aquestes tres línies de codi fan? 1552 01:11:10,610 --> 01:11:11,606 Bastant simple. 1553 01:11:11,606 --> 01:11:13,605 Algú em vol dir el que fa la primera línia? 1554 01:11:13,605 --> 01:11:18,201 1555 01:11:18,201 --> 01:11:19,117 AUDIÈNCIA: [inaudible]. 1556 01:11:19,117 --> 01:11:23,540 1557 01:11:23,540 --> 01:11:26,534 >> ANDI Peng: Penseu en això com sol-- ¿Què fa el major de la pastanaga? 1558 01:11:26,534 --> 01:11:29,299 >> AUDIÈNCIA: Posa una mica en la següent línia. 1559 01:11:29,299 --> 01:11:31,090 ANDI Peng: Llavors, què és el contrari d'això? 1560 01:11:31,090 --> 01:11:33,514 AUDIÈNCIA: Posa la següent cosa en el primer. 1561 01:11:33,514 --> 01:11:34,180 ANDI Peng: Sí. 1562 01:11:34,180 --> 01:11:37,550 Així que tot el que està fent és que ets l'execució d'un programa de .hello-- 1563 01:11:37,550 --> 01:11:40,010 s'està executant un programa anomenat hola. 1564 01:11:40,010 --> 01:11:42,960 Vas a donar-li una entrada anomenada input.txt. 1565 01:11:42,960 --> 01:11:43,460 Oi? 1566 01:11:43,460 --> 01:11:46,250 A causa de que pensi en això com just anar físicament a saludar. 1567 01:11:46,250 --> 01:11:50,632 I després vas a guardar el sortida en un arxiu anomenat output.txt. 1568 01:11:50,632 --> 01:11:51,715 Què hi ha de la segona línia? 1569 01:11:51,715 --> 01:11:54,164 Vols dir-me què la segona línia fa? 1570 01:11:54,164 --> 01:11:55,080 AUDIÈNCIA: [inaudible]. 1571 01:11:55,080 --> 01:12:00,522 1572 01:12:00,522 --> 01:12:01,230 ANDI Peng: Ho sento. 1573 01:12:01,230 --> 01:12:03,560 Digues-ho de nou. 1574 01:12:03,560 --> 01:12:04,060 Elliot. 1575 01:12:04,060 --> 01:12:06,560 >> AUDIÈNCIA: Pel que posa un llista de nombres en la troballa. 1576 01:12:06,560 --> 01:12:07,540 >> ANDI Peng: Sí. 1577 01:12:07,540 --> 01:12:10,790 Així que trobar, recorda, en Per executar trobar-te 1578 01:12:10,790 --> 01:12:13,209 necessita saber on vostè està buscant. 1579 01:12:13,209 --> 01:12:15,500 I així tot el que està fent aquí és que se li està donant 1580 01:12:15,500 --> 01:12:18,720 1 preassignat conjunt de nombres, llavors va a trobar 1581 01:12:18,720 --> 01:12:21,680 per buscar-hi per al nombre de 42. 1582 01:12:21,680 --> 01:12:23,620 I després 15. 1583 01:12:23,620 --> 01:12:25,870 Recordin, vostès van córrer aquest quan es prova el seu codi. 1584 01:12:25,870 --> 01:12:27,590 Comprens ara el que estava fent? 1585 01:12:27,590 --> 01:12:31,069 1586 01:12:31,069 --> 01:12:33,520 >> AUDIÈNCIA: És posar en el conjunt d'instruccions 1587 01:12:33,520 --> 01:12:38,860 per [inaudible] a través d'una de tres per 3 per obtenir ell-- per guanyar el joc. 1588 01:12:38,860 --> 01:12:39,560 >> ANDI Peng: Sí. 1589 01:12:39,560 --> 01:12:41,480 >> AUDIÈNCIA: S'introdueix els instruccions en el programa. 1590 01:12:41,480 --> 01:12:42,438 >> ANDI Peng: Més o menys. 1591 01:12:42,438 --> 01:12:47,840 Així que el CS50 accent. / Pset3 / 3x3, tot el que estava fent era que vam crear un text 1592 01:12:47,840 --> 01:12:50,700 arxiu que tenia tot el títols llestos per a vostès. 1593 01:12:50,700 --> 01:12:56,020 I així, per al seu joc per jugar, que sol-- només cal posar això al seu programa. 1594 01:12:56,020 --> 01:12:58,230 Així que havíem creat aquest tauler i llavors estem 1595 01:12:58,230 --> 01:13:02,890 posar aquesta placa en el seu programa que va córrer i creat un mosaic de cada tres 1596 01:13:02,890 --> 01:13:03,390 per tres. 1597 01:13:03,390 --> 01:13:04,730 Això és tot el que estava fent. 1598 01:13:04,730 --> 01:13:07,331 >> I el que no era en realitat la màgia passant darrere de les escenes 1599 01:13:07,331 --> 01:13:09,330 que vostès no ho van fer programa que programem. 1600 01:13:09,330 --> 01:13:13,120 Però ara vostès entenen per què ho vam fer així que està tot bé. 1601 01:13:13,120 --> 01:13:15,750 Tot bé. 1602 01:13:15,750 --> 01:13:22,200 >> Així, mentre la redirecció és una molt útil, C té un mecanisme general 1603 01:13:22,200 --> 01:13:25,030 per a lectura i escriptura arxius del seu propi. 1604 01:13:25,030 --> 01:13:26,780 Res conceptualment difícil aquí, així que estic 1605 01:13:26,780 --> 01:13:28,330 només va a anar a través de molt, molt ràpid. 1606 01:13:28,330 --> 01:13:30,621 Tot el que és és una mica de memorització i assegurar-se que els nois 1607 01:13:30,621 --> 01:13:32,680 són sintàcticament usar-lo correctament. 1608 01:13:32,680 --> 01:13:35,640 La forma en què ens agradaria fer que sigui crear una referència a l'arxiu, 1609 01:13:35,640 --> 01:13:38,473 ens agradaria obrir l'arxiu, i després faria tota la lectura i l'escriptura 1610 01:13:38,473 --> 01:13:39,929 i tanqueu el fitxer. 1611 01:13:39,929 --> 01:13:41,720 Quan cosa que vostès vulgui tenir en compte és 1612 01:13:41,720 --> 01:13:47,360 que en fer això, perquè estem tancant i obrint els arxius, 1613 01:13:47,360 --> 01:13:51,230 tots aquests ordres estan inclosos al standard-- l'estàndard d'E / S 1614 01:13:51,230 --> 01:13:51,730 biblioteca. 1615 01:13:51,730 --> 01:13:54,410 Així que assegureu-vos sempre que estigui fent això que has included-- 1616 01:13:54,410 --> 01:13:59,020 # Included-- estàndard d'E / S de punts h. 1617 01:13:59,020 --> 01:14:01,691 >> Tan real ràpidament. 1618 01:14:01,691 --> 01:14:03,940 El primer pas, que desitja crear una referència a aquest arxiu. 1619 01:14:03,940 --> 01:14:07,670 I ara que hem punters acabat, nois em poden dir el que aquesta línia de codi 1620 01:14:07,670 --> 01:14:08,630 està fent. 1621 01:14:08,630 --> 01:14:10,250 Oi? 1622 01:14:10,250 --> 01:14:15,397 Tot el que s'està fent és crear un punter nom de fitxer del tipus de fitxer. 1623 01:14:15,397 --> 01:14:17,980 Perquè vostè sap que va perquè apunti a un arxiu i ja està 1624 01:14:17,980 --> 01:14:20,460 va a obrir el fitxer. 1625 01:14:20,460 --> 01:14:23,320 Llavors vostè és f open-- tot el que fa és obrir l'arxiu. 1626 01:14:23,320 --> 01:14:24,560 >> Aquest és el nom de l'arxiu. 1627 01:14:24,560 --> 01:14:26,060 I hi ha tres coses que vostè pot fer. 1628 01:14:26,060 --> 01:14:28,195 Vostè pot llegir, escriure o annexar. 1629 01:14:28,195 --> 01:14:30,320 Més en general, nois es llegir o escriure 1630 01:14:30,320 --> 01:14:33,195 perquè vostè està bé serà introduir un arxiu o la sortida d'un. 1631 01:14:33,195 --> 01:14:36,500 Així que més o menys r i w són els dos coses que van a utilitzar més. 1632 01:14:36,500 --> 01:14:41,722 >> Així que en aquest cas, l'únic que he fet és crear un punter a un arxiu anomenat arxiu. 1633 01:14:41,722 --> 01:14:47,900 Estic obrir-lo i estic reading-- estic obrir aquest fitxer anomenat fitxer.txt 1634 01:14:47,900 --> 01:14:49,020 i ho estic llegint. 1635 01:14:49,020 --> 01:14:51,730 Això és tot el que estic fent en aquest moment. 1636 01:14:51,730 --> 01:14:55,270 I llavors aquests són només funciona en que es pot llegir coses diferents 1637 01:14:55,270 --> 01:14:57,750 o escriure coses diferents o saltar a diferents llocs 1638 01:14:57,750 --> 01:14:59,420 en la qual desitja cercar. 1639 01:14:59,420 --> 01:15:01,200 Tots aquests són en línia. 1640 01:15:01,200 --> 01:15:02,960 Tot això pot simplement Google. 1641 01:15:02,960 --> 01:15:04,280 No hi ha necessitat de memoritzar-les. 1642 01:15:04,280 --> 01:15:07,160 Ells hi són, un sol ús per al seu ús 1643 01:15:07,160 --> 01:15:09,360 si vol ser capaç d'utilitzar-les. 1644 01:15:09,360 --> 01:15:13,210 >> Així que si jo volia acaba de llegir en un caràcter alhora, 1645 01:15:13,210 --> 01:15:15,360 Jo faria arxiu fgetc. 1646 01:15:15,360 --> 01:15:18,850 O si volia llegir en una línia de text alhora, ho faria fgets. 1647 01:15:18,850 --> 01:15:19,840 I així successivament i així successivament. 1648 01:15:19,840 --> 01:15:23,640 Tot això només ho fan diferent el que vostès poden utilitzar. 1649 01:15:23,640 --> 01:15:25,920 >> I després, finalment, després que jo sóc acabat de llegir o escriure, 1650 01:15:25,920 --> 01:15:27,770 Jo només vaig a fclose aquest arxiu. 1651 01:15:27,770 --> 01:15:31,760 I recordi, aquest és un dels que, recordeu, si us plau 1652 01:15:31,760 --> 01:15:34,220 fer això o en cas contrari el seu arxiu no va a treballar. 1653 01:15:34,220 --> 01:15:36,130 Sempre obrir un arxiu abans la lectura o la lectura, 1654 01:15:36,130 --> 01:15:38,310 vostè ha de sempre tancar si l'obres. 1655 01:15:38,310 --> 01:15:40,210 El mateix amb la memòria, no? 1656 01:15:40,210 --> 01:15:42,390 Vostè ha de prendre sempre memòria i alliberar-la. 1657 01:15:42,390 --> 01:15:45,200 Aquí vostè ha d'obrir sempre una presentar abans d'intentar llegir-lo 1658 01:15:45,200 --> 01:15:47,360 i sempre cal tancar després d'obrir-lo. 1659 01:15:47,360 --> 01:15:50,650 1660 01:15:50,650 --> 01:15:52,190 >> Així que això és també en línia. 1661 01:15:52,190 --> 01:15:55,590 Vaig a desafiar els nois tipus d'escriure un programa que imprimeix 1662 01:15:55,590 --> 01:15:57,080 hello.world en un arxiu. 1663 01:15:57,080 --> 01:15:58,280 És molt simple. 1664 01:15:58,280 --> 01:16:00,854 És essencialment només implica les poques línies de codi 1665 01:16:00,854 --> 01:16:02,270 que eren simplement escrit prèviament. 1666 01:16:02,270 --> 01:16:04,311 Vas a posar-los junts i escriure això. 1667 01:16:04,311 --> 01:16:06,630 1668 01:16:06,630 --> 01:16:10,950 >> Així que algunes coses importants a tenir en compte mentre que vostès estan tractant d'utilitzar aquest. 1669 01:16:10,950 --> 01:16:14,410 Si tot això és molt útil per a la seva conjunt de processadors d'aquesta setmana, 1670 01:16:14,410 --> 01:16:18,000 és que fopen crea un punter d'arxiu. 1671 01:16:18,000 --> 01:16:19,500 No és en realitat l'arxiu físic. 1672 01:16:19,500 --> 01:16:22,260 Tot el que està apuntant a la el fitxer que voleu obrir. 1673 01:16:22,260 --> 01:16:26,070 I tu ets en essència, sempre vostè està utilitzant qualsevol de les altres funcions 1674 01:16:26,070 --> 01:16:30,130 com fread o fwrite o fgetc o fgets, és 1675 01:16:30,130 --> 01:16:33,380 que està de pas per aquesta Punter a totes aquestes funcions. 1676 01:16:33,380 --> 01:16:36,510 Així que vostè no està prenent en realitat que presentar i usar-lo per a les seves funcions, 1677 01:16:36,510 --> 01:16:39,540 vostè està prenent el punter i posar-lo a aquestes funcions 1678 01:16:39,540 --> 01:16:41,620 de manera que vostè pot utilitzar. 1679 01:16:41,620 --> 01:16:45,360 >> I si vostè s'oblida de tancar el seu arxiu després d'usar-lo, 1680 01:16:45,360 --> 01:16:47,710 el programa va a perdre memòria. 1681 01:16:47,710 --> 01:16:50,700 Essencialment, tot el que significa és que les coses dolentes succeiran 1682 01:16:50,700 --> 01:16:52,960 i el programa ho farà no funcioni correctament. 1683 01:16:52,960 --> 01:16:54,880 I així, en el conjunt de processadors en Al principi, crec que 1684 01:16:54,880 --> 01:16:59,180 hi ha un curt en què explained-- Nate explained-- quin era Valgrind. 1685 01:16:59,180 --> 01:17:02,350 Tot Valgrind és és una manera perquè vostè assegureu-vos que vostè no està perdent memòria. 1686 01:17:02,350 --> 01:17:04,433 Així que vostès volen fer Segur que veure aquest curt 1687 01:17:04,433 --> 01:17:08,771 perquè això ho explica tot molt bé el que passa. 1688 01:17:08,771 --> 01:17:09,270 D'ACORD. 1689 01:17:09,270 --> 01:17:11,260 Així que em vaig anar a través d'aquesta realitat, molt ràpid perquè realment 1690 01:17:11,260 --> 01:17:13,870 vol arribar a parlar de el conjunt de processadors abans que vostès se'n van. 1691 01:17:13,870 --> 01:17:16,690 Algú té preguntes conceptualment? 1692 01:17:16,690 --> 01:17:20,060 Parcialment tot això és la sintaxi només que que pot utilitzar per llegir o escriure arxius. 1693 01:17:20,060 --> 01:17:25,090 1694 01:17:25,090 --> 01:17:28,140 >> Finalment, de tots favorit. 1695 01:17:28,140 --> 01:17:31,760 Anem a parlar sobre el conjunt de processadors ara. 1696 01:17:31,760 --> 01:17:35,990 Així, a mà alçada, quants de vostès llegeixen l'especificació aquesta setmana? 1697 01:17:35,990 --> 01:17:36,660 Oh, això és mitjà. 1698 01:17:36,660 --> 01:17:38,000 Això és bó. 1699 01:17:38,000 --> 01:17:41,430 Així que això és realment un molt, molt divertit conjunt de processadors en el sentit 1700 01:17:41,430 --> 01:17:43,889 que se sent com un detectiu perquè ets 1701 01:17:43,889 --> 01:17:46,930 fent totes aquestes coses molt interessants que vostè no sabia que vostè podria fer 1702 01:17:46,930 --> 01:17:49,050 però ara és molt cool que pot fer-les. 1703 01:17:49,050 --> 01:17:52,400 I és en realitat molt senzill del que vostès pensen. 1704 01:17:52,400 --> 01:17:56,640 >> Així les meitats bàsiques de aquest programa és que ets 1705 01:17:56,640 --> 01:18:00,330 va descarregar el codi font o codi de distribució escrit per nosaltres. 1706 01:18:00,330 --> 01:18:03,540 I vas a tenir una carpeta anomenada BMP i una altra carpeta 1707 01:18:03,540 --> 01:18:05,550 anomenada JPG. 1708 01:18:05,550 --> 01:18:08,370 Dins del seu BMP, ets va a tenir tres programes. 1709 01:18:08,370 --> 01:18:10,400 Un d'ells ja està escrit per a vostè. 1710 01:18:10,400 --> 01:18:12,477 Així copy.c és un programa que ja hem escrit 1711 01:18:12,477 --> 01:18:14,060 per a tu que vols descarregar. 1712 01:18:14,060 --> 01:18:19,440 Tot el que fa és prendre com a entrada una imatge i fa una còpia del mateix com a sortida. 1713 01:18:19,440 --> 01:18:22,150 Això és tot el que l'arxiu està fent. 1714 01:18:22,150 --> 01:18:25,260 >> Però el que vol fer per whodunit-- així que com molts de vostès 1715 01:18:25,260 --> 01:18:30,450 nois recorden en cinquè grau o maybe-- estàs younger-- potser el tercer grau, 1716 01:18:30,450 --> 01:18:33,945 quan vostès tenien missatges secrets i calia posar un tros de paper sobre ella 1717 01:18:33,945 --> 01:18:35,440 per descodificar el missatge? 1718 01:18:35,440 --> 01:18:36,000 Sí? 1719 01:18:36,000 --> 01:18:39,580 Així que això és tot el que estem fent excepte que aquesta vegada d'un ordinador. 1720 01:18:39,580 --> 01:18:41,832 Així que li hem donat a aquesta imatge encantadora. 1721 01:18:41,832 --> 01:18:43,540 No es veu com res però per sota 1722 01:18:43,540 --> 01:18:49,660 és una pista que va a ajudar amb respondre a la pregunta li demanem. 1723 01:18:49,660 --> 01:18:54,170 >> En essència el que vols de fer és introduir aquest arxiu, 1724 01:18:54,170 --> 01:18:56,610 ajustar algunes coses, potser ajustar els colors, 1725 01:18:56,610 --> 01:19:00,730 canviar les coses, de manera que tot el que el missatge és pot venir a través. 1726 01:19:00,730 --> 01:19:03,740 Així que a l'interior s'amaguen i informació píxels 1727 01:19:03,740 --> 01:19:07,140 que si vostè escriu el seu codi correctament va a descodificar i li dirà 1728 01:19:07,140 --> 01:19:08,500 el que aquesta pista és. 1729 01:19:08,500 --> 01:19:12,480 I així alguns consells útils sobre com que aniries a l'apropar-se a aquest. 1730 01:19:12,480 --> 01:19:15,180 >> De debò vols familiaritzar a tu mateix amb l'arxiu d'E / S 1731 01:19:15,180 --> 01:19:18,760 perquè estem llegint arxius i escriure en arxius. 1732 01:19:18,760 --> 01:19:19,260 Oi? 1733 01:19:19,260 --> 01:19:21,430 I així, cada vegada que fem que, que implica 1734 01:19:21,430 --> 01:19:25,170 File I / O. Vas a han de familiaritzar- 1735 01:19:25,170 --> 01:19:27,450 amb, com obrir arxius d'imatges? 1736 01:19:27,450 --> 01:19:29,960 Com s'escriu als arxius com imatges? 1737 01:19:29,960 --> 01:19:31,640 Com ho fas totes aquestes coses? 1738 01:19:31,640 --> 01:19:33,660 Això serà realment útil. 1739 01:19:33,660 --> 01:19:36,190 >> En segon lloc, com estàs serà capaç de canviar 1740 01:19:36,190 --> 01:19:38,140 els colors d'aclarir aquesta foto? 1741 01:19:38,140 --> 01:19:43,660 Probablement va implicar ajustant les seves píxels o els seus valors RGB 1742 01:19:43,660 --> 01:19:45,390 en algun lloc d'aquí, en essència. 1743 01:19:45,390 --> 01:19:47,800 No hi ha forma de dret de la solució d'aquest, sempre que 1744 01:19:47,800 --> 01:19:52,560 can-- com el temps que puguis tipus de ajustar els píxels perquè sigui 1745 01:19:52,560 --> 01:19:54,640 semblar-se a una cosa que t'importa. 1746 01:19:54,640 --> 01:19:56,207 Això és l'únic que ens importa també. 1747 01:19:56,207 --> 01:19:57,540 Així que hi ha moltes maneres de fer això. 1748 01:19:57,540 --> 01:20:00,039 Només jugar una estona amb ell fins vostè aconsegueix una cosa que funciona. 1749 01:20:00,039 --> 01:20:02,900 I seria molt Em va sorprendre el poques línies de codi 1750 01:20:02,900 --> 01:20:04,510 que ha de fer realitat això. 1751 01:20:04,510 --> 01:20:08,700 Estic parlant com de tres línies de codi totals 1752 01:20:08,700 --> 01:20:11,310 que vostè necessita per escriure per tal de fer això. 1753 01:20:11,310 --> 01:20:15,470 Així que si vostè es troba escriptura 40, 30 línies de codi, 1754 01:20:15,470 --> 01:20:16,960 probablement estàs fent malament. 1755 01:20:16,960 --> 01:20:19,390 Tot el que has de fer és tipus de jugar amb els colors 1756 01:20:19,390 --> 01:20:22,960 i veure com això funciona. 1757 01:20:22,960 --> 01:20:27,040 >> Així que ens dirigim cap a una mica per més dur d'un problema. 1758 01:20:27,040 --> 01:20:30,190 Aquí tenim redimensionar on li estem demanant 1759 01:20:30,190 --> 01:20:34,210 A-- li estem donant com a entrada una imatge i el redimensionament 1760 01:20:34,210 --> 01:20:36,710 aquesta imatge en alguna cosa més gran o alguna cosa més petit 1761 01:20:36,710 --> 01:20:38,500 depenent de les dimensions que li donem. 1762 01:20:38,500 --> 01:20:41,260 Així que recorda, en conferència que David ràpidament 1763 01:20:41,260 --> 01:20:45,780 va mirar sobre com la informació és detectat pels equips 1764 01:20:45,780 --> 01:20:47,590 en el sentit que és un tipus d'arxiu. 1765 01:20:47,590 --> 01:20:50,530 Així que un arxiu de Word té especial personatges davant d'aquest 1766 01:20:50,530 --> 01:20:52,040 digui-li al seu equip que és un arxiu de Word. 1767 01:20:52,040 --> 01:20:53,090 El mateix amb un arxiu JPEG. 1768 01:20:53,090 --> 01:20:55,131 En aquest cas anem per donar-li un arxiu JPEG. 1769 01:20:55,131 --> 01:20:58,300 Tot el que sabem és que JPEG arxiu és una imatge, oi? 1770 01:20:58,300 --> 01:21:01,430 Però els distingeix informàtics en formes molt específiques. 1771 01:21:01,430 --> 01:21:04,070 Així que al principi de qualsevol arxiu JPEG, ets 1772 01:21:04,070 --> 01:21:08,210 va a tenir el que es diu el mapa de bits informació de capçalera i la capçalera de l'arxiu de mapa de bits. 1773 01:21:08,210 --> 01:21:11,080 Tots els que són són diferents peces de dades 1774 01:21:11,080 --> 01:21:14,870 que compten seu ordinador, hey, escoltin, 1 JPEG pujant 1775 01:21:14,870 --> 01:21:17,820 i aquestes són les dimensions o característiques d'aquest JPEG. 1776 01:21:17,820 --> 01:21:21,280 >> Així que vostès realment volen saber quin tipus d'informació s'emmagatzema a l'interior 1777 01:21:21,280 --> 01:21:23,560 d'aquests capçaleres i ¿Quin és la mida dels mateixos. 1778 01:21:23,560 --> 01:21:25,640 Perquè quan s'està executant a través del seu programa, 1779 01:21:25,640 --> 01:21:27,370 vostè va a voler saltar sobre aquesta quantitat. 1780 01:21:27,370 --> 01:21:27,940 Oi? 1781 01:21:27,940 --> 01:21:29,910 A causa de que no t'importa sobre com modificar la capçalera, 1782 01:21:29,910 --> 01:21:31,493 vostè es preocupa sobre com modificar el que està després. 1783 01:21:31,493 --> 01:21:32,450 Oi? 1784 01:21:32,450 --> 01:21:36,040 Així que assegureu-vos que vostès saben el gran que són aquestes coses. 1785 01:21:36,040 --> 01:21:39,065 >> En segon lloc, abans de començar tractant de canviar la mida de la seva imatge, 1786 01:21:39,065 --> 01:21:41,940 vostè està probablement va voler guardar les dimensions de l'original. 1787 01:21:41,940 --> 01:21:42,520 Oi? 1788 01:21:42,520 --> 01:21:45,550 Perquè si jo dic que aquesta imatge és de 100 píxels per 100 píxels, 1789 01:21:45,550 --> 01:21:47,630 i vull que vostè faci quatre vegades més grans, 1790 01:21:47,630 --> 01:21:50,460 vostè sap que vostè ha de multiplicar aquestes dimensions per quatre. 1791 01:21:50,460 --> 01:21:54,960 Així llavors vostè vol un fitxer de sortida 400 per 400 píxels, per exemple. 1792 01:21:54,960 --> 01:21:58,300 Així que és realment útil per a vostès a guardar les dimensions de l'original. 1793 01:21:58,300 --> 01:22:00,780 I a continuació, després, després de hagi finalitzat el canvi de mida, 1794 01:22:00,780 --> 01:22:06,270 vostè pot escriure noves capçaleres amb aquestes noves dimensions després de canviar la mida. 1795 01:22:06,270 --> 01:22:10,750 >> I la forma en què físicament pot crear en grans píxels 1796 01:22:10,750 --> 01:22:13,380 és que es pot escriure nova RGB-- recordi, RGB, 1797 01:22:13,380 --> 01:22:17,784 tot el que significa és de color vermell, verd, i els píxels blue-- a un arxiu de sortida. 1798 01:22:17,784 --> 01:22:20,200 I vas a voler tenir diferents quantitats del que 1799 01:22:20,200 --> 01:22:21,200 que anomenem farcit. 1800 01:22:21,200 --> 01:22:24,780 Tots és de farciment són espais fotos abans i després 1801 01:22:24,780 --> 01:22:29,265 que compten tu-- essencialment que digui-li a la seva imatge el gran que 1802 01:22:29,265 --> 01:22:30,589 hauria de prendre cap amunt. 1803 01:22:30,589 --> 01:22:33,630 Això és molt abstracte per a una gran quantitat de si vostè no ha llegit l'especificació conjunt de processadors, 1804 01:22:33,630 --> 01:22:35,410 però serà molt útil per quan 1805 01:22:35,410 --> 01:22:36,460 en realitat estàs llegint a través d'ell. 1806 01:22:36,460 --> 01:22:38,126 Ets com, oh, sí, això té sentit. 1807 01:22:38,126 --> 01:22:39,310 Per què he de fer això? 1808 01:22:39,310 --> 01:22:41,830 Té sentit. 1809 01:22:41,830 --> 01:22:46,900 >> Finalment, aquest és probablement un els programes més frustrants 1810 01:22:46,900 --> 01:22:51,160 Alguna vegada només perquè no es pot dir si està funcionant o no. 1811 01:22:51,160 --> 01:22:54,980 Tot aquest programa, es recuperen, és fent és que, si s'executa correctament, 1812 01:22:54,980 --> 01:22:59,290 ha de ser capaç de sobte recuperar 50 imatges que 1813 01:22:59,290 --> 01:23:01,025 es van perdre en el nostre disc dur. 1814 01:23:01,025 --> 01:23:03,900 I així, el problema amb aquest programa és que realment no es pot provar que 1815 01:23:03,900 --> 01:23:06,220 perquè o et vas recobrar ells o no. 1816 01:23:06,220 --> 01:23:09,122 I perquè tipus de sol ha de jugar una estona amb ell, 1817 01:23:09,122 --> 01:23:11,080 i si el seu programa és funciona correctament, podràs 1818 01:23:11,080 --> 01:23:12,829 de sobte veure que en seu directori tens 1819 01:23:12,829 --> 01:23:17,400 té una quantitat enorme de imatges que són ara. 1820 01:23:17,400 --> 01:23:20,490 >> Llavors, com aniria aquest problema és que estem 1821 01:23:20,490 --> 01:23:22,860 et va a donar el que és anomenat arxiu card.raw. 1822 01:23:22,860 --> 01:23:25,020 En essència, això és només un arxiu danyat 1823 01:23:25,020 --> 01:23:28,870 amb totes les fotos que emmagatzemen vostè va a necessitar per recuperar-se. 1824 01:23:28,870 --> 01:23:32,330 Així que vostè està probablement va voler per introduir el seu card.raw, o obert, 1825 01:23:32,330 --> 01:23:35,510 el seu arxiu card.raw i ja està voldrà manipular 1826 01:23:35,510 --> 01:23:37,840 que sigui capaç d'emmagatzemar arxius JPEG. 1827 01:23:37,840 --> 01:23:42,830 >> Així que m'agradaria començar pel seguiment i emmagatzematge cada JPEG individual com vostè ho troba. 1828 01:23:42,830 --> 01:23:47,180 No va a totes diferents Tot d'una, només cal crear els 50 JPEG. 1829 01:23:47,180 --> 01:23:50,190 Vostè va a voler mantenir un registre de quants vostè està obrint. 1830 01:23:50,190 --> 01:23:52,015 I llavors vostè vol assegurar-se, quan estàs 1831 01:23:52,015 --> 01:23:54,640 al gravar en una buffer-- vostès sabrà el que estic parlant 1832 01:23:54,640 --> 01:23:57,806 una vegada que llegeixi el spec-- desitja assegureu-vos que vostè està utilitzant un sense signar 1833 01:23:57,806 --> 01:23:59,370 char buffer. 1834 01:23:59,370 --> 01:24:01,790 >> I a continuació, desitja sol·licitar a tu mateix la pregunta de, 1835 01:24:01,790 --> 01:24:05,797 quants bytes es troben en una CF-- estan en un arxiu de la targeta? 1836 01:24:05,797 --> 01:24:08,380 Aquesta és la quantitat que va a voler llegir en el seu memòria intermèdia. 1837 01:24:08,380 --> 01:24:11,130 Vostè va a voler assegurar- els dos align perquè llavors 1838 01:24:11,130 --> 01:24:12,850 no tindrà memòria aleatòria escapament. 1839 01:24:12,850 --> 01:24:15,370 Vostè sap exactament quants bytes que necessita i quants 1840 01:24:15,370 --> 01:24:18,270 bytes que volem que tinguin. 1841 01:24:18,270 --> 01:24:21,510 >> I, finalment, que vols utilitzar una funció anomenada sprint-- 1842 01:24:21,510 --> 01:24:26,160 s d'impressió F-- per generar arxiu personalitzat noms per a cada nou JPEG que vostè trobi. 1843 01:24:26,160 --> 01:24:29,129 Per tal de crear i trobar arxius JPEG a la targeta, 1844 01:24:29,129 --> 01:24:31,170 vostè va a voler emmagatzemar-los i anomenar-los. 1845 01:24:31,170 --> 01:24:31,700 Oi? 1846 01:24:31,700 --> 01:24:33,700 I pel que anem a que vulgueu utilitzar aquesta funció 1847 01:24:33,700 --> 01:24:36,770 per crear els noms que pot emmagatzemar tots els seus arxius JPEG. 1848 01:24:36,770 --> 01:24:41,062 >> I finalment, no us oblideu de tancar cada JPEG després que hagi acabat. 1849 01:24:41,062 --> 01:24:42,770 Perquè el que ets farem és que ets 1850 01:24:42,770 --> 01:24:44,728 va a tenir, probablement, algun tipus d'un bucle que 1851 01:24:44,728 --> 01:24:46,470 itera a través de tots els seus arxius JPEG. 1852 01:24:46,470 --> 01:24:50,460 Has de redactar un arxiu JPEG i reanomenar-lo com vostè ho troba. 1853 01:24:50,460 --> 01:24:52,870 Però després d'haver acabat amb tots els formats JPEG, 1854 01:24:52,870 --> 01:24:56,630 que necessita per tancar perquè pugui començar una vegada i passar a la següent imatge. 1855 01:24:56,630 --> 01:24:58,880 I així, una cosa que és molt divertit que ens agrada fer, 1856 01:24:58,880 --> 01:25:03,430 perquè es tracta de fixar un problema tan estrany sinó també un problema estranyament satisfactori 1857 01:25:03,430 --> 01:25:08,380 conjunt, és que totes les fotos que tenir per a vostè, si vostè es recupera adequadament, 1858 01:25:08,380 --> 01:25:11,910 totes les imatges són imatges de seu professorat meravellós, tant 1859 01:25:11,910 --> 01:25:14,240 de Harvard, en aquí-- i aquí a Yale. 1860 01:25:14,240 --> 01:25:17,260 I si per casualitat recuperar totes aquestes fotos 1861 01:25:17,260 --> 01:25:20,020 i identificar el personal membres en aquestes targetes, 1862 01:25:20,020 --> 01:25:23,040 i prendre selfies amb nosaltres si ens ha trobat al campus, 1863 01:25:23,040 --> 01:25:28,270 per cada foto que es sotmeten a nosaltres, anem a donar-li un gigabyte d'espai de Dropbox. 1864 01:25:28,270 --> 01:25:30,060 >> Així que anem a fer els càlculs aquí. 1865 01:25:30,060 --> 01:25:33,010 Si hi ha 50 fotografies i 50 membres del personal docent, 1866 01:25:33,010 --> 01:25:37,160 si per casualitat vostè troba els 50 de nosaltres, això és 50 gigabytes de Dropbox, 1867 01:25:37,160 --> 01:25:39,000 Bàsicament, estarem vostè donant nois. 1868 01:25:39,000 --> 01:25:42,380 Així que alguns incentius extra afegit si vostès no es va limitar a 1869 01:25:42,380 --> 01:25:44,480 preocupar-se per recuperar imatges perdudes. 1870 01:25:44,480 --> 01:25:46,867 També hi ha alguns incentius addicionals. 1871 01:25:46,867 --> 01:25:47,825 És un conjunt de problemes divertit. 1872 01:25:47,825 --> 01:25:48,390 Realment ho és. 1873 01:25:48,390 --> 01:25:51,980 És una mica frustrant, però llavors es torna molt divertit quan te n'adones, 1874 01:25:51,980 --> 01:25:54,230 wow, està funcionant i ara tenir totes aquestes fotos 1875 01:25:54,230 --> 01:25:55,604 que acabo creat per mi mateix. 1876 01:25:55,604 --> 01:25:58,800 1877 01:25:58,800 --> 01:26:00,075 >> Teniu alguna pregunta sobre el conjunt de processadors? 1878 01:26:00,075 --> 01:26:02,408 Per a qualsevol persona que ja està començat, si vostè té preguntes, 1879 01:26:02,408 --> 01:26:06,510 Vaig a ser aquí per un parell de minuts després secció si vols parlar amb mi. 1880 01:26:06,510 --> 01:26:07,320 Ben fet, nois. 1881 01:26:07,320 --> 01:26:10,520 Ho sento, jo informació objecte de dúmping en vosaltres. 1882 01:26:10,520 --> 01:26:13,670 Els punters són molt, molt difícil i frustrant. 1883 01:26:13,670 --> 01:26:16,187 >> I estic molt content que vostès es va quedar amb mi. 1884 01:26:16,187 --> 01:26:18,020 Parlarem més en profunditat sobre la setmana que 1885 01:26:18,020 --> 01:26:21,330 a mesura que vam començar fent taules hash i més funcions que els involucren. 1886 01:26:21,330 --> 01:26:23,821 1887 01:26:23,821 --> 01:26:24,320 Sí. 1888 01:26:24,320 --> 01:26:26,278 Així que si algú té alguna preguntes, estaré voltant. 1889 01:26:26,278 --> 01:26:29,330 Gràcies per venir i prendre més dolços perquè hi ha més dolços. 1890 01:26:29,330 --> 01:26:32,220 1891 01:26:32,220 --> 01:26:33,770 Fresc. 1892 01:26:33,770 --> 01:26:35,765