1 00:00:00,000 --> 00:00:02,670 >> [TEMA MUSICAL] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> ALTAVEU 1: Hola, tothom. 4 00:00:13,365 --> 00:00:14,365 Benvingut de nou a la secció. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Preciós dia fora-- que és per això, que sóc Segur, hi ha solament quatre de vostès són aquí 7 00:00:18,700 --> 00:00:21,180 i no el nostre paquet de costum. 8 00:00:21,180 --> 00:00:22,670 He estat malalt aquest cap de setmana. 9 00:00:22,670 --> 00:00:24,294 Així que no tinc Starburst per a vosaltres. 10 00:00:24,294 --> 00:00:26,400 I puc començar a tossir terriblement llarg d'aquest. 11 00:00:26,400 --> 00:00:27,790 Així que tinguin paciència amb mi. 12 00:00:27,790 --> 00:00:30,624 Vaig a tractar realment i obtenir a través d'aquesta primera, 13 00:00:30,624 --> 00:00:32,290 però, abans que tingui un atac de tos. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Però a penes ser fàcil en mi un poc bit-- això és tot el que demano. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Així que la nostra agenda per avui-- només un reminder-- el seu concurs és la setmana que ve. 18 00:00:44,289 --> 00:00:46,830 T'ho vaig dir la setmana passada pel que no agafar amb la guàrdia baixa. 19 00:00:46,830 --> 00:00:47,954 Així que m'ho estic recordant de nou. 20 00:00:47,954 --> 00:00:49,180 La propera setmana el seu concurs. 21 00:00:49,180 --> 00:00:52,730 Amb aquesta finalitat, la setmana que ve de secció serà molt més 22 00:00:52,730 --> 00:00:55,180 de-- vaig a tractar i treballar en alguna revisió. 23 00:00:55,180 --> 00:00:58,130 Així que si vostès poguessin ajudar enviant-me 24 00:00:58,130 --> 00:01:00,990 les coses que vostè se senti còmode amb, que et preocupa, 25 00:01:00,990 --> 00:01:03,530 temes que li agradaria per em cobreixo, això seria genial. 26 00:01:03,530 --> 00:01:05,740 Així que puc tractar de treballar- a la nostra secció de la setmana vinent 27 00:01:05,740 --> 00:01:11,540 o enviar material addicional o preparació que no podria obtenir en altres llocs. 28 00:01:11,540 --> 00:01:12,150 >> Sí! 29 00:01:12,150 --> 00:01:13,520 Més gent està venint! 30 00:01:13,520 --> 00:01:17,320 Vaig pensar, què he fet tan malament passat setmana, que ningú vol tornar? 31 00:01:17,320 --> 00:01:18,065 Tinc por. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Així que els altres tres coses que anem a repassar 34 00:01:21,100 --> 00:01:24,850 són redirecció, arxiu d'E / S, i a continuació, els punters i memòria dinàmica. 35 00:01:24,850 --> 00:01:29,160 Estic segur que ja està tot súper emocionada sobre pointers-- tema favorit de tots, 36 00:01:29,160 --> 00:01:31,310 tan simple d'entendre. 37 00:01:31,310 --> 00:01:33,130 Estic segur que tots els nois tens això, oi? 38 00:01:33,130 --> 00:01:39,510 >> Així que el primer és el primer, redirection-- això és bàsicament un camí 39 00:01:39,510 --> 00:01:42,920 per controlar la forma en què l'entrada les coses en el seu programa, 40 00:01:42,920 --> 00:01:44,606 com vostè les coses de sortida del seu programa. 41 00:01:44,606 --> 00:01:46,980 Les principals formes en que vostès han estat interactuar amb ell 42 00:01:46,980 --> 00:01:51,650 és només a través de fora estàndard amb la seva pantalla d'impressió aquí. 43 00:01:51,650 --> 00:01:55,940 Però hi ha maneres de pipe-- com veiem aquí 44 00:01:55,940 --> 00:01:58,980 és un dels nostres paraules- de la canonada que la informació 45 00:01:58,980 --> 00:02:02,850 o que les dades en un arxiu d'un arxiu. 46 00:02:02,850 --> 00:02:05,820 És només diferents formes de fer les coses en el seu programa 47 00:02:05,820 --> 00:02:10,681 i fora del seu programa, en lloc de acaba d'imprimir a aquesta pantalla 48 00:02:10,681 --> 00:02:12,430 o introduir coses des de la línia d'ordres. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Així que primer és poc més gran que símbol d'intercalació. 51 00:02:18,030 --> 00:02:22,085 Així output-- simplement imprimeix la sortida a un arxiu en lloc de la pantalla. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Així que si vostè tenia alguna cosa que imprimeix "Hola, món!" a la pantalla, 54 00:02:29,500 --> 00:02:32,400 si ho poses en el seu lloc a output.text, que 55 00:02:32,400 --> 00:02:35,220 crea aquest arxiu anomenat output.text. 56 00:02:35,220 --> 00:02:38,550 I quan s'obre, va a dir "Hola, món!" en aquest país. 57 00:02:38,550 --> 00:02:41,410 Això pot ser molt útil si vostè té un munt d'errors 58 00:02:41,410 --> 00:02:43,430 en realitat, com podem veure en aquest cas. 59 00:02:43,430 --> 00:02:46,810 Si ho fas dues intercalació, que va a imprimir els missatges d'error. 60 00:02:46,810 --> 00:02:52,090 >> Així que si vostè està tenint un problema amb compilació, que té una gran quantitat d'errors 61 00:02:52,090 --> 00:02:56,770 i que estiguis empantanegar a intentar per desplaçar-se a través de la línia d'ordres 62 00:02:56,770 --> 00:02:59,110 a través de tots ells, es pot simplement imprimir en un arxiu, 63 00:02:59,110 --> 00:03:02,130 obrir aquest arxiu perquè vostè pot desplaçar-se a través d'ells més fàcil. 64 00:03:02,130 --> 00:03:05,160 En realitat, jo vaig utilitzar que un molt quan vaig anar depurant 65 00:03:05,160 --> 00:03:07,970 els meus 181 conjunts de processadors de la màquina d'aprenentatge. 66 00:03:07,970 --> 00:03:10,000 Així que pot ser molt útil més endavant. 67 00:03:10,000 --> 00:03:18,370 També és útil si té un programa que potser és la generació d'una biblioteca 68 00:03:18,370 --> 00:03:20,430 o la generació d'un conjunt de cadenes, i vostè 69 00:03:20,430 --> 00:03:22,846 han de ser capaços de veure que que els està generant correctament. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Aquesta és la manera de fer-ho. 72 00:03:25,160 --> 00:03:28,280 >> Així que si vostè les imprimeix en un arxiu, pot examinar més fàcilment, no? 73 00:03:28,280 --> 00:03:30,930 Versus tractant de desplaçar- a través de la seva línia d'ordres. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 I després una cosa a tenir en compte és que amb només el major 76 00:03:35,820 --> 00:03:40,090 d'accent circumflex, si vostè està escrivint a un arxiu que ja exists-- 77 00:03:40,090 --> 00:03:44,990 així com si ens trobem amb això la primera temps, ho posem a output.text, 78 00:03:44,990 --> 00:03:49,970 i després vam tenir un segon programa que aquest imprès com a programa de dos 79 00:03:49,970 --> 00:03:54,250 i va fer un gran que a output.text, sobreescriurà que-- així 80 00:03:54,250 --> 00:03:56,715 sobreescriure el que va ser alguna vegada a aquest arxiu per començar. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Així que si vol annexar a un arxiu, com veiem aquí, 83 00:04:00,750 --> 00:04:04,779 que acaba de fer dues vegades més gran que els signes. 84 00:04:04,779 --> 00:04:05,820 I va a annexar a la mateixa. 85 00:04:05,820 --> 00:04:06,750 No serà sobreescrita. 86 00:04:06,750 --> 00:04:09,770 Així que si vostè necessita per executar múltiples programes i tipus de mantenir 87 00:04:09,770 --> 00:04:13,170 pista del que tots ells són tornar a vostè en un arxiu, 88 00:04:13,170 --> 00:04:14,190 aquesta és una manera de fer-ho. 89 00:04:14,190 --> 00:04:17,231 Si no li importa el que està en el seu arxiu i ha permès a sobreescriure, 90 00:04:17,231 --> 00:04:19,204 que només pot utilitzar un sol més gran que. 91 00:04:19,204 --> 00:04:20,600 Això té sentit per a tothom? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> AUDIÈNCIA: Com a punt slash hola major que el text del punt de sortida, igual que dues vegades, 94 00:04:31,140 --> 00:04:34,030 només va a mostrar a la sortida només dot text una segona temps-- 95 00:04:34,030 --> 00:04:34,810 >> ALTAVEU 1: Dret. 96 00:04:34,810 --> 00:04:40,450 Pel que seria bàsicament per complet sobreescriure el que hi era per començar. 97 00:04:40,450 --> 00:04:44,260 Si aquest arxiu aquí, el output.text ja 98 00:04:44,260 --> 00:04:48,230 existeix, bàsicament com es digui que de nou amb un sol major 99 00:04:48,230 --> 00:04:51,920 que només pot pensar-hi com de la mateixa manera que va reemplaçar l'arxiu. 100 00:04:51,920 --> 00:04:54,824 Igual que quan vostè està estalviant una Paraula document i vostè estalviar com, 101 00:04:54,824 --> 00:04:57,365 i es manté el mateix nom, i sobreescriu completament it-- 102 00:04:57,365 --> 00:04:58,680 aquest és el mateix tipus de coses. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Algú té alguna pregunta sobre només donar sortida a un arxiu? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Impressionant. 107 00:05:05,550 --> 00:05:11,440 >> Així que, òbviament, si s'inverteix el fletxa direcció, es pot fer d'entrada. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Així que quan vostès tenien com César o VISIONEER 110 00:05:19,960 --> 00:05:23,195 i que tenia a l'entrada d'alguna cosa, vostè tenia un argument de línia d'ordres 111 00:05:23,195 --> 00:05:24,960 que en realitat entrada de la mateixa. 112 00:05:24,960 --> 00:05:27,410 Aquesta és una altra manera de fer-ho. 113 00:05:27,410 --> 00:05:30,520 Així que en lloc d'esperar per a la línia d'ordres, 114 00:05:30,520 --> 00:05:33,800 com quan se li demani per a la seva missatge de César o VISIONEER, 115 00:05:33,800 --> 00:05:36,490 si vostè tenia un arxiu de text que tenien el seu missatge, 116 00:05:36,490 --> 00:05:38,280 vostè podria escriure en això. 117 00:05:38,280 --> 00:05:44,930 >> Així que si això fos com a punt slash César 3 menys de text d'entrada fletxa, que 118 00:05:44,930 --> 00:05:47,240 és el seu missatge, que aniria bé. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Quan el programa de César en realitat preguntat per l'entrada de l'usuari, 121 00:05:54,020 --> 00:05:57,360 ja ho tindria perquè que ha escrit en aquest arxiu. 122 00:05:57,360 --> 00:05:58,830 Això és només una altra manera. 123 00:05:58,830 --> 00:06:02,445 Només un revers de output-- acaba d'introduir per a les dades. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> I a continuació, l'últim és la canonada. 126 00:06:06,680 --> 00:06:07,780 So cool força d'aquest. 127 00:06:07,780 --> 00:06:09,890 Perquè li permet prendre la sortida d'un 128 00:06:09,890 --> 00:06:13,695 programa i el va posar com a d'entrada a un altre programa. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 No sé si algun de vostès jugat amb el desxifrat 131 00:06:18,630 --> 00:06:20,590 CS50 que podria tenir t'ha donat, però seria 132 00:06:20,590 --> 00:06:27,380 li permeten prendre alguna mostra presentar, escriviu-lo el seu xifrat, 133 00:06:27,380 --> 00:06:30,350 i després des d'allà escrigui que en el seu desxifrat 134 00:06:30,350 --> 00:06:32,470 per assegurar-se que va resultar la mateixa. 135 00:06:32,470 --> 00:06:34,050 Així que és una espècie de bucle de tres vies. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 No t'ho pensis. 138 00:06:39,423 --> 00:06:41,785 >> AUDIÈNCIA: Si un programa té múltiples entrades, 139 00:06:41,785 --> 00:06:47,646 Hi ha una manera de dir que el que d'entrada a utilitzar l'arxiu de text o la sortida de? 140 00:06:47,646 --> 00:06:49,325 >> ALTAVEU 1: Compta amb múltiples entrades. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Sigui quina sigui presentar la seva input-- quan és demanant d'entrada que per primera vegada, és 143 00:07:00,430 --> 00:07:03,240 suposarà, crec, és anar a la canonada en tot l'arxiu. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Així que si vostè té múltiples entrades, que estàs serà de canonades en diversos arxius. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Així que si vostè està demanant missatges tres vegades en el seu codi, 148 00:07:12,390 --> 00:07:15,230 vostè va a estar posant en tres arxius diferents. 149 00:07:15,230 --> 00:07:15,980 I es posa boig. 150 00:07:15,980 --> 00:07:18,188 I vostè no hauria de tenir de preocupar d'això ara mateix. 151 00:07:18,188 --> 00:07:19,150 Però aquesta és la idea. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Així que sí, és la canonada de sortida de només un programa utilitza l'entrada en l'altre. 154 00:07:26,822 --> 00:07:27,665 Tothom bé allà? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Refredar. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 Okay. 159 00:07:30,932 --> 00:07:32,890 Vostè probablement no tindrà de fer massa amb ella. 160 00:07:32,890 --> 00:07:35,670 Però vostè ha d'entendre maneres que vostè pot utilitzar això. 161 00:07:35,670 --> 00:07:38,910 I hi ha alguns casos que és possible que vulgueu utilitzar. 162 00:07:38,910 --> 00:07:44,590 >> Així que presento I / O- Jo sé el que ets dient-- que estem acostumats a la lectura de 163 00:07:44,590 --> 00:07:50,500 i per escrit a la nostra pantalla d'allà, que és estàndard i la sortida estàndard. 164 00:07:50,500 --> 00:07:54,370 I això és el que vostès han estat fent des del començament de la classe aquí. 165 00:07:54,370 --> 00:07:58,220 Però també es pot llegir i escriure arxius, que és l'únic arxiu I / O- manera d'entrada d'arxiu, 166 00:07:58,220 --> 00:07:59,850 sortida és tot el que representa. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Així que això significa bàsicament que vostè pot emmagatzemar les seves dades ara. 169 00:08:04,360 --> 00:08:08,460 >> Quan vostè acaba d'imprimir a la pantalla, és bàsicament ha anat, oi? 170 00:08:08,460 --> 00:08:12,507 Tan aviat com vostè fa "Hola món "i executar" Hola món " 171 00:08:12,507 --> 00:08:14,090 imprimeix "Hola món" a la pantalla. 172 00:08:14,090 --> 00:08:16,370 Però realment no es pot fer res amb ella a partir d'aquí. 173 00:08:16,370 --> 00:08:18,950 Si s'emmagatzema en un text arxiu, i de cop i volta 174 00:08:18,950 --> 00:08:22,789 vostè té aquests dades que se li permet manipular o posar-lo en un arxiu, 175 00:08:22,789 --> 00:08:24,080 o posar-lo en un programa posterior. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Una de les raons raó per la qual fem això és només 178 00:08:29,290 --> 00:08:31,560 com una manera d'emmagatzemar dades per al seu ús posterior. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Tinc un parell de passos aquí simplement caminar a través d'estàndard 181 00:08:37,279 --> 00:08:39,450 I / O. En el pas un, heu de crear una referència 182 00:08:39,450 --> 00:08:43,480 a l'arxiu amb tot tapes de l'arxiu d'estrelles. 183 00:08:43,480 --> 00:08:45,740 Així que crea un punter a un arxiu. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Així que vostè vol per obrir-lo. 186 00:08:49,650 --> 00:08:52,940 I vostè diu, literalment, arxiu només és igual a fopen. 187 00:08:52,940 --> 00:08:57,400 I això va a retornar un punter a l'arxiu que acaba d'obrir. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Vaig veure un parell de vostès nois en hores d'oficina. 190 00:09:01,460 --> 00:09:07,400 >> Però una de les coses és punters remember-- 191 00:09:07,400 --> 00:09:10,409 pot haver alguna adreça o nul·la, no? 192 00:09:10,409 --> 00:09:12,700 Si alguna vegada tenim un cas en el qual alguna cosa pot tornar null, 193 00:09:12,700 --> 00:09:14,990 ¿Què és el que hem de fer abans que alguna vegada ho fem servir? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Hem de comprovar si és nul o no, oi? 196 00:09:19,000 --> 00:09:23,600 A causa de que alguns de vostès poden haver tingut el problema pel qual qualsevol objecte 197 00:09:23,600 --> 00:09:26,110 estava sent retornat en ruptura era nul·la. 198 00:09:26,110 --> 00:09:28,170 Ha intentat fer alguna funció en ell. 199 00:09:28,170 --> 00:09:29,770 I el seu lloc informàtic criticat. 200 00:09:29,770 --> 00:09:30,725 Dreta? 201 00:09:30,725 --> 00:09:33,640 Aposto a que un parell de vostès pot haver tingut aquest problema. 202 00:09:33,640 --> 00:09:38,890 >> Així que amb fopen, fopen, o bé retornar un punter a l'arxiu, 203 00:09:38,890 --> 00:09:41,200 o si alguna cosa surt malament, que va a tornar null. 204 00:09:41,200 --> 00:09:45,980 Així que sempre cal comprovar que no ha tornat nul 205 00:09:45,980 --> 00:09:47,880 abans d'intentar fer qualsevol altra cosa. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Això és com un paradigma estàndard que vostè va a necessitar aquí. 208 00:09:51,974 --> 00:09:54,390 Si alguna vegada hi ha una possibilitat que alguna cosa podria tornar null, 209 00:09:54,390 --> 00:09:56,590 comprovar per assegurar-se que no ho fa abans de continuar. 210 00:09:56,590 --> 00:09:58,911 En cas contrari, et vas per obtenir encantadores faltes lloc. 211 00:09:58,911 --> 00:10:00,410 I a ningú li agrada tractar amb aquells. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Així que com veiem aquí, el primer argument és només la ruta d'accés a l'arxiu. 214 00:10:06,410 --> 00:10:09,380 Si no existeix aquest arxiu, que crearà aquest arxiu. 215 00:10:09,380 --> 00:10:10,713 I només estarà en blanc. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 I a continuació, el segon argument és la manera que desitgi. 218 00:10:13,080 --> 00:10:14,610 Volem llegir d'aquest arxiu? 219 00:10:14,610 --> 00:10:15,560 Vols escriure d'ella? 220 00:10:15,560 --> 00:10:16,476 Vols afegir? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Així que en realitat el que acabo de said-- si el fitxer no existeix 223 00:10:20,670 --> 00:10:23,400 i que està tractant de llegir des ella, que llançarà un error. 224 00:10:23,400 --> 00:10:26,890 Si l'arxiu nom-- com si file.text encara no existeix 225 00:10:26,890 --> 00:10:29,250 i voleu escriure a ella, es crearà 226 00:10:29,250 --> 00:10:33,110 un arxiu en blanc anomenat file.text per a vostè. 227 00:10:33,110 --> 00:10:36,612 I si vol annexar, vostè ha de fer el mateix. 228 00:10:36,612 --> 00:10:38,081 Això té sentit? 229 00:10:38,081 --> 00:10:40,580 Si vostè està tractant de llegir des un arxiu que encara no existeix, 230 00:10:40,580 --> 00:10:41,590 que llançarà un error. 231 00:10:41,590 --> 00:10:44,340 En cas contrari, es crearà l'arxiu perquè vostè faci el que vulgui amb ella. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Refredar. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Ara podem llegir el fitxer. 236 00:10:48,880 --> 00:10:52,570 I això és només una mica d'anar a través de les diferents funcions 237 00:10:52,570 --> 00:10:58,980 que tenim per a l'arxiu d'E / S. Aquesta voluntat ser necessari en conjunt de processadors d'aquesta setmana, 238 00:10:58,980 --> 00:11:00,505 si no recordo malament. 239 00:11:00,505 --> 00:11:02,880 Sí, absolutament serà necessària en conjunt de processadors d'aquesta setmana. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Així fgetc torna el següent caràcter. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets només retorna una línia de text. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Es tornarà res fins una nova línia, i es trencarà. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Així fread llegeix un cert nombre de bytes i els col·loca 248 00:11:18,700 --> 00:11:20,700 en una matriu, que és una cosa que es podria 249 00:11:20,700 --> 00:11:25,485 vull fer amb re-size-- podria ser útil. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Quantes persones han llegit l'especificació de conjunt de processadors, per cert? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 Okay. 254 00:11:32,261 --> 00:11:32,760 [Inaudible] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> ALTAVEU 1: OK. 257 00:11:36,580 --> 00:11:37,530 Bé. 258 00:11:37,530 --> 00:11:41,940 Definitivament llegir que-- és un conjunt de processadors de la diversió. 259 00:11:41,940 --> 00:11:51,320 Tens l'oportunitat de recuperar un record esborrat card-- realment emocionant quan funciona. 260 00:11:51,320 --> 00:11:54,100 Però sens dubte, començar a llegir això. 261 00:11:54,100 --> 00:11:56,280 Vingui a parlar amb mi si té preguntes al respecte. 262 00:11:56,280 --> 00:11:59,290 >> OK, així que com anava dient, fread llegeix un cert nombre de bytes. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Això és un nombre arbitrari que es va a establir. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 I llavors només fseek mou a una determinada posició. 267 00:12:08,260 --> 00:12:11,150 Així que potser no té cura sobre els propers 10 bytes. 268 00:12:11,150 --> 00:12:12,880 El que desitja és passar directament. 269 00:12:12,880 --> 00:12:14,030 No es preocupen per ells. 270 00:12:14,030 --> 00:12:16,280 Vols llegir a partir de les 11 bytes. 271 00:12:16,280 --> 00:12:18,252 fseek li permet fer això. 272 00:12:18,252 --> 00:12:20,710 Per tant, li permet ser selectiu sobre el que estàs llegint. 273 00:12:20,710 --> 00:12:25,880 A causa fgetc, fgets, i lectura fread a partir d'un cert lloc a l'arxiu. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Una manera de pensar en això és si aquesta és el nostre arxiu, quan s'obri per primera vegada, 276 00:12:35,090 --> 00:12:41,140 vostè té aquesta posició a l'arxiu que comença pel principi. 277 00:12:41,140 --> 00:12:45,040 Sempre que cridi fgetc, fgetf, o fread, 278 00:12:45,040 --> 00:12:48,875 que va a començar des aquesta marca de posició. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Diguem que el que desitja és llegir aquest tros de memòria aquí. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 No es pot dir. 283 00:12:57,960 --> 00:13:02,430 Has de buscar per aquí i després llegir a partir d'aquí 284 00:13:02,430 --> 00:13:06,540 o llegir, aconsegueix, o getc, depenent del que vulguis. 285 00:13:06,540 --> 00:13:09,310 Així que busqui només li permet ometre parts de la memòria. 286 00:13:09,310 --> 00:13:11,590 I aquesta és l'única manera pot ometre coses 287 00:13:11,590 --> 00:13:14,012 sense llegir-los en la seva memòria intermèdia. 288 00:13:14,012 --> 00:13:15,470 Això té sentit per a tothom? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Òbviament, hi ha una gran quantitat de aquí-- paral·lel 291 00:13:24,780 --> 00:13:27,780 la nostra redirecció de la sortida o d'entrada, vostè ha llegit i escriure. 292 00:13:27,780 --> 00:13:31,800 Així fputc simplement escriu un caràcter a l'arxiu. 293 00:13:31,800 --> 00:13:33,655 fputs escriu una línia. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf imprimeix una sortida formatada. 296 00:13:37,420 --> 00:13:41,190 Així que si vostè té pestanyes, o en l'espai, o el que sigui. 297 00:13:41,190 --> 00:13:44,180 I llavors fwrite escriu alguns matriu de bytes a un arxiu. 298 00:13:44,180 --> 00:13:48,860 Així que això és de la mateixa manera fwrite i fread són anàlegs 299 00:13:48,860 --> 00:13:57,550 fgets opposites--, fputs, i després un munt fputc i fgetc-- 300 00:13:57,550 --> 00:14:00,710 , Coses ràpides de bojos. 301 00:14:00,710 --> 00:14:05,300 >> Només tipus de mantenir aquest handy-- vostè tindrà diferents moments 302 00:14:05,300 --> 00:14:08,680 on potser el que desitja un caràcter a la vegada. 303 00:14:08,680 --> 00:14:09,890 Potser vostè vol una línia sencera. 304 00:14:09,890 --> 00:14:14,320 Amb la seva pset-- diccionari que es troba en dos conjunts de processadors, 305 00:14:14,320 --> 00:14:19,690 Jo crec, et donem un tot diccionari en un format de text 306 00:14:19,690 --> 00:14:22,252 que té cada paraula separats per una línia. 307 00:14:22,252 --> 00:14:24,210 Així que si volies llegir en una paraula al mateix temps, 308 00:14:24,210 --> 00:14:31,769 el que podria utilitzar si estàs llegint i tots estan separats en noves línies, 309 00:14:31,769 --> 00:14:33,310 i el que desitja és una paraula al mateix temps? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Audiència: fgets 312 00:14:36,040 --> 00:14:36,748 >> ALTAVEU 1: Dret. 313 00:14:36,748 --> 00:14:39,960 Fgets-- ja que torna el que està en una línia. 314 00:14:39,960 --> 00:14:42,750 I si cada paraula és la seva pròpia línia, podem utilitzar fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Refredar. 317 00:14:45,010 --> 00:14:47,290 Això té sentit, tot el món? 318 00:14:47,290 --> 00:14:48,020 Fresc? 319 00:14:48,020 --> 00:14:50,020 Sí, anem a arribar a la part divertida amb punters 320 00:14:50,020 --> 00:14:51,728 molt aviat, en el qual arribar a fer una mica de matemàtiques. 321 00:14:51,728 --> 00:14:52,776 I serà gran. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Darrera step-- tancar l'arxiu. 324 00:14:57,740 --> 00:15:01,090 Amb tantes coses aquí, un dels nostres paradigmes 325 00:15:01,090 --> 00:15:03,550 és si es pot tornar nul, comprovar nul·la. 326 00:15:03,550 --> 00:15:06,160 Si s'obre una mica, serà millor que el tanqui. 327 00:15:06,160 --> 00:15:10,419 Acceptar, per la qual cosa no està fet fins que estigui acabat a menys que hi hagi tancat la mateixa. 328 00:15:10,419 --> 00:15:12,585 Una cosa així com que no ha acabat fins que la senyora grossa canta. 329 00:15:12,585 --> 00:15:14,130 Això és com tancar l'arxiu. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Com es diu aquí, només reiterar, sempre 332 00:15:19,190 --> 00:15:21,750 obrir el fitxer abans que estigui llegint o escrivint-hi. 333 00:15:21,750 --> 00:15:24,450 I sempre tancar si has obert. 334 00:15:24,450 --> 00:15:25,460 Bé? 335 00:15:25,460 --> 00:15:25,960 Refredar. 336 00:15:25,960 --> 00:15:26,835 >> Així que aquí està un exemple. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Així tiny-- No sé si vostè nois poden veure que molt bé. 339 00:15:34,330 --> 00:15:36,805 Si tan sols poguéssim augmentar la brillantor d'alguna manera. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Déjame fer això realitat, si puc. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 Bé, vostès no poden realment veure això en absolut, podeu? 344 00:15:51,470 --> 00:15:52,905 Bé, anem a fer això, llavors. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Inaudible] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Suposo que això és molt millor per veure. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Algú pot veure on el meu ratolí es va anar és la pregunta? 351 00:17:19,455 --> 00:17:22,837 Ah, aquí ho és-- lluita! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> Okay. 354 00:17:49,520 --> 00:17:53,845 Bàsicament, vostès han de tenir tipus d'una idea del que això està fent. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 No és perfecte. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Però prefereixo explicar-ho d'gastar més temps tractant de formatar correctament. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Bàsicament, com es veu aquí, vam començar amb obrir l'arxiu. 361 00:18:07,280 --> 00:18:09,620 I tenim alguns arxiu de base de dades que estem 362 00:18:09,620 --> 00:18:12,300 l'obertura que diu que és els nostres estudiants. 363 00:18:12,300 --> 00:18:14,020 I anem a escriure-hi. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Així que per descomptat, tornar null. 366 00:18:17,720 --> 00:18:19,650 Així que hem de comprovar si hi ha nul·la. 367 00:18:19,650 --> 00:18:22,930 I després, si no és nul, passem per. 368 00:18:22,930 --> 00:18:25,660 I com pots veure, estem bucle a través d'aquí. 369 00:18:25,660 --> 00:18:26,960 Hi ha estudiants. 370 00:18:26,960 --> 00:18:30,520 Els estudiants de hash és definida com tres. 371 00:18:30,520 --> 00:18:34,060 I el que estem fent és que estem imprimir a l'arxiu, no? 372 00:18:34,060 --> 00:18:36,975 Així que el que estem imprimint al nostre arxiu? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> AUDIÈNCIA: Les qualificacions que es troben en la matriu? 375 00:18:48,906 --> 00:18:49,680 >> ALTAVEU 1: Sí. 376 00:18:49,680 --> 00:18:50,980 Les puntuacions que es troben en la array-- exactament. 377 00:18:50,980 --> 00:18:53,050 Així que estem obrint aquest arxiu de base de dades, el que 378 00:18:53,050 --> 00:18:56,040 Suposo que és algun tipus base de dades dels graus. 379 00:18:56,040 --> 00:19:01,100 I només estem imprimint el puntuacions de cada estudiant per a aquest arxiu. 380 00:19:01,100 --> 00:19:02,140 Fresc? 381 00:19:02,140 --> 00:19:02,640 Bé. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Impressionant. 384 00:19:04,310 --> 00:19:05,100 Okay. 385 00:19:05,100 --> 00:19:06,950 Tornem A-- 386 00:19:06,950 --> 00:19:08,646 >> AUDIÈNCIA: Tinc una pregunta ràpida. 387 00:19:08,646 --> 00:19:11,570 És el printf no en el bucle for? 388 00:19:11,570 --> 00:19:12,870 Això és només en el cas de bucle? 389 00:19:12,870 --> 00:19:14,370 ALTAVEU 1: No, és en el bucle for. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 No puc veure el meu ratolí molt bé aquí. 392 00:19:18,810 --> 00:19:21,359 Així que estic lluitant per format que correctament. 393 00:19:21,359 --> 00:19:22,525 Aquest suport ha de desaparèixer. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Hauria d'estar aquí baix. 396 00:19:25,130 --> 00:19:26,605 Això és el que està en el seu cicle for. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Ja està. 399 00:20:11,180 --> 00:20:12,160 Ara que és bastant. 400 00:20:12,160 --> 00:20:16,720 Així que és com ha de ser: amb excepció per a aquest últim tram que em vaig acomiadar. 401 00:20:16,720 --> 00:20:17,220 Okay. 402 00:20:17,220 --> 00:20:19,491 Això té sentit per a tothom? 403 00:20:19,491 --> 00:20:19,990 Okay. 404 00:20:19,990 --> 00:20:23,750 Seguirem endavant a la següent cosa llavors-- 405 00:20:23,750 --> 00:20:26,180 que, en realitat, vas a haver de veure el codi. 406 00:20:26,180 --> 00:20:28,370 Així que només vaig a copiar que en aquest moment. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 Okay. 409 00:20:32,000 --> 00:20:35,110 Així que vaig a mostrar nois aquest codi. 410 00:20:35,110 --> 00:20:38,240 I vull que vostè provi i figura el que se suposa que ha de fer. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Així que donat que-- prendre un minut més o menys. 413 00:20:52,480 --> 00:20:54,440 Intenta esbrinar el que està passant aquí. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Alguna idea? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Sabem que tenim com a mínim dos arguments en la línia d'ordres, oi? 418 00:22:12,470 --> 00:22:16,270 Suposo que una de les quals serà que [inaudible] del nostre programa és 419 00:22:16,270 --> 00:22:17,530 i després alguna cosa més. 420 00:22:17,530 --> 00:22:19,980 Perquè si [inaudible] és menor de dues, cridem a ells. 421 00:22:19,980 --> 00:22:21,140 Dreta? 422 00:22:21,140 --> 00:22:25,300 I a partir de la utilització, es veu com que hi haurà algun tipus d'arxiu. 423 00:22:25,300 --> 00:22:26,260 Tots estem d'acord amb això? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Així que ara, ¿quin és el bucle fent? 426 00:22:31,570 --> 00:22:32,570 Què va a través? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> AUDIÈNCIA: Tots els arxius. 429 00:22:36,449 --> 00:22:37,240 ALTAVEU 1: Exactament. 430 00:22:37,240 --> 00:22:39,650 Es va a través de tot el els arxius que hem d'entrada hi ha. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Així que per a cada arxiu, és l'obertura d'una corda allà. 433 00:22:46,040 --> 00:22:47,560 És l'obertura d'aquest arxiu. 434 00:22:47,560 --> 00:22:48,060 Dreta? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 I hi ha la lectura de la mateixa. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Per descomptat, comprovar si és nul. 439 00:22:55,540 --> 00:22:57,220 I després hi ha la impressió. 440 00:22:57,220 --> 00:23:01,460 Si és nul, és només que ens diu que això no és un arxiu que existeix. 441 00:23:01,460 --> 00:23:04,290 Perquè recorda, amb llegiu el nostre arxiu ha d'existir. 442 00:23:04,290 --> 00:23:04,810 Dreta? 443 00:23:04,810 --> 00:23:06,870 Amb escriptura i d'annexió, vostè pot sortir amb la seva. 444 00:23:06,870 --> 00:23:08,970 Però amb lectura, el nostre fitxer ha d'existir. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> I després, si existeix, ¿Què estem fent aquí? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Anem a començar aquí. 449 00:23:15,780 --> 00:23:18,815 Què és això fer-- aquest primer caràcter. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Què fa? 452 00:23:21,790 --> 00:23:24,100 Es posa un personatge, ¿no? 453 00:23:24,100 --> 00:23:25,400 Llavors, ¿què està fent això? 454 00:23:25,400 --> 00:23:26,775 S'està fent el primer caràcter. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Algú sap EOF? 457 00:23:30,200 --> 00:23:31,170 >> AUDIÈNCIA: Fi d'arxiu? 458 00:23:31,170 --> 00:23:32,680 >> ALTAVEU 1: Cap de file-- exactament. 459 00:23:32,680 --> 00:23:35,310 Així que va a anar a través de tot l'arxiu, no? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 I després es va a actualitzar per aconseguir tots els personatges posterior. 462 00:23:40,780 --> 00:23:41,565 Dreta? 463 00:23:41,565 --> 00:23:43,636 ¿I què està fent? 464 00:23:43,636 --> 00:23:44,760 AUDIÈNCIA: Posar que en-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> ALTAVEU 1: impressions putchar per al protector de pantalla. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Inaudible] el caràcter. 469 00:23:51,950 --> 00:23:54,300 I després, quan es [inaudible] això tancarà l'arxiu. 470 00:23:54,300 --> 00:23:57,370 >> AUDIÈNCIA: No necessita un [? una altra cosa? ?] 471 00:23:57,370 --> 00:23:59,005 >> ALTAVEU 1: No necessàriament. 472 00:23:59,005 --> 00:24:01,480 Vull dir, és una espècie de implícit en això. 473 00:24:01,480 --> 00:24:06,780 Com que aquest torna, però, sempre ja que això no agafa això, vostè està molt bé. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Vull dir que és probablement bo practicar a fer una cosa. 476 00:24:10,250 --> 00:24:15,755 Però una cosa no és sempre especialment necessària 477 00:24:15,755 --> 00:24:17,610 si tens alguna cosa com un retorn, que 478 00:24:17,610 --> 00:24:20,640 significa que en aquest cas si les captures ella, el seu programa va a acabar 479 00:24:20,640 --> 00:24:21,850 i que mai va a arribar a això. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 És més per al cas que vostè és no necessàriament tornant alguna cosa. 482 00:24:29,190 --> 00:24:31,370 Perquè si això no era tornar res, 483 00:24:31,370 --> 00:24:34,430 això significaria que si això fos cert, la resta d'aquest seguiria funcionant. 484 00:24:34,430 --> 00:24:36,138 I en aquest cas, voldria un fals. 485 00:24:36,138 --> 00:24:38,240 Si es tracta de tornar, i final del seu programa, 486 00:24:38,240 --> 00:24:41,960 una persona no cal tot el temps, depenent del context. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, sabia vostè té una pregunta? 489 00:24:44,375 --> 00:24:46,100 AUDIÈNCIA: Sí. 490 00:24:46,100 --> 00:24:49,300 També ho fa fgetc obtenir el següent personatge? 491 00:24:49,300 --> 00:24:50,734 Com augmenta el caràcter? 492 00:24:50,734 --> 00:24:51,400 ALTAVEU 1: Sí. 493 00:24:51,400 --> 00:24:52,774 Així fgetc obté el següent caràcter. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Vostè pot pensar en ell com C ++ en un sentit. 496 00:24:56,866 --> 00:24:58,350 >> AUDIÈNCIA: Llavors, ¿què era EOF? 497 00:24:58,350 --> 00:25:00,877 >> ALTAVEU 1: EOF és el final de l'arxiu. 498 00:25:00,877 --> 00:25:03,960 És només un marcador que li permet saber que esteu en el final del seu arxiu. 499 00:25:03,960 --> 00:25:06,742 Així que això va a imprimir a la seva sortida estàndard. 500 00:25:06,742 --> 00:25:08,950 I després es va a tancar l'arxiu quan es fa. 501 00:25:08,950 --> 00:25:10,700 I després anirem a el següent arxiu, ¿no? 502 00:25:10,700 --> 00:25:12,660 Així que en general, el que fa aquest programa? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Inaudible] 505 00:25:16,090 --> 00:25:16,900 >> ALTAVEU 1: Sí. 506 00:25:16,900 --> 00:25:18,770 Simplement imprimeix tot el que hi ha. 507 00:25:18,770 --> 00:25:23,270 Així CAT si vostès han utilitzat alguna vegada i després el nom d'algun file-- 508 00:25:23,270 --> 00:25:26,240 No sé si algun de vostès té Alguna vegada has fet això en el seu terminal. 509 00:25:26,240 --> 00:25:29,630 Però si alguna vegada utilitza el comandament CAT-- C-A-T- 510 00:25:29,630 --> 00:25:31,880 i llavors qualsevol cosa arxiu vostè ha de allà-- 511 00:25:31,880 --> 00:25:37,260 l'imprimeix al seu terminal, que pot ser molt útil per a algunes coses. 512 00:25:37,260 --> 00:25:38,746 Jo el faig servir molt. 513 00:25:38,746 --> 00:25:40,120 Això té sentit per a tothom? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Fresc? 516 00:25:42,100 --> 00:25:46,530 >> Acceptar tant la seva tasca sigui per ara-- si mateix o amb la gent al voltant de usted-- 517 00:25:46,530 --> 00:25:54,930 és simplement escriure un programa senzill que s'acaba d'escriure "Hola, món!" 518 00:25:54,930 --> 00:25:56,255 en un arxiu. 519 00:25:56,255 --> 00:26:00,215 >> [Inaudible] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Inaudible] 522 00:26:57,040 --> 00:26:59,248 >> ALTAVEU 1: jo estava com, ho va fer Ho faig tan malament l'última setmana? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Jo no crec que hagi estat tan dolent. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 M'alegro que estiguis aquí tot. 527 00:27:03,520 --> 00:27:04,655 Realment em fa feliç. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Sóc una noia dels plaers simples. 530 00:27:10,160 --> 00:27:11,688 A mi m'agrada quan el meu secció assisteix. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Així que m'estic fent això va començar per vostès perquè puguem codificar junts. 533 00:27:18,270 --> 00:27:22,290 No m'agrada posar a ningú en el lloc a menys que vostè vol ser. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> AUDIÈNCIA: Per al concurs, fer hem d'escriure un programa? 536 00:27:30,086 --> 00:27:33,260 >> ALTAVEU 1: Se li pot demanar a escriure programes senzills a mà. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Sí. 539 00:27:36,590 --> 00:27:38,510 >> AUDIÈNCIA: El concurs és la setmana que ve, no? 540 00:27:38,510 --> 00:27:40,108 >> ALTAVEU 1: El concurs és dimecres que ve. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Això vol dir que hi ha una encantadora [? CSE?] classificació de festa després, que 543 00:27:43,730 --> 00:27:50,390 significa que obtindrà la seva puntuació esquena que nit-- en quin moment? 544 00:27:50,390 --> 00:27:50,890 Qui sap? 545 00:27:50,890 --> 00:27:51,973 Però serà aquesta nit. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Bé. 548 00:28:02,855 --> 00:28:04,250 Com volem que començar això? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Et vaig a donar un hint-- comença amb això. 551 00:28:09,630 --> 00:28:11,455 >> AUDIÈNCIA: Vostè ha d'obrir un arxiu. 552 00:28:11,455 --> 00:28:12,250 >> ALTAVEU 1: Sí. 553 00:28:12,250 --> 00:28:14,060 Llavors, ¿què és el que vols trucar a això? 554 00:28:14,060 --> 00:28:16,150 És el que desitja és cridar-la "arxiu"? 555 00:28:16,150 --> 00:28:17,480 Farem que sigui fàcil. 556 00:28:17,480 --> 00:28:26,752 Així que quina és la nostra fopen-- prova de sortida serà? 557 00:28:26,752 --> 00:28:36,130 Llámelo "Hola." 558 00:28:36,130 --> 00:28:37,810 I el que és la nostra manera? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Què estem fent amb aquest fitxer? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> AUDIÈNCIA: Llegir. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Escriure. 565 00:28:44,900 --> 00:28:46,191 ALTAVEU 1: Estem escrivint a la mateixa. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Preciós. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 Acceptar, per la qual cosa tenim ara aquest fitxer. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Què necessitem fer? 572 00:28:56,212 --> 00:28:57,420 AUDIÈNCIA: Comproveu si és nul. 573 00:28:57,420 --> 00:28:59,820 ALTAVEU 1: Comproveu si és null-- exactament. 574 00:28:59,820 --> 00:29:01,980 Això és el que m'agrada escoltar. 575 00:29:01,980 --> 00:29:05,930 Això hauria de ser automàtica, especialment més o menys a partir d'ara. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Si comences a violació de segment, és probable que no comprovar la nul·la alguna part. 578 00:29:10,950 --> 00:29:12,480 Nou de cada deu vegades, això és serà el seu error. 579 00:29:12,480 --> 00:29:15,400 Així que si vostè podria aconseguir en el hàbit, comprovi sempre si és nul, 580 00:29:15,400 --> 00:29:18,150 la teva vida serà agradable i easy-- o més fàcil. 581 00:29:18,150 --> 00:29:19,480 >> Així que comprovar per veure si és nul. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Així que si no és nul·la, el que és el que és igual a l'explosió 584 00:29:24,820 --> 00:29:26,784 vol dir: no null-- és vàlida. 585 00:29:26,784 --> 00:29:27,700 Què volem fer? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Només volem imprimir a aquest fitxer, no? 588 00:29:31,570 --> 00:29:32,923 Llavors, ¿què utilitzarem? 589 00:29:32,923 --> 00:29:34,092 >> AUDIÈNCIA: fprintf 590 00:29:34,092 --> 00:29:36,800 >> ALTAVEU 1: Fprintf-- encantadora. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 I fprintf pren dues arguments-- on que va i el que volem imprimir. 593 00:29:44,000 --> 00:29:45,820 Així que quina és la primera? 594 00:29:45,820 --> 00:29:46,570 On va? 595 00:29:46,570 --> 00:29:47,490 >> AUDIÈNCIA: Arxiu. 596 00:29:47,490 --> 00:29:48,785 >> ALTAVEU 1: Es va a presentar. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 ¿I què és el que volem impresa? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Hola, món!" 601 00:29:58,065 --> 00:29:58,565 Bé. 602 00:29:58,565 --> 00:30:03,670 Tenim una última cosa-- un altre gran paradigma aquí. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 AUDIÈNCIA: Tanca. 605 00:30:05,145 --> 00:30:05,853 ALTAVEU 1: Tancar. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Cal anar. 608 00:30:10,540 --> 00:30:13,384 >> AUDIÈNCIA: Això està passant si l'arxiu és nul? 609 00:30:13,384 --> 00:30:15,050 ALTAVEU 1: No, això és si no és nul. 610 00:30:15,050 --> 00:30:16,881 AUDIÈNCIA: Oh, si és no-- acord. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Per al fopen i després el dos arguments que van dins, 613 00:30:25,410 --> 00:30:27,655 ¿Què vol dir de nou el primer argument? 614 00:30:27,655 --> 00:30:30,392 >> ALTAVEU 1: L'argument és de la mateixa manera que el nom del fitxer 615 00:30:30,392 --> 00:30:31,350 que vol anar. 616 00:30:31,350 --> 00:30:36,020 Així que després d'això s'executa, ho faria tenir algun arxiu anomenat "hola" 617 00:30:36,020 --> 00:30:38,320 que tenien "Hola, món" dins d'ella. 618 00:30:38,320 --> 00:30:38,820 Això és tot. 619 00:30:38,820 --> 00:30:39,500 Només el nom. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> AUDIÈNCIA: I ja que és l'escriptura, la arxiu no ha de ja existeixen. 622 00:30:48,650 --> 00:30:49,675 És això el que vas dir? 623 00:30:49,675 --> 00:30:50,410 >> ALTAVEU 1: Dret. 624 00:30:50,410 --> 00:30:50,910 Exactament. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Si "Hola" com un arxiu no existeix, però, que és 627 00:30:55,839 --> 00:30:58,380 crearà un arxiu anomenat Hola "i escriure-hi per a vostè. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> AUDIÈNCIA: Quan vostè està dient el programa va escriure en el fitxer, 630 00:31:03,610 --> 00:31:08,075 Per què escrius "arxiu" en lloc de el nom de l'arxiu i fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> ALTAVEU 1: Com que en aquest cas, tenim que gran FILE-- tot en estrella caps--, 632 00:31:13,600 --> 00:31:14,260 presentar. 633 00:31:14,260 --> 00:31:17,370 Així que és un punter a l'arxiu que vostè està parlant. 634 00:31:17,370 --> 00:31:19,930 Aquesta és la forma que que acabem de referir-nos a ella. 635 00:31:19,930 --> 00:31:24,850 Així que en aquest cas, pot pensar en aha file--, 636 00:31:24,850 --> 00:31:31,271 podem utilitzar esto-- arxiu aquí es refereix a l'obertura de "Hola" 637 00:31:31,271 --> 00:31:32,145 i deixant que s'escrigui. 638 00:31:32,145 --> 00:31:34,728 >> AUDIÈNCIA: Podríem posar un "Hola" en lloc [? de just?] arxiu f? 639 00:31:34,728 --> 00:31:40,160 ALTAVEU 1: No, perquè "Hola" ha de ser obert i es pugui escriure. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Present aquí és com un designador que diu bé, que 642 00:31:45,980 --> 00:31:49,190 tenir aquest hello-- file-- que estem veient. 643 00:31:49,190 --> 00:31:50,680 Ha estat obert. 644 00:31:50,680 --> 00:31:52,140 I anem a escriure-hi. 645 00:31:52,140 --> 00:31:55,130 Si vostè només ha d'utilitzar "Hola", que està encapsulat en el mateix. 646 00:31:55,130 --> 00:31:56,846 Així que va a flipar. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Vull dir, vostè podria haver anomenat ell. 649 00:32:00,300 --> 00:32:03,960 Podries haver fet arxiu, estrella, "Hola", és igual que. 650 00:32:03,960 --> 00:32:07,840 Però el punt és que vostè necessitarà un punter estrella arxiu en ordre 651 00:32:07,840 --> 00:32:09,281 per poder utilitzar aquestes funcions. 652 00:32:09,281 --> 00:32:11,280 AUDIÈNCIA: Podria vostè fer arxiu, estrella, arxiu, "Hola" 653 00:32:11,280 --> 00:32:13,113 o què has de posar presentar estrella, arxiu per ella? 654 00:32:13,113 --> 00:32:16,330 ALTAVEU 1: Vostè podria fer arxiu, estrella, "Hola." 655 00:32:16,330 --> 00:32:19,790 Vostè pot canviar això a qualsevol nom que vulgueu. 656 00:32:19,790 --> 00:32:22,114 És completament arbitrària el que dic. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Vostè pot nomenar qualsevol cosa. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Nom volant espaguetis, si volies. 661 00:32:28,020 --> 00:32:29,690 >> AUDIÈNCIA: Què és la "w" entre cometes per? 662 00:32:29,690 --> 00:32:31,540 >> ALTAVEU 1: La "w" és només la manera. 663 00:32:31,540 --> 00:32:33,170 Així que estem escrivint a aquesta imatge. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Tothom bé? 666 00:32:35,320 --> 00:32:36,227 És clar? 667 00:32:36,227 --> 00:32:36,981 Sí. 668 00:32:36,981 --> 00:32:40,365 >> AUDIÈNCIA: Així que quan s'escriu aquest arxiu, on ens trobem, doncs, aquest arxiu? 669 00:32:40,365 --> 00:32:43,820 >> ALTAVEU 1: Serà en el mateix directori que vostè està actualment en. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Si estàs en conjunt de processadors de tres i executar aquest, dins del seu conjunt de processadors 672 00:32:48,880 --> 00:32:52,600 03:00 carpeta serà aquest arxiu es diu "Hola." 673 00:32:52,600 --> 00:32:53,160 Fresc? 674 00:32:53,160 --> 00:32:53,757 Tothom bé? 675 00:32:53,757 --> 00:32:55,840 Em sento com si estigués tot aconseguir-ho, la qual cosa és genial. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 Okay. 678 00:32:57,790 --> 00:33:05,960 Així que de tornada al meu show-- diapositiva M'encanta quan les coses funcionen. 679 00:33:05,960 --> 00:33:08,674 Acceptar, pointers-- Són vostès emocionat? 680 00:33:08,674 --> 00:33:09,465 Els punters són grans. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Prenen una mica per embolicar el seu cap al voltant. 683 00:33:13,580 --> 00:33:15,288 Aquest és el meu segon any punters d'ensenyament. 684 00:33:15,288 --> 00:33:16,850 I crec que per fi ho vaig aconseguir. 685 00:33:16,850 --> 00:33:18,650 Així que si vostè lluita, que està bé. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Com he dit abans, fer dibuixos ajuda molt amb les coses a la CS, 688 00:33:24,070 --> 00:33:27,400 tant com jo crec que la gent tendeix pensar oh, estem davant un ordinador. 689 00:33:27,400 --> 00:33:28,399 Hem només codi. 690 00:33:28,399 --> 00:33:30,190 Imatges de dibuix no- realment l'ajudarà. 691 00:33:30,190 --> 00:33:32,773 I realment t'animo a aprofitar la seva banda kindergartner 692 00:33:32,773 --> 00:33:35,010 i dur a terme els creyones o marcadors i taules. 693 00:33:35,010 --> 00:33:36,110 A causa de que l'ajudarà. 694 00:33:36,110 --> 00:33:39,380 I si em veus a les hores d'oficina, jo serà portar al voltant de piles de paper 695 00:33:39,380 --> 00:33:41,580 amb les plomes de dibuix les coses. 696 00:33:41,580 --> 00:33:44,370 >> Així especialment amb pointers-- fer dibuixos. 697 00:33:44,370 --> 00:33:47,970 I estic segur que estem en realitat va a estar dibuixant algunes fotos aquí també. 698 00:33:47,970 --> 00:33:51,270 >> Així que vosaltres tots arribem a veure Binky, aquesta bon aspecte animació amb plastilina. 699 00:33:51,270 --> 00:33:54,720 I pensem que és realment divertit quan que explota en un munt de peces. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 És una mica d'alleujament còmic per a la classe. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [inaudible] aquesta gran capacitat ser capaç de controlar la memòria. 704 00:34:05,900 --> 00:34:10,090 I és una de les coses que realment el converteix en un llenguatge tan poderós. 705 00:34:10,090 --> 00:34:13,469 Però amb gran poder ve gran responsabilitat. 706 00:34:13,469 --> 00:34:16,230 I les coses boges que pot succeir si vostè no té cura. 707 00:34:16,230 --> 00:34:18,560 Així que quan vostè està utilitzant punters, que volen fer 708 00:34:18,560 --> 00:34:21,440 Segur que realment entén exactament el que estàs fent. 709 00:34:21,440 --> 00:34:25,530 Esperem que el proper mica de el temps l'ajudarà realment a entendre 710 00:34:25,530 --> 00:34:27,850 punters, com usar-los, i com manipular-los. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Així memory-- Estic segur que hem aquest diagrama vist abans. 713 00:34:33,460 --> 00:34:38,540 Així que això és només un simple diagrama de com les coses podrien ser emmagatzemats memòria. 714 00:34:38,540 --> 00:34:43,145 Així que, bàsicament, té aquests grans arranjaments de blocs d'un byte 715 00:34:43,145 --> 00:34:46,000 és el que tenim aquí-- lleuger increments en un cada vegada. 716 00:34:46,000 --> 00:34:51,810 Això és en hexadecimal [inaudible] de manera que els blocs de vuit bits. 717 00:34:51,810 --> 00:34:55,510 I cada bloc s'associa amb una mica de direcció hexadecimal. 718 00:34:55,510 --> 00:34:58,750 Així que si alguna vegada veu la 0x, això és només notating 719 00:34:58,750 --> 00:35:00,670 que es tracta d'una adreça hexadecimal. 720 00:35:00,670 --> 00:35:03,970 Vostè pot assumir que això significa alguna direcció en la memòria. 721 00:35:03,970 --> 00:35:06,935 Estem parlant de les direccions de memòria cada vegada que vegi hexadecimal. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Tenim sencers són variables, carrosses són variables que emmagatzemen. 724 00:35:14,630 --> 00:35:16,260 Així ints emmagatzemar sencers. 725 00:35:16,260 --> 00:35:17,430 Botiga flotadors flota. 726 00:35:17,430 --> 00:35:20,260 Així que també tenim punters que les direccions de memòria botiga. 727 00:35:20,260 --> 00:35:21,660 Això és una espècie de mapeig. 728 00:35:21,660 --> 00:35:24,240 Els punters són exclusivament per a adreces de memòria. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Així que això és com el tipus d'allà. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 El seu aparell és de 32 bits, el que significa que la seva adreça de memòria és de quatre bytes. 733 00:35:34,470 --> 00:35:37,830 Així que qualsevol punter que tens També serà quatre bytes. 734 00:35:37,830 --> 00:35:43,200 O bé si es tracta de quatre bytes, la memòria és de quatre bytes. 735 00:35:43,200 --> 00:35:44,790 Memòria d'emmagatzematge de punters. 736 00:35:44,790 --> 00:35:46,430 Per tant, són quatre bytes. 737 00:35:46,430 --> 00:35:48,460 Cool-- només volen reforçar això. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Vostè ha d'obtenir aquest còmic ara. 740 00:35:52,220 --> 00:35:55,040 No sé quants de vostès són aficionats xkcd, però m'encanta xkcd. 741 00:35:55,040 --> 00:35:55,780 És genial. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Bé. 744 00:35:57,790 --> 00:36:01,640 Així que la creació de pointers-- com he dit, és més o menys com qualsevol altra cosa. 745 00:36:01,640 --> 00:36:02,930 Vostè té un tipus. 746 00:36:02,930 --> 00:36:04,050 Vostè té un nom. 747 00:36:04,050 --> 00:36:04,810 Dreta? 748 00:36:04,810 --> 00:36:10,410 Això és el que tenim allà. [? Hex?] Significa estrella és un punter, 749 00:36:10,410 --> 00:36:12,250 i després el que vulguis dir. 750 00:36:12,250 --> 00:36:15,770 Així que el tipus representa el que pot emmagatzemar. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Bé? 753 00:36:17,990 --> 00:36:24,350 De la mateixa manera que si ho fem sencers, sabem que estem emmagatzemant 1 int allà. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Amb un punter, es exerceix en una direcció de memòria. 756 00:36:30,280 --> 00:36:34,240 Però el que significa és que-- és on aquí un dibuix anirà molt bé. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Així que en aquest cas, tenim alguns value-- diguem 04:00. 759 00:36:45,980 --> 00:36:49,306 Cuatro és en direcció d'un. 760 00:36:49,306 --> 00:36:49,805 D'acord? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Aquesta primera un aquí significa que és un punter de 2x. 763 00:36:56,170 --> 00:36:56,740 Dreta? 764 00:36:56,740 --> 00:36:57,628 És cert punter x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x pot ser alguna cosa, el que sigui. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Qualsevol que sigui x és-- dir x és quatre. 769 00:37:05,130 --> 00:37:07,280 Es va a emmagatzemar el direcció de memòria aquí. 770 00:37:07,280 --> 00:37:12,260 Així int, estrella, x-- això és alguna altra ranura en memory-- 771 00:37:12,260 --> 00:37:13,590 que sap el que és això. 772 00:37:13,590 --> 00:37:15,430 Però va a emmagatzemar una adreça aquí. 773 00:37:15,430 --> 00:37:27,040 Així que aquest seria com-- en aquest cas, el que, 774 00:37:27,040 --> 00:37:32,630 s'emmagatzema a 0x1-- el que s'emmagatzema en la direcció que el nostre punter es manté, 775 00:37:32,630 --> 00:37:35,280 ha de coincidir amb el que hem designat. 776 00:37:35,280 --> 00:37:40,330 Així que en 0x1, en aquest cas, això és x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Això només pot ser mai una int mentre estem utilitzant això. 779 00:37:49,340 --> 00:37:52,950 >> De la mateixa manera, si tenim 1a altra, qualsevol que sigui 780 00:37:52,950 --> 00:37:59,130 la direcció es guarden amb un i té a ser una mateixa cosa char-- amb z. 781 00:37:59,130 --> 00:38:05,840 De la mateixa manera, cada vegada que es tractar de fer INTX és igual a 0,4, 782 00:38:05,840 --> 00:38:09,275 que va a cridar a vostè i ser com no, vas dir que volies 1 int. 783 00:38:09,275 --> 00:38:10,525 Això se suposa que és un int. 784 00:38:10,525 --> 00:38:11,900 Deixa de tractar de fer que sigui un flotador. 785 00:38:11,900 --> 00:38:14,150 >> Així que deixa que les coses siguin el que volen ser. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Deixeu que les coses siguin ells mateixos. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Així que alguna cosa gran està a només qualsevol que sigui el tipus de punter 790 00:38:23,450 --> 00:38:26,101 que és, aquesta és l'única que pot emmagatzemar allà. 791 00:38:26,101 --> 00:38:26,600 D'acord? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 Amb la pràctica, com amb la setmana passada, tot 794 00:38:31,160 --> 00:38:32,817 sembla molt amable de abstracte. 795 00:38:32,817 --> 00:38:34,150 Anem a fer una mica de pràctica. 796 00:38:34,150 --> 00:38:36,760 Ha de tenir més sentit. 797 00:38:36,760 --> 00:38:44,580 >> Així referència i dereferencing-- és realment important per obtenir aquests recta. 798 00:38:44,580 --> 00:38:46,630 Encara he de refrescar de tant en tant. 799 00:38:46,630 --> 00:38:48,450 I jo sóc com espera, el que un és el que vull? 800 00:38:48,450 --> 00:38:56,080 Així que el signe realment donar que la referència o l'adreça de. 801 00:38:56,080 --> 00:39:00,100 Per tant, torna la direcció en memòria de quina variable s'emmagatzema. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Així que tornarà realment a vostè 1 hexadecimal, mentre que eliminació de referències 804 00:39:07,020 --> 00:39:10,641 que realment es va a donar les dades que s'emmagatzema allà. 805 00:39:10,641 --> 00:39:11,140 D'acord? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Així que anem a veure un exemple molt ràpid, o en realitat fins a la pròxima. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> Okay. 810 00:39:19,150 --> 00:39:21,790 Així que hem de pensar realment acuradament sobre això. 811 00:39:21,790 --> 00:39:23,860 Així que aquí tenim algun sencer x. 812 00:39:23,860 --> 00:39:26,485 Vaig a tractar de dibuixar aquest potser de les meves habilitats. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Així que anem a tenir aquesta ranura x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 I hi ha el emmagatzematge de cinc. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 La seva adreça és 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Fresc? 821 00:39:43,160 --> 00:39:44,100 Tot bé. 822 00:39:44,100 --> 00:39:45,470 >> Així que ara tenim aquest punter. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Va ser per aquí. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 I el símbol d'unió ens dóna la direcció d'alguna cosa. 827 00:39:57,560 --> 00:40:00,780 Així, en aquest cas, és l'adreça de x. 828 00:40:00,780 --> 00:40:01,875 Quina és l'adreça de x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- i aquest punter és a 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Fresc? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Així que vostè pot pensar en això punter, 04, només assenyala cap aquí. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 I es diuen punters perquè a mesura que més en això, 837 00:40:25,740 --> 00:40:28,450 vas a veure que apunta a les coses. 838 00:40:28,450 --> 00:40:31,470 I a una quadra apuntant a un altre bloc farà molt més sentit. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Així que aquí són dos. 841 00:40:33,890 --> 00:40:38,230 I després tenim alguns còpia, que és 0x0C què--. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 I es va a eliminar la referència del nostre punter. 844 00:40:43,420 --> 00:40:46,790 >> Així que el que està dient és OK, aquí està el nostre punter. 845 00:40:46,790 --> 00:40:53,090 El valor s'emmagatzema és 0x04, ¿I què que està dient és anar a aquesta adreça 846 00:40:53,090 --> 00:40:54,300 i digues-me el que està en ell. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Així que això és efectivament el que aquesta fletxa està fent. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Vostè pot pensar en això com la seva estrella. 851 00:41:01,280 --> 00:41:05,410 Així que bé, quan fem estrella, que significa seguir. 852 00:41:05,410 --> 00:41:06,810 Aneu a aquesta adreça. 853 00:41:06,810 --> 00:41:11,430 I això és, bàsicament, només després de aquesta fletxa per a aquest tros de memòria. 854 00:41:11,430 --> 00:41:15,380 I ens donen el que hi ha en ell, que és 5. 855 00:41:15,380 --> 00:41:18,840 És per això que la nostra còpia és igual a 5. 856 00:41:18,840 --> 00:41:20,120 Això té sentit? 857 00:41:20,120 --> 00:41:22,769 Em necessita ningú per anar a través de que de nou, o més lentament? 858 00:41:22,769 --> 00:41:24,560 Vols que me'n vagi a través d'ell una vegada més? 859 00:41:24,560 --> 00:41:25,060 Okay. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Anem a tornar a dibuixar de nou. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Quan vam començar, tots estem d'acord que tenim algun tros de memòria que és una variable 864 00:41:37,205 --> 00:41:40,890 x que ens vam proposar igual a 5. 865 00:41:40,890 --> 00:41:42,910 Nosaltres no controlem on està en la memòria. 866 00:41:42,910 --> 00:41:45,520 Així que aquest lloc és només arbitràriament assignat. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Bé allà? 869 00:41:48,731 --> 00:41:49,230 Okay. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Després inicialitzem un punter a un int. 872 00:41:53,330 --> 00:41:56,900 És per això que se li permet apuntar a x perquè tenim un int a aquí. 873 00:41:56,900 --> 00:42:00,840 Tenim un altre tros de memòria perquè aquest punter 874 00:42:00,840 --> 00:42:03,485 és una variable com qualsevol altra cosa. 875 00:42:03,485 --> 00:42:06,615 Se li assigna arbitràriament una mica d'espai a la memòria. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 I el que s'emmagatzema és l'adreça de x. 878 00:42:10,830 --> 00:42:13,200 Ampersand significa direcció de x. 879 00:42:13,200 --> 00:42:14,575 Llavors, ¿quina és la direcció de x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> AUDIÈNCIA: És zero-- 882 00:42:20,614 --> 00:42:21,280 ALTAVEU 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Així llavors-- últim. 885 00:42:25,940 --> 00:42:30,650 Tenim alguns copy-- de nou només una altra variable. 886 00:42:30,650 --> 00:42:32,520 Així que anem a assignar un lloc arbitrari. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 I nosaltres desreferenciar nostre punter. 889 00:42:38,080 --> 00:42:42,490 L'estrella vol dir anar a la direcció emmagatzemada en el meu punter. 890 00:42:42,490 --> 00:42:44,480 Digues el que hi ha. 891 00:42:44,480 --> 00:42:47,290 Així que la direcció emmagatzemada en el nostre punter és 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Així que anem a aquesta direcció. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Està apuntant a aquesta direcció. 896 00:42:54,590 --> 00:42:57,481 Què hi ha dins d'aquest bloc de memòria? 897 00:42:57,481 --> 00:42:57,980 És un cinc. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Així que això és el que nosaltres assignem la nostra còpia. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Tothom bé? 902 00:43:04,860 --> 00:43:05,360 Refredar. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Imatges nou--. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Així que el seguiment dels valors aquí-- Estic deixarà que vostès pensen sobre això. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Podem treure una altra foto. 909 00:43:27,750 --> 00:43:31,260 Però vull que vostè provi i la raó a través d'això pel seu compte durant un minut. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Com que no donen nosaltres una adreça d'exemple, 912 00:44:04,149 --> 00:44:06,940 Jo només vaig a fer x-- signe el que hauria d'ajudar a impulsar a casa. 913 00:44:06,940 --> 00:44:07,950 Ampersand significa direcció. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Així, en el primer, tot el món anar amb la primera línia. 916 00:44:12,360 --> 00:44:15,690 Alguns x five-- algun conjunt ranura aleatòria en la memòria. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int indicador de l'estrella és igual a la direcció de x, oi? 919 00:44:23,200 --> 00:44:28,180 Punter estrella Int crea aquest bloc, l'anomena el punter, 920 00:44:28,180 --> 00:44:30,650 i assigna a la direcció de x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Sóc terrible en símbols d'unió. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Ara el que estem fent és que diem Acceptar, suprimir la referència del nostre punter. 925 00:44:40,550 --> 00:44:42,760 Així que anem bé, el que està en el nostre punter? 926 00:44:42,760 --> 00:44:44,820 És símbol d'unió x. 927 00:44:44,820 --> 00:44:49,400 Anar a ampersand x i reassignar. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Així que ara, signe x serà 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Així que, bàsicament, quan estàs eliminació de referències, que vagi bé. 932 00:45:05,174 --> 00:45:07,090 Vostè serà el dibuix foto com aquesta. 933 00:45:07,090 --> 00:45:09,423 Vostè serà el dibuix les seves fletxes sobre on és. 934 00:45:09,423 --> 00:45:16,030 Així que anar a aquesta ranura a la memòria i, o bé dóna'm aquest valor de nou, o alterar-lo. 935 00:45:16,030 --> 00:45:21,620 En aquest cas, pel fet que estem en aquest valor, estem assignant a ser 35. 936 00:45:21,620 --> 00:45:24,700 Mentre que en el passat un, si et fixes, ens 937 00:45:24,700 --> 00:45:27,680 van ser l'assignació del que era aquí a una altra cosa. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Així que tenen aquest quadre impressionant. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 No és tan dolent. 942 00:45:36,890 --> 00:45:37,970 Vostès hi treballa. 943 00:45:37,970 --> 00:45:39,640 Vaig a trucar a terme en el tauler. 944 00:45:39,640 --> 00:45:41,306 Anem a omplir junts, d'acord? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Així que agafa una mica de paper, agafar un soci, començar a treballar. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Vaig a aconseguir un tros de guix. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Com que serà molt. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 Okay. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 PROFESSOR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Anem a començar amb la primera fila. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Anem a començar aquí, llavors vostès potser pot treballar a través d'una mica més. 959 00:48:16,970 --> 00:48:17,870 Okay. 960 00:48:17,870 --> 00:48:19,810 és igual a b c així que el que és un? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 No és una pregunta amb trampa, t'ho prometo. 963 00:48:23,260 --> 00:48:24,440 >> ESTUDIANT: 4 vegades 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESSOR: 4 vegades 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Llavors, ¿què és b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 ESTUDIANT: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> PROFESSOR: I c? 971 00:48:31,043 --> 00:48:31,542 ESTUDIANT: 5. 972 00:48:31,542 --> 00:48:32,083 PROFESSOR: 5. 973 00:48:32,083 --> 00:48:35,960 I llavors aquest és només va a ser un signe, símbol d'unió b, 974 00:48:35,960 --> 00:48:38,575 ampersand c, oi? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 No està malament. 977 00:48:40,596 --> 00:48:42,081 És bastant simple. 978 00:48:42,081 --> 00:48:42,580 Okay. 979 00:48:42,580 --> 00:48:44,300 Així que la següent. 980 00:48:44,300 --> 00:48:48,725 A és igual a vegades c, en cas ningú estava familiaritzat amb això. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Tothom coneix amb els temps és igual a? 983 00:48:53,300 --> 00:49:00,105 Bé, tot això vol dir: això és abreujada d'una és igual de vegades c. 984 00:49:00,105 --> 00:49:04,840 També pot fer-ho amb la divisió, amb l'addició, amb la resta. 985 00:49:04,840 --> 00:49:12,130 Vostè pot fer una iguals, o un punt a favor és igual a c significa que a és igual a un plus c, 1 menys igual 986 00:49:12,130 --> 00:49:15,190 c seria igual a un menys c. 987 00:49:15,190 --> 00:49:16,690 És només el sucre sintàctica. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Per tant, en aquest cas, a és igual a unes vegades c ens ho donarien? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Una vegada més, no és una pregunta amb trampa. 992 00:49:28,186 --> 00:49:28,965 >> ESTUDIANT: 100. 993 00:49:28,965 --> 00:49:29,300 >> PROFESSOR: 100. 994 00:49:29,300 --> 00:49:30,383 Canvia alguna cosa més? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 No 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Potser vaig a aconseguir finalment millor en els meus símbols d'unió. 999 00:49:39,850 --> 00:49:42,047 >> ESTUDIANT: OK, ho sento, com s'obté el 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESSOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Així que a és igual a una vegades c, així que una vegades c. 1002 00:49:46,594 --> 00:49:48,510 ESTUDIANT: Oh, es fan servir una per al previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESSOR: Sí. 1004 00:49:49,135 --> 00:49:51,450 Així que aquests són els nostres valors més recents. 1005 00:49:51,450 --> 00:49:53,990 Aquests són el que ha de ser utilitzant a mesura que avancem cap avall, a D'acord. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Per tant, b és l'única cosa que canvia, no? 1008 00:50:01,520 --> 00:50:02,910 Així que anem a omplir en tota la resta. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Què és b serà? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Ser o no ser. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Llavors, ¿què està fent això? 1015 00:50:20,240 --> 00:50:21,605 Quina és l'estrella pa fer? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> ESTUDIANT: El codi per a la ubicació de pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> ESTUDIANT: No, no del tot. 1020 00:50:27,480 --> 00:50:29,470 Així que aquesta és una referència d. 1021 00:50:29,470 --> 00:50:31,580 >> Estudiant: Llavors b és el valor de la mà de pa. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESSOR: Sí, així és pa la direcció d'una, oi? 1023 00:50:37,340 --> 00:50:42,430 Així que està dient anar a on a és emmagatzemada i donar-li aquest valor. 1024 00:50:42,430 --> 00:50:43,884 Llavors, ¿què és b? 1025 00:50:43,884 --> 00:50:44,425 ESTUDIANT: 100. 1026 00:50:44,425 --> 00:50:46,534 PROFESSOR: 100. 1027 00:50:46,534 --> 00:50:47,450 Perfecte. 1028 00:50:47,450 --> 00:50:49,879 OK, així que la PC és el que està canviant. 1029 00:50:49,879 --> 00:50:51,170 Tota la resta es manté igual. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Què és PC serà? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Assignació simple. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc és igual per randa, i el que és pa? 1036 00:51:05,990 --> 00:51:07,049 >> ESTUDIANT: Ampersand a. 1037 00:51:07,049 --> 00:51:07,840 PROFESSOR: Perfecte. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Ara estem arribant interessant. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, anem a trencar aquest un baix. 1042 00:51:15,230 --> 00:51:21,110 En primer lloc, quin és B vegades c, perquè això és la part fàcil d'aquest un, oi? 1043 00:51:21,110 --> 00:51:22,360 B vegades c és-- 1044 00:51:22,360 --> 00:51:23,320 >> ESTUDIANT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESSOR: Sí, així que el que està fent aquest, 1046 00:51:28,880 --> 00:51:33,705 Si és pb estrella, el que està canviant? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> ESTUDIANT: Què hi ha a ell-- 1049 00:51:37,242 --> 00:51:38,200 PROFESSOR: Què hi ha a B? 1050 00:51:38,200 --> 00:51:41,340 ESTUDIANT: Què hi ha a l'espai que el PP està apuntant. 1051 00:51:41,340 --> 00:51:43,406 PROFESSOR: I PB està apuntant A-- 1052 00:51:43,406 --> 00:51:43,905 ESTUDIANT: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESSOR: B. Així que l'única El que canvia és b, dreta. 1054 00:51:46,740 --> 00:51:50,800 Així b vegades c, 500. 1055 00:51:50,800 --> 00:51:52,367 Així que això és el que canvia ara. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Refredar. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Preciós. 1060 00:52:00,840 --> 00:52:01,905 Vostès estan fent molt bé. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Molt bé, trencant aquest un baix. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C està canviant, no? 1065 00:52:09,630 --> 00:52:11,530 Així que podem omplir en tota la resta. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Anem a veure. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 Okay. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Sabem que c serà la producte de dos nombres, no? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Quins dos nombres, però? 1074 00:52:27,980 --> 00:52:28,970 >> ESTUDIANT: A i C? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESSOR: Llavors a és adequat per a la primera. 1076 00:52:31,930 --> 00:52:34,385 Així que estem fent referència D p d'una, oi? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P d'uns punts a una, així que sabem que això serà 100 vegades més del que? 1079 00:52:42,870 --> 00:52:46,232 Els temps el que fa punt PC a? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Punts a un. 1082 00:52:48,740 --> 00:52:55,038 Així que 100 vegades 100 és 10.000. 1083 00:52:55,038 --> 00:52:56,170 Això té sentit? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Refredar. 1086 00:52:58,200 --> 00:53:00,500 Recta final, nois, última fila. 1087 00:53:00,500 --> 00:53:01,190 Okay. 1088 00:53:01,190 --> 00:53:02,160 Què està canviant en aquesta llista? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> ESTUDIANT: A. 1091 00:53:06,935 --> 00:53:09,435 PROFESSOR: A. perfecte, per la qual cosa tota la resta pot romandre igual. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 Okay. 1094 00:53:16,710 --> 00:53:17,970 I el que és una? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Així que és un moment, ¿què? 1097 00:53:26,060 --> 00:53:27,120 Això és pb estrelles. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Així pb estrella vol dir que aquí està pb, pb a punts b. 1100 00:53:34,490 --> 00:53:35,370 >> ESTUDIANT: 500. 1101 00:53:35,370 --> 00:53:36,230 >> PROFESSOR: 500. 1102 00:53:36,230 --> 00:53:39,236 Així que tenim 500 vegades 100. 1103 00:53:39,236 --> 00:53:41,758 Això és 50.000. 1104 00:53:41,758 --> 00:53:43,216 Sort! 1105 00:53:43,216 --> 00:53:45,646 Mira això. 1106 00:53:45,646 --> 00:53:47,982 >> ESTUDIANT: Per què tenim el & c de la last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESSOR: Ho sentim. 1108 00:53:48,690 --> 00:53:50,080 ESTUDIANT: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESSOR: El meu mal. 1110 00:53:51,600 --> 00:53:52,890 Les porcions de l'escriptura. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Tothom bé? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 No està malament, oi? 1115 00:53:56,660 --> 00:53:58,490 Només es necessita una mica mentre que per a treballar a través. 1116 00:53:58,490 --> 00:54:01,080 Si ho desglossem, entendre el que cada part 1117 00:54:01,080 --> 00:54:03,197 s'està referint com A-- amb tot el que és, 1118 00:54:03,197 --> 00:54:05,780 sí- descompondre a la petita problemes i després es recombinen, 1119 00:54:05,780 --> 00:54:07,345 i vostè pot fer algunes coses impressionants. 1120 00:54:07,345 --> 00:54:08,970 Hi ha les respostes, però ens van fer això. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 L'aritmètica de punters. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Les meves mans són tots calcari. 1126 00:54:15,510 --> 00:54:17,970 Així que sumar o restar int ajusta el punter 1127 00:54:17,970 --> 00:54:21,890 per la grandària de l'tipus de punter. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Recordeu com cada tipus té una mida diferent? 1130 00:54:28,390 --> 00:54:34,890 Així com un doble o un llarg temps és el 08:04, però és int char és un. 1131 00:54:34,890 --> 00:54:38,360 >> Llavors, ¿què vols fer és-- una cosa per recordar 1132 00:54:38,360 --> 00:54:44,080 és només que la quantitat de la seva valor del punter canvia realment 1133 00:54:44,080 --> 00:54:46,550 dependrà de la tipus de punter que és. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Tothom bo amb això? 1136 00:54:51,820 --> 00:54:52,760 Puc esborrar-ho? 1137 00:54:52,760 --> 00:54:53,440 Estem bé? 1138 00:54:53,440 --> 00:54:53,940 Impressionant. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Així que si tenim algun punter que-- això serà: sóc 1141 00:55:07,501 --> 00:55:08,834 farà que sigui un punter int. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Emmagatzema això. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Si hagués de dir punter més un, el que va a fer 1146 00:55:20,170 --> 00:55:23,420 es va a actualitzar per la grandària d'un int 1147 00:55:23,420 --> 00:55:25,950 perquè aquesta és la tipus de punter que és. 1148 00:55:25,950 --> 00:55:28,260 >> Amb C, tot és molt estricte i regulat. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 El punter int va a actualitzar per la quantitat d'espai en un int prendria. 1151 00:55:35,260 --> 00:55:36,260 Un int és de quatre bytes. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Llavors, ¿què seria aquesta volta a? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 No ets més que afegir quatre a aquest. 1156 00:55:44,390 --> 00:55:50,040 Ara el punter podria ser: D'acord. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Així que si es tractava d'un char i ho vam fer punter més un, quin seria ara? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Si started-- fent veure que started-- ara és 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Ara anem a dir que es tractava d'un xerrades punter, i hem afegit una. 1163 00:56:10,850 --> 00:56:11,850 ¿Què faria falta per canviar? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Quants bytes és un char? 1166 00:56:16,030 --> 00:56:16,680 >> AUDIÈNCIA: Un. 1167 00:56:16,680 --> 00:56:17,304 >> ALTAVEU 1: Un. 1168 00:56:17,304 --> 00:56:18,309 AUDIÈNCIA: Així 0x09. 1169 00:56:18,309 --> 00:56:19,600 ALTAVEU 1: Així que seria de nou. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Així que només una mica per recordar. 1172 00:56:23,820 --> 00:56:28,340 Just quan s'agrega un, no és l'addició d'un a menys que sigui un char. 1173 00:56:28,340 --> 00:56:34,190 És l'addició de quants bytes del tipus que és, 1174 00:56:34,190 --> 00:56:36,960 és per això que tenim aquesta equació aquí. 1175 00:56:36,960 --> 00:56:40,190 Així que és int vegades la grandària del tipus de punter. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Així tenim l'exemple aquí. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 i va ser assignat a aquest valor, 0x4, quan ho vam fer ia més és igual a un. 1180 00:56:54,430 --> 00:56:56,830 Què hi ha en ell, el que és en x, no canvia. 1181 00:56:56,830 --> 00:56:58,610 El que sí que canvia és el que està en i. 1182 00:56:58,610 --> 00:57:04,980 La direcció emmagatzemada en i actualitzat per quatre perquè hi ha quatre bytes en un int 1183 00:57:04,980 --> 00:57:06,097 i és un punter int. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Bé. 1186 00:57:07,790 --> 00:57:09,123 Així que ara tenim un altre exercici. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Així que la pregunta és què voleu imprimir. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Alguna idea? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> AUDIÈNCIA: El nombre de personatges de gat feliç? 1193 00:57:43,699 --> 00:57:44,490 ALTAVEU 1: Exactament. 1194 00:57:44,490 --> 00:57:45,531 Així que, com amb la seva cadena. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Tothom aconsegueix això? 1197 00:57:48,260 --> 00:57:49,509 Volem que caminar a través d'ell? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Sí, OK. 1200 00:57:52,010 --> 00:57:57,385 Així que el que hem de aquí-- com això molt més. 1201 00:57:57,385 --> 00:57:59,340 Jo no he de [Inaudible] ridículament. 1202 00:57:59,340 --> 00:58:01,690 >> Així que tenim la nostra cadena aquí, gat feliç. 1203 00:58:01,690 --> 00:58:02,950 Preciós. 1204 00:58:02,950 --> 00:58:05,080 Hem algun comptador que estem no perdre de vista. 1205 00:58:05,080 --> 00:58:11,430 Així que tenim alguns char * punter que només es fixa igual a STR. 1206 00:58:11,430 --> 00:58:14,320 El que això fa és que és l'assignació d'algun punter 1207 00:58:14,320 --> 00:58:16,380 l'inici de la cadena. 1208 00:58:16,380 --> 00:58:19,840 Perquè estic segur, ja que es va esmentar en la conferència, 1209 00:58:19,840 --> 00:58:22,290 els hem donat nois aquest tipus de dades anomenat cadena. 1210 00:58:22,290 --> 00:58:29,070 >> Però en realitat són només cadenes una matriu de-- com char *. 1211 00:58:29,070 --> 00:58:32,330 És un punter a un munt de personatges que són contigües a la memòria. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Així que aquest només estableix que igual a qualsevol cadena és 1214 00:58:36,280 --> 00:58:38,980 identificat per on el seu primer personatge. 1215 00:58:38,980 --> 00:58:42,710 Així que això s'acaba posant algun moment igual al principi de la cadena. 1216 00:58:42,710 --> 00:58:44,130 Tothom bé allà? 1217 00:58:44,130 --> 00:58:44,960 Refredar. 1218 00:58:44,960 --> 00:58:49,840 >> Així que aquesta és la nostra eliminació de referències de punter. 1219 00:58:49,840 --> 00:58:53,760 Així que en realitat va a donar-nos algun valor aquí, 1220 00:58:53,760 --> 00:58:55,610 en la nostra cadena que estem parlant. 1221 00:58:55,610 --> 00:58:58,342 I estem dient tot el temps que no és nul terminador. 1222 00:58:58,342 --> 00:59:00,550 Així que seguir endavant fins a arribar al final de la cadena. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Actualitzi el seu punter per un. 1225 00:59:04,190 --> 00:59:09,250 Així r, s'actualitzarà en realitat per un cada vegada, perquè aquest és un char, 1226 00:59:09,250 --> 00:59:09,820 el char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Així que passarà. 1229 00:59:12,340 --> 00:59:13,290 Es va a actualitzar. 1230 00:59:13,290 --> 00:59:16,705 Així que la primera vegada que això passa, que estarà aquí a les h. 1231 00:59:16,705 --> 00:59:17,590 Es va a actualitzar. 1232 00:59:17,590 --> 00:59:18,185 >> Serà un a. 1233 00:59:18,185 --> 00:59:21,310 Serà una p, i, i així successivament i així successivament. 1234 00:59:21,310 --> 00:59:22,300 Anem a actualitzar taulell. 1235 00:59:22,300 --> 00:59:26,160 Quan arriba al final, només imprimeix fins a quin punt s'ha tornat. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Sí. 1238 00:59:28,050 --> 00:59:31,475 >> AUDIÈNCIA: Així Compte l'espai com un, oi? 1239 00:59:31,475 --> 00:59:31,974 Okay. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> ALTAVEU 1: Penseu en això. 1242 00:59:35,222 --> 00:59:36,830 Això és una pregunta-- 1243 00:59:36,830 --> 00:59:37,746 >> AUDIÈNCIA: [inaudible]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> ALTAVEU 1: No es preocupi. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Això ho faig. 1248 00:59:42,736 --> 00:59:47,710 Molt bé, així que l'únic que entendre és que amb una matriu, 1249 00:59:47,710 --> 00:59:51,736 també es pot tractar com un punter perquè matrius són només 1250 00:59:51,736 --> 00:59:52,860 taques contínues de memòria. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Així que vostè pot tractar de la mateixa manera. 1253 00:59:56,380 --> 00:59:59,000 Vostè pot manipular amb punters, també. 1254 00:59:59,000 --> 01:00:04,770 Així que en comptes de fer, en aquest cas, la cosa anàloga 1255 01:00:04,770 --> 01:00:07,490 seria array 0 és igual a 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Però de la mateixa manera que una cadena es determina 1258 01:00:15,210 --> 01:00:18,740 per l'inici d'on el seu primer personatge és, 1259 01:00:18,740 --> 01:00:22,270 una matriu està determinat per on el seu primer element és. 1260 01:00:22,270 --> 01:00:25,120 Perquè sabem, estem garantit, que aquests 1261 01:00:25,120 --> 01:00:27,985 seran contínua blocs de memòria. 1262 01:00:27,985 --> 01:00:29,360 Això és el que ens permet fer això. 1263 01:00:29,360 --> 01:00:31,193 Sabem que estan contínua blocs de memòria. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Així que en aquest cas, per eliminació de referències només matriu, que ens diu: 1266 01:00:36,500 --> 01:00:40,800 Acceptar, aneu a l'inici de la seva matriu, que és aquí. 1267 01:00:40,800 --> 01:00:42,640 Així que vostè pot configurar igual a un. 1268 01:00:42,640 --> 01:00:48,610 I en aquest cas, sigui quina sigui la seva matriu tipus és, en actualitzar per un, 1269 01:00:48,610 --> 01:00:50,830 això és igual que l'actualització al següent índex. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Vostè pot fer això perquè vostè saber el que hi ha a la matriu. 1272 01:00:56,360 --> 01:00:59,770 Per tant, sap quant Actualitza el teu punter, 1273 01:00:59,770 --> 01:01:02,925 la qual cosa la direcció d'actualitzar a tan que vostè està en la següent ranura. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Així que això és només una forma diferent de l'escriptura matriu 0 és igual a 1, 1276 01:01:09,400 --> 01:01:15,114 matriu 1 és igual a 2, sèrie el suport 2 és igual a 3. 1277 01:01:15,114 --> 01:01:16,780 És només una altra manera de pensar-hi. 1278 01:01:16,780 --> 01:01:19,600 Com que són contínues blocs en memòria, 1279 01:01:19,600 --> 01:01:21,830 pot fer referència a ells, ja sigui per la matriu notation-- 1280 01:01:21,830 --> 01:01:24,390 que jo personalment trobar easier-- però potser 1281 01:01:24,390 --> 01:01:27,347 que necessita per manipular- estrictament per les direccions de memòria. 1282 01:01:27,347 --> 01:01:28,930 I aquesta és la forma en què ho faries. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Una cosa així com una més de El millor que podria fer 1285 01:01:32,630 --> 01:01:35,213 davant potser no alguna cosa que et en realitat va a implementar. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Jo el faig servir en el 61. 1288 01:01:38,630 --> 01:01:41,710 Vostès probablement no necessitis de preocupar massa. 1289 01:01:41,710 --> 01:01:43,693 Però si vostè està interessat, tenir 61 anys després. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Estem en els nois recta final. 1292 01:01:46,560 --> 01:01:47,510 Jo sé, és llarga. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Memòria Dinàmica Allocation-- així que sabem que un 1295 01:01:58,880 --> 01:02:01,790 de les coses quan parlem durant la nostra primera secció junts, 1296 01:02:01,790 --> 01:02:04,560 ens fixem en un canvi funció d'on estava 1297 01:02:04,560 --> 01:02:08,010 fora de l'abast de la nostra funció principal. 1298 01:02:08,010 --> 01:02:14,370 I estàvem passant en aquests valors que eren efectivament còpies. 1299 01:02:14,370 --> 01:02:20,570 >> I un cop acabat d'intercanvi execució, que acaba de sortir d'una pila. 1300 01:02:20,570 --> 01:02:22,830 Recordeu que tenim una apilar marc d'intercanvi. 1301 01:02:22,830 --> 01:02:26,070 Deixa i als els valors se'n van amb ell. 1302 01:02:26,070 --> 01:02:27,050 I se'n van anar. 1303 01:02:27,050 --> 01:02:28,615 No podíem fer res amb ells i ens va entristir 1304 01:02:28,615 --> 01:02:29,989 perquè no podem canviar els nostres valors. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Però amb C, com ja he esmentat, que tenir una gran quantitat de poder sobre la memòria. 1307 01:02:36,560 --> 01:02:43,310 Així que el que pot fer vostè és pot assignar les coses en el munt aquí 1308 01:02:43,310 --> 01:02:46,830 que es quedaran allà fins vostè els diu el contrari. 1309 01:02:46,830 --> 01:02:48,280 >> Són com nens bons. 1310 01:02:48,280 --> 01:02:49,150 Es queden allà. 1311 01:02:49,150 --> 01:02:50,270 No deixen. 1312 01:02:50,270 --> 01:02:52,750 Es quedaran allà fins que estigui com, OK, pot anar-se'n. 1313 01:02:52,750 --> 01:02:55,920 >> Mentre que les coses a la pila, que-- són com nens entremaliats. 1314 01:02:55,920 --> 01:02:59,160 Ells només fugen quan vulgui ser-hi i després se'n van. 1315 01:02:59,160 --> 01:03:00,160 Vostè no pot recuperar-los. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Així que el munt és-- anem a parlar de malloc i lliure, que 1318 01:03:07,187 --> 01:03:08,895 Estic segur que els nois sentit parlar en la conferència. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 I això és bàsicament una manera per tenir dades molt persistents. 1321 01:03:14,210 --> 01:03:18,920 Així que vostè pot mantenir les dades al voltant de tot el temps que vulguis. 1322 01:03:18,920 --> 01:03:19,546 MHM. 1323 01:03:19,546 --> 01:03:21,475 >> AUDIÈNCIA: Pots definir el munt i la pila? 1324 01:03:21,475 --> 01:03:24,030 Són com a llocs per a posar les coses? 1325 01:03:24,030 --> 01:03:26,630 >> ALTAVEU 1: Així que són bàsicament sol-- són 1326 01:03:26,630 --> 01:03:29,530 la forma en què ens referim només a la memòria. 1327 01:03:29,530 --> 01:03:37,300 Així munt es col·loca just on memòria s'assigna de forma dinàmica, 1328 01:03:37,300 --> 01:03:40,960 mentre que la pila es refereix més per a marcs de pila 1329 01:03:40,960 --> 01:03:45,950 que són més central a la funcions que s'executen en realitat. 1330 01:03:45,950 --> 01:03:47,200 Segur que no té control. 1331 01:03:47,200 --> 01:03:50,690 >> La gran diferència, vostè té el control sobre el munt si vols. 1332 01:03:50,690 --> 01:03:52,710 Vostè té menys control sobre la pila. 1333 01:03:52,710 --> 01:03:55,030 La pila depèn de la funcions que s'estan executant, 1334 01:03:55,030 --> 01:03:58,320 i l'ordre en el que són funcionen, i com es retornen les coses. 1335 01:03:58,320 --> 01:04:01,290 Mentre que amb el munt, com anem a veure, es pot dir, 1336 01:04:01,290 --> 01:04:06,639 OK, jo vull que aquest valor sigui voltant fins que et digui el contrari. 1337 01:04:06,639 --> 01:04:08,180 No està autoritzat a desfer-se'n. 1338 01:04:08,180 --> 01:04:09,300 No està autoritzat a anul·lar-lo. 1339 01:04:09,300 --> 01:04:11,675 Vostè va a mantenir al voltant de durant el temps que jo et digui. 1340 01:04:11,675 --> 01:04:15,780 Tens l'oportunitat de ser el cap en el munt, mentre que el stack-- potser si 1341 01:04:15,780 --> 01:04:18,080 com Finagle el seu camí pot ser el cap. 1342 01:04:18,080 --> 01:04:19,340 Però no del tot. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 I no deixa de ser la memòria. 1345 01:04:22,070 --> 01:04:24,260 És només diferents maneres de referir-se a la memòria. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Refredar. 1348 01:04:26,400 --> 01:04:28,630 Així que amb això, com controlar la seva memòria. 1349 01:04:28,630 --> 01:04:32,070 És amb malloc, que vostè va a arribar a utilitzar. 1350 01:04:32,070 --> 01:04:37,100 Així que és només a curt per a l'assignació de memòria. 1351 01:04:37,100 --> 01:04:38,459 Això és tot el que és. 1352 01:04:38,459 --> 01:04:41,250 Hi ha un munt d'altres fresc funcions que tenen Alloc al final, 1353 01:04:41,250 --> 01:04:42,750 i que representen diferents coses. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Així que quan vostè necessita d'emmagatzematge que necessita per sobreviure a la seva funció actual, de manera 1356 01:04:49,050 --> 01:04:51,010 que quan el seu actual funció fuig, 1357 01:04:51,010 --> 01:04:55,774 vostè encara ha les dades que té d'ell, que voleu utilitzar malloc. 1358 01:04:55,774 --> 01:04:57,190 Això va a inicialitzar en el munt. 1359 01:04:57,190 --> 01:05:00,140 I com he dit i segueixo dient, podràs mantenir-hi 1360 01:05:00,140 --> 01:05:03,050 fins que vostè li indiqui el contrari, que és l'important aquí. 1361 01:05:03,050 --> 01:05:08,450 >> Així que una cosa a notar, i això és en general molt important, 1362 01:05:08,450 --> 01:05:13,620 és que aquest sizeof és super útil fer servir 1363 01:05:13,620 --> 01:05:16,440 ja que depenent del tipus de de la màquina que s'està executant, 1364 01:05:16,440 --> 01:05:22,470 pot tenir quantitats variables de la memòria que es necessita. 1365 01:05:22,470 --> 01:05:26,870 Així que sempre es vol utilitzar la mida del que que no és depenent de la màquina, 1366 01:05:26,870 --> 01:05:30,300 perquè el seu codi serà executar en qualsevol màquina. 1367 01:05:30,300 --> 01:05:32,360 >> I això és només part d'escriure bon codi. 1368 01:05:32,360 --> 01:05:34,610 Si funciona en una màquina, però no qualsevol dels altres, 1369 01:05:34,610 --> 01:05:36,440 Què tan útil va ser el seu programa? 1370 01:05:36,440 --> 01:05:38,420 Així que un sempre vol vos d'usar i sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> AUDIÈNCIA: Així és que igual que la grandària de 10 polzades [inaudible]? 1372 01:05:41,306 --> 01:05:43,698 >> ALTAVEU 1: Aquest és la mida de 10 punts. 1373 01:05:43,698 --> 01:05:44,197 si. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Així que la mida de sencers tornarà quant pot prendre int. 1376 01:05:48,830 --> 01:05:51,530 O la mida de char, com Quant costa una sola presa Char. 1377 01:05:51,530 --> 01:05:54,150 I a continuació, el nombre de blocs que és el que vols? 1378 01:05:54,150 --> 01:05:57,590 >> Així que en aquest cas, volem alguna cosa que podem emmagatzemar 10 punts a. 1379 01:05:57,590 --> 01:06:00,240 I va a treballar independentment de la màquina, la qual cosa és genial. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Llavors, ¿quants bytes que en realitat li donarà? 1382 01:06:04,846 --> 01:06:06,190 Matemàtiques ràpida. 1383 01:06:06,190 --> 01:06:06,787 >> AUDIÈNCIA: 40. 1384 01:06:06,787 --> 01:06:07,370 ALTAVEU 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Exactament. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Així que una altra cosa gran. 1388 01:06:12,030 --> 01:06:14,840 Punter o malloc poden retornar null. 1389 01:06:14,840 --> 01:06:17,910 >> Així que de nou, sempre consulti al veure si es torna nul 1390 01:06:17,910 --> 01:06:19,620 abans de tractar de fer res amb ella. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Si tractes d'eliminar la referència aquest punter ara, 1393 01:06:27,350 --> 01:06:29,720 que només va a segfault perquè et vas i provat 1394 01:06:29,720 --> 01:06:31,730 tocar nul·la quan vostè no ha de tenir. 1395 01:06:31,730 --> 01:06:34,000 Així que sempre comprovar nul·la. 1396 01:06:34,000 --> 01:06:36,075 Un cop més, tot el que pot fer. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Pot tornar null. 1399 01:06:39,720 --> 01:06:42,740 Es tornarà nul·la si estàs bé sense espai, o per qualsevol raó 1400 01:06:42,740 --> 01:06:44,350 es va topar amb alguns errors de memòria. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 De vegades només retorna un valor nul. 1403 01:06:47,510 --> 01:06:48,990 Així que només cal comprovar per a això. 1404 01:06:48,990 --> 01:06:51,050 Això és tot aquesta diapositiva està dient. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 I llavors el que tenim aquí és una crida a alliberar. 1407 01:06:55,240 --> 01:07:00,550 Així que de la mateixa manera que si obrir un arxiu és necessari tancar un arxiu, 1408 01:07:00,550 --> 01:07:04,340 si la memòria malloc, que Has alliberar-te de que la memòria. 1409 01:07:04,340 --> 01:07:06,530 I vostès aconseguiran per fer coses realment cool. 1410 01:07:06,530 --> 01:07:09,624 >> I hi ha un programa que es pot executar a veure si alguna vegada la fuga de memòria. 1411 01:07:09,624 --> 01:07:11,040 Però no vol perdre memòria. 1412 01:07:11,040 --> 01:07:11,820 És realment dolent. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 A només espatllar les coses. 1415 01:07:15,020 --> 01:07:20,939 >> És dolent per a fer el mateix que la programació savi per a l'eficiència del disseny. 1416 01:07:20,939 --> 01:07:22,980 Però també és només una mica de dolent per al seu equip. 1417 01:07:22,980 --> 01:07:26,780 Així les coses simplement gratuïtes quan malloc ells. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Vostès veuen el simetries aquí. 1420 01:07:30,210 --> 01:07:31,180 Súper simple. 1421 01:07:31,180 --> 01:07:33,010 Tot just lliure i després qualsevol que sigui el punter, 1422 01:07:33,010 --> 01:07:34,843 qualsevol que sigui el nom de el punter és, i 1423 01:07:34,843 --> 01:07:36,710 s'encarregarà d'alliberar per vostè. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Refredar. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Després tenim això. 1428 01:07:42,530 --> 01:07:44,770 Així que només anem a caminar a través d'aquest programa. 1429 01:07:44,770 --> 01:07:46,560 I després es fan vostès. 1430 01:07:46,560 --> 01:07:50,240 >> Així que [inaudible] només principal. 1431 01:07:50,240 --> 01:07:51,690 Així que tenim una mica de punter int *. 1432 01:07:51,690 --> 01:07:53,648 Així que tenim un punter això va a celebrar sencers. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 I quants enters es va a celebrar? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Només un. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Mida d'un int. 1439 01:08:01,100 --> 01:08:03,900 >> Verifiquem si punter és nul perquè 1440 01:08:03,900 --> 01:08:06,130 És a dir, volem dir que no fer res. 1441 01:08:06,130 --> 01:08:07,065 És dolent. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Així és la impressió d'un cert error de memòria, el més sovint tornen 1, 1444 01:08:12,130 --> 01:08:14,260 com vostès estan acostumats. 1445 01:08:14,260 --> 01:08:17,390 >> I després tenim aquí, eliminar la referència del nostre punter. 1446 01:08:17,390 --> 01:08:22,840 Així que això significa que anem a emmagatzemar alguna cosa en el lloc que ens ha donat. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * punter, o malloc, retorna el direcció d'on a un costat aquest 1449 01:08:30,830 --> 01:08:31,750 memòria per a vostè. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Així que és bàsicament donant-li com-- si 1452 01:08:34,800 --> 01:08:38,149 pensar en un munt de cases en un barri 1453 01:08:38,149 --> 01:08:40,640 que vostè vol posar seus mobles a, malloc 1454 01:08:40,640 --> 01:08:43,850 és com Acceptar, s'obté per anar a la casa de tres. 1455 01:08:43,850 --> 01:08:45,800 I és que la dóna direcció de la casa de tres. 1456 01:08:45,800 --> 01:08:48,775 >> Així que això ara mateix, aquesta botigues punter una adreça, 1457 01:08:48,775 --> 01:08:50,149 emmagatzema l'adreça de casa. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * Mitjans PTR, OK, estic a casa meva. 1460 01:08:54,640 --> 01:08:55,326 Refredar. 1461 01:08:55,326 --> 01:08:56,580 Necessito aconseguir algun sencer. 1462 01:08:56,580 --> 01:08:59,229 >> Així que vostè està demanant a algú per donar-li mobles ara. 1463 01:08:59,229 --> 01:09:00,430 Perquè pugui obtenir algun int. 1464 01:09:00,430 --> 01:09:05,100 I ho posa en el punter on està assenyalant. 1465 01:09:05,100 --> 01:09:08,670 >> I llavors, només s'imprimeix a terme, sempre que sigui introduïda. 1466 01:09:08,670 --> 01:09:11,060 I de nou, la referència. 1467 01:09:11,060 --> 01:09:15,649 Així que això és com vostè va anar a aquesta DIRECCIÓ I vostè va veure el que hi havia. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Fresc? 1470 01:09:17,630 --> 01:09:20,174 >> I després, per descomptat, ens alliberem del nostre punter. 1471 01:09:20,174 --> 01:09:21,590 No us oblideu de alliberar el punter. 1472 01:09:21,590 --> 01:09:22,933 No us oblideu de comprovar la nul·la. 1473 01:09:22,933 --> 01:09:24,349 No us oblideu de alliberar el punter. 1474 01:09:24,349 --> 01:09:27,270 Vostè ha dues coses que vostè recorda de això, o que ha de recordar. 1475 01:09:27,270 --> 01:09:27,770 Sí. 1476 01:09:27,770 --> 01:09:31,590 AUDIÈNCIA: [inaudible] coses així, el char * s. 1477 01:09:31,590 --> 01:09:33,760 Com és que mai alliberem aquests? 1478 01:09:33,760 --> 01:09:34,529 >> ALTAVEU 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> AUDIÈNCIA: Són aquells que, com cordes? 1480 01:09:36,450 --> 01:09:39,160 Vostè va dir que les cadenes són igual que char * s, no? 1481 01:09:39,160 --> 01:09:41,200 Llavors, ¿per què no ens alliberem cadenes? 1482 01:09:41,200 --> 01:09:43,204 >> ALTAVEU 1: Només per lliure si vostè està mallocing. 1483 01:09:43,204 --> 01:09:44,620 AUDIÈNCIA: Oh, si vostè està mallocing. 1484 01:09:44,620 --> 01:09:47,399 ALTAVEU 1: Així que malloc i lliure són dues coses 1485 01:09:47,399 --> 01:09:49,000 que sempre s'ha de tenir junts. 1486 01:09:49,000 --> 01:09:51,630 f obert, prop de f, dues coses vostè ha de tenir junts. 1487 01:09:51,630 --> 01:09:54,471 En ambdós casos, per comprovar nul·la. 1488 01:09:54,471 --> 01:09:54,971 Sí. 1489 01:09:54,971 --> 01:09:57,130 >> AUDIÈNCIA: Així és lliure només permetent una mica més 1490 01:09:57,130 --> 01:09:59,690 per a ser emmagatzemats allí després de aquest programa l'ha utilitzat? 1491 01:09:59,690 --> 01:10:01,946 >> ALTAVEU 1: S'acaba dient: Bé, he acabat amb això. 1492 01:10:01,946 --> 01:10:03,320 No és necessari per mantenir-lo al voltant. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 En cas contrari, l'equip ho farà Igual que tractar de mantenir-hi. 1495 01:10:08,190 --> 01:10:10,910 I llavors vostè can't-- s'executa en problemes de memòria més endavant. 1496 01:10:10,910 --> 01:10:13,660 Un sempre vol alliberar perquè que li diu al seu equip, està bé, estic 1497 01:10:13,660 --> 01:10:15,190 fet amb aquest lloc de la memòria. 1498 01:10:15,190 --> 01:10:17,190 Vostè pot haver de tornar per a mi a fer servir més tard. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Fresc? 1501 01:10:20,500 --> 01:10:21,320 Sí. 1502 01:10:21,320 --> 01:10:26,950 >> AUDIÈNCIA: Així que fem servir el% d només perquè un doble que va a tornar, 1503 01:10:26,950 --> 01:10:28,330 o per què és- [inaudible]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> AUDIÈNCIA: Es pot utilitzar% i? 1506 01:10:31,620 --> 01:10:32,760 >> ALTAVEU 1: Podeu utilitzar% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Per a qualsevol dubte d'última hora? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Seguir endavant. 1511 01:10:38,985 --> 01:10:40,610 AUDIÈNCIA: Només tinc una pregunta ràpida. 1512 01:10:40,610 --> 01:10:50,200 Així que la variable ptr, Això és-- com, amb la int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 això és només dient que és apuntant a un lloc en memory-- 1514 01:10:54,142 --> 01:10:55,600 ALTAVEU 1: Vols [inaudible]? 1515 01:10:55,600 --> 01:10:58,050 AUDIÈNCIA: --que és la mida de-- no, està bé. 1516 01:10:58,050 --> 01:11:01,292 Però és només apuntant a un lloc en memòria que és com quatre bytes. 1517 01:11:01,292 --> 01:11:02,000 ALTAVEU 1: Dret. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Així malloc la mida de int diu, OK, jo vaig a anar a córrer fora, 1520 01:11:07,070 --> 01:11:08,780 trobar quatre octets de memòria per a vostè. 1521 01:11:08,780 --> 01:11:10,700 Quan troba que 4 bytes de la memòria, 1522 01:11:10,700 --> 01:11:14,030 li dóna una còpia de la direcció d'on comença, 1523 01:11:14,030 --> 01:11:16,160 i això és el que emmagatzema a punter, o PTR. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Bé. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Vostès miren menys confusa que la majoria la gent quan parlo de punter, 1528 01:11:21,700 --> 01:11:23,670 així que em sento molt bé en aquest moment. 1529 01:11:23,670 --> 01:11:24,520 >> Bé. 1530 01:11:24,520 --> 01:11:27,960 Com sempre, vostès han de tenir tots aconseguit els seus qualificacions PSet2 per ara. 1531 01:11:27,960 --> 01:11:32,769 Sé que hi ha hagut una certa wonky coses on diu, fórmula no és vàlida 1532 01:11:32,769 --> 01:11:33,310 o alguna cosa així. 1533 01:11:33,310 --> 01:11:36,166 Si vostè està aconseguint que, tots les seves qualificacions són vàlides del meu costat. 1534 01:11:36,166 --> 01:11:38,040 Així que et puc enviar captures de pantalla de les teves qualificacions. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Només m'ho dius a mi saber així si ets falta cap graus o alguna cosa 1537 01:11:41,760 --> 01:11:43,060 no sembla tenir sentit. 1538 01:11:43,060 --> 01:11:43,720 Vine a mi. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> He estat molt orgullós de tu nois ja, així que segueixin així. 1541 01:11:48,830 --> 01:11:50,640 I tenir un bon descans de la setmana. 1542 01:11:50,640 --> 01:11:53,440 Estic segur que vaig a veure una mica de que en hores d'oficina. 1543 01:11:53,440 --> 01:11:55,414