1 00:00:00,000 --> 00:00:04,875 2 00:00:04,875 --> 00:00:05,750 ANDI Pengo: Todo ben. 3 00:00:05,750 --> 00:00:08,240 Benvido á cuarta semana de sección. 4 00:00:08,240 --> 00:00:10,280 É un fermoso día aquí en New Haven 5 00:00:10,280 --> 00:00:14,370 entón eu realmente creo que a escasa dispersión dos nenos que 6 00:00:14,370 --> 00:00:17,530 uniuse a min para sección hoxe, grazas. 7 00:00:17,530 --> 00:00:21,517 >> Entón, rapidamente, pouco antes de comezar, a axenda para hoxe. 8 00:00:21,517 --> 00:00:23,600 Nós imos pasar por riba de un algúns anuncios breves. 9 00:00:23,600 --> 00:00:26,224 Temos unha programación realmente tolo chegando nas próximas dúas semanas 10 00:00:26,224 --> 00:00:28,010 ou así así que imos ir sobre iso. 11 00:00:28,010 --> 00:00:30,410 En segundo lugar, sei topic-- favorito de todos 12 00:00:30,410 --> 00:00:33,572 Estou seguro que iso derreteu súa mente durante charla, non se preocupe, 13 00:00:33,572 --> 00:00:34,780 Eu tipo de non obtelo. 14 00:00:34,780 --> 00:00:35,444 É moi ben. 15 00:00:35,444 --> 00:00:36,110 Iso foi unha broma. 16 00:00:36,110 --> 00:00:37,450 Realmente facer obtelo. 17 00:00:37,450 --> 00:00:40,234 Pero eu vou estar seguro de que vostedes obtelo, tamén. 18 00:00:40,234 --> 00:00:42,400 Entón, nós imos gastar un realmente, realmente bo valor 19 00:00:42,400 --> 00:00:44,020 tempo falando punteiro hoxe. 20 00:00:44,020 --> 00:00:47,012 Como verás, doces de Discusión é enorme hoxe. 21 00:00:47,012 --> 00:00:49,220 Nós realmente estamos indo a mantê- isso-- si, iso é certo. 22 00:00:49,220 --> 00:00:49,890 Continúe a tomar doces. 23 00:00:49,890 --> 00:00:51,556 Vou pasalas ao redor agora. 24 00:00:51,556 --> 00:00:55,150 25 00:00:55,150 --> 00:00:56,510 Sen preocupacións. 26 00:00:56,510 --> 00:00:59,570 Nós imos realmente tentar para manter o azucre no sangue da xente 27 00:00:59,570 --> 00:01:04,390 porque o cerebro vai queimar un pouco de osíxeno hoxe porque punteiros 28 00:01:04,390 --> 00:01:05,652 son moi, moi difícil. 29 00:01:05,652 --> 00:01:08,360 Entón imos falar sobre xestión de memoria que é tipo de 30 00:01:08,360 --> 00:01:09,487 no mesmo reino. 31 00:01:09,487 --> 00:01:11,570 E nós estamos indo a ir para redirección e arquivo 32 00:01:11,570 --> 00:01:15,297 E /, que son só sintaxe, agradable cousas que deberiamos falar. 33 00:01:15,297 --> 00:01:17,130 E entón, finalmente, eu son vai unha vez 34 00:01:17,130 --> 00:01:19,070 deixar como 10, de 15 minutos para PSet4. 35 00:01:19,070 --> 00:01:21,820 Isto é debido en poucos días, entón estamos vai realmente darlle unha especie de 36 00:01:21,820 --> 00:01:24,850 algúns consellos útiles se xa comezou con iso. 37 00:01:24,850 --> 00:01:26,141 Legal. 38 00:01:26,141 --> 00:01:26,640 Aceptar. 39 00:01:26,640 --> 00:01:30,710 Así, algúns anuncios para esta semana. 40 00:01:30,710 --> 00:01:31,805 Grading. 41 00:01:31,805 --> 00:01:33,930 Eu realmente non sei en Neste punto, cantos de vós 42 00:01:33,930 --> 00:01:37,180 caras son realmente na miña section-- vostede Aceptar alí? 43 00:01:37,180 --> 00:01:38,020 Aceptar. 44 00:01:38,020 --> 00:01:40,150 Pero, para aqueles de vostedes que están na miña sección, 45 00:01:40,150 --> 00:01:42,180 só un par comenta clasificación. 46 00:01:42,180 --> 00:01:44,899 >> Primeiro traballo realmente bo, de comentar. 47 00:01:44,899 --> 00:01:47,940 Aqueles de vostedes que non comentamos, ten sabe quen é vostede porque probablemente 48 00:01:47,940 --> 00:01:50,610 ten algúns puntos de estilo dinged esta semana. 49 00:01:50,610 --> 00:01:53,920 Só asegúrese de que, en todo o seu programas de engadir un par de comentarios. 50 00:01:53,920 --> 00:01:56,960 Realmente, o estilo é realmente fácil de obter puntos correctos como un ámbito de aplicación. 51 00:01:56,960 --> 00:01:58,710 Polo tanto, para nós, pode facer Asegúrese de que vostede é do tipo 52 00:01:58,710 --> 00:02:03,770 adición dunha breve descrición en todos seus programas sobre o que está facendo. 53 00:02:03,770 --> 00:02:09,190 >> Secondly-- este é un enorme problema para unha morea de TAS este week-- pasado 54 00:02:09,190 --> 00:02:12,020 polo tanto asegúrese de que está cargando a o cartafol correcta con correctamente 55 00:02:12,020 --> 00:02:13,370 programas nomeados. 56 00:02:13,370 --> 00:02:16,820 E a razón pola que se require para iso é porque, no ámbito da clasificación, 57 00:02:16,820 --> 00:02:20,820 realmente executar un script no seu código que baixa automaticamente 58 00:02:20,820 --> 00:02:24,780 todos os seus Serie de exercicios, corre probas de exactitude de todos eles, 59 00:02:24,780 --> 00:02:27,550 e logo leva súas puntuacións directamente ao libro de notas. 60 00:02:27,550 --> 00:02:32,140 Con todo, en calquera punto, se nomeou o seu programa incorrectamente, 61 00:02:32,140 --> 00:02:34,510 el parafusos ata a completa programa para todos. 62 00:02:34,510 --> 00:02:37,280 >> E así, lexitimamente, este guión bonito 63 00:02:37,280 --> 00:02:40,260 que temos escrito que fai todo isto para nós, completamente 64 00:02:40,260 --> 00:02:43,070 fallo se non ten seu programa nomeado correctamente. 65 00:02:43,070 --> 00:02:46,020 Entón, só tes que facer a carga para o correcto cartafol, telos chamado correctamente, 66 00:02:46,020 --> 00:02:47,372 e, a continuación, a vida é boa. 67 00:02:47,372 --> 00:02:49,080 Recibe seus Serie de exercicios de volta para vós anteriores 68 00:02:49,080 --> 00:02:51,110 porque eu comezo a clasificalos los rapidamente. 69 00:02:51,110 --> 00:02:52,461 Si. 70 00:02:52,461 --> 00:02:52,960 Aceptar. 71 00:02:52,960 --> 00:02:57,870 E tamén imos falar about-- Yale ten un moi, moi 72 00:02:57,870 --> 00:02:59,950 calendario maluco nestas próximas dúas semanas. 73 00:02:59,950 --> 00:03:02,460 Así, aqueles de vostedes en Harvard, isto non se aplica. 74 00:03:02,460 --> 00:03:05,585 Pero para nós fillos adoráveis ​​en Yale temos algo chamado caída break-- sorry, 75 00:03:05,585 --> 00:03:08,430 Harvard-- onde temos cinco días de descanso da escola. 76 00:03:08,430 --> 00:03:12,270 E mentres tanto é encantador, tipo de meses ata o noso ritmo pset 77 00:03:12,270 --> 00:03:14,104 Serie de exercicios porque son debidos xoves, venres. 78 00:03:14,104 --> 00:03:16,020 E por iso, se non estamos aquí Xoves, venres, nós 79 00:03:16,020 --> 00:03:18,640 Non podes ter traballo para vostedes debido o xoves, venres. 80 00:03:18,640 --> 00:03:23,832 >> Entón o que nós imos facer é-- estamos como o 99% seguro de que este é o que está pasando, 81 00:03:23,832 --> 00:03:25,540 pode haber algunha cambiar, pero eu creo que é 82 00:03:25,540 --> 00:03:28,460 subtle-- é que imos have-- esta semana é normal. 83 00:03:28,460 --> 00:03:32,130 Polo tanto, temos a nosa sección sobre Martes seguido horas de expediente 84 00:03:32,130 --> 00:03:35,190 durante todo o resto da semana e, a continuación, PSet4 débese o venres. 85 00:03:35,190 --> 00:03:38,180 Entón, como vostedes todos saben, como Eu lembrei a vostedes a semana pasada, 86 00:03:38,180 --> 00:03:41,700 temos o noso quiz 0 chegando o mércores. 87 00:03:41,700 --> 00:03:44,400 >> E así, sendo un estudante min, Sei que moi poucos de vostedes 88 00:03:44,400 --> 00:03:49,110 caras van realmente estar traballando pset5 os dous días antes do seu quiz. 89 00:03:49,110 --> 00:03:51,110 Entón, o que nós estamos indo a probablemente acaban facendo é, 90 00:03:51,110 --> 00:03:54,840 que na noite de onte, imos realmente, 05:30 - 07:00, 91 00:03:54,840 --> 00:03:59,970 ter unha breve revisión sesión sobre temas cubertos. 92 00:03:59,970 --> 00:04:02,040 Claro se é unha avaliar sesión ou un Q & A. 93 00:04:02,040 --> 00:04:04,650 Será algún tipo de avaliación forma en que nós imos cubrir 94 00:04:04,650 --> 00:04:06,640 algúns temas relevantes para vós. 95 00:04:06,640 --> 00:04:09,886 >> E despois de luns e martes noites desa semana 8: 00-11: 00, 96 00:04:09,886 --> 00:04:11,260 nós imos ter o horario de oficina. 97 00:04:11,260 --> 00:04:14,500 Estas horas de expediente será máis probablemente será máis acabado de entrar, 98 00:04:14,500 --> 00:04:17,564 TAS preguntar as súas dúbidas sobre calquera conceptos que está confuso sobre, 99 00:04:17,564 --> 00:04:20,480 e tipo de pasar por riba contigo e revisar conceptos ao quiz. 100 00:04:20,480 --> 00:04:22,920 Cuestionario 0, se está no Luns, sección mércores 101 00:04:22,920 --> 00:04:26,480 Mércores será de durante class-- o mércores durante a clase. 102 00:04:26,480 --> 00:04:29,530 E entón, se está no Martes, a sección de xoves, 103 00:04:29,530 --> 00:04:32,577 será tamén durante a clase o xoves. 104 00:04:32,577 --> 00:04:34,410 Realmente non pode escoller cal deles vai para. 105 00:04:34,410 --> 00:04:35,640 Se é un luns, mércores, ten que ir mércores. 106 00:04:35,640 --> 00:04:38,056 Se é o martes, Xoves ten que ir a xoves. 107 00:04:38,056 --> 00:04:42,277 Pero, entón, aquela noite, nós encantador equipo, vai 108 00:04:42,277 --> 00:04:45,360 ter un quiz xigante clasificación festa en que nós imos chegar a súa puntuación de volta para ti 109 00:04:45,360 --> 00:04:46,190 aquela noite. 110 00:04:46,190 --> 00:04:46,900 A que hora? 111 00:04:46,900 --> 00:04:51,190 Por suposto, quen sabe, pero vai estar de volta a vostede en 24 horas 112 00:04:51,190 --> 00:04:53,700 de xeito que vostedes esperanza ter un feedback ata o venres. 113 00:04:53,700 --> 00:04:55,870 >> E entón temos unha semana realmente tolo. 114 00:04:55,870 --> 00:05:00,330 Así pset5 é un dos Serie de exercicios máis difíciles do ano. 115 00:05:00,330 --> 00:05:03,370 Caras sinto moito. 116 00:05:03,370 --> 00:05:06,520 O que nós estamos indo a tentar facer é que nós imos ter 117 00:05:06,520 --> 00:05:08,380 un apoio real que fin de semana. 118 00:05:08,380 --> 00:05:12,970 Porque, como podedes ver, o pset débese antes das vacacións de outono. 119 00:05:12,970 --> 00:05:16,760 Non temos soporte para vós durante as vacacións de outono 120 00:05:16,760 --> 00:05:18,897 e entón realmente tipo de quere esta frase como, 121 00:05:18,897 --> 00:05:21,230 imos acabar con iso, traballaremos moito, moi duro 122 00:05:21,230 --> 00:05:25,380 estas próximas dúas semanas, obter este quiz e engadir eses dous Serie de exercicios feitos con 123 00:05:25,380 --> 00:05:29,650 e entón vostedes teñen un relaxado sete días sen pensar en CS. 124 00:05:29,650 --> 00:05:33,750 >> Entón, para que a pasar, estamos probablemente 125 00:05:33,750 --> 00:05:36,870 vai cambiar a miña sección para tardes de domingo. 126 00:05:36,870 --> 00:05:39,070 Será filmado polo que non te preocupes se non pode vir. 127 00:05:39,070 --> 00:05:41,595 Pero as imaxes en liña vai estar alí e accesible 128 00:05:41,595 --> 00:05:47,630 de xeito que vostedes teñen domingo Luns, martes, para traballar en pset5. 129 00:05:47,630 --> 00:05:50,205 E entón é caída romper e ningunha CS e, a continuación, 130 00:05:50,205 --> 00:05:51,830 volvemos ea súa volta na rutina. 131 00:05:51,830 --> 00:05:54,926 >> Pero vai ser un encantador semana para as vacacións de outono 132 00:05:54,926 --> 00:05:58,050 e nós realmente queremos facelo o estrés libre para todos posible que 133 00:05:58,050 --> 00:06:02,620 É por iso que nós cambiamos o pset para ser debido antes das vacacións de outono e non despois. 134 00:06:02,620 --> 00:06:07,601 Porque it's-- É dicir, eu medio que sinto como derrota propósito de ter 135 00:06:07,601 --> 00:06:10,850 a fin do prazo tras a ruptura da caída, se hai ningún apoio de todos os xeitos durante as vacacións de outono. 136 00:06:10,850 --> 00:06:14,670 Polo tanto, é rather-- creo Preferimos concentrarse nel agora. 137 00:06:14,670 --> 00:06:16,950 Alguén ten preguntas sobre esta programación? 138 00:06:16,950 --> 00:06:17,830 Algo confuso? 139 00:06:17,830 --> 00:06:18,330 Si. 140 00:06:18,330 --> 00:06:20,944 >> Audiencia: Fai aínda temos unha charla sobre o 21? 141 00:06:20,944 --> 00:06:21,610 ANDI Pengo: Si. 142 00:06:21,610 --> 00:06:26,421 Entón, o día 21, alí vai ser unha charla que é en directo desde Harvard. 143 00:06:26,421 --> 00:06:29,170 Non sei se David está filmando el ou se está realmente conferencias, 144 00:06:29,170 --> 00:06:32,430 pero só pode estar dispoñible en liña para vós ao acceso. 145 00:06:32,430 --> 00:06:35,510 Polo tanto, só asegúrese de esculpir un hour nalgún lugar no outono break 146 00:06:35,510 --> 00:06:39,375 para que vostedes poidan incorporarse up en que charla. 147 00:06:39,375 --> 00:06:39,875 Si? 148 00:06:39,875 --> 00:06:40,300 >> Audiencia: É. 149 00:06:40,300 --> 00:06:40,422 Desculpe. 150 00:06:40,422 --> 00:06:41,280 Teño aquí un couple-- 151 00:06:41,280 --> 00:06:41,640 >> ANDI Pengo: Non se preocupe. 152 00:06:41,640 --> 00:06:42,556 Aquí, tome uns doces. 153 00:06:42,556 --> 00:06:45,350 154 00:06:45,350 --> 00:06:47,800 >> Audiencia: Ola, eu peguei iso. 155 00:06:47,800 --> 00:06:53,869 Entón, só para recapitular, non mañá, pero o Mércores despois de que, temos un quiz. 156 00:06:53,869 --> 00:06:54,660 ANDI Pengo: Correcto. 157 00:06:54,660 --> 00:06:59,207 Audiencia: E vai ser-- cal é o formato da proba? 158 00:06:59,207 --> 00:06:59,790 ANDI Pengo: Oh. 159 00:06:59,790 --> 00:07:03,870 Entón, nós imos enviar un correo-e que abrangue todo o que máis en profundidade. 160 00:07:03,870 --> 00:07:06,590 Pero, esencialmente, só cobre temas básicos xa cuberto 161 00:07:06,590 --> 00:07:09,042 na primeira metade do semestre. 162 00:07:09,042 --> 00:07:12,250 Nós imos ter sesións de revisión e pregunta e respostas así, non se preocupa con iso. 163 00:07:12,250 --> 00:07:14,107 Pero nós imos estar indo sobre iso tamén. 164 00:07:14,107 --> 00:07:16,940 Audiencia: Será que vai ser, nós traer os nosos ordenadores e código há-- 165 00:07:16,940 --> 00:07:17,140 ANDI Pengo: Non. 166 00:07:17,140 --> 00:07:20,130 Será vostedes escriben e respondendo a preguntas de man. 167 00:07:20,130 --> 00:07:21,160 >> Audiencia: Oh. 168 00:07:21,160 --> 00:07:23,160 >> ANDI Pengo: Entón imos dar- prácticas fóra e outras cousas 169 00:07:23,160 --> 00:07:26,420 entón vostedes poden querer talvez ir volver e reescribir Mario a man só 170 00:07:26,420 --> 00:07:28,100 para asegurarse de que vostedes teñen unha idea de como facelo. 171 00:07:28,100 --> 00:07:29,933 Porque ás veces cando escribir a man vostede 172 00:07:29,933 --> 00:07:32,656 esquecerse comas e outras cousas e iso é moi malo. 173 00:07:32,656 --> 00:07:34,156 Audiencia: Non será [inaudível]? 174 00:07:34,156 --> 00:07:38,290 Tipo, está a recibir un punto e coma no your-- 175 00:07:38,290 --> 00:07:40,270 >> ANDI Pengo: Si e non. 176 00:07:40,270 --> 00:07:43,170 Falaremos máis en profundidade acerca de como o deseño cuestionario é 177 00:07:43,170 --> 00:07:44,550 e como imos grao. 178 00:07:44,550 --> 00:07:47,425 Pero, esencialmente, só sei que o formato xeral será vostede 179 00:07:47,425 --> 00:07:49,930 caras, quere interpretar code-- respondendo a preguntas básicas. 180 00:07:49,930 --> 00:07:51,370 Se eu lle preguntase, o que é unha biblioteca? 181 00:07:51,370 --> 00:07:53,450 Vostedes deben saber o que un biblioteca fai e escribir isto. 182 00:07:53,450 --> 00:07:56,283 Ou podo dicir, escribir un programa que Ola Mundo imprime en pantalla. 183 00:07:56,283 --> 00:08:01,140 Vostedes iría escribir, int main baleiro printf Ola coma mundo. 184 00:08:01,140 --> 00:08:01,908 Si. 185 00:08:01,908 --> 00:08:04,398 >> Audiencia: Entón iso non vai para estar en calquera lugar [inaudível] 186 00:08:04,398 --> 00:08:05,900 nivel de dificultade do conxunto de problemas? 187 00:08:05,900 --> 00:08:06,170 >> ANDI Pengo: Non. 188 00:08:06,170 --> 00:08:06,380 Non. 189 00:08:06,380 --> 00:08:07,046 Nós won't-- si. 190 00:08:07,046 --> 00:08:10,030 Fai a totalidade do xogo de 15 en 20 minutos, vai. 191 00:08:10,030 --> 00:08:12,120 Non, non vai ser isto. 192 00:08:12,120 --> 00:08:12,801 Non. 193 00:08:12,801 --> 00:08:13,342 Audiencia: Aceptar. 194 00:08:13,342 --> 00:08:15,326 Así que é mércores. 195 00:08:15,326 --> 00:08:19,017 Durante esta semana tamén ter o problema máis difícil establecer? 196 00:08:19,017 --> 00:08:19,600 ANDI Pengo: Non. 197 00:08:19,600 --> 00:08:22,970 Polo tanto, o problema define-lo debido o día antes das vacacións de outono. 198 00:08:22,970 --> 00:08:25,690 O schedule-- o correo electrónico foi realmente enviar para fóra 199 00:08:25,690 --> 00:08:27,232 20 minutos respecto de todo isto. 200 00:08:27,232 --> 00:08:28,689 Entón vostedes pode comprobar os seus e-mails. 201 00:08:28,689 --> 00:08:29,430 Vai estar alí. 202 00:08:29,430 --> 00:08:30,060 Si. 203 00:08:30,060 --> 00:08:31,701 Sen preocupacións. 204 00:08:31,701 --> 00:08:32,200 Legal. 205 00:08:32,200 --> 00:08:34,900 206 00:08:34,900 --> 00:08:38,900 >> Todas as preguntas xerais respecto ao anuncios, clasificación, quizzes, 207 00:08:38,900 --> 00:08:41,659 antes de mergullar a dereita en punteiros que consumirá 208 00:08:41,659 --> 00:08:45,060 a maioría do noso tempo sección de hoxe? 209 00:08:45,060 --> 00:08:47,030 Legal. 210 00:08:47,030 --> 00:08:47,530 Todo ben. 211 00:08:47,530 --> 00:08:50,905 Así que todos asistir a este lovely-- Non sei o que eles chaman. 212 00:08:50,905 --> 00:08:53,490 O onde a claymation fundou-se enriba porque 213 00:08:53,490 --> 00:08:54,820 non usar un punteiro correctamente. 214 00:08:54,820 --> 00:08:57,629 Ben, o seu programa vai probablemente fundir-se até se 215 00:08:57,629 --> 00:08:59,170 non empregue punteiros correctamente tamén. 216 00:08:59,170 --> 00:09:01,250 Entón, nós estamos indo facer estou seguro que iso non aconteza. 217 00:09:01,250 --> 00:09:04,810 >> Hoxe nós estamos indo a facer un pouco de diversión punteiro. 218 00:09:04,810 --> 00:09:08,970 Vou pasar por riba de cousas tan ben como eu creo 219 00:09:08,970 --> 00:09:10,790 é posible nun pequeno período de tempo. 220 00:09:10,790 --> 00:09:14,592 Pero hai tanta cousa para cubrir que realmente quero que vostedes, 221 00:09:14,592 --> 00:09:17,300 se non entender algo, non só déixeme continuar. 222 00:09:17,300 --> 00:09:18,580 Porque se non fai iso entender algo, 223 00:09:18,580 --> 00:09:21,329 probablemente non vai comprender todo o que eu dicir despois diso. 224 00:09:21,329 --> 00:09:23,310 Entón, por favor me parar e facer unha pregunta. 225 00:09:23,310 --> 00:09:25,380 Porque todo tipo de bolas de neve en conxunto. 226 00:09:25,380 --> 00:09:27,800 Como, punteiros ter en liderado de memoria en outras cousas. 227 00:09:27,800 --> 00:09:31,710 E por iso, se non entender as agullas, deixar de min e nós imos descubrir que 228 00:09:31,710 --> 00:09:35,070 ea vida se ve ben. 229 00:09:35,070 --> 00:09:35,680 >> Legal. 230 00:09:35,680 --> 00:09:39,050 Así como moitos de vós na charla, cando David mencionou punteiros, 231 00:09:39,050 --> 00:09:42,050 seus cerebros tipo de converter Jello-O? 232 00:09:42,050 --> 00:09:42,550 Si. 233 00:09:42,550 --> 00:09:44,190 Bo. 234 00:09:44,190 --> 00:09:46,900 Estamos indo para tratar de de-Jello-O cerebro hoxe. 235 00:09:46,900 --> 00:09:50,300 Nós imos realmente sistematicamente pasar polo que é exactamente un punteiro, 236 00:09:50,300 --> 00:09:52,530 o que fai, e como imos empregar las. 237 00:09:52,530 --> 00:09:56,620 >> Entón, todo tan pointers-- normalmente coas variables 238 00:09:56,620 --> 00:10:00,920 temos benvida a empregar na codificación, como variables como números enteiros ou cadeas 239 00:10:00,920 --> 00:10:04,790 ou Carrozas, todos eles son esencialmente un valor que lles é asignado 240 00:10:04,790 --> 00:10:06,870 así como un enderezo apuntando a este valor. 241 00:10:06,870 --> 00:10:08,895 Entón, eu estou indo a deseñar iso agora. 242 00:10:08,895 --> 00:10:14,270 243 00:10:14,270 --> 00:10:16,140 Temos case ningún giz pero iso é OK. 244 00:10:16,140 --> 00:10:25,550 >> Así, por exemplo, normalmente a forma que temos 245 00:10:25,550 --> 00:10:30,860 benvida a empregar variables é que creamos o nome da variable do tipo int, imos 246 00:10:30,860 --> 00:10:31,360 só dicir. 247 00:10:31,360 --> 00:10:37,360 Entón aquí temos int x e estamos iniciar que int para 50. 248 00:10:37,360 --> 00:10:42,390 Entón, aquí neste bloque de memoria no noso ordenadores que xa almacenou un número de 50. 249 00:10:42,390 --> 00:10:46,170 Entón, onde punteiros entran en xogo é que o seu ordenador itself-- como, aquí, 250 00:10:46,170 --> 00:10:48,880 fisicamente no disco duro na RAM do meu Computador-- 251 00:10:48,880 --> 00:10:51,147 ten só unha cantidade finita de memoria. 252 00:10:51,147 --> 00:10:53,980 Non pode simplemente manter o almacenamento de cousas na parte superior das cousas por dentro de todo 253 00:10:53,980 --> 00:10:54,990 e te-los todos. 254 00:10:54,990 --> 00:10:59,570 >> Así, a forma que nós poñer dinamicamente memoria para poder almacenar o que queiramos 255 00:10:59,570 --> 00:11:03,150 e acceder a ela, é por punteiros. 256 00:11:03,150 --> 00:11:06,210 Entón, imaxine o seu espazo de memoria, non. 257 00:11:06,210 --> 00:11:10,420 Se este é o da súa RAM ordenador, ten eses pequenos anacos 258 00:11:10,420 --> 00:11:14,540 ou bloques ou bytes de memoria en which-- estes son só pouco 259 00:11:14,540 --> 00:11:18,120 bloques que se destinan a reserva fóra o disco duro ou memoria RAM do seu ordenador, 260 00:11:18,120 --> 00:11:21,950 e dentro de cada un destes bloques pode almacenar cousas distintas. 261 00:11:21,950 --> 00:11:26,990 Así, por exemplo, un Neste exemplo de matriz 262 00:11:26,990 --> 00:11:29,984 aquí é un byte que é que consta de oito bits. 263 00:11:29,984 --> 00:11:32,900 O número cambia dependendo da sistema operativo do seu ordenador. 264 00:11:32,900 --> 00:11:35,942 Por exemplo, como moitos de vostedes teñen escoitou falar de 32 bits contra operativo de 64 bits 265 00:11:35,942 --> 00:11:36,441 sistemas? 266 00:11:36,441 --> 00:11:37,070 Exactamente. 267 00:11:37,070 --> 00:11:38,860 >> Entón, todo o que non é pouca é que a memory-- 268 00:11:38,860 --> 00:11:42,420 que a forma que o seu ordenador xestiona a memoria é diferente. 269 00:11:42,420 --> 00:11:45,370 Que é por iso que é realmente importante comprender 270 00:11:45,370 --> 00:11:49,450 porque funcións en si, no canto de memoria que prestar atención aos números. 271 00:11:49,450 --> 00:11:52,400 Entón, nós realmente non me importa o grande esa matriz 272 00:11:52,400 --> 00:11:55,710 é, só se preocupe o grande que necesitamos un int para ser, 273 00:11:55,710 --> 00:11:58,350 o grande que necesitamos unha secuencia sendo, o grande é un punteiro? 274 00:11:58,350 --> 00:12:00,630 275 00:12:00,630 --> 00:12:01,130 Aceptar. 276 00:12:01,130 --> 00:12:03,690 Por iso, vai ser moi , Información densa de abondo. 277 00:12:03,690 --> 00:12:07,005 Vou dar a vostedes un parella cómics momentos de alivio aquí. 278 00:12:07,005 --> 00:12:09,130 Vostedes deben ser capaces para entender iso agora. 279 00:12:09,130 --> 00:12:12,550 Porque sabemos que punteiros son enderezos, 280 00:12:12,550 --> 00:12:14,480 e os que son diferentes das variables. 281 00:12:14,480 --> 00:12:14,980 Aceptar. 282 00:12:14,980 --> 00:12:15,610 Legal. 283 00:12:15,610 --> 00:12:17,065 Bromas CS son a mellor, si? 284 00:12:17,065 --> 00:12:19,800 285 00:12:19,800 --> 00:12:23,450 >> Así, a forma que nós imos sobre a creación dun punteiro 286 00:12:23,450 --> 00:12:25,750 é un tipo moi específico de sintaxe. 287 00:12:25,750 --> 00:12:27,870 Igual que a creación de calquera tipo de variable, é 288 00:12:27,870 --> 00:12:30,240 vai ser un específico sintaxe que usan para crealo. 289 00:12:30,240 --> 00:12:34,830 Entón, cando declarar calquera punteiro, un punteiro só essentially-- 290 00:12:34,830 --> 00:12:37,040 Creo que o importante parte punteiros é 291 00:12:37,040 --> 00:12:41,650 que mentres unha variable ten tanto un valor e un enderezo, 292 00:12:41,650 --> 00:12:44,100 un punteiro é un enderezo. 293 00:12:44,100 --> 00:12:45,740 O seu valor é un enderezo. 294 00:12:45,740 --> 00:12:48,120 Polo tanto, é un enderezo almacenado nun enderezo diferente. 295 00:12:48,120 --> 00:12:49,120 Se iso fai algún sentido. 296 00:12:49,120 --> 00:12:52,390 Nós falaremos sobre iso con máis detalles, pero esa é a forma xenérica 297 00:12:52,390 --> 00:12:54,370 de entendermos que de como unha impresora é almacenado. 298 00:12:54,370 --> 00:12:58,900 >> Así, o xeito que cree un punteiro é facendo calquera tipo de datos 299 00:12:58,900 --> 00:13:02,840 que o punteiro vai para ser referenciar e entăo-- 300 00:13:02,840 --> 00:13:05,324 coa star-- e despois o nome do punteiro. 301 00:13:05,324 --> 00:13:07,240 Entón, aquí, se quixésemos para crear un punteiro que 302 00:13:07,240 --> 00:13:11,640 apuntou a un número enteiro, e nós quixo o nome do punteiro para ser X, 303 00:13:11,640 --> 00:13:13,880 fariamos int x estrela. 304 00:13:13,880 --> 00:13:14,380 Si? 305 00:13:14,380 --> 00:13:16,680 >> Audiencia: E así se a seguinte liña vostede 306 00:13:16,680 --> 00:13:20,045 facer int x, int será a estrela x indican a localización do X 307 00:13:20,045 --> 00:13:21,170 está definindo despois? 308 00:13:21,170 --> 00:13:22,000 >> ANDI Pengo: Realmente boa pregunta. 309 00:13:22,000 --> 00:13:23,860 Nós falaremos sobre iso en un par desliza despois. 310 00:13:23,860 --> 00:13:24,920 Si. 311 00:13:24,920 --> 00:13:27,610 E entón mesmo con Char e mesmo coches alegóricos. 312 00:13:27,610 --> 00:13:29,950 Só sei que, neste punto creamos un punteiro, 313 00:13:29,950 --> 00:13:32,470 nós non temos realmente definir para igualar nada. 314 00:13:32,470 --> 00:13:34,110 Nós realmente non teño referenciado-lo. 315 00:13:34,110 --> 00:13:36,087 O mesmo aquí cando crea unha variable, 316 00:13:36,087 --> 00:13:39,420 que creou o nome da variable, non ten realmente definir un valor a ela. 317 00:13:39,420 --> 00:13:41,410 O mesmo aquí. 318 00:13:41,410 --> 00:13:42,110 >> Aceptar. 319 00:13:42,110 --> 00:13:44,670 Entón, como podemos definir valores punteiros? 320 00:13:44,670 --> 00:13:47,190 É referenciando e dereferencing. 321 00:13:47,190 --> 00:13:52,260 Así, a forma que podemos referenciar un varia-- un punteiro, en esencia 322 00:13:52,260 --> 00:13:56,630 retornamos a dirección na memoria de que unha variable é almacenado. 323 00:13:56,630 --> 00:14:02,550 Entón, se eu tivese un pointer-- Vou debuxar este xa que temos ao seguinte foto, 324 00:14:02,550 --> 00:14:05,760 pero só sei que, esencialmente, o correo oe comercial 325 00:14:05,760 --> 00:14:10,240 e todo o que o variable-- fai é dicirlle a dirección 326 00:14:10,240 --> 00:14:11,780 de onde algo é almacenado. 327 00:14:11,780 --> 00:14:15,730 E dereferencing é o contrario de que, que non é máis que a estrela. 328 00:14:15,730 --> 00:14:18,950 A estrela dálle só o real datos almacenados nese enderezo. 329 00:14:18,950 --> 00:14:21,090 >> Entón, dálle a dirección almacenado nun enderezo, 330 00:14:21,090 --> 00:14:23,945 outro dálle o real valor almacenado no enderezo. 331 00:14:23,945 --> 00:14:25,820 Entón, os dous dan vostede cousas distintas. 332 00:14:25,820 --> 00:14:27,755 333 00:14:27,755 --> 00:14:29,880 Unha vez máis, as láminas son todo en liña así que non preocupa 334 00:14:29,880 --> 00:14:33,200 se vós non pode copiar este abaixo no tempo. 335 00:14:33,200 --> 00:14:36,330 >> Entón, imos dar un ollo neste exemplo aquí. 336 00:14:36,330 --> 00:14:40,530 Entón, temos un xigante matriz de memoria aquí, non? 337 00:14:40,530 --> 00:14:42,920 Onde só temos bloques de memoria, ou bytes de memoria, 338 00:14:42,920 --> 00:14:45,060 no que podemos almacenar cousas distintas. 339 00:14:45,060 --> 00:14:47,310 Nós só dicir que estes son os puntos de enderezos na memoria. 340 00:14:47,310 --> 00:14:51,350 Entón, cando ten - vexa o 0x, todo o que está dicindo é que 341 00:14:51,350 --> 00:14:52,930 Isto é un díxitos hexadecimais. 342 00:14:52,930 --> 00:14:56,310 Como todos sabedes, números podería basearse en bases distintas. 343 00:14:56,310 --> 00:14:58,770 Base de datos de 10 é como nós normalmente interpretar números. 344 00:14:58,770 --> 00:15:00,550 Hai tamén base 2, que é binario. 345 00:15:00,550 --> 00:15:03,366 E neste caso, hexadecimal é base 16. 346 00:15:03,366 --> 00:15:06,240 É só un xeito diferente de dicir de cero a 10-- ou cero a nove 347 00:15:06,240 --> 00:15:10,904 e, a continuación, tamén A, B, C, D, E, F. Tamén fai referencia a números diferentes. 348 00:15:10,904 --> 00:15:12,570 David, pasando esta charla en breve. 349 00:15:12,570 --> 00:15:14,280 Se vostedes son confuso, pode buscar en Google. 350 00:15:14,280 --> 00:15:17,370 Hai formas moi fáciles de aprender o que é un díxito hexadecimal. 351 00:15:17,370 --> 00:15:19,510 Todo o que é realmente relevante agora é para ti 352 00:15:19,510 --> 00:15:24,170 caras saber que un díxitos hexadecimais en C 353 00:15:24,170 --> 00:15:27,090 di vocę-- que tipicamente dille que é un punteiro. 354 00:15:27,090 --> 00:15:29,150 Ou iso é un enderezo. 355 00:15:29,150 --> 00:15:33,310 >> Así, neste exemplo aquí, int x é igual a 5. 356 00:15:33,310 --> 00:15:36,350 Estamos creando un integer-- Sentímolo, unha variable de tipo 357 00:15:36,350 --> 00:15:39,090 enteiro e estamos inicializar-lo a 5. 358 00:15:39,090 --> 00:15:47,040 Entón, aquí na nosa tarxeta de memoria, podemos ver que x é para o tipo de escola 0x0 359 00:15:47,040 --> 00:15:50,550 eo valor que ten almacenado dentro do que é 5. 360 00:15:50,550 --> 00:15:52,370 Isto debe ter sentido para todos, non? 361 00:15:52,370 --> 00:15:53,030 Aceptar. 362 00:15:53,030 --> 00:15:56,520 >> E entón o que fixemos na segunda liña de código 363 00:15:56,520 --> 00:16:00,290 é que creamos un punteiro do tipo int. 364 00:16:00,290 --> 00:16:02,750 Iso é o que o int punteiro estrela está facendo. 365 00:16:02,750 --> 00:16:07,320 E iso é igual a que o ampersand x é dándolle o seu enderezo de algo. 366 00:16:07,320 --> 00:16:12,120 Así, a dirección de X en Neste exemplo é 0x0. 367 00:16:12,120 --> 00:16:15,630 E para que a dirección está a ser almacenado que punteiro. 368 00:16:15,630 --> 00:16:17,360 Isto ten sentido para todos? 369 00:16:17,360 --> 00:16:19,965 >> Entón, pense de isto-- pensar en pointers-- aquí 370 00:16:19,965 --> 00:16:24,780 en Yale temos un sistema de correo de voz onde cada alumno ten un mailing 371 00:16:24,780 --> 00:16:26,960 dirección onde pode ir no soto de LW 372 00:16:26,960 --> 00:16:30,492 e pode simplemente ir e coller o que precisa daquel enderezo. 373 00:16:30,492 --> 00:16:32,450 O mesmo pasa aquí nun ordenador. 374 00:16:32,450 --> 00:16:36,770 Tes eses bytes de memoria que pode almacenar información en, 375 00:16:36,770 --> 00:16:39,529 pero, a fin de saber que anacos de información 376 00:16:39,529 --> 00:16:42,570 match-se de que está intentando atopar e onde, precisa dun punteiro que 377 00:16:42,570 --> 00:16:43,740 di-lle como ir máis alá. 378 00:16:43,740 --> 00:16:47,270 >> Así, por exemplo, para min, a miña caixa de correos, Eu teño un número específico de cinco díxitos. 379 00:16:47,270 --> 00:16:48,400 Ese é o meu enderezo. 380 00:16:48,400 --> 00:16:51,880 Entón eu podo ir fisicamente a memoria, Podo ver o enderezo, 381 00:16:51,880 --> 00:16:54,507 Podo ir que a caixa de PO e acceder aos datos dentro. 382 00:16:54,507 --> 00:16:57,090 Isto ten sentido para todos Seu ordenador é esencialmente 383 00:16:57,090 --> 00:16:59,000 facendo exactamente o mesmo. 384 00:16:59,000 --> 00:17:02,750 >> Polo tanto, todos punteiro está facendo é que é só a creación dunha memoria 385 00:17:02,750 --> 00:17:06,099 e os teus datos de memoria é realmente a dirección de outra cousa. 386 00:17:06,099 --> 00:17:08,210 Entón podes ir e atopar iso. 387 00:17:08,210 --> 00:17:09,060 Todo o mundo é bo? 388 00:17:09,060 --> 00:17:10,720 Todos bo comigo ata agora? 389 00:17:10,720 --> 00:17:11,360 Aceptar. 390 00:17:11,360 --> 00:17:11,859 Legal. 391 00:17:11,859 --> 00:17:14,311 392 00:17:14,311 --> 00:17:14,810 Todo ben. 393 00:17:14,810 --> 00:17:19,160 Así, case o mesmo que antes. 394 00:17:19,160 --> 00:17:23,849 Polo tanto, temos, en primeiro lugar, unha variable chamado X en que case-- 395 00:17:23,849 --> 00:17:27,700 Eu estou indo a cambiar ese valor para 5. 396 00:17:27,700 --> 00:17:31,820 Nós só dicir a dirección de isto en memoria é 0x0. 397 00:17:31,820 --> 00:17:33,070 00. 398 00:17:33,070 --> 00:17:33,570 Gran. 399 00:17:33,570 --> 00:17:35,320 >> Así, pois, no noso segundo liña de código, somos 400 00:17:35,320 --> 00:17:41,210 vai crear un punteiro chamado punteiro PTR. 401 00:17:41,210 --> 00:17:45,760 E a dirección de que imos só dicir que é 0x01 na memoria. 402 00:17:45,760 --> 00:17:48,280 E nós realmente queren store-- oe comercial 403 00:17:48,280 --> 00:17:50,620 x dálle a dirección de que X foi. 404 00:17:50,620 --> 00:17:53,990 E a dirección x foi 0x00. 405 00:17:53,990 --> 00:17:57,300 Polo tanto, este punteiro agora de feito, ten a dirección 406 00:17:57,300 --> 00:18:00,210 almacenado como o valor de x que foi. 407 00:18:00,210 --> 00:18:01,700 Todos comigo ata agora? 408 00:18:01,700 --> 00:18:02,320 Legal. 409 00:18:02,320 --> 00:18:04,670 >> E entón, o camiño que teriamos que copiar, 410 00:18:04,670 --> 00:18:09,650 é se queremos declarar e arrincar outro bloque de memoria de tipo int. 411 00:18:09,650 --> 00:18:10,150 Non? 412 00:18:10,150 --> 00:18:11,130 Este sería un int. 413 00:18:11,130 --> 00:18:14,130 Sería chamado de copia. 414 00:18:14,130 --> 00:18:17,120 E está indo tan get-- o punteiro estrela dálle 415 00:18:17,120 --> 00:18:19,080 os datos reais de ese enderezo. 416 00:18:19,080 --> 00:18:22,490 O e comercial dálle a dirección, a estrela dálle os datos. 417 00:18:22,490 --> 00:18:24,630 Así, os datos no punteiro. 418 00:18:24,630 --> 00:18:29,420 Este punteiro está a apuntar cara 5. 419 00:18:29,420 --> 00:18:33,140 E así esta función aqui-- estrela pointer-- 420 00:18:33,140 --> 00:18:39,740 vai, recibe o que está este bloque e almacena-lo aquí. 421 00:18:39,740 --> 00:18:41,730 Todos clara sobre como isto aconteceu? 422 00:18:41,730 --> 00:18:45,490 >> Há-- Así, os dous operadores de dereito o comercial eo star-- 423 00:18:45,490 --> 00:18:48,250 só facer cousas distintas cando se usa en punteiros. 424 00:18:48,250 --> 00:18:50,837 Ten-se-lle a dirección, unha recibe o valor real. 425 00:18:50,837 --> 00:18:53,670 Entón asegúrese cando vostedes son codificación que non confundir as dúas cousas 426 00:18:53,670 --> 00:18:55,650 porque son moi diferentes. 427 00:18:55,650 --> 00:18:58,880 Aquí temos un bo exemplo dun 0x01. 428 00:18:58,880 --> 00:19:01,207 Iso é moi legal número pequeno de lembrar. 429 00:19:01,207 --> 00:19:03,040 No seu ordenador real terá 430 00:19:03,040 --> 00:19:06,740 un número aparvado xigante que é algo iso non é bo, non é agradable. 431 00:19:06,740 --> 00:19:08,280 Vai haber algún valor de lixo. 432 00:19:08,280 --> 00:19:10,920 E así vai, realmente, realmente interferir seus programas. 433 00:19:10,920 --> 00:19:12,670 É moi importante agora que temos 434 00:19:12,670 --> 00:19:16,150 os fundamentos abaixo para entender que, como o que está a suceder cando fisicamente 435 00:19:16,150 --> 00:19:18,270 está rodando eses bloques de código. 436 00:19:18,270 --> 00:19:19,120 Everyone-- si? 437 00:19:19,120 --> 00:19:21,425 >> Audiencia: Entón int x é igual a int copia? 438 00:19:21,425 --> 00:19:24,650 439 00:19:24,650 --> 00:19:34,970 >> ANDI Pengo: Ningunha porque, neste caso, int x-- o valor x-- é igual a 5, non? 440 00:19:34,970 --> 00:19:40,546 E, a continuación, int copia é igual a 5. 441 00:19:40,546 --> 00:19:43,420 Entón, se fose para igualalo-los para outro porque son enteiros, 442 00:19:43,420 --> 00:19:46,379 si, eles ían avaliar a verdade. 443 00:19:46,379 --> 00:19:49,670 Pero se fosen cadeas na memoria, como o que David fixo durante exemplo, 444 00:19:49,670 --> 00:19:51,670 iso é diferente porque están facendo referencia 445 00:19:51,670 --> 00:19:54,920 os enderezos de sitios na memoria e equivalería a falsa. 446 00:19:54,920 --> 00:20:00,070 >> Entón, aquí sería verdade, porque está comparando directamente values-- integers-- 447 00:20:00,070 --> 00:20:02,240 pero nos outros é puntos de referencia. 448 00:20:02,240 --> 00:20:05,290 Porque é unha secuencia nunha matriz, e tudo-- imos falar sobre este later-- 449 00:20:05,290 --> 00:20:09,940 pero matriz é esencialmente só un Punteiro para unha morea de caracteres na memoria. 450 00:20:09,940 --> 00:20:11,610 Polo tanto, estas son un pouco diferentes. 451 00:20:11,610 --> 00:20:14,642 Pero neste caso, si, podería facelo. 452 00:20:14,642 --> 00:20:17,354 >> Audiencia: Pode explicar a dirección de copia? 453 00:20:17,354 --> 00:20:18,020 ANDI Pengo: Si. 454 00:20:18,020 --> 00:20:20,030 Entón é iso que eu apenas-- non enche un valor 455 00:20:20,030 --> 00:20:23,022 pero é só un outro chou valor de lixo que non se preocupan. 456 00:20:23,022 --> 00:20:25,730 Porque unha vez que inicia o programa entender que non, en realidade, 457 00:20:25,730 --> 00:20:28,150 realmente importa o que o enderezos reais son, 458 00:20:28,150 --> 00:20:30,470 nós só precisa saber o que está nos enderezos. 459 00:20:30,470 --> 00:20:31,608 Si. 460 00:20:31,608 --> 00:20:36,034 >> Audiencia: A estrela xunto a int no segunda liña, que é diferente than-- 461 00:20:36,034 --> 00:20:36,700 ANDI Pengo: Si. 462 00:20:36,700 --> 00:20:39,015 Audiencia: -o dereferencing e referenciar a estrela? 463 00:20:39,015 --> 00:20:39,681 ANDI Pengo: Si. 464 00:20:39,681 --> 00:20:43,180 Así, os autores de quen C-- decidiu escribir a lingua de C-- 465 00:20:43,180 --> 00:20:44,200 non era moi intelixente. 466 00:20:44,200 --> 00:20:46,830 Eles non foron moi intelixente no intento para descubrir por que deberiamos facelo. 467 00:20:46,830 --> 00:20:49,413 Se fose comigo, eu sempre usar dous personaxes diferentes. 468 00:20:49,413 --> 00:20:52,100 Pero decidiron utilizar a mesma. 469 00:20:52,100 --> 00:20:56,607 >> Así, a estrela despois dun int, que informa ao ordenador 470 00:20:56,607 --> 00:20:58,190 que está a piques de crear un punteiro. 471 00:20:58,190 --> 00:21:00,820 Pero se estás dereference algo-- noutras palabras, 472 00:21:00,820 --> 00:21:03,780 ir ao enderezo tire os datos de somewhere-- 473 00:21:03,780 --> 00:21:05,070 a estrela é utilizado de forma diferente. 474 00:21:05,070 --> 00:21:08,750 Entón vostedes só ter coidado con non desorde ambos usos. 475 00:21:08,750 --> 00:21:09,870 Legal. 476 00:21:09,870 --> 00:21:10,605 Si? 477 00:21:10,605 --> 00:21:14,680 >> Audiencia: Entón, só para repetir a asegúrese de que eu son following-- 478 00:21:14,680 --> 00:21:16,252 >> ANDI Pengo: Totalmente ben. 479 00:21:16,252 --> 00:21:20,491 >> Audiencia -En parte esquerda de que foto, nós facemos unha cousa que sabemos. 480 00:21:20,491 --> 00:21:23,124 Declaramos un enteiro [Inaudível] que son iguais a 5. 481 00:21:23,124 --> 00:21:23,790 ANDI Pengo: Si. 482 00:21:23,790 --> 00:21:24,456 Audiencia: Correcto. 483 00:21:24,456 --> 00:21:28,960 E entón temos algo int estrelas e que di que, OK, tipo de como nós 484 00:21:28,960 --> 00:21:31,235 declarou un enteiro, agora estamos declarando un punteiro. 485 00:21:31,235 --> 00:21:32,110 ANDI Pengo: correctamente. 486 00:21:32,110 --> 00:21:32,410 Correcto. 487 00:21:32,410 --> 00:21:32,710 >> Audiencia: Dereito? 488 00:21:32,710 --> 00:21:33,870 E o noso punteiro PTR é. 489 00:21:33,870 --> 00:21:34,080 >> ANDI Pengo: Yep. 490 00:21:34,080 --> 00:21:35,460 O nome do punteiro é PTR. 491 00:21:35,460 --> 00:21:35,959 Punteiro. 492 00:21:35,959 --> 00:21:39,000 Audiencia: E, a continuación, é igual a NX que di C 493 00:21:39,000 --> 00:21:44,667 que quere acceder ao valor en x-- enteiro o valor que integer x 494 00:21:44,667 --> 00:21:45,800 foi asignado. 495 00:21:45,800 --> 00:21:49,050 >> ANDI Pengo: Teña precaución porque, en realidade, ampersand x 496 00:21:49,050 --> 00:21:53,120 di vocę-- o ordenador que quere tirar a dirección do que x é. 497 00:21:53,120 --> 00:21:56,350 Entón comercial dálle a enderezo, estrela dálle o valor. 498 00:21:56,350 --> 00:21:58,255 >> Audiencia: Entón, nós queremos a dirección. 499 00:21:58,255 --> 00:22:02,075 Digamos que x era at-- 500 00:22:02,075 --> 00:22:03,950 ANDI Pengo: Nós, en realidade, sabe o que é x, non? 501 00:22:03,950 --> 00:22:06,790 Porque sabemos que son x foi-- inventando iso, pero imos só dicir, 502 00:22:06,790 --> 00:22:08,760 arbitrariamente, que era 0x00. 503 00:22:08,760 --> 00:22:09,590 Non? 504 00:22:09,590 --> 00:22:14,120 Entón, nós sabemos o enderezo está 0x00, e así cando imos e Ampersand x, 505 00:22:14,120 --> 00:22:17,050 sabemos que iso avaliará a 0x00. 506 00:22:17,050 --> 00:22:20,810 É por iso que almacenado que como o valor do noso punteiro. 507 00:22:20,810 --> 00:22:21,924 Isto ten sentido? 508 00:22:21,924 --> 00:22:22,832 >> Audiencia: Si. 509 00:22:22,832 --> 00:22:28,057 E copia vai para dereference ptr-- 510 00:22:28,057 --> 00:22:28,765 ANDI Pengo: Correcto. 511 00:22:28,765 --> 00:22:30,473 Audiencia: -que é un punteiro que temos 512 00:22:30,473 --> 00:22:35,220 declarou que nos di o enderezo do enteiro x. 513 00:22:35,220 --> 00:22:36,160 >> ANDI Pengo: Si. 514 00:22:36,160 --> 00:22:39,272 >> Audiencia: E neste un caso, estrela PTR é 515 00:22:39,272 --> 00:22:41,256 igual ao valor de x que é igual a 5. 516 00:22:41,256 --> 00:22:42,744 >> ANDI Pengo: Correcto. 517 00:22:42,744 --> 00:22:44,728 >> Audiencia: Cool. 518 00:22:44,728 --> 00:22:49,382 E esa é unha maneira máis sinxela de obter ou que é o que a única maneira-- 519 00:22:49,382 --> 00:22:51,840 ANDI Pengo: Entón, agora non parece moi lóxico para nós 520 00:22:51,840 --> 00:22:54,690 para gastar todo este tempo facendo esa cousa de super complicado cando 521 00:22:54,690 --> 00:22:57,606 todo o que fixemos foi só crear dous enteiros co valor de 5, non? 522 00:22:57,606 --> 00:22:58,900 Non ten sentido. 523 00:22:58,900 --> 00:23:03,060 Pero unha vez que nós imos pasar por riba reserva de memoria correo imos 524 00:23:03,060 --> 00:23:06,067 pasar por riba de por que isto pode ser accesible e útil máis tarde. 525 00:23:06,067 --> 00:23:09,150 Confío en min cando digo que non basta crear esas funcións arbitrarias para ti 526 00:23:09,150 --> 00:23:11,340 caras de aprender, porque somos intentando xogar con vostede. 527 00:23:11,340 --> 00:23:14,550 Hai realmente usa para todos eles cousas e imos falar sobre eles. 528 00:23:14,550 --> 00:23:14,950 >> Audiencia: Awesome. 529 00:23:14,950 --> 00:23:15,350 >> ANDI Pengo: Si. 530 00:23:15,350 --> 00:23:16,150 >> Audiencia: [inaudível]. 531 00:23:16,150 --> 00:23:16,450 >> ANDI Pengo: Boa pregunta. 532 00:23:16,450 --> 00:23:17,510 >> Audiencia: [inaudível]. 533 00:23:17,510 --> 00:23:18,000 >> ANDI Pengo: Non é. 534 00:23:18,000 --> 00:23:18,666 Realmente non é. 535 00:23:18,666 --> 00:23:21,050 Audiencia: variables --Dois que tamén igual [inaudível]. 536 00:23:21,050 --> 00:23:22,400 Aceptar. 537 00:23:22,400 --> 00:23:23,070 >> ANDI Pengo: Si. 538 00:23:23,070 --> 00:23:23,570 Aceptar. 539 00:23:23,570 --> 00:23:25,249 Antes de seguir adiante, está claro que todos? 540 00:23:25,249 --> 00:23:26,790 Sei Taylor, ten un pouco tarde. 541 00:23:26,790 --> 00:23:27,490 Está ben. 542 00:23:27,490 --> 00:23:28,100 É en liña. 543 00:23:28,100 --> 00:23:30,600 Vai ver o primeiro 20 minutos e vai ser todo de bo. 544 00:23:30,600 --> 00:23:31,190 Aceptar. 545 00:23:31,190 --> 00:23:31,690 Legal. 546 00:23:31,690 --> 00:23:35,597 547 00:23:35,597 --> 00:23:37,140 >> Todo ben. 548 00:23:37,140 --> 00:23:41,270 Polo tanto, este é esencialmente unha especie de cousa semellante que acabamos de facer. 549 00:23:41,270 --> 00:23:43,100 É só nunha forma gráfica. 550 00:23:43,100 --> 00:23:47,070 Se estaba a seguir o que Só aconteceu, int x é igual a 5, 551 00:23:47,070 --> 00:23:52,159 todo o que fixemos neste momento é crear unha variable chamada x de tipo int. 552 00:23:52,159 --> 00:23:54,200 Estamos indo para almacenar o valor de 5 para dentro del. 553 00:23:54,200 --> 00:23:57,366 Non hai ningún punteiro porque non tivésemos realmente creado un punteiro aínda, non? 554 00:23:57,366 --> 00:24:00,302 E entón o próximo liña, punteiro int estrela, 555 00:24:00,302 --> 00:24:02,760 que é onde estamos, en realidade, creando fisicamente o punteiro 556 00:24:02,760 --> 00:24:05,010 e estamos definindo que igual ou referenciamento 557 00:24:05,010 --> 00:24:07,250 o punteiro para ampersand x. 558 00:24:07,250 --> 00:24:10,002 Que é onde en calquera lugar memoria este pasou a ser. 559 00:24:10,002 --> 00:24:12,210 Realmente non molesta tornándose un valor neste momento. 560 00:24:12,210 --> 00:24:14,900 Pero, neste caso, que o punto sería igual a isto. 561 00:24:14,900 --> 00:24:18,060 >> E entón alí en baixo, a estrela punteiro é o dereferencing. 562 00:24:18,060 --> 00:24:20,310 É onde estamos tirando a información. 563 00:24:20,310 --> 00:24:24,170 Así que o valor de x é a realidade será igual a 35. 564 00:24:24,170 --> 00:24:30,390 Polo tanto, neste punto, temos esencialmente só Acerar x 35 565 00:24:30,390 --> 00:24:32,320 sen chegar a toca-x. 566 00:24:32,320 --> 00:24:34,560 Só a través do punteiro que estaba a apuntar cara x, 567 00:24:34,560 --> 00:24:36,910 podemos realmente cambiar o que estaba x. 568 00:24:36,910 --> 00:24:38,420 Eu estou indo a deseñar ese fóra tamén. 569 00:24:38,420 --> 00:24:52,200 >> Entón, aquí creamos algún enderezo aleatorio aquí. 570 00:24:52,200 --> 00:24:54,734 Nós só dicir 0x00 novo. 571 00:24:54,734 --> 00:24:56,150 Nós só dicir que é a dirección. 572 00:24:56,150 --> 00:25:00,830 E creamos un enteiro chamado x eo valor que lle atribúe a el é 5. 573 00:25:00,830 --> 00:25:03,840 Na segunda liña, Int pointer-- entón agora temos 574 00:25:03,840 --> 00:25:07,820 teño esa segunda cousa aquí chamado pointer-- 575 00:25:07,820 --> 00:25:14,310 e imos a-- imos só dicir é algún outro enderezo de memoria aleatorio. 576 00:25:14,310 --> 00:25:18,460 >> Entón, nós estamos indo a definir esta igual ao que quere que fose. 577 00:25:18,460 --> 00:25:21,540 578 00:25:21,540 --> 00:25:25,880 E ese punteiro vai apuntan ao valor de x 579 00:25:25,880 --> 00:25:30,090 E entón, se mudarmos as-- se facemos punteiro estrela, 580 00:25:30,090 --> 00:25:32,800 que está indo para a valor do noso punteiro. 581 00:25:32,800 --> 00:25:36,979 Neste caso, vai rastrexar Esta frecha sobre a este valor de x 582 00:25:36,979 --> 00:25:38,395 e que vai mudalo a 35. 583 00:25:38,395 --> 00:25:41,400 584 00:25:41,400 --> 00:25:44,760 Efectivamente, só cambiou x sen tocar x. 585 00:25:44,760 --> 00:25:48,970 A través punteiros só facendo referencia podemos ir e cambiar o valor de x. 586 00:25:48,970 --> 00:25:50,050 Isto ten sentido? 587 00:25:50,050 --> 00:25:55,200 >> Así, deste xeito, podemos realmente cambiar o nome e valores rechange e reaxusta 588 00:25:55,200 --> 00:25:57,750 para as cousas que nós non realmente facer a nós mesmos. 589 00:25:57,750 --> 00:26:00,925 Isto ten sentido para todos? 590 00:26:00,925 --> 00:26:01,425 Legal. 591 00:26:01,425 --> 00:26:04,450 592 00:26:04,450 --> 00:26:05,310 Aceptar. 593 00:26:05,310 --> 00:26:08,210 Gráfico tan complexas aquí. 594 00:26:08,210 --> 00:26:09,360 Vaia liña por liña. 595 00:26:09,360 --> 00:26:12,055 Esencialmente, pode facer o exacto mesmo que eu fixen. 596 00:26:12,055 --> 00:26:15,977 597 00:26:15,977 --> 00:26:17,810 Antes de seguir adiante, I Realmente quere só facer 598 00:26:17,810 --> 00:26:19,370 garantir que todos é moi claro sobre este asunto. 599 00:26:19,370 --> 00:26:26,260 Entón, ata aquí, o código que temos é int un é igual a 3, b é igual a 4, c é igual a 5. 600 00:26:26,260 --> 00:26:33,130 Entón creamos tres enteiros nomeados a, b e c que son iguais a 3, 4 e 5. 601 00:26:33,130 --> 00:26:38,460 E entón nós estamos creando tres punteiros Nese punto a cada unha destas variables. 602 00:26:38,460 --> 00:26:41,760 >> E agora imos para pasar por riba esencialmente 603 00:26:41,760 --> 00:26:44,240 o que ocorre cando opera sobre eles. 604 00:26:44,240 --> 00:26:45,490 Entón, atrae-los para fóra. 605 00:26:45,490 --> 00:26:48,156 Tome unha folla de paper-- non sei se vostedes todos teñen papel, 606 00:26:48,156 --> 00:26:50,930 pero aqueles de vostedes que non, quizais pedir prestado aqueles de vostedes que fan. 607 00:26:50,930 --> 00:26:53,580 Tome follas de papel e ir liña por liña. 608 00:26:53,580 --> 00:26:59,390 E cada operación que fai, Quero que vostedes realmente escribir fóra 609 00:26:59,390 --> 00:27:00,800 o que é, un b e c neste punto. 610 00:27:00,800 --> 00:27:03,550 E cales son os enderezos, cales son os punteiros que apuntan a un, b e c 611 00:27:03,550 --> 00:27:04,410 neste punto? 612 00:27:04,410 --> 00:27:07,150 >> E entón espero que isto vai tipo de paso que vostedes 613 00:27:07,150 --> 00:27:08,900 mediante como pensar punteiros. 614 00:27:08,900 --> 00:27:10,650 Non estamos indo a ir a través de todos eles. 615 00:27:10,650 --> 00:27:13,450 Poida que eu vou che dar five-- como, tres minutos. 616 00:27:13,450 --> 00:27:14,660 Comezar a facer os primeiros. 617 00:27:14,660 --> 00:28:10,410 618 00:28:10,410 --> 00:28:10,959 Oh. 619 00:28:10,959 --> 00:28:11,459 Oops. 620 00:28:11,459 --> 00:28:20,940 621 00:28:20,940 --> 00:28:26,950 >> Audiencia: Na segunda liña, por que Non é a variable [inaudível] estrela? 622 00:28:26,950 --> 00:28:29,410 >> ANDI Pengo: Teña en conta que no operadores, a primeira semana, 623 00:28:29,410 --> 00:28:31,730 falamos de como se fai máis iguais, 624 00:28:31,730 --> 00:28:35,320 iso só significa un é igual a un plus c. 625 00:28:35,320 --> 00:28:39,370 Neste case-- polo que esta é outra xeito en que a estrela se pode usar. 626 00:28:39,370 --> 00:28:42,040 Ademais referenciar e declarando punteiros, 627 00:28:42,040 --> 00:28:44,440 lembrar que tamén significa multiplicación. 628 00:28:44,440 --> 00:28:46,575 Polo tanto, neste caso, tiña acaba de ser igual a veces c. 629 00:28:46,575 --> 00:28:48,450 Isto é tan diferente xeito de escribir isto. 630 00:28:48,450 --> 00:28:49,776 >> Audiencia: un é igual a un veces c. 631 00:28:49,776 --> 00:28:50,442 ANDI Pengo: Si. 632 00:28:50,442 --> 00:30:43,488 633 00:30:43,488 --> 00:30:47,130 >> Audiencia: Que significa que el di que carta comercial? 634 00:30:47,130 --> 00:30:50,900 >> ANDI Pengo: medios Ampersand está indo a isso-- é 635 00:30:50,900 --> 00:30:54,760 indo ao lugar do punteiro é apuntando e tirando o enderezo. 636 00:30:54,760 --> 00:31:01,270 Entón comercial dálle a dirección, estrela dálle o valor real alí. 637 00:31:01,270 --> 00:31:03,090 >> Audiencia: Somos nós con base na liña por liña? 638 00:31:03,090 --> 00:31:04,881 >> ANDI Pengo: Vostede é con base na liña por liña. 639 00:31:04,881 --> 00:31:07,260 Entón, só tes que ir unha liña de un tempo e entăo-- 640 00:31:07,260 --> 00:31:08,470 Non se preocupe con rematar a cousa toda. 641 00:31:08,470 --> 00:31:10,428 Imos tentar obter a través de quizais dous, tres liñas 642 00:31:10,428 --> 00:31:12,445 e despois imos convocar e acabar con isto. 643 00:31:12,445 --> 00:31:15,530 644 00:31:15,530 --> 00:31:17,470 >> É totalmente Aceptar se vostedes están perdidos. 645 00:31:17,470 --> 00:31:19,334 Este é un concepto moi difícil. 646 00:31:19,334 --> 00:31:22,500 Se vostedes están preocupados que a clase é así como David estaba dicindo, 647 00:31:22,500 --> 00:31:23,190 iso non acontece. 648 00:31:23,190 --> 00:31:25,949 Estamos chegando ao pico conceptual de dificultade 649 00:31:25,949 --> 00:31:27,740 e, a continuación, que vai ser inclinada cara abaixo. 650 00:31:27,740 --> 00:31:29,110 Entón vostedes están case alí. 651 00:31:29,110 --> 00:31:31,080 Temos lotes de doces para vós a través do corcunda. 652 00:31:31,080 --> 00:31:32,940 Creo moi bonito despois de caída romper estaremos sobre a corcunda 653 00:31:32,940 --> 00:31:34,220 ea vida se ve ben novo. 654 00:31:34,220 --> 00:31:36,580 Entón non se preocupe en todo. 655 00:31:36,580 --> 00:32:30,732 656 00:32:30,732 --> 00:32:31,232 Todo ben. 657 00:32:31,232 --> 00:32:33,650 Vou dar a vostedes 20 máis segundos para pechar. 658 00:32:33,650 --> 00:33:12,560 659 00:33:12,560 --> 00:33:13,330 Aceptar. 660 00:33:13,330 --> 00:33:13,830 Todo ben. 661 00:33:13,830 --> 00:33:16,370 Imos dar unha facada no presente. 662 00:33:16,370 --> 00:33:19,430 Como vostedes me dar respostas, Eu só vou gravala-los. 663 00:33:19,430 --> 00:33:22,140 E espero que nós-- podo? 664 00:33:22,140 --> 00:33:23,317 En realidade, eu non podo escrebela no. 665 00:33:23,317 --> 00:33:24,400 Vou deseña-lo no taboleiro. 666 00:33:24,400 --> 00:33:31,420 667 00:33:31,420 --> 00:33:35,900 >> Entón, aquí nesta primeira liña temos unha estrela é igual ab c. 668 00:33:35,900 --> 00:33:38,060 Tamén Elliot trouxo á tona unha realmente, realmente bo punto. 669 00:33:38,060 --> 00:33:42,500 Porque eu esquezo que, ademais de as dúas formas que podemos usar o símbolo de estrela, 670 00:33:42,500 --> 00:33:43,750 hai realmente unha terceira vía. 671 00:33:43,750 --> 00:33:44,990 Multiplicación. 672 00:33:44,990 --> 00:33:51,380 E por iso só non se confunden, porque que é a primeira forma de usar unha estrela. 673 00:33:51,380 --> 00:33:54,470 É só dicir ao ordenador que eu estou a piques de crear un punteiro. 674 00:33:54,470 --> 00:34:00,600 >> A segunda forma, facendo estrela do punteiro, 675 00:34:00,600 --> 00:34:04,320 di que o punteiro que quere para acceder aos datos a ese punteiro. 676 00:34:04,320 --> 00:34:06,710 E despois, claro, hai multiplicación só simple 677 00:34:06,710 --> 00:34:09,564 entre dous números que lle di que quero multiplicar os dous. 678 00:34:09,564 --> 00:34:11,730 Polo tanto, hai unha morea de formas podemos utilizar o símbolo da estrela. 679 00:34:11,730 --> 00:34:13,830 Non sexa confuso. 680 00:34:13,830 --> 00:34:16,991 Só asegúrese de que vostedes entenden o que os tres deles 681 00:34:16,991 --> 00:34:18,630 están facendo. 682 00:34:18,630 --> 00:34:22,920 >> Polo tanto, nesta primeira liña, a é igual a B veces c. 683 00:34:22,920 --> 00:34:26,850 Entón, imos pasar polo que é un, o que é b, o que é c? 684 00:34:26,850 --> 00:34:32,600 E o que é o punteiro dun, o punteiro para B eo punteiro para c? 685 00:34:32,600 --> 00:34:34,050 Que son todos aqueles igualando? 686 00:34:34,050 --> 00:34:34,600 Aceptar. 687 00:34:34,600 --> 00:34:38,650 >> Entón, imos comezar con un igual a 3, b é igual a 4, e c é igual a 5, non? 688 00:34:38,650 --> 00:34:42,230 Entón, despois de que a primeira liña, pode Alguén me diga o que é un? 689 00:34:42,230 --> 00:34:42,730 Si. 690 00:34:42,730 --> 00:34:44,229 Sinto-se libre para só berrar respostas. 691 00:34:44,229 --> 00:34:44,929 20. 692 00:34:44,929 --> 00:34:45,550 Bo. 693 00:34:45,550 --> 00:34:46,410 ¿Que é b? 694 00:34:46,410 --> 00:34:47,777 >> Audiencia: 4. 695 00:34:47,777 --> 00:34:48,610 ANDI Pengo: O que hai de c? 696 00:34:48,610 --> 00:34:49,659 Audiencia: 5. 697 00:34:49,659 --> 00:34:50,770 ANDI Pengo: Yay. 698 00:34:50,770 --> 00:34:51,639 Bo. 699 00:34:51,639 --> 00:34:55,707 ¿Qué son o PA, PB, e PC? 700 00:34:55,707 --> 00:34:58,564 >> Audiencia: 000001 e 002? 701 00:34:58,564 --> 00:34:59,230 ANDI Pengo: Si. 702 00:34:59,230 --> 00:35:02,390 Así unha especie de pegadinha pero non é realmente porque aquí 703 00:35:02,390 --> 00:35:04,760 tirou memorias reais. 704 00:35:04,760 --> 00:35:08,520 Senón porque, por exemplo, non realmente sabe o que estas cifras son, 705 00:35:08,520 --> 00:35:10,326 podemos só dicir comercial. 706 00:35:10,326 --> 00:35:12,200 Eu non sei se eu pode deseñar un e comercial. 707 00:35:12,200 --> 00:35:18,022 É como-- como fai iso? 708 00:35:18,022 --> 00:35:19,790 >> Audiencia: Como deseñar un oito. 709 00:35:19,790 --> 00:35:20,870 >> ANDI Pengo: Como un oito. 710 00:35:20,870 --> 00:35:21,580 Así. 711 00:35:21,580 --> 00:35:22,080 Aceptar. 712 00:35:22,080 --> 00:35:23,446 Audiencia: Bingo. 713 00:35:23,446 --> 00:35:25,350 >> ANDI Pengo: matalo. 714 00:35:25,350 --> 00:35:28,202 Entón comercial Unha, pode simplemente facer. 715 00:35:28,202 --> 00:35:30,410 Porque realmente non importa o que o valor desta 716 00:35:30,410 --> 00:35:32,880 é, e é un pouco longo valor burro de calquera xeito, 717 00:35:32,880 --> 00:35:35,220 estamos usando só giong para dicir un 'e' comercial. 718 00:35:35,220 --> 00:35:37,024 Entón cal é pb? 719 00:35:37,024 --> 00:35:37,940 Audiencia: [inaudível]. 720 00:35:37,940 --> 00:35:38,606 ANDI Pengo: Si. 721 00:35:38,606 --> 00:35:42,490 722 00:35:42,490 --> 00:35:43,500 Legal. 723 00:35:43,500 --> 00:35:44,010 Todo ben. 724 00:35:44,010 --> 00:35:44,770 Fácil primeira liña. 725 00:35:44,770 --> 00:35:45,270 Temos iso. 726 00:35:45,270 --> 00:35:46,330 Punteiros son fáciles. 727 00:35:46,330 --> 00:35:47,450 Está ben. 728 00:35:47,450 --> 00:35:48,740 >> Segunda liña. 729 00:35:48,740 --> 00:35:52,400 E así é igual a estrela é o mesmo cousa que dicir un é igual a un veces c. 730 00:35:52,400 --> 00:35:54,730 É só un xeito máis doado de escribir. 731 00:35:54,730 --> 00:35:57,170 Polo tanto, non estamos intentando facer un punto ou algo aquí. 732 00:35:57,170 --> 00:36:00,600 Así, feito coa primeira liña. 733 00:36:00,600 --> 00:36:05,144 ¿Que é unha liña na segunda despois de facer un é igual a un veces c? 734 00:36:05,144 --> 00:36:05,777 >> Audiencia: 100? 735 00:36:05,777 --> 00:36:06,610 ANDI Pengo: É 100. 736 00:36:06,610 --> 00:36:07,795 Bo. 737 00:36:07,795 --> 00:36:08,864 Como case b? 738 00:36:08,864 --> 00:36:10,256 >> Audiencia: [inaudível]. 739 00:36:10,256 --> 00:36:11,335 >> ANDI Pengo: Que tal c? 740 00:36:11,335 --> 00:36:12,490 >> Audiencia: [inaudível]. 741 00:36:12,490 --> 00:36:14,530 >> ANDI Pengo: E como sobre punteiros? 742 00:36:14,530 --> 00:36:15,800 They-- son o mesmo, non? 743 00:36:15,800 --> 00:36:20,640 744 00:36:20,640 --> 00:36:21,940 Aceptar. 745 00:36:21,940 --> 00:36:23,820 Agora terceira liña. 746 00:36:23,820 --> 00:36:26,400 747 00:36:26,400 --> 00:36:27,350 Pouco máis complicado. 748 00:36:27,350 --> 00:36:29,760 b é igual á estrela. 749 00:36:29,760 --> 00:36:34,189 Alguén me pode dicir, en primeiro lugar, o que fai estrela pa igual? 750 00:36:34,189 --> 00:36:36,159 >> Audiencia: É o valor que está almacenado nun. 751 00:36:36,159 --> 00:36:36,950 ANDI Pengo: Exactamente. 752 00:36:36,950 --> 00:36:38,070 E o que é o valor que é almacenado a unha? 753 00:36:38,070 --> 00:36:38,860 >> Audiencia: 100. 754 00:36:38,860 --> 00:36:39,660 >> ANDI Pengo: Aceptar. 755 00:36:39,660 --> 00:36:43,462 Entón, o que sería un ser despois executar esta liña de código? 756 00:36:43,462 --> 00:36:44,760 >> Audiencia: [inaudível]. 757 00:36:44,760 --> 00:36:45,870 >> ANDI Pengo: E sobre b? 758 00:36:45,870 --> 00:36:46,780 >> Audiencia: 100. 759 00:36:46,780 --> 00:36:47,620 >> ANDI Pengo: Si. 760 00:36:47,620 --> 00:36:49,995 E entón o resto é practicamente inalterada, non? 761 00:36:49,995 --> 00:36:51,239 Porque non tocalo. 762 00:36:51,239 --> 00:36:55,370 763 00:36:55,370 --> 00:36:57,010 Legal. 764 00:36:57,010 --> 00:36:58,390 Cuarta liña. 765 00:36:58,390 --> 00:37:00,390 Un pouco máis complexo. 766 00:37:00,390 --> 00:37:06,910 Entón Pc, unha vez máis, PC é o punteiro que apuntaba a C-- iguala pa. 767 00:37:06,910 --> 00:37:11,520 768 00:37:11,520 --> 00:37:12,360 ¿Que é un? 769 00:37:12,360 --> 00:37:14,525 >> Audiencia: 100. 770 00:37:14,525 --> 00:37:15,400 ANDI Pengo: Qué é b? 771 00:37:15,400 --> 00:37:17,920 Audiencia: 100. 772 00:37:17,920 --> 00:37:18,862 ANDI Pengo: Qué é c? 773 00:37:18,862 --> 00:37:19,993 Audiencia: 5. 774 00:37:19,993 --> 00:37:20,867 ANDI Pengo: Qué é pa? 775 00:37:20,867 --> 00:37:22,775 Audiencia: Ampersand a. 776 00:37:22,775 --> 00:37:23,730 ANDI Pengo: pb? 777 00:37:23,730 --> 00:37:26,010 Audiencia: Ampersand b. 778 00:37:26,010 --> 00:37:27,730 ANDI Pengo: E complicado, o que é PC agora? 779 00:37:27,730 --> 00:37:28,410 Audiencia: Ampersand a. 780 00:37:28,410 --> 00:37:29,034 ANDI Pengo: Yay. 781 00:37:29,034 --> 00:37:31,790 Woo hoo. 782 00:37:31,790 --> 00:37:32,500 Vostedes ver? 783 00:37:32,500 --> 00:37:33,282 Isto está todo correcto. 784 00:37:33,282 --> 00:37:33,990 Non é moi malo. 785 00:37:33,990 --> 00:37:38,730 Temos máis doces que non é todo seguro, pero creo que está todo ben. 786 00:37:38,730 --> 00:37:41,900 E nós imos pasar por riba de só unha máis antes de bater as máis difíciles. 787 00:37:41,900 --> 00:37:43,710 As respostas que eu teño aquí. 788 00:37:43,710 --> 00:37:47,050 >> Esencialmente, sabemos que este é exactamente como a aritmética neste momento. 789 00:37:47,050 --> 00:37:53,240 Cando ten ecuacións, como un máis b, c un veces, iso é fácil de facer. 790 00:37:53,240 --> 00:37:56,390 E cando comezar a ampliar enriba Lo, só tes que ir orde das operacións. 791 00:37:56,390 --> 00:37:57,830 O mesmo de antes. 792 00:37:57,830 --> 00:38:00,030 >> Manteña o control do seu caso estrelas é antes de calquera cousa. 793 00:38:00,030 --> 00:38:01,640 Isto di-lle o valor. 794 00:38:01,640 --> 00:38:04,640 Se tes un e antes algo, dille a dirección. 795 00:38:04,640 --> 00:38:07,860 E ten que asignar calquera dos punteiros ou ese valor. 796 00:38:07,860 --> 00:38:11,260 Entón, imos pasar por riba desa último rápida real. 797 00:38:11,260 --> 00:38:12,520 Non esta última, desculpe. 798 00:38:12,520 --> 00:38:13,340 De feito, podedes escoller. 799 00:38:13,340 --> 00:38:16,006 Cal deles caras queren ir ao longo das restantes tres 800 00:38:16,006 --> 00:38:17,449 que temos? 801 00:38:17,449 --> 00:38:20,490 Eu non creo que podemos só facelo porque non podemos simplemente ir para a liña. 802 00:38:20,490 --> 00:38:21,000 Aceptar. 803 00:38:21,000 --> 00:38:25,700 Vostedes non teñen unha opción, é só o terceiro para durar un. 804 00:38:25,700 --> 00:38:29,228 >> PC estrela é igual a B veces c. 805 00:38:29,228 --> 00:38:30,144 >> Audiencia: pb Star? 806 00:38:30,144 --> 00:38:32,117 >> Audiencia: pb Star. 807 00:38:32,117 --> 00:38:32,825 ANDI Pengo: Sentímolo? 808 00:38:32,825 --> 00:38:33,599 Audiencia: pb Star. 809 00:38:33,599 --> 00:38:34,390 ANDI Pengo: pb Star. 810 00:38:34,390 --> 00:38:35,100 Oh, meu mal. 811 00:38:35,100 --> 00:38:38,647 Pb estrela é igual a B veces c. 812 00:38:38,647 --> 00:38:40,230 Vou dar a vostedes 10 segundos. 813 00:38:40,230 --> 00:38:41,140 Basta pensar rapidamente. 814 00:38:41,140 --> 00:38:43,450 Este é que temos así agora, o que pasa despois de que 815 00:38:43,450 --> 00:38:46,770 realizar esta quinta liña alí? 816 00:38:46,770 --> 00:38:54,030 817 00:38:54,030 --> 00:38:55,980 Aceptar. 818 00:38:55,980 --> 00:38:58,720 ¿Que é un? 819 00:38:58,720 --> 00:38:59,560 >> Audiencia: 100. 820 00:38:59,560 --> 00:39:02,470 >> ANDI Pengo: 100. 821 00:39:02,470 --> 00:39:03,610 ¿Que é b agora? 822 00:39:03,610 --> 00:39:04,330 >> Audiencia: 500. 823 00:39:04,330 --> 00:39:05,250 >> ANDI Pengo: Boa. 824 00:39:05,250 --> 00:39:08,570 Será que alguén quere explicar me por que isto é 500? 825 00:39:08,570 --> 00:39:10,540 Eu non me sinto como nós de feito, xa tocou b. 826 00:39:10,540 --> 00:39:13,950 Como é que podemos cambiar o valor de b sen tocar b? 827 00:39:13,950 --> 00:39:15,090 Si? 828 00:39:15,090 --> 00:39:18,239 >> Audiencia: Por estrela pb significa o valor en pb-- 829 00:39:18,239 --> 00:39:19,030 ANDI Pengo: Exactamente. 830 00:39:19,030 --> 00:39:19,790 Audiencia: -que é b. 831 00:39:19,790 --> 00:39:20,581 ANDI Pengo: Exactamente. 832 00:39:20,581 --> 00:39:26,880 Entón, aquí no noso diagrama, o noso punteiro pb realmente está a apuntar cara ese dereito 833 00:39:26,880 --> 00:39:28,690 aquí, o cal é o b física real. 834 00:39:28,690 --> 00:39:31,340 E por iso, se vai e fai estrela pb, que é 835 00:39:31,340 --> 00:39:36,080 seguindo a súa frecha do punteiro e físicamente cambiar o valor de b. 836 00:39:36,080 --> 00:39:39,532 É por iso que temos b cambiado 500 sen realmente tocar b. 837 00:39:39,532 --> 00:39:42,490 E entón o resto segue a ser o mesmo porque non toque niso. 838 00:39:42,490 --> 00:39:47,060 839 00:39:47,060 --> 00:39:48,530 Isto é b. 840 00:39:48,530 --> 00:39:49,420 Legal. 841 00:39:49,420 --> 00:39:50,485 E logo-- 842 00:39:50,485 --> 00:39:51,910 >> Audiencia: Eu só teño unha pregunta. 843 00:39:51,910 --> 00:39:52,730 >> ANDI Pengo: Si? 844 00:39:52,730 --> 00:39:56,000 >> Audiencia: Desde we've-- non hai máis comercial c, 845 00:39:56,000 --> 00:39:59,620 isto significa un e comercial redireccionar para o mesmo agora? 846 00:39:59,620 --> 00:40:00,520 >> ANDI Pengo: Yep. 847 00:40:00,520 --> 00:40:01,582 Assim-- 848 00:40:01,582 --> 00:40:03,540 Audiencia: Entón a frecha tipo de só move correo 849 00:40:03,540 --> 00:40:04,030 ANDI Pengo: Entón essentially-- 850 00:40:04,030 --> 00:40:05,405 Audiencia: --now non podemos access-- 851 00:40:05,405 --> 00:40:08,387 ANDI Pengo: --quando nós dereference c on-- I falsificador. 852 00:40:08,387 --> 00:40:08,970 Que foi iso? 853 00:40:08,970 --> 00:40:09,560 A terceira liña? 854 00:40:09,560 --> 00:40:10,060 En cuarto lugar. 855 00:40:10,060 --> 00:40:11,490 Cuarta liña. 856 00:40:11,490 --> 00:40:14,910 Todo o que fixemos foi, esencialmente, cambiar esta frecha 857 00:40:14,910 --> 00:40:16,680 e telo apuntado para unha vez. 858 00:40:16,680 --> 00:40:19,480 >> Audiencia: Polo tanto, non podemos acceder c anymore. 859 00:40:19,480 --> 00:40:22,520 >> ANDI Pengo: Se tivese ese exacto número, pode acceder a ela. 860 00:40:22,520 --> 00:40:23,260 Pero ningunha. 861 00:40:23,260 --> 00:40:25,680 Non temos un punteiro que apunta a c máis. 862 00:40:25,680 --> 00:40:27,430 Eu creo que se quería para volver a acceder a ela, vostede 863 00:40:27,430 --> 00:40:30,390 crearía outro punteiro que re-sinalou c 864 00:40:30,390 --> 00:40:32,856 ou desreferenciado este e apuntou cara atrás. 865 00:40:32,856 --> 00:40:35,730 Entón, non, a partir de agora, os tres punteiros, ningún deles apuntar C. 866 00:40:35,730 --> 00:40:38,800 867 00:40:38,800 --> 00:40:40,110 >> Todo o mundo é bo? 868 00:40:40,110 --> 00:40:41,440 As respostas están en liña. 869 00:40:41,440 --> 00:40:45,210 Sinto-se libre para, tras a sección, pasar por riba e os dous últimos probas vós. 870 00:40:45,210 --> 00:40:47,840 Mesmos conceptos, só un pouco máis complicado. 871 00:40:47,840 --> 00:40:51,860 Só ten que seguir a través da lóxica de por que as cousas son cousas diferentes. 872 00:40:51,860 --> 00:40:54,530 E información, punteiros son un tema que nós aman 873 00:40:54,530 --> 00:40:58,780 para cubrir sobre quizzes porque son conceptualmente moi reto. 874 00:40:58,780 --> 00:41:01,360 Entón eu sugiro que caras todas avaliar este gráfico 875 00:41:01,360 --> 00:41:05,916 ou barra conceptos semellantes aos que antes do seu exame na próxima semana. 876 00:41:05,916 --> 00:41:06,864 >> Audiencia: Desculpe-me. 877 00:41:06,864 --> 00:41:07,530 >> ANDI Pengo: Si? 878 00:41:07,530 --> 00:41:09,708 Audiencia: [inaudível] última um-- [inaudível]. 879 00:41:09,708 --> 00:41:12,710 880 00:41:12,710 --> 00:41:15,770 >> ANDI Pengo: 50.000? 881 00:41:15,770 --> 00:41:17,850 Quere necesitas seguilo de volta para abaixo. 882 00:41:17,850 --> 00:41:22,530 Pero somewhere-- Creo que a liña antes, creou valor c xigante. 883 00:41:22,530 --> 00:41:26,250 c é igual a esa cousa xigante que é 100 veces 500. 884 00:41:26,250 --> 00:41:27,006 Non. 885 00:41:27,006 --> 00:41:28,000 >> Audiencia: [inaudível]. 886 00:41:28,000 --> 00:41:28,625 >> ANDI Pengo: Si. 887 00:41:28,625 --> 00:41:30,620 100 veces 100 que é 10.000. 888 00:41:30,620 --> 00:41:32,020 Cal é 10.000. 889 00:41:32,020 --> 00:41:35,410 Entón, de volta para abaixo alí é multiplicando b e c. 890 00:41:35,410 --> 00:41:43,165 Así, o punteiro que apunta a B-- que é o valor de 500-- veces A-- 891 00:41:43,165 --> 00:41:44,480 >> Audiencia: [inaudível]. 892 00:41:44,480 --> 00:41:45,730 ANDI Pengo: Quizais iso é incorrecto. 893 00:41:45,730 --> 00:41:49,514 Audiencia: Non, non, non é. [Inaudível] punteiro no c agora está a apuntar cara um-- 894 00:41:49,514 --> 00:41:50,180 ANDI Pengo: Si. 895 00:41:50,180 --> 00:41:50,840 Está certo. 896 00:41:50,840 --> 00:41:56,477 >> Audiencia: -É a súa nun equals un vezes-- é o valor de c. 897 00:41:56,477 --> 00:41:59,560 ANDI Pengo: Pode dicir que un pouco de pouco máis alto para que todos poidan ouvídelo? 898 00:41:59,560 --> 00:42:04,879 Audiencia: Entón punteiro no c apunta agora en que o punteiro dun usado para ligar 899 00:42:04,879 --> 00:42:09,460 a-- e aínda does-- pero apuntan o mesmo que se a un, non? 900 00:42:09,460 --> 00:42:12,925 O valor de un, con todo foi recentemente definido. 901 00:42:12,925 --> 00:42:17,875 E a principios do que é dicir unha era anteriormente 100 veces 902 00:42:17,875 --> 00:42:21,340 o valor en b que é de 500. 903 00:42:21,340 --> 00:42:24,305 E así que é con todo moito do que é. 904 00:42:24,305 --> 00:42:24,805 50.000. 905 00:42:24,805 --> 00:42:32,860 Eles está reasignación de que o que o espazo de memoria en c é-- o punteiro en c 906 00:42:32,860 --> 00:42:34,510 está a apuntar cara ao que é un. 907 00:42:34,510 --> 00:42:38,460 Entón está redefinindo a ser 50.000. 908 00:42:38,460 --> 00:42:40,210 ANDI Pengo: Podía ensinar a sección para min. 909 00:42:40,210 --> 00:42:41,260 A próxima vez que el é todo seu. 910 00:42:41,260 --> 00:42:41,440 Aquí. 911 00:42:41,440 --> 00:42:42,564 Aquí está máis doces para iso. 912 00:42:42,564 --> 00:42:45,790 Merece doces para iso. 913 00:42:45,790 --> 00:42:47,260 >> Audiencia: Eu case pego iso. 914 00:42:47,260 --> 00:42:47,660 >> ANDI Pengo: Vostede case colleu iso. 915 00:42:47,660 --> 00:42:48,450 Está ben. 916 00:42:48,450 --> 00:42:48,950 Si. 917 00:42:48,950 --> 00:42:50,033 Pero ela era exactamente correcto. 918 00:42:50,033 --> 00:42:54,469 Entón, o que tes que facer é isso-- creo que nós 919 00:42:54,469 --> 00:42:56,510 ten que seguir o feito que os punteiros están 920 00:42:56,510 --> 00:42:57,880 apuntar diferentes valores. 921 00:42:57,880 --> 00:43:01,785 Así, o value-- Sentímolo, o punteiro C repointed a un. 922 00:43:01,785 --> 00:43:04,390 E así que cambiou todos os nosos números. 923 00:43:04,390 --> 00:43:08,930 E é por iso que, cando accede á valor almacenado aí, é diferente. 924 00:43:08,930 --> 00:43:10,490 Isto ten sentido? 925 00:43:10,490 --> 00:43:11,380 Aceptar. 926 00:43:11,380 --> 00:43:12,820 Legal. 927 00:43:12,820 --> 00:43:16,635 Todos ben, antes de seguir adiante? 928 00:43:16,635 --> 00:43:25,332 >> Audiencia: Será que as-- cando está indo abaixo as liñas na columna da esquerda, 929 00:43:25,332 --> 00:43:30,494 a primeira liña afectar á segunda fila e, a continuación, o second-- como, por tudo-- 930 00:43:30,494 --> 00:43:31,160 ANDI Pengo: Si. 931 00:43:31,160 --> 00:43:37,610 Entón imaxino que é código onde eu escriba nun é igual a B veces c, unha estrela é igual a c. 932 00:43:37,610 --> 00:43:40,290 Basta imaxinar que eu teño só foi este código 933 00:43:40,290 --> 00:43:42,710 e eu non imprimir o que todas estas cousas eran. 934 00:43:42,710 --> 00:43:46,200 Se eu fose só para imprimir a primeira cousa na parte superior, el estaría aquí. 935 00:43:46,200 --> 00:43:48,510 Despois eu execute todo esas liñas de código, 936 00:43:48,510 --> 00:43:51,160 que eses valores deben estar no extremo que son. 937 00:43:51,160 --> 00:43:53,290 >> Entón, realmente escribín un programa aquí. 938 00:43:53,290 --> 00:43:55,840 Non teño feito todos a multiplicación. 939 00:43:55,840 --> 00:43:58,310 Pero imaxinen. 940 00:43:58,310 --> 00:44:00,370 Entón aquí eu só teño un programa chamado punteiros. 941 00:44:00,370 --> 00:44:04,190 Eu estou indo a aumentar o zoom se guys-- Aceptar. 942 00:44:04,190 --> 00:44:07,580 Entón, eu criei variables a, b, c. 943 00:44:07,580 --> 00:44:09,640 Eu define-los igual 3, 4 e 5 e eu teño 944 00:44:09,640 --> 00:44:11,770 crearon seus punteiros correspondentes. 945 00:44:11,770 --> 00:44:14,550 E entón aquí eu só vou para imprimir o que é. 946 00:44:14,550 --> 00:44:15,833 Entón deixe-me facer iso. 947 00:44:15,833 --> 00:44:21,520 948 00:44:21,520 --> 00:44:24,750 >> Vostede caras see-- porco. 949 00:44:24,750 --> 00:44:28,150 Vostedes ver como un, b e c son os valores 950 00:44:28,150 --> 00:44:33,530 pero os seus punteiros son este xigante valor de lixo que non se preocupan? 951 00:44:33,530 --> 00:44:36,690 Entón, se eu fose realmente conectar en toda a multiplicación 952 00:44:36,690 --> 00:44:39,770 e logo reimprimir todos iso, sería executado fóra 953 00:44:39,770 --> 00:44:44,509 para o que está na parte inferior. 954 00:44:44,509 --> 00:44:47,300 Entón, se vostedes queren xogar de feito, con codificación fisicamente, 955 00:44:47,300 --> 00:44:49,000 vós pode simplemente conectar todos aqueles en. 956 00:44:49,000 --> 00:44:52,860 O código será en liña e, a continuación, o seu valores deben imprimir para que despois. 957 00:44:52,860 --> 00:44:56,170 >> E entón vai ver como o punteiro enderezos realmente trasladado. 958 00:44:56,170 --> 00:44:59,190 Entón, vai ver como o enderezo do c pasa a ser realmente 959 00:44:59,190 --> 00:45:00,920 para igualar calquera que sexa a dirección dunha era. 960 00:45:00,920 --> 00:45:04,140 E van coincidir co que quere que gran número é. 961 00:45:04,140 --> 00:45:06,530 Boa pregunta. 962 00:45:06,530 --> 00:45:07,550 Todo o mundo está ben? 963 00:45:07,550 --> 00:45:10,300 Unha última chamada para preguntas. 964 00:45:10,300 --> 00:45:11,590 Aceptar. 965 00:45:11,590 --> 00:45:12,090 Todo ben. 966 00:45:12,090 --> 00:45:15,940 Entón prepare-se para ter a súa mente soprado algo pouco máis. 967 00:45:15,940 --> 00:45:18,000 Arrays son realmente só punteiros. 968 00:45:18,000 --> 00:45:19,010 Isto é todo o que son. 969 00:45:19,010 --> 00:45:20,410 E lembre, o que son secuencias? 970 00:45:20,410 --> 00:45:21,630 Eles tamén son arrays. 971 00:45:21,630 --> 00:45:23,110 Entón, cales son realmente cordas? 972 00:45:23,110 --> 00:45:27,100 Son como punteiros para a comezando dun char de máis caracteres. 973 00:45:27,100 --> 00:45:29,970 >> Polo tanto, non é máis que conceptos que comezan para construír enriba uns dos outros. 974 00:45:29,970 --> 00:45:32,030 Entón, iso é para entender que Teña en conta que, en charla, David, 975 00:45:32,030 --> 00:45:34,990 cando tivo esa comparación de nai secuencia int 976 00:45:34,990 --> 00:45:37,640 é algo e, a continuación, outra nai corda e 977 00:45:37,640 --> 00:45:41,240 tentar igualar os dous un ao outro, eles danlle valores diferentes. 978 00:45:41,240 --> 00:45:44,370 É porque cordas si non son valores. 979 00:45:44,370 --> 00:45:48,860 Todos eles son son enderezos de memoria char-- son arrays de caracteres e matrices 980 00:45:48,860 --> 00:45:50,050 son só enlaces. 981 00:45:50,050 --> 00:45:54,022 >> Así, no esencial, cando David foi comparing-- 982 00:45:54,022 --> 00:45:55,355 Está todo ben se eu borrar todo isto? 983 00:45:55,355 --> 00:46:02,320 984 00:46:02,320 --> 00:46:09,750 Así, en charla cando David nai tivo igualdade é igual a nai, 985 00:46:09,750 --> 00:46:11,630 -Nos que parece ser o mesmo. 986 00:46:11,630 --> 00:46:12,317 Non? 987 00:46:12,317 --> 00:46:15,150 Pero, no ordenador baixo a capo, o que está realmente a suceder 988 00:46:15,150 --> 00:46:18,380 é que esta cadea, todo o que é é unha matriz. 989 00:46:18,380 --> 00:46:21,420 990 00:46:21,420 --> 00:46:25,390 Cunha ampersand-- ou, desculpe, cun terminador nulo ao final. 991 00:46:25,390 --> 00:46:28,311 992 00:46:28,311 --> 00:46:28,810 Non? 993 00:46:28,810 --> 00:46:29,940 Backslash 0. 994 00:46:29,940 --> 00:46:32,900 Barra invertida mal. 995 00:46:32,900 --> 00:46:35,960 >> Entón, todos eles were-- todo estas dúas cordas were-- 996 00:46:35,960 --> 00:46:40,360 son variedade de fours con tamaño as cartas de nai e nai. 997 00:46:40,360 --> 00:46:44,780 Pero o que realmente son matrices son só punteiros para un lugar específico na memoria 998 00:46:44,780 --> 00:46:47,140 que lle di para comezar a súa matriz. 999 00:46:47,140 --> 00:46:52,370 Polo tanto, neste caso, todo isto era era só un valor de lixo, 1000 00:46:52,370 --> 00:46:54,230 algúns punteiro aleatoria. 1001 00:46:54,230 --> 00:46:56,330 E todo iso foi foi algún outro valor de lixo. 1002 00:46:56,330 --> 00:46:59,830 Nós só dicir que 0x200. 1003 00:46:59,830 --> 00:47:02,410 >> E así, cando se trata de igual Los entre si dous, 1004 00:47:02,410 --> 00:47:06,130 eles avalían a falsa porque o addresses-- os punteiros 1005 00:47:06,130 --> 00:47:08,390 were-- que eran diferentes. 1006 00:47:08,390 --> 00:47:11,400 Tendo en conta que é diferente se está tentar comparar enteiros reais. 1007 00:47:11,400 --> 00:47:15,820 Como se quería compare-- no último example-- int A para B, 1008 00:47:15,820 --> 00:47:17,640 eles ían avaliar a verdade, como dixo Elliot 1009 00:47:17,640 --> 00:47:19,431 porque eran números enteiros que foron almacenados 1010 00:47:19,431 --> 00:47:21,320 e está avaliando só os valores. 1011 00:47:21,320 --> 00:47:25,090 Aquí, porque cadeas son arrays e todas as matrices son punteiros, 1012 00:47:25,090 --> 00:47:28,080 é por iso que eles non son iguais unha á outra. 1013 00:47:28,080 --> 00:47:31,210 >> Entón, medio confuso, ese gráfico. 1014 00:47:31,210 --> 00:47:32,450 Pero imos imaxinar. 1015 00:47:32,450 --> 00:47:38,110 Temos crear unha matriz de tamaño 3 con índice de 0 a 2-- 0, 1016 00:47:38,110 --> 00:47:41,530 1, 2 cos valores de 1, 2, 3 e almacenada neles. 1017 00:47:41,530 --> 00:47:43,820 Todo o arranxo de verdade does-- aquí, imos só 1018 00:47:43,820 --> 00:47:46,720 dicir que eu estou creando un punteiro para esa matriz que é 1019 00:47:46,720 --> 00:47:50,810 acceso ao valor no primeiro índice desta matriz. 1020 00:47:50,810 --> 00:47:52,890 Entón, aquí sería 0. 1021 00:47:52,890 --> 00:47:53,390 Non? 1022 00:47:53,390 --> 00:47:56,820 Será que todo o mundo entender como que a primeira liña avaliadas? 1023 00:47:56,820 --> 00:47:57,420 Gran. 1024 00:47:57,420 --> 00:48:00,800 >> E por iso, se quería para arrincar os valores adicionais despois do que, 1025 00:48:00,800 --> 00:48:04,390 todo o que estamos facendo é reasignación. 1026 00:48:04,390 --> 00:48:08,810 Así, 0, 1, 2, 1. 1027 00:48:08,810 --> 00:48:12,770 Polo tanto, este punteiro que era unha vez apuntando para aquí, todo o que estamos facendo 1028 00:48:12,770 --> 00:48:15,540 está movendo para abaixo. 1029 00:48:15,540 --> 00:48:16,970 Iso é o que o máis 1 está facendo. 1030 00:48:16,970 --> 00:48:18,500 E entón podemos poñer dous alí. 1031 00:48:18,500 --> 00:48:23,250 Se quixésemos poñer tres nun despois, nós ía borrar ese punteiro, 1032 00:48:23,250 --> 00:48:25,170 poñer 3 en alí. 1033 00:48:25,170 --> 00:48:26,420 Isto ten sentido todo? 1034 00:48:26,420 --> 00:48:26,920 Si. 1035 00:48:26,920 --> 00:48:28,086 Ten unha pregunta? 1036 00:48:28,086 --> 00:48:30,711 Audiencia: É [inaudível] teñen unha pregunta, eu vou dicilo de calquera maneira. 1037 00:48:30,711 --> 00:48:35,496 Eu non creo que é realmente un Mas-- pregunta en inglés, array 1038 00:48:35,496 --> 00:48:37,448 é igual a 1 ten sentido. 1039 00:48:37,448 --> 00:48:39,888 Somos como, OK, o primeiro. 1040 00:48:39,888 --> 00:48:44,280 Pero as cousas son índice 0 [Inaudível] a matriz é igual a 0 1041 00:48:44,280 --> 00:48:48,024 para indicar que o primeiro punto. 1042 00:48:48,024 --> 00:48:48,690 ANDI Pengo: Si. 1043 00:48:48,690 --> 00:48:53,740 Entón, en realidade, o que estou facendo aquí é Non estou acceder ao primeiro índice. 1044 00:48:53,740 --> 00:48:57,930 Todo o que eu estaba doing-- entón primeiro de todo, dígame o que facer matriz estrela? 1045 00:48:57,930 --> 00:48:59,480 O que fai unha estrela antes dun punteiro de facer? 1046 00:48:59,480 --> 00:49:00,855 >> Audiencia: Indica un punteiro. 1047 00:49:00,855 --> 00:49:02,910 Que está declarando un punteiro. 1048 00:49:02,910 --> 00:49:04,380 El de-- 1049 00:49:04,380 --> 00:49:07,520 >> ANDI Pengo: É dereferences que medios vai e realmente obtén o valor. 1050 00:49:07,520 --> 00:49:08,020 Non? 1051 00:49:08,020 --> 00:49:13,030 Polo tanto, neste caso, quere comezar o valor definido aquí e que, a 1. 1052 00:49:13,030 --> 00:49:13,800 Si? 1053 00:49:13,800 --> 00:49:17,050 Entón eu non estou actually-- non realmente se preocupan o índice deste, 1054 00:49:17,050 --> 00:49:21,406 todo o que eu estou facendo é só a iteración abaixo movendo miña punteiro abaixo a matriz. 1055 00:49:21,406 --> 00:49:23,280 E, a continuación, finalmente, eu ten que parar con iso, non? 1056 00:49:23,280 --> 00:49:26,750 E a forma que eu deixar é cando bati en caso 1057 00:49:26,750 --> 00:49:28,750 dunha corda, un terminador nulo. 1058 00:49:28,750 --> 00:49:32,710 Sei, oh si eu acertar un traseira-- se eu ver barra invertida 0, sei que eu son feito con este 1059 00:49:32,710 --> 00:49:35,270 e sei que podo só deixar iterado. 1060 00:49:35,270 --> 00:49:36,200 Realmente boa pregunta. 1061 00:49:36,200 --> 00:49:40,210 >> E nós imos realmente ir máis lonxe en profundidade nesta semana 1062 00:49:40,210 --> 00:49:43,990 porque a peza que vai involucrar unha morea de uso de punteiros. 1063 00:49:43,990 --> 00:49:48,459 Pero só sei que agora, iso é só unha more-- diferente 1064 00:49:48,459 --> 00:49:51,250 que é só un xeito diferente para o ordenador para escribir, esencialmente, 1065 00:49:51,250 --> 00:49:52,470 o que temos está a facer. 1066 00:49:52,470 --> 00:49:54,900 Como David dixo charla, o xeito que nós 1067 00:49:54,900 --> 00:50:01,720 acceder a unha matriz é só por facer matriz 0, soporte 0, se nós só 1068 00:50:01,720 --> 00:50:04,050 quería acceder ao primeiro valor. 1069 00:50:04,050 --> 00:50:10,280 >> Todo o ordenador está facendo é converter que no que a iteración e si. 1070 00:50:10,280 --> 00:50:13,580 Entón, nós o chamamos sintáctica azucre, que é só 1071 00:50:13,580 --> 00:50:18,420 un xeito elegante de dicir agradable formas de saber programar. 1072 00:50:18,420 --> 00:50:21,560 Pero o ordenador por baixo, o que está facendo, 1073 00:50:21,560 --> 00:50:23,997 é realmente só ter un punteiro que está axustando. 1074 00:50:23,997 --> 00:50:26,330 Pero a forma que nós escribilo lo, porque é máis fácil para nós 1075 00:50:26,330 --> 00:50:30,240 para pensar sobre as cousas en termos de caixas e como baixar caixas, 1076 00:50:30,240 --> 00:50:32,190 é por os soportes. 1077 00:50:32,190 --> 00:50:36,394 Sentímolo, iso foi moi, realmente mal Mas-- si. 1078 00:50:36,394 --> 00:50:38,310 Audiencia: Entón como é que comparar dúas cordas 1079 00:50:38,310 --> 00:50:40,560 para ver se son iguais entre si? 1080 00:50:40,560 --> 00:50:42,690 >> ANDI Pengo: Entón David escribiu este programa en charla 1081 00:50:42,690 --> 00:50:45,274 entón eu estou indo só para ir máis rápido e breve. 1082 00:50:45,274 --> 00:50:47,440 O xeito como faría iso é que realmente 1083 00:50:47,440 --> 00:50:51,300 que ir e comparar o addresses-- ou os valores 1084 00:50:51,300 --> 00:50:52,810 obtida a partir dos punteiros. 1085 00:50:52,810 --> 00:50:55,140 Entón lembre, como obter o valor aquí? 1086 00:50:55,140 --> 00:50:56,825 Eu non me importa sobre a dirección aquí. 1087 00:50:56,825 --> 00:50:58,950 ¿Como comezar realmente a valor de todo o que está aquí? 1088 00:50:58,950 --> 00:50:59,470 >> Audiencia: [inaudível]. 1089 00:50:59,470 --> 00:51:00,261 >> ANDI Pengo: Exactamente. 1090 00:51:00,261 --> 00:51:05,090 Entón comparar a estrela aquí contra a estrela aquí. 1091 00:51:05,090 --> 00:51:06,150 Son aqueles iguais. 1092 00:51:06,150 --> 00:51:07,690 E entón vai para abaixo. 1093 00:51:07,690 --> 00:51:09,530 É a estrela aquí e a estrela aquí igual? 1094 00:51:09,530 --> 00:51:10,030 Aceptar. 1095 00:51:10,030 --> 00:51:10,283 Son iguais. 1096 00:51:10,283 --> 00:51:12,866 E só vai manter abaixo ata que alcance o final de ambos. 1097 00:51:12,866 --> 00:51:16,190 E se todos eles son iguais, entón vostede sabe que a súa secuencia é igual. 1098 00:51:16,190 --> 00:51:18,130 E C, de feito, ten un función escrita chamada 1099 00:51:18,130 --> 00:51:20,713 Corda Comp que en realidade só fai isto para vostede para que non ' 1100 00:51:20,713 --> 00:51:22,140 ten que escribir-se. 1101 00:51:22,140 --> 00:51:23,274 Si? 1102 00:51:23,274 --> 00:51:26,970 >> Audiencia: Eu creo que en charla é cando facemos a comparación. 1103 00:51:26,970 --> 00:51:29,520 Nós realmente non precisa dun contador como pi, non? 1104 00:51:29,520 --> 00:51:34,310 >> ANDI Pengo: Non facer porque realmente non me importa 1105 00:51:34,310 --> 00:51:36,250 cantas caixas nós iterado. 1106 00:51:36,250 --> 00:51:39,580 Todo o que importa é que nós imos continuar ata que sei a parar. 1107 00:51:39,580 --> 00:51:41,990 E vostede sabe cando deixar hai algún tipo de indicación 1108 00:51:41,990 --> 00:51:45,310 que está nun terminador nulo. 1109 00:51:45,310 --> 00:51:45,930 Si. 1110 00:51:45,930 --> 00:51:47,154 Assim-- 1111 00:51:47,154 --> 00:51:48,070 Audiencia: [inaudível]. 1112 00:51:48,070 --> 00:51:48,736 ANDI Pengo: Si. 1113 00:51:48,736 --> 00:51:51,950 Así, no caso de se comparar cordas, realmente non 1114 00:51:51,950 --> 00:51:54,207 importa cantas cartas é-- necesito comparar 1115 00:51:54,207 --> 00:51:56,540 se son verdadeiras ou falsas se son iguais entre si. 1116 00:51:56,540 --> 00:51:58,914 Eu non me importa cantas cartas están en cada un deles, non? 1117 00:51:58,914 --> 00:52:01,130 Só me importa que esta corresponde a este ea un 1118 00:52:01,130 --> 00:52:05,311 tras partidas a un despois xogos de todo o camiño ata o final. 1119 00:52:05,311 --> 00:52:05,810 Non? 1120 00:52:05,810 --> 00:52:07,000 Isto ten sentido? 1121 00:52:07,000 --> 00:52:10,166 >> Entón, realmente non me importa cantas letras, Só me importa que todas as letras 1122 00:52:10,166 --> 00:52:11,050 xogo. 1123 00:52:11,050 --> 00:52:12,910 Si. 1124 00:52:12,910 --> 00:52:13,920 Aceptar. 1125 00:52:13,920 --> 00:52:16,840 Podo seguir adiante con iso? 1126 00:52:16,840 --> 00:52:18,489 Gran. 1127 00:52:18,489 --> 00:52:21,280 Estamos executando un pouco curto en tempo, entón eu vou só permiten que 1128 00:52:21,280 --> 00:52:23,670 caras para lanzar brevemente un ollar iso. 1129 00:52:23,670 --> 00:52:26,430 Executa-lo no seu ID se vostedes están curiosos. 1130 00:52:26,430 --> 00:52:30,030 E vostedes poden ver o que iso será imprimindo. 1131 00:52:30,030 --> 00:52:30,640 Aceptar. 1132 00:52:30,640 --> 00:52:34,990 >> Polo tanto, algo que tamén imos tocar nun bit é a idea de aritmética de punteiro. 1133 00:52:34,990 --> 00:52:38,180 O que, todo o que é, é en vez de axustar 1134 00:52:38,180 --> 00:52:42,610 os valores do que se garda no enderezo do punteiro, 1135 00:52:42,610 --> 00:52:45,030 é só realmente cambiando o propio enderezo. 1136 00:52:45,030 --> 00:52:49,420 Polo tanto, se como o ser humano quería para axustar o punteiro manualmente 1137 00:52:49,420 --> 00:52:52,700 do xeito que faría iso é só facer n veces a dimensión do punteiro. 1138 00:52:52,700 --> 00:52:53,240 Non? 1139 00:52:53,240 --> 00:52:54,810 >> Entón, un int. 1140 00:52:54,810 --> 00:52:58,580 Un int-- cantos bytes na memoria é un int? 1141 00:52:58,580 --> 00:52:59,640 Son catro, non? 1142 00:52:59,640 --> 00:53:03,520 Entón, se eu sei que eu teño unha matriz de todo ints e quero iso para apuntar para o 1143 00:53:03,520 --> 00:53:08,470 despois, eu sabería que eu só teño que mover meu punteiro abaixo catro bytes, non? 1144 00:53:08,470 --> 00:53:12,440 E así n veces o tamaño dos bytes de punteiro 1145 00:53:12,440 --> 00:53:15,890 é, con todo moitos bytes é só indo para mover o punteiro para abaixo por. 1146 00:53:15,890 --> 00:53:20,350 >> Así, por exemplo, se temos unha matriz de ints, o primeiro, imos só dicir, 1147 00:53:20,350 --> 00:53:22,280 almacénase como valor 0x00. 1148 00:53:22,280 --> 00:53:26,150 Vostede sabe que a próxima será en 0x04 porque iso é catro bytes máis tarde. 1149 00:53:26,150 --> 00:53:31,030 E un despois que ser 0x08 e así por diante e así por diante. 1150 00:53:31,030 --> 00:53:33,830 E así, caras, dar un ollo. 1151 00:53:33,830 --> 00:53:36,640 >> Todo o que está facendo aquí é que ten un punteiro y 1152 00:53:36,640 --> 00:53:43,700 e está engadindo que a súa memoria de modo que pode baixar 1153 00:53:43,700 --> 00:53:45,559 os bloques de memoria alocada. 1154 00:53:45,559 --> 00:53:46,850 Tipo de un concepto de nivel superior. 1155 00:53:46,850 --> 00:53:48,820 Vostedes non precisarán saber a esta semana, 1156 00:53:48,820 --> 00:53:51,290 pero iso é todo o que está facendo alí abaixo. 1157 00:53:51,290 --> 00:53:55,190 1158 00:53:55,190 --> 00:53:55,900 Aceptar. 1159 00:53:55,900 --> 00:53:56,710 >> Outra vez broma. 1160 00:53:56,710 --> 00:54:01,360 1161 00:54:01,360 --> 00:54:02,780 Dúas cordas entran nun bar. 1162 00:54:02,780 --> 00:54:05,713 Un di, gustaríame un ron e valores de lixo de Coca-Cola. 1163 00:54:05,713 --> 00:54:08,796 O outro di, vai ter que desculparse meu amigo, non está terminada nula. 1164 00:54:08,796 --> 00:54:10,390 Vostedes obtelo. 1165 00:54:10,390 --> 00:54:10,890 Desculpe. 1166 00:54:10,890 --> 00:54:13,490 Isto é como eu me manteño indo cando preparar á sección 1167 00:54:13,490 --> 00:54:15,650 é que inserir un gracejo parella diapositivas. 1168 00:54:15,650 --> 00:54:16,150 Anyways. 1169 00:54:16,150 --> 00:54:21,460 1170 00:54:21,460 --> 00:54:21,960 Aceptar. 1171 00:54:21,960 --> 00:54:24,290 Antes de pasar on-- así, esencialmente, temos 1172 00:54:24,290 --> 00:54:30,600 cubriu toda a conceptual cuestións relacionadas coa punteiros. 1173 00:54:30,600 --> 00:54:34,090 E entón nós imos talk-- en movemento máis, falar por que isto é importante 1174 00:54:34,090 --> 00:54:37,810 e como iso encaixa no idea de xestión de memoria. 1175 00:54:37,810 --> 00:54:39,810 Pero antes de seguir adiante, Alguén ten preguntas 1176 00:54:39,810 --> 00:54:43,880 sobre o uso do punteiro, o que está a suceder cando está creando punteiros, 1177 00:54:43,880 --> 00:54:47,540 como están a referenciar cada outro, como son dereferencing? 1178 00:54:47,540 --> 00:54:51,760 Calquera dúbida sobre que antes de seguir adiante? 1179 00:54:51,760 --> 00:54:53,060 Aceptar. 1180 00:54:53,060 --> 00:54:54,770 Gran. 1181 00:54:54,770 --> 00:54:58,170 >> Entón, iso nos trae a este concepto maior nivel 1182 00:54:58,170 --> 00:55:00,310 de xestión de memoria no seu conxunto. 1183 00:55:00,310 --> 00:55:02,720 Así, esencialmente, en ordenador, non hai 1184 00:55:02,720 --> 00:55:06,300 dous tipos básicos de memoria ou rexións en que a memoria se garda. 1185 00:55:06,300 --> 00:55:10,210 Tes aquí o que se chama a pila e ten aquí abaixo 1186 00:55:10,210 --> 00:55:11,550 o que se chama a pila. 1187 00:55:11,550 --> 00:55:13,966 E nós estamos indo falar a pila primeiro porque é 1188 00:55:13,966 --> 00:55:16,910 o máis que finagley ten que tipo de conceptualmente 1189 00:55:16,910 --> 00:55:18,570 entender o que está a suceder. 1190 00:55:18,570 --> 00:55:23,930 >> Así, toda a pila é-- pensar Lo como unha pila de memoria física 1191 00:55:23,930 --> 00:55:28,880 onde ten un bloque de memoria que está reservado para o seu programa 1192 00:55:28,880 --> 00:55:30,180 mentres el está funcionando. 1193 00:55:30,180 --> 00:55:34,480 E é aí que, esencialmente, todo das súas variables locais son almacenados. 1194 00:55:34,480 --> 00:55:38,300 Polo tanto, este é só un zumbido na imaxe de que pila. 1195 00:55:38,300 --> 00:55:41,060 A pila alí embaixo, eu son só o zoom en un pouco máis. 1196 00:55:41,060 --> 00:55:46,170 >> Entón, esencialmente, nunha pila ten unha morea de función no seu programa. 1197 00:55:46,170 --> 00:55:48,250 Entón imos voltar para a semana dous exemplos 1198 00:55:48,250 --> 00:55:51,450 onde tivemos a nosa función principal , Así como unha función de cubo 1199 00:55:51,450 --> 00:55:56,410 onde tratamos crear unha función que cubed-- que levou parámetros como entrada, 1200 00:55:56,410 --> 00:55:59,110 los en cubos e devolto los de volta á principal. 1201 00:55:59,110 --> 00:56:02,459 Así, a forma que que está almacenado na memoria é que ten a súa función principal 1202 00:56:02,459 --> 00:56:03,250 aquí na parte inferior. 1203 00:56:03,250 --> 00:56:06,630 E, a continuación, con cada función adicional que chamar e engadir enriba diso, 1204 00:56:06,630 --> 00:56:07,960 a memoria só pilas na parte superior. 1205 00:56:07,960 --> 00:56:10,190 Pense nisso como unha pila física. 1206 00:56:10,190 --> 00:56:13,570 >> E así que ten todo de ti principal variables de súas principais funcións, 1207 00:56:13,570 --> 00:56:15,260 todo o que está a suceder aquí, almacenado. 1208 00:56:15,260 --> 00:56:17,440 E entón cando chamada cubo, que vai e 1209 00:56:17,440 --> 00:56:20,810 crea unha copia de todos os parámetros e almacena-los 1210 00:56:20,810 --> 00:56:23,010 arriba nun lugar diferente. 1211 00:56:23,010 --> 00:56:24,280 E entón por que nos importa? 1212 00:56:24,280 --> 00:56:29,220 A razón pola que nós nos importa é que non podemos só Use os parámetros aqui-- as variables 1213 00:56:29,220 --> 00:56:33,080 aqui-- e nós cambia-las, esperamos los para tamén pode cambiar aquí, non? 1214 00:56:33,080 --> 00:56:35,910 >> A idea é que están gardados en distintos lugares da memoria 1215 00:56:35,910 --> 00:56:40,540 de xeito que, cando está accedendo diferente funcións, o que pensas que está a suceder 1216 00:56:40,540 --> 00:56:45,520 non está realmente a suceder porque o bits de memoria non están conectados. 1217 00:56:45,520 --> 00:56:50,530 E entón a cuestión que é realmente importante para nós tipo de entender 1218 00:56:50,530 --> 00:56:54,100 é, que, cando estamos correndo un programa, o tamaño dunha función 1219 00:56:54,100 --> 00:56:57,159 apilar frame-- tan fisicamente, como cantidade de memoria que temos que darlle? 1220 00:56:57,159 --> 00:56:59,950 Quizais sexa unha función de xigante para que ten que dar esa cantidade de memoria. 1221 00:56:59,950 --> 00:57:02,230 Pero, se fose menor teremos precisa un pouquiño. 1222 00:57:02,230 --> 00:57:05,980 >> Así, a idea é que, cando estamos executando un programa que o tamaño da función 1223 00:57:05,980 --> 00:57:09,100 é dependente de como moitas variables e do tipo de variables 1224 00:57:09,100 --> 00:57:10,940 que queremos dar. 1225 00:57:10,940 --> 00:57:13,910 Pero e se o número de variables-- e os seus tamaños, 1226 00:57:13,910 --> 00:57:16,140 que é non determinado por ti, pero o codificador 1227 00:57:16,140 --> 00:57:20,580 é determinada pola real usuario do seu programa. 1228 00:57:20,580 --> 00:57:24,240 Entón, se eu quería crear unha función que tomou cordas do usuario, 1229 00:57:24,240 --> 00:57:27,630 pero eu realmente non sei o quão grande aquelas cordas son, é difícil para min 1230 00:57:27,630 --> 00:57:30,220 para poñer o específico cantidade de memoria necesaria. 1231 00:57:30,220 --> 00:57:30,920 Non? 1232 00:57:30,920 --> 00:57:35,234 >> Porque, se esta se function-- este usuario inserir unha cadea xigante, 1233 00:57:35,234 --> 00:57:37,650 que vai crear un erro do que se chama esencialmente 1234 00:57:37,650 --> 00:57:42,190 estourido de pila, onde vai alén da límites da memoria que ten. 1235 00:57:42,190 --> 00:57:44,250 E entón o que imos facer? 1236 00:57:44,250 --> 00:57:47,290 Se non podemos simplemente crear esta xigante apilar que pode gardar todo, 1237 00:57:47,290 --> 00:57:50,260 o que imos facer para resolver este problema? 1238 00:57:50,260 --> 00:57:54,364 >> Entón, imos seguir adiante e falar sobre o segundo tipo de memoria 1239 00:57:54,364 --> 00:57:56,780 e despois podemos falar de como podemos utilizar os dous xuntos 1240 00:57:56,780 --> 00:57:58,550 para resolver esta cuestión. 1241 00:57:58,550 --> 00:58:01,024 Entón, agora imos ir cara arriba para unha parte distinta da memoria 1242 00:58:01,024 --> 00:58:01,690 no noso ordenador. 1243 00:58:01,690 --> 00:58:03,215 Iso é chamado de datos dinámicos. 1244 00:58:03,215 --> 00:58:07,150 Así, toda a pila é unha piscina memoria dispoñible do que 1245 00:58:07,150 --> 00:58:08,690 pode ser alocada dinamicamente. 1246 00:58:08,690 --> 00:58:12,420 Así que pode cambiar mentres o programa está en execución. 1247 00:58:12,420 --> 00:58:15,160 >> E así unha rexión de memoria non utilizada que pode 1248 00:58:15,160 --> 00:58:18,200 ser allowed-- que se pode asignado coa función 1249 00:58:18,200 --> 00:58:20,490 chamado malloc, ou distribución de memoria. 1250 00:58:20,490 --> 00:58:23,110 Así, esencialmente, cando está executando un programa, 1251 00:58:23,110 --> 00:58:29,560 podes crear dinamicamente a memoria de a pila e usar isto todo aquí debaixo. 1252 00:58:29,560 --> 00:58:34,280 E entón, as súas funcións aquí pode acceder ao heap. 1253 00:58:34,280 --> 00:58:37,960 >> E así malloc, esa idea de que David tipo de forma rápida, brevemente encuberto 1254 00:58:37,960 --> 00:58:41,570 na charla, é só un xeito para controlar a súa memoria. 1255 00:58:41,570 --> 00:58:45,470 Como, cando está só creando apilar funcións, cando é só 1256 00:58:45,470 --> 00:58:48,290 ter a súa principal función coas súas funcións aleatorias, 1257 00:58:48,290 --> 00:58:52,270 pensar neles como nenos que, así fuxiu cando se fixo con eles. 1258 00:58:52,270 --> 00:58:53,690 Eran nenos realmente malas. 1259 00:58:53,690 --> 00:58:55,515 Crea-los, ensinarlles algo, 1260 00:58:55,515 --> 00:58:57,640 e entón cando quere acceder a eles de novo son 1261 00:58:57,640 --> 00:58:59,850 non hai por que o seu memoria só fuxiu. 1262 00:58:59,850 --> 00:59:04,140 >> Pero malloc, ou a pila, é un xeito de ter fillos mellores, onde 1263 00:59:04,140 --> 00:59:07,090 pode tipo de crear Los, asignar-lles valores, 1264 00:59:07,090 --> 00:59:11,080 usar eles-- que soaba realmente bad-- usalos con todo quería, 1265 00:59:11,080 --> 00:59:14,002 pero, a continuación, ser capaz de controlar eles e, a continuación, liberar memoria 1266 00:59:14,002 --> 00:59:14,960 sempre que precisa deles. 1267 00:59:14,960 --> 00:59:18,085 Polo tanto, cando está feito co seu función, os nenos volven para ti 1268 00:59:18,085 --> 00:59:20,290 e aínda ten que os datos alí. 1269 00:59:20,290 --> 00:59:25,690 >> Así, a forma que nós malloc, ou crear, memoria é pola estrela función void 1270 00:59:25,690 --> 00:59:26,790 malloc tamaño en bytes. 1271 00:59:26,790 --> 00:59:29,730 Entón, iso é só o prototipo por que facemos isto. 1272 00:59:29,730 --> 00:59:35,800 Entón, un exemplo é que creamos un punteiro do tipo int-- iguais int estrela pointer-- 1273 00:59:35,800 --> 00:59:38,120 malloc tamaño int. 1274 00:59:38,120 --> 00:59:41,734 Así, a razón pola que facemos tamaño do e non só un number-- 1275 00:59:41,734 --> 00:59:43,650 porque todos sabemos que un int é de catro bytes, 1276 00:59:43,650 --> 00:59:48,310 direita-- pero un int é só catro bytes en certos sistemas operativos. 1277 00:59:48,310 --> 00:59:50,410 >> A idea para nós, programadores é que 1278 00:59:50,410 --> 00:59:53,160 quere crear código que pode realizar en todos os ordenadores, non só 1279 00:59:53,160 --> 00:59:54,860 nosos ordenadores simple. 1280 00:59:54,860 --> 00:59:58,350 E é por iso que nos gusta de usar de tamaño e non só o número de catro. 1281 00:59:58,350 --> 00:59:59,970 Isto ten sentido para todos? 1282 00:59:59,970 --> 01:00:03,930 Así tamaño de-- todo, é un C función ou operador que 1283 01:00:03,930 --> 01:00:09,350 informa cantos bytes de memoria fai un certo tipo de variable ocupan. 1284 01:00:09,350 --> 01:00:11,150 Polo tanto, neste caso, o tamaño dun int é catro. 1285 01:00:11,150 --> 01:00:12,090 Catro bytes. 1286 01:00:12,090 --> 01:00:15,490 E malloc vai liberar ata catro bytes na súa pila, 1287 01:00:15,490 --> 01:00:18,790 entón podes usar no seu principal función de poder almacenar memoria. 1288 01:00:18,790 --> 01:00:22,460 1289 01:00:22,460 --> 01:00:24,860 Claro que todo en que medida? 1290 01:00:24,860 --> 01:00:25,918 Si? 1291 01:00:25,918 --> 01:00:28,122 >> Audiencia: Eu son claro, pero só para ser máis clear-- 1292 01:00:28,122 --> 01:00:28,705 ANDI Pengo: Aceptar. 1293 01:00:28,705 --> 01:00:29,246 Totalmente ben. 1294 01:00:29,246 --> 01:00:32,176 Audiencia: --size de é [inaudível] realmente [inaudível] 1295 01:00:32,176 --> 01:00:34,384 e que vai realmente facer o cousa que queremos que el. 1296 01:00:34,384 --> 01:00:35,380 Non é un pseudocódigo. 1297 01:00:35,380 --> 01:00:35,878 >> ANDI Pengo: Non. 1298 01:00:35,878 --> 01:00:36,874 >> Audiencia: É como un verdadeiro coisa-- 1299 01:00:36,874 --> 01:00:37,372 >> ANDI Pengo: Este é o código real. 1300 01:00:37,372 --> 01:00:38,455 >> Audiencia: --nós pode usalo. 1301 01:00:38,455 --> 01:00:39,862 É real. 1302 01:00:39,862 --> 01:00:40,418 Legal. 1303 01:00:40,418 --> 01:00:41,751 ANDI Pengo Tamaño ven con C. 1304 01:00:41,751 --> 01:00:43,475 Audiencia: Isto fai miña vida máis feliz. 1305 01:00:43,475 --> 01:00:45,550 ANDI Pengo: Si. 1306 01:00:45,550 --> 01:00:48,610 Entón, se vostede é un desenvolvedor preguiceiro como eu medio que son ás veces, 1307 01:00:48,610 --> 01:00:50,402 Eu non me gusta de memorización o tamaño dun int 1308 01:00:50,402 --> 01:00:52,734 é, eu non me gusta de memorización co tamaño dun flotador é. 1309 01:00:52,734 --> 01:00:55,160 Tamaño de só di o que que é, e iso é moito máis fácil. 1310 01:00:55,160 --> 01:00:59,880 1311 01:00:59,880 --> 01:01:00,440 >> Todo ben. 1312 01:01:00,440 --> 01:01:02,160 Entón, unha cousa importante que todos queren 1313 01:01:02,160 --> 01:01:04,620 para manter presente cando está usando malloc é que sempre 1314 01:01:04,620 --> 01:01:06,400 ten que comprobar a ver se é nulo. 1315 01:01:06,400 --> 01:01:08,630 Entón, como dixen, de volta á que a imaxe do heap. 1316 01:01:08,630 --> 01:01:11,390 A pila é só este xigante pila de memoria que ten. 1317 01:01:11,390 --> 01:01:16,740 E quere ser capaz de aproveitar anacos de memoria dela e usalo, non? 1318 01:01:16,740 --> 01:01:19,750 >> Pero e se non ten ningunha máis memoria heap en que? 1319 01:01:19,750 --> 01:01:23,650 E se eu xa usei todo del e intento malloc máis? 1320 01:01:23,650 --> 01:01:24,864 Iso non existe. 1321 01:01:24,864 --> 01:01:26,780 Ben, é por iso que é indo para obter un erro. 1322 01:01:26,780 --> 01:01:29,220 Está indo a SEG culpa. Vai ter un fallo de segmento, onde 1323 01:01:29,220 --> 01:01:30,940 accederes as cousas que non están alí. 1324 01:01:30,940 --> 01:01:33,180 E así o xeito no que facemos e que a forma que nós 1325 01:01:33,180 --> 01:01:36,120 evitar isto é que encontramos a ver se nula do punteiro. 1326 01:01:36,120 --> 01:01:41,650 >> Entón, se eu fose algo malloc e eu non tiña máis memoria, 1327 01:01:41,650 --> 01:01:45,501 que ía imprimir un erro porque o punteiro devolto a vostede é só nulo. 1328 01:01:45,501 --> 01:01:47,750 E así o xeito no que facemos isto-- iso é gran deseño, 1329 01:01:47,750 --> 01:01:52,140 só memorizar isto-- é que calquera xa que se trata de malloc nada, 1330 01:01:52,140 --> 01:01:55,300 está indo a necesidade de comprobar a ver se é nulo. 1331 01:01:55,300 --> 01:01:58,257 Porque sempre que intenta obter memoria do heap, 1332 01:01:58,257 --> 01:02:00,340 sempre ten que facer Asegúrese de que ten memoria. 1333 01:02:00,340 --> 01:02:01,350 Isto é todo o que é. 1334 01:02:01,350 --> 01:02:04,980 >> Entón, basicamente os tres liñas de código, memorizar. 1335 01:02:04,980 --> 01:02:06,830 Cada vez que malloc, plop a eles. 1336 01:02:06,830 --> 01:02:08,190 Vai ter deles. 1337 01:02:08,190 --> 01:02:10,540 Porque eu asegura que, imos para proba-lo en un caso eo seu ordenador 1338 01:02:10,540 --> 01:02:13,498 vai explotar, porque está vai memoria de acceso que é 1339 01:02:13,498 --> 01:02:16,680 non alí e as cousas van accidente e iso non vai ser bo. 1340 01:02:16,680 --> 01:02:19,290 Entón, só que perforar no seu cerebro. 1341 01:02:19,290 --> 01:02:21,370 Malloc, null. 1342 01:02:21,370 --> 01:02:22,360 Bo. 1343 01:02:22,360 --> 01:02:22,860 Todo ben. 1344 01:02:22,860 --> 01:02:26,280 1345 01:02:26,280 --> 01:02:28,340 >> Entón este xera a cuestión do que acontece 1346 01:02:28,340 --> 01:02:30,550 despois de que termine de usar esa memoria. 1347 01:02:30,550 --> 01:02:32,390 Porque toda a idea Tendo era de malloc 1348 01:02:32,390 --> 01:02:36,460 que temos este chea que poidamos tomar memoria desde e entón podemos usalo. 1349 01:02:36,460 --> 01:02:37,220 Non? 1350 01:02:37,220 --> 01:02:40,550 E entón o que temos que lembrar é que, despois de que está feito con el, 1351 01:02:40,550 --> 01:02:41,900 podemos entón libera-lo. 1352 01:02:41,900 --> 01:02:42,400 Déixao ir. 1353 01:02:42,400 --> 01:02:43,979 Podemos deixar ir. 1354 01:02:43,979 --> 01:02:47,020 Ou tamén vai baleirar memoria e máis cousas malas van pasar. 1355 01:02:47,020 --> 01:02:49,010 >> Esencialmente, sempre está tocando de memoria, 1356 01:02:49,010 --> 01:02:51,800 cousas malas van ocorrer se non facer as cousas correctamente. 1357 01:02:51,800 --> 01:02:55,150 Entón tes que comprobar a ver, en primeiro lugar, se ten a memoria dispoñible. 1358 01:02:55,150 --> 01:02:58,700 E, a continuación, despois que fixo, quere liberalos lo e facer o seu sistema operativo 1359 01:02:58,700 --> 01:03:00,690 para levalo de volta. 1360 01:03:00,690 --> 01:03:04,870 Entón, a nosa forma de facelo é só iso función, nula libre, eo apuntador 1361 01:03:04,870 --> 01:03:06,370 para aquel monte de memoria. 1362 01:03:06,370 --> 01:03:08,680 >> Así, o exemplo é punteiro libre. 1363 01:03:08,680 --> 01:03:11,580 É moi fácil, simple, non quero esquece-lo. 1364 01:03:11,580 --> 01:03:14,687 Entón confía para ver se é nulo, libre. 1365 01:03:14,687 --> 01:03:15,270 Todo o mundo é bo? 1366 01:03:15,270 --> 01:03:22,660 1367 01:03:22,660 --> 01:03:27,325 Entón unha vez máis, o código que vostedes pode tipo de rapidamente ter un ollar. 1368 01:03:27,325 --> 01:03:34,964 1369 01:03:34,964 --> 01:03:37,880 Sei que é un monte de nova sintaxe e está todo ben se é como, ah, 1370 01:03:37,880 --> 01:03:38,963 o que significa iso de novo? 1371 01:03:38,963 --> 01:03:40,250 Sen preocupacións. 1372 01:03:40,250 --> 01:03:46,785 Todo isto estaba a ser está mostrando unha acción, como todas esas cousas 1373 01:03:46,785 --> 01:03:47,660 poden ser utilizados en conxunto. 1374 01:03:47,660 --> 01:03:52,190 1375 01:03:52,190 --> 01:03:54,190 Así que é poñer xuntos como unha banda de pasado 1376 01:03:54,190 --> 01:03:56,532 láminas nós só fomos mediante nun programa. 1377 01:03:56,532 --> 01:03:58,240 Audiencia: En certo xeito que pode actually-- 1378 01:03:58,240 --> 01:03:59,570 ANDI Pengo: Dunha forma que podemos realmente usar. 1379 01:03:59,570 --> 01:04:02,379 Podería plop que na súa identificación, pode executa-lo e ía traballar. 1380 01:04:02,379 --> 01:04:02,920 Audiencia: Aceptar. 1381 01:04:02,920 --> 01:04:04,140 Entón, iso é real? 1382 01:04:04,140 --> 01:04:05,580 >> ANDI Pengo: Isto é real. 1383 01:04:05,580 --> 01:04:06,430 Si. 1384 01:04:06,430 --> 01:04:08,690 Intento facelo para que o fontes son diferentes, así 1385 01:04:08,690 --> 01:04:11,770 que cada vez que escriba reais código fonte é o código fonte 1386 01:04:11,770 --> 01:04:15,471 e que o meu código de nota é diferente, pero Non sei se isto realmente funciona. 1387 01:04:15,471 --> 01:04:16,012 Audiencia: Non. 1388 01:04:16,012 --> 01:04:17,190 Coido isso-- 1389 01:04:17,190 --> 01:04:18,213 >> ANDI Pengo: Aceptar. 1390 01:04:18,213 --> 01:04:20,578 >> Audiencia: --sometimes [Inaudível] e eu son 1391 01:04:20,578 --> 01:04:23,416 como, iso sería realmente bonito se era realmente unha cousa útil 1392 01:04:23,416 --> 01:04:24,812 pero non é unha cousa útil. 1393 01:04:24,812 --> 01:04:26,270 Gústame que iso é unha cousa útil. 1394 01:04:26,270 --> 01:04:27,010 >> ANDI Pengo: Aceptar. 1395 01:04:27,010 --> 01:04:27,510 Si. 1396 01:04:27,510 --> 01:04:28,430 Vou pasar iso xunto. 1397 01:04:28,430 --> 01:04:33,266 Sexa como, David, os nenos son realmente triste cando escribir código falso. 1398 01:04:33,266 --> 01:04:34,240 Todo ben. 1399 01:04:34,240 --> 01:04:34,740 Si? 1400 01:04:34,740 --> 01:04:37,686 >> Audiencia: Entón os PTR aquí non é en realidade un punteiro, 1401 01:04:37,686 --> 01:04:41,130 é un bloque de memoria? 1402 01:04:41,130 --> 01:04:45,130 >> ANDI Pengo: Entón está falando a primeira liña ou a un aquí abaixo? 1403 01:04:45,130 --> 01:04:48,170 Está falando sobre ese aquí? 1404 01:04:48,170 --> 01:04:50,910 >> Audiencia O PTR é cousas distintas em-- 1405 01:04:50,910 --> 01:04:53,230 >> ANDI Pengo: Ben, ata aquí enriba o que eu estou realmente doing--, 1406 01:04:53,230 --> 01:04:54,660 imos só pasar por aquí. 1407 01:04:54,660 --> 01:04:57,120 Este tipo de lazos en ben todos os conceptos. 1408 01:04:57,120 --> 01:05:01,840 Polo tanto, temos aquí int estrela PTR. 1409 01:05:01,840 --> 01:05:04,160 Entón int punteiro, que é onde en realidade estamos creando 1410 01:05:04,160 --> 01:05:06,550 un punteiro que apunta a un enteiro. 1411 01:05:06,550 --> 01:05:08,230 Ben, que vai apuntar a un número enteiro. 1412 01:05:08,230 --> 01:05:12,135 E nós estamos indo a malloc, ou darlle, memoria suficiente asignado 1413 01:05:12,135 --> 01:05:13,200 para almacenar un número enteiro. 1414 01:05:13,200 --> 01:05:14,910 Así, catro bytes neste caso. 1415 01:05:14,910 --> 01:05:18,024 >> E entón, se isto é igual a igual null-- é igual a null-- imos imprimir. 1416 01:05:18,024 --> 01:05:20,440 Oh, vostede ten un erro porque está fóra de memoria, non? 1417 01:05:20,440 --> 01:05:22,814 Se non, a entrega de unha, que di o seu programa 1418 01:05:22,814 --> 01:05:24,170 que ten un erro. 1419 01:05:24,170 --> 01:05:26,850 E entón se fai ten esa memoria, é 1420 01:05:26,850 --> 01:05:33,230 indo para almacenar todo o que chegar int dálle a pé 1421 01:05:33,230 --> 01:05:35,460 e define-lo como o valor do punteiro. 1422 01:05:35,460 --> 01:05:38,500 Entón vai realmente para apaga fisicamente este valor 1423 01:05:38,500 --> 01:05:41,702 e poñer o que obter retorno int. 1424 01:05:41,702 --> 01:05:43,910 E entón vai imprimir todo o que eles entraron. 1425 01:05:43,910 --> 01:05:46,080 >> Audiencia: E iso é será na pila? 1426 01:05:46,080 --> 01:05:47,060 >> ANDI Pengo: Isto vai estar na pila. 1427 01:05:47,060 --> 01:05:48,768 >> Audiencia: E así que estará accesible. 1428 01:05:48,768 --> 01:05:51,220 ANDI Pengo: Exactamente. 1429 01:05:51,220 --> 01:05:52,600 Niza. 1430 01:05:52,600 --> 01:05:53,756 Bo. 1431 01:05:53,756 --> 01:05:59,289 >> Audiencia: Entón, cando nós liberados PTR neste etapa final, estamos liberando o punteiro 1432 01:05:59,289 --> 01:06:00,724 ou estamos liberando o bloque? 1433 01:06:00,724 --> 01:06:01,390 ANDI Pengo: Si. 1434 01:06:01,390 --> 01:06:05,570 Entón, nós estamos liberando o pointer-- ben, liberando o bloque de memoria. 1435 01:06:05,570 --> 01:06:08,780 Así, a única forma que podemos incluso o acceso a memoria é tendo o punteiro. 1436 01:06:08,780 --> 01:06:10,730 Se non ten o punteiro, que é como, oh, eu non sei onde está, 1437 01:06:10,730 --> 01:06:11,290 non? 1438 01:06:11,290 --> 01:06:13,956 Entón, se liberala, está esencialmente liberando deste bloque enteiro. 1439 01:06:13,956 --> 01:06:16,500 A continuación, o ordenador sabe, oh, non hai nada de útil aquí, 1440 01:06:16,500 --> 01:06:19,396 Podo só poñer o lixo valores de volta para ela de novo. 1441 01:06:19,396 --> 01:06:21,590 >> Audiencia: Entón hai enteiros sobre iso? 1442 01:06:21,590 --> 01:06:23,481 >> ANDI Pengo: Non hai números enteiros? 1443 01:06:23,481 --> 01:06:23,980 Desculpe. 1444 01:06:23,980 --> 01:06:25,271 Pode reformular a súa pregunta? 1445 01:06:25,271 --> 01:06:28,330 Audiencia: eu quería dicir, despois de liberar o punteiro, o enteiro que comeza, 1446 01:06:28,330 --> 01:06:29,990 será que aínda existe? 1447 01:06:29,990 --> 01:06:31,360 >> ANDI Pengo: Non, non vai. 1448 01:06:31,360 --> 01:06:34,070 1449 01:06:34,070 --> 01:06:37,550 Ou polo menos vai existir na súa memoria antes do seu ordenador fai 1450 01:06:37,550 --> 01:06:40,231 o que quere con el, pero non hai ningunha forma de conseguir isto. 1451 01:06:40,231 --> 01:06:41,480 Porque liberou o punteiro. 1452 01:06:41,480 --> 01:06:43,150 Non sabe onde é máis. 1453 01:06:43,150 --> 01:06:43,650 Si. 1454 01:06:43,650 --> 01:06:46,500 1455 01:06:46,500 --> 01:06:48,560 >> Vou seguir adiante aquí. 1456 01:06:48,560 --> 01:06:49,060 Ufa. 1457 01:06:49,060 --> 01:06:53,012 Entón, nós estamos por unha morea de o conceptual dificultades de xestión de memoria 1458 01:06:53,012 --> 01:06:54,720 e nós só estamos indo para pasar, esencialmente, 1459 01:06:54,720 --> 01:06:57,090 5, 10 minutos, indo sobre as cousas de sintaxe que 1460 01:06:57,090 --> 01:07:03,240 será utilizable e útil para vós, pero nada moi conceptualmente por aí. 1461 01:07:03,240 --> 01:07:03,740 Aceptar. 1462 01:07:03,740 --> 01:07:06,930 >> Entón, nós estamos cambiando completamente engrenaxes aquí. 1463 01:07:06,930 --> 01:07:09,360 Xestión de memoria, difícil. Punteiros, difícil. Si. 1464 01:07:09,360 --> 01:07:10,530 É moi, moi difícil. 1465 01:07:10,530 --> 01:07:11,270 Totalmente ben. 1466 01:07:11,270 --> 01:07:13,800 É por iso que a súa peza é vai ser moi difícil. 1467 01:07:13,800 --> 01:07:17,740 Pero se ir e facer as cousas que nós somos 1468 01:07:17,740 --> 01:07:19,860 debería facer, facer que as cousas son nulos, 1469 01:07:19,860 --> 01:07:21,830 asegúrese de comprobar que as cousas están null, asegúrese de memoria libre, 1470 01:07:21,830 --> 01:07:23,910 garantir que as cousas non son vazando, vai ser bo. 1471 01:07:23,910 --> 01:07:25,761 Vai ser definido. 1472 01:07:25,761 --> 01:07:26,260 Todo ben. 1473 01:07:26,260 --> 01:07:30,870 Entón, imos pasar esta concepto totalmente novo de redirección. 1474 01:07:30,870 --> 01:07:33,201 E así antes de agora, o principal forma que temos 1475 01:07:33,201 --> 01:07:35,700 interagido coa nosa programas é a través da entrada estándar 1476 01:07:35,700 --> 01:07:36,533 e saída estándar. 1477 01:07:36,533 --> 01:07:37,040 Non? 1478 01:07:37,040 --> 01:07:39,230 Nós, como a entrada do usuario cousas eo ordenador 1479 01:07:39,230 --> 01:07:42,090 cospe-lo de volta para nós no terminal. 1480 01:07:42,090 --> 01:07:44,770 >> Pero existen outras formas para nós para interactuar 1481 01:07:44,770 --> 01:07:47,810 co ordenador coa nosa programas que non son só me 1482 01:07:47,810 --> 01:07:50,245 cousas fisicamente dixitación en cando estou solicitado. 1483 01:07:50,245 --> 01:07:52,620 E o xeito de facermos isto é por medio do que a maior cenoria 1484 01:07:52,620 --> 01:07:53,453 eo símbolo pipe. 1485 01:07:53,453 --> 01:07:55,970 1486 01:07:55,970 --> 01:07:58,630 Por iso, tamén pode ler e gardar arquivos usando iso. 1487 01:07:58,630 --> 01:08:03,230 >> Así, a forma que nós facemos este é o maior que a cenoria, todo o que está a facer 1488 01:08:03,230 --> 01:08:07,410 está escribindo calquera que sexa o seu ficheiro ten a un arquivo separado. 1489 01:08:07,410 --> 01:08:11,870 Así, por exemplo, se eu quería correr Ola mundo 1490 01:08:11,870 --> 01:08:14,330 e eu quería a saída ser gardados noutro arquivo 1491 01:08:14,330 --> 01:08:17,359 e non só impreso para min, eu pode só facer maior que a cenoria, 1492 01:08:17,359 --> 01:08:18,410 output.txt. 1493 01:08:18,410 --> 01:08:22,609 Entón, todo o que está facendo é tomar meu programa hello.world, 1494 01:08:22,609 --> 01:08:26,359 e calquera que sexa a saída é, é aforrar nun ficheiro chamado output.txt. 1495 01:08:26,359 --> 01:08:29,850 Así, o xeito que David fixo o .csv cos nomes dos alumnos, 1496 01:08:29,850 --> 01:08:32,310 é o mesmo que vostedes poden facer. 1497 01:08:32,310 --> 01:08:35,137 >> E o que é especialmente útil aquí son o maior 1498 01:08:35,137 --> 01:08:38,220 than-- os dous superiores a cenoria sinais que pode achegar a unha saída 1499 01:08:38,220 --> 01:08:40,795 ficheiro, o que significa que pode só engadir enriba dela. 1500 01:08:40,795 --> 01:08:43,420 Pode só continuar a engadir a output.txt de cada cousa adicional 1501 01:08:43,420 --> 01:08:44,490 que está facendo. 1502 01:08:44,490 --> 01:08:48,010 Ou, se comezar a entrar máis programas complicados, os dous máis 1503 01:08:48,010 --> 01:08:50,939 que a cenoria, que só impresións as mensaxes de erro. 1504 01:08:50,939 --> 01:08:53,340 Entón, digamos que teña un xigante cantidade de mensaxes de erro 1505 01:08:53,340 --> 01:08:54,810 e quere ler a través de todos eles e 1506 01:08:54,810 --> 01:08:56,450 Non quero ter que desprazarse a través do seu terminal, 1507 01:08:56,450 --> 01:08:58,651 realmente pode só facer maior que resultado.txt 1508 01:08:58,651 --> 01:09:00,359 e está indo para salvar todos os seus erros 1509 01:09:00,359 --> 01:09:02,900 nun ficheiro chamado output.txt que pode percorrer e ler. 1510 01:09:02,900 --> 01:09:04,622 Audiencia: Onde está o arquivo de texto gardados? 1511 01:09:04,622 --> 01:09:07,330 ANDI Pengo: É salvo na mesma directorio que o seu programa é. 1512 01:09:07,330 --> 01:09:09,830 Entón acaba de volver e ollar para el. 1513 01:09:09,830 --> 01:09:11,930 E o mesmo que nós pode facer esta entrada é 1514 01:09:11,930 --> 01:09:14,300 que poidamos realmente tomar o contido dalgún arquivo 1515 01:09:14,300 --> 01:09:16,380 e nós pode introducir iso no noso programa. 1516 01:09:16,380 --> 01:09:19,930 Entón en vez de ter que facer de comandos Argumentos da liña de onde físicamente 1517 01:09:19,930 --> 01:09:21,680 ten que escribir cousas cada vez, 1518 01:09:21,680 --> 01:09:27,890 realmente só ten un arquivo chamado input.txt que pon todo. 1519 01:09:27,890 --> 01:09:31,970 >> E entón pipe é especialmente legal porque pode levar a saída dun programa 1520 01:09:31,970 --> 01:09:34,170 e usalo como entrada doutro programa. 1521 01:09:34,170 --> 01:09:38,430 Así, por exemplo, en Vigenère dos seus rapaces, hai esta liña de código que 1522 01:09:38,430 --> 01:09:42,010 caras están en execución que quizais quizais realmente non sabía o que era doing-- 1523 01:09:42,010 --> 01:09:46,910 este ./generate 1000 tubo ./42. 1524 01:09:46,910 --> 01:09:47,510 Non? 1525 01:09:47,510 --> 01:09:51,100 >> Entón, todo o que está facendo, se nós só bótalle un ollo neste paso a paso, 1526 01:09:51,100 --> 01:09:55,870 o ./generate, isto significa que eu son executando o meu programa xerar. 1527 01:09:55,870 --> 01:09:58,850 Que está a tomar en 1000 na súa entrada. 1528 01:09:58,850 --> 01:10:03,330 Entón, quero xerar 1.000 chou números e eu vou tubo isso-- 1529 01:10:03,330 --> 01:10:07,790 ou eu vou usar isso-- saída como entrada para o meu programa chamado find. 1530 01:10:07,790 --> 01:10:12,110 E eu vou tentar atopar 42 de os números xerados daqueles 1000 1531 01:10:12,110 --> 01:10:13,130 números. 1532 01:10:13,130 --> 01:10:15,410 Será que esta liña de código fai sentido para todos? 1533 01:10:15,410 --> 01:10:17,820 >> Así, deste xeito estamos aforrar nos unha tonelada de pasos. 1534 01:10:17,820 --> 01:10:21,880 Non temos para realizar xerar, gardar o ficheiro e, a continuación, colocar-lo en atopar. 1535 01:10:21,880 --> 01:10:23,800 Podemos só facer todo nunha liña. 1536 01:10:23,800 --> 01:10:28,080 Entón o que xeran é saída, plop-lo de volta en atopar. 1537 01:10:28,080 --> 01:10:28,580 Si? 1538 01:10:28,580 --> 01:10:32,484 >> Audiencia: E en termos de comandos argumentos de liña, é isso-- que é 1539 01:10:32,484 --> 01:10:33,948 tres argumentos liña de comandos? 1540 01:10:33,948 --> 01:10:38,340 É xerar, find-- non, four-- xerar, 1.000, atopar e 42? 1541 01:10:38,340 --> 01:10:39,134 Ou é as-- 1542 01:10:39,134 --> 01:10:42,050 ANDI Pengo: Entón o tubo realmente non contar como un argumento da liña de comandos 1543 01:10:42,050 --> 01:10:44,590 porque o compilador ou o Terminal sabe que o tubo, 1544 01:10:44,590 --> 01:10:48,590 Oh, eu sei que eu teño ollar antes o tubo, porque esa é a miña saída 1545 01:10:48,590 --> 01:10:51,220 e debo coidar do tubo, porque esa é a miña entrada. 1546 01:10:51,220 --> 01:10:54,520 Por iso, sabe o isso-- ./generate e 1.000, 1547 01:10:54,520 --> 01:10:57,390 estes son dous argumentos de comandos, a continuación, só para o primeiro programa. 1548 01:10:57,390 --> 01:11:01,760 E entón o ./find 42 son dous comandos argumentos de liña para o segundo programa. 1549 01:11:01,760 --> 01:11:02,980 Si. 1550 01:11:02,980 --> 01:11:06,150 Todos boa sobre iso? 1551 01:11:06,150 --> 01:11:10,610 >> Entón, só ben rápido, o que facer estas tres liñas de código fai? 1552 01:11:10,610 --> 01:11:11,606 Razoablemente simple. 1553 01:11:11,606 --> 01:11:13,605 Alguén quere me dizer- que a primeira liña fai? 1554 01:11:13,605 --> 01:11:18,201 1555 01:11:18,201 --> 01:11:19,117 Audiencia: [inaudível]. 1556 01:11:19,117 --> 01:11:23,540 1557 01:11:23,540 --> 01:11:26,534 >> ANDI Pengo: Pense nisso como apenas-- o que fai o maior que a cenoria facer? 1558 01:11:26,534 --> 01:11:29,299 >> Audiencia: Pon algo á seguinte liña. 1559 01:11:29,299 --> 01:11:31,090 ANDI Pengo: Entón, cal é o contrario do que? 1560 01:11:31,090 --> 01:11:33,514 Audiencia: Ela pon a próxima cousa en o primeiro. 1561 01:11:33,514 --> 01:11:34,180 ANDI Pengo: Si. 1562 01:11:34,180 --> 01:11:37,550 Entón, todo o que está facendo é que é executar un programa .hello-- 1563 01:11:37,550 --> 01:11:40,010 está executando un programa chamado Ola. 1564 01:11:40,010 --> 01:11:42,960 Está indo a darlle unha entrada chamada input.txt. 1565 01:11:42,960 --> 01:11:43,460 Non? 1566 01:11:43,460 --> 01:11:46,250 Porque pensar nela como só indo fisicamente en Ola. 1567 01:11:46,250 --> 01:11:50,632 E entón está indo para salvar o saída nun ficheiro chamado output.txt. 1568 01:11:50,632 --> 01:11:51,715 Como sobre a segunda liña? 1569 01:11:51,715 --> 01:11:54,164 Quere me dicir o que a segunda liña faise? 1570 01:11:54,164 --> 01:11:55,080 Audiencia: [inaudível]. 1571 01:11:55,080 --> 01:12:00,522 1572 01:12:00,522 --> 01:12:01,230 ANDI Pengo: Sentímolo. 1573 01:12:01,230 --> 01:12:03,560 Diga iso de novo. 1574 01:12:03,560 --> 01:12:04,060 Elliot. 1575 01:12:04,060 --> 01:12:06,560 >> Audiencia: Entón, el pon un lista de números para atopar. 1576 01:12:06,560 --> 01:12:07,540 >> ANDI Pengo: Si. 1577 01:12:07,540 --> 01:12:10,790 Entón, atopar, lembre-se, en Para realizar atopalo 1578 01:12:10,790 --> 01:12:13,209 Debe saber onde está a procurar. 1579 01:12:13,209 --> 01:12:15,500 E así todo o que está facendo aquí é que está dándolle 1580 01:12:15,500 --> 01:12:18,720 un conxunto de pre considerarse números, entón vai atopar 1581 01:12:18,720 --> 01:12:21,680 para buscar aqueles para o número de 42. 1582 01:12:21,680 --> 01:12:23,620 E, a continuación, 15. 1583 01:12:23,620 --> 01:12:25,870 Teña en conta que, vostedes foi este cando deu o seu código. 1584 01:12:25,870 --> 01:12:27,590 Agora entende o que estaba facendo? 1585 01:12:27,590 --> 01:12:31,069 1586 01:12:31,069 --> 01:12:33,520 >> Audiencia: É poñer en o conxunto de instrucións 1587 01:12:33,520 --> 01:12:38,860 para [inaudível] por medio dun de tres por tres para as-- para gañar o partido. 1588 01:12:38,860 --> 01:12:39,560 >> ANDI Pengo: Si. 1589 01:12:39,560 --> 01:12:41,480 >> Audiencia: É entradas aqueles instrucións para o programa. 1590 01:12:41,480 --> 01:12:42,438 >> ANDI Pengo: Moi bonito. 1591 01:12:42,438 --> 01:12:47,840 Así, o CS50 til. / Pset3 / 3x3, todo o que estaba facendo era que creamos un texto 1592 01:12:47,840 --> 01:12:50,700 ficheiro que todo o títulos listos para vós. 1593 01:12:50,700 --> 01:12:56,020 E así para o seu xogo para xogar, só-- nós só poñer isto no seu programa. 1594 01:12:56,020 --> 01:12:58,230 Entón nós tiñamos creado este tarxeta e, a continuación, estamos 1595 01:12:58,230 --> 01:13:02,890 poñer este consello no seu programa que foi e creou unha tella de tres 1596 01:13:02,890 --> 01:13:03,390 por tres. 1597 01:13:03,390 --> 01:13:04,730 Isto é todo o que estaba facendo. 1598 01:13:04,730 --> 01:13:07,331 >> E por iso non foi realmente máxica pasando nos bastidores 1599 01:13:07,331 --> 01:13:09,330 que vostedes non fixeron programa que programado. 1600 01:13:09,330 --> 01:13:13,120 Pero agora vostedes entenden por que nós fixemos iso polo que é todo de bo. 1601 01:13:13,120 --> 01:13:15,750 Todo ben. 1602 01:13:15,750 --> 01:13:22,200 >> Así, mentres a redirección é moi útil, C ten un mecanismo xeral 1603 01:13:22,200 --> 01:13:25,030 para lectura e escritura arquivos do teu sitio. 1604 01:13:25,030 --> 01:13:26,780 Nada conceptualmente difícil aquí, entón eu son 1605 01:13:26,780 --> 01:13:28,330 só vai pasar por moi, moi rápido. 1606 01:13:28,330 --> 01:13:30,621 Todo o que é algunha memorización e asegurarse de caras 1607 01:13:30,621 --> 01:13:32,680 son sintaticamente usalo correctamente. 1608 01:13:32,680 --> 01:13:35,640 O xeito que fariamos é dicir crear unha referencia para o arquivo, 1609 01:13:35,640 --> 01:13:38,473 nós abrir o ficheiro, e entón nós faría toda a lectura e escritura 1610 01:13:38,473 --> 01:13:39,929 e, a continuación, pecha o arquivo. 1611 01:13:39,929 --> 01:13:41,720 Cando unha cousa que vostedes quere ter en conta é 1612 01:13:41,720 --> 01:13:47,360 que ao facer isto, porque estamos pechando e abrindo ficheiros, 1613 01:13:47,360 --> 01:13:51,230 todos os comandos están incluídos no standard-- estándar E / 1614 01:13:51,230 --> 01:13:51,730 biblioteca. 1615 01:13:51,730 --> 01:13:54,410 Entón asegúrese sempre que está facelo que included-- 1616 01:13:54,410 --> 01:13:59,020 # Included-- estándar I / O punto h. 1617 01:13:59,020 --> 01:14:01,691 >> Tan real rápido. 1618 01:14:01,691 --> 01:14:03,940 Paso un, quere crear unha referencia a ese ficheiro. 1619 01:14:03,940 --> 01:14:07,670 E agora que temos punteiros feito, podedes dicirme o que esta liña de código 1620 01:14:07,670 --> 01:14:08,630 está facendo. 1621 01:14:08,630 --> 01:14:10,250 Non? 1622 01:14:10,250 --> 01:14:15,397 Todo o que está facendo é crear unha punteiro nomeado ficheiro de tipo de ficheiro. 1623 01:14:15,397 --> 01:14:17,980 Porque sabe que vai para ligar a un ficheiro e está 1624 01:14:17,980 --> 01:14:20,460 vai abrir o ficheiro. 1625 01:14:20,460 --> 01:14:23,320 Entón está f open-- todo fai é abrir o ficheiro. 1626 01:14:23,320 --> 01:14:24,560 >> Este é o nome do ficheiro. 1627 01:14:24,560 --> 01:14:26,060 E hai tres cousas que podes facer. 1628 01:14:26,060 --> 01:14:28,195 Pode ler, escribir ou engadir. 1629 01:14:28,195 --> 01:14:30,320 A maioría Xeralmente, caras estará lendo ou escribindo 1630 01:14:30,320 --> 01:14:33,195 porque está ou vai ser introducindo un ficheiro ou unha saída. 1631 01:14:33,195 --> 01:14:36,500 Entón, practicamente re w son os dous cousas que vai usar máis. 1632 01:14:36,500 --> 01:14:41,722 >> Polo tanto, neste caso, todo o que eu teño feito é crear un punteiro para un ficheiro chamado arquivo. 1633 01:14:41,722 --> 01:14:47,900 Estou abrindo o seu e eu son eu son reading-- abrir este ficheiro chamado file.txt 1634 01:14:47,900 --> 01:14:49,020 e eu estou lendo. 1635 01:14:49,020 --> 01:14:51,730 Isto é todo o que eu estou facendo neste momento. 1636 01:14:51,730 --> 01:14:55,270 E, a continuación, estes son só funciona en que pode ler cousas distintas 1637 01:14:55,270 --> 01:14:57,750 ou escribir cousas distintas ou saltar a lugares diferentes 1638 01:14:57,750 --> 01:14:59,420 onde queiras mirar. 1639 01:14:59,420 --> 01:15:01,200 Todos estes son en liña. 1640 01:15:01,200 --> 01:15:02,960 Todo isto pode só Google. 1641 01:15:02,960 --> 01:15:04,280 Non é necesario lembra-las. 1642 01:15:04,280 --> 01:15:07,160 Son só alí, desbotable para o seu uso 1643 01:15:07,160 --> 01:15:09,360 se desexa poder usalos. 1644 01:15:09,360 --> 01:15:13,210 >> Entón, se eu quería só ler nun carácter de cada vez, 1645 01:15:13,210 --> 01:15:15,360 Eu faría calquera arquivo fgetc. 1646 01:15:15,360 --> 01:15:18,850 Ou se eu quería ler nunha liña de texto de cada vez, eu faría fgets. 1647 01:15:18,850 --> 01:15:19,840 E así por diante e así por diante. 1648 01:15:19,840 --> 01:15:23,640 Todos estes só facer diferente cousas que vostedes poden usar. 1649 01:15:23,640 --> 01:15:25,920 >> E entón, finalmente, despois de que eu son rematar de ler ou escribir, 1650 01:15:25,920 --> 01:15:27,770 Só vou usar fclose ese ficheiro. 1651 01:15:27,770 --> 01:15:31,760 E lembre, este é un destes, lembre-se, por favor 1652 01:15:31,760 --> 01:15:34,220 facelo ou ben o seu ficheiro non vai traballar. 1653 01:15:34,220 --> 01:15:36,130 Sempre abrir un ficheiro lectura ou a lectura, 1654 01:15:36,130 --> 01:15:38,310 ten que sempre pechalo se abrilo. 1655 01:15:38,310 --> 01:15:40,210 O mesmo coa memoria, non? 1656 01:15:40,210 --> 01:15:42,390 Vostede ten que ter sempre memoria e libre-lo. 1657 01:15:42,390 --> 01:15:45,200 Aquí ten que abrir sempre unha ficheiro antes de lelo 1658 01:15:45,200 --> 01:15:47,360 e sempre ten que pechalo despois que abrilo. 1659 01:15:47,360 --> 01:15:50,650 1660 01:15:50,650 --> 01:15:52,190 >> Polo tanto, este é tamén en liña. 1661 01:15:52,190 --> 01:15:55,590 Vou desafia-lo caras para tipo de escribir un programa que imprime 1662 01:15:55,590 --> 01:15:57,080 hello.world a un arquivo. 1663 01:15:57,080 --> 01:15:58,280 É realmente sinxelo. 1664 01:15:58,280 --> 01:16:00,854 É, esencialmente, implica só as poucas liñas de código 1665 01:16:00,854 --> 01:16:02,270 que foron escritas anteriormente. 1666 01:16:02,270 --> 01:16:04,311 Está indo a poñer-los xuntos e escribir isto. 1667 01:16:04,311 --> 01:16:06,630 1668 01:16:06,630 --> 01:16:10,950 >> Por iso, algunhas cousas importantes a ter en conta mentres vostedes están tentando usar iso. 1669 01:16:10,950 --> 01:16:14,410 Se todo isto é moi útil para a súa pset esta semana, 1670 01:16:14,410 --> 01:16:18,000 é que fopen crea un punteiro de arquivo. 1671 01:16:18,000 --> 01:16:19,500 Non é, en realidade, o arquivo físico. 1672 01:16:19,500 --> 01:16:22,260 Todo o que está a apuntar cara ao ficheiro que quere abrir. 1673 01:16:22,260 --> 01:16:26,070 E é, esencialmente, sempre que vostede está a usar calquera das outras funcións 1674 01:16:26,070 --> 01:16:30,130 como fread ou fwrite ou fgetc ou fgets, é 1675 01:16:30,130 --> 01:16:33,380 que está só de paso en torno a esta Punteiro para todas esas funcións. 1676 01:16:33,380 --> 01:16:36,510 Entón, non está realmente tendo que arquivo e usalo para as súas funcións, 1677 01:16:36,510 --> 01:16:39,540 só está tomando o punteiro e poñelas para estas funcións 1678 01:16:39,540 --> 01:16:41,620 de modo que pode empregar. 1679 01:16:41,620 --> 01:16:45,360 >> E se esquecer de pechar seu ficheiro despois de que usalo, 1680 01:16:45,360 --> 01:16:47,710 o programa vai baleirar memoria. 1681 01:16:47,710 --> 01:16:50,700 Esencialmente, todos os medios que é que as cousas malas van acontecer 1682 01:16:50,700 --> 01:16:52,960 eo seu programa non funcionar correctamente. 1683 01:16:52,960 --> 01:16:54,880 E así por diante o pset en o comezo, creo 1684 01:16:54,880 --> 01:16:59,180 hai unha pequena onde explained-- Nate explained-- que Valgrind foi. 1685 01:16:59,180 --> 01:17:02,350 Todos Valgrind é un xeito de ti asegúrese de que non está con baleirado de memoria. 1686 01:17:02,350 --> 01:17:04,433 Entón vostedes queren facer Asegúrese de que asistir a este curto 1687 01:17:04,433 --> 01:17:08,771 porque iso explica todo moi ben o que pasa. 1688 01:17:08,771 --> 01:17:09,270 Aceptar. 1689 01:17:09,270 --> 01:17:11,260 Entón eu pase por iso, realmente, moi rapidamente, porque realmente 1690 01:17:11,260 --> 01:17:13,870 quero comezar a falar o pset antes de vós saír. 1691 01:17:13,870 --> 01:17:16,690 Alguén ten preguntas conceptualmente? 1692 01:17:16,690 --> 01:17:20,060 Principalmente todo isto é só sintaxe que pode usar para ler ou escribir arquivos. 1693 01:17:20,060 --> 01:17:25,090 1694 01:17:25,090 --> 01:17:28,140 >> Finalmente, o favorito de todos. 1695 01:17:28,140 --> 01:17:31,760 Nós imos falar sobre o pset agora. 1696 01:17:31,760 --> 01:17:35,990 Así, mostra da man, cantos de vostedes ler especificación esta semana? 1697 01:17:35,990 --> 01:17:36,660 Oh, iso é a metade. 1698 01:17:36,660 --> 01:17:38,000 Iso é bo. 1699 01:17:38,000 --> 01:17:41,430 Polo tanto, esta é realmente unha realidade, pset realmente divertido no sentido 1700 01:17:41,430 --> 01:17:43,889 que se sentir como un detective porque é 1701 01:17:43,889 --> 01:17:46,930 facendo todas estas cousas realmente legais que non sabía que podería facer 1702 01:17:46,930 --> 01:17:49,050 pero agora é moi legal que pode facelas. 1703 01:17:49,050 --> 01:17:52,400 E é realmente moi máis simple do que vostedes pensan. 1704 01:17:52,400 --> 01:17:56,640 >> Así, as metades básicos de este programa son que está 1705 01:17:56,640 --> 01:18:00,330 indo para descargar o código fonte ou código de distribución escrito por nós. 1706 01:18:00,330 --> 01:18:03,540 E vai ter un cartafol chamada BMP e outro cartafol 1707 01:18:03,540 --> 01:18:05,550 chamado JPG. 1708 01:18:05,550 --> 01:18:08,370 Dentro do seu BMP, é terá tres programas. 1709 01:18:08,370 --> 01:18:10,400 Un deles xa está escrito para ti. 1710 01:18:10,400 --> 01:18:12,477 Así, é un programa copy.c nós xa escribimos 1711 01:18:12,477 --> 01:18:14,060 para ti que está indo a baixar. 1712 01:18:14,060 --> 01:18:19,440 Todo o que fai é tomar como entrada unha imaxe e fai unha copia do mesmo como saída. 1713 01:18:19,440 --> 01:18:22,150 Isto é todo o que ficheiro está facendo. 1714 01:18:22,150 --> 01:18:25,260 >> Pero o que quere facer para whodunit-- así como moitos de vós 1715 01:18:25,260 --> 01:18:30,450 Teña en conta que caras na quinta serie ou maybe-- está younger-- quizais terceira serie, 1716 01:18:30,450 --> 01:18:33,945 cando vostedes tiñan mensaxes secretas e tiña que poñer un anaco de papel sobre ela 1717 01:18:33,945 --> 01:18:35,440 para descodificar a mensaxe? 1718 01:18:35,440 --> 01:18:36,000 Si? 1719 01:18:36,000 --> 01:18:39,580 Entón, iso é todo o que estamos facendo só que esta vez a un ordenador. 1720 01:18:39,580 --> 01:18:41,832 Entón, nós demos-lle esta imaxe fermosa. 1721 01:18:41,832 --> 01:18:43,540 Non parece algo mais por baixo 1722 01:18:43,540 --> 01:18:49,660 é un indicio de que está indo para axudar con respondendo á pregunta pedímoslle. 1723 01:18:49,660 --> 01:18:54,170 >> Esencialmente, o que quere que facer é introducir o ficheiro, 1724 01:18:54,170 --> 01:18:56,610 axustar algunhas cousas ao redor, quizais axustar as cores, 1725 01:18:56,610 --> 01:19:00,730 cambiar as cousas, para que todo a mensaxe é pode chegar a través. 1726 01:19:00,730 --> 01:19:03,740 Entón, dentro están escondidos píxeles e información 1727 01:19:03,740 --> 01:19:07,140 que se escribir o seu código correctamente vai decodificar e dicirlle 1728 01:19:07,140 --> 01:19:08,500 o que esta pista é. 1729 01:19:08,500 --> 01:19:12,480 E por iso algúns consellos útiles sobre como ía sobre abordar este. 1730 01:19:12,480 --> 01:19:15,180 >> Realmente quere coñecemento Se con arquivo E / 1731 01:19:15,180 --> 01:19:18,760 porque estamos a lectura de arquivos e gravación de arquivos. 1732 01:19:18,760 --> 01:19:19,260 Non? 1733 01:19:19,260 --> 01:19:21,430 E así sempre que facemos que, que implica 1734 01:19:21,430 --> 01:19:25,170 ficheiro I / O. Vai ten que familiarizarse 1735 01:19:25,170 --> 01:19:27,450 con, como abrir arquivos de imaxes? 1736 01:19:27,450 --> 01:19:29,960 Como escribir para arquivos como fotos? 1737 01:19:29,960 --> 01:19:31,640 Como fai todas esas cousas? 1738 01:19:31,640 --> 01:19:33,660 Isto vai ser realmente útil. 1739 01:19:33,660 --> 01:19:36,190 >> En segundo lugar, como está será capaz de cambiar 1740 01:19:36,190 --> 01:19:38,140 as cores que aclarar esta imaxe? 1741 01:19:38,140 --> 01:19:43,660 El probablemente vai implicar axustando os seus píxeles ou os seus valores RGB 1742 01:19:43,660 --> 01:19:45,390 nalgún lugar alí, esencialmente. 1743 01:19:45,390 --> 01:19:47,800 Non hai ningunha maneira dereita de resolver este sempre que 1744 01:19:47,800 --> 01:19:52,560 can-- sempre que pode tipo de axustar os píxeles para facelo 1745 01:19:52,560 --> 01:19:54,640 coma algo que lle gusta. 1746 01:19:54,640 --> 01:19:56,207 Isto é todo o que nós nos preocupa tamén. 1747 01:19:56,207 --> 01:19:57,540 Polo tanto, hai moitas maneiras de facelo. 1748 01:19:57,540 --> 01:20:00,039 Só xogar con el ata comeza algo que funciona. 1749 01:20:00,039 --> 01:20:02,900 E sería moi Sorprendido como algunhas liñas de código 1750 01:20:02,900 --> 01:20:04,510 precisa realmente facer iso. 1751 01:20:04,510 --> 01:20:08,700 Estou falando como tres liñas de código total de 1752 01:20:08,700 --> 01:20:11,310 que ten que escribir a fin de facer iso. 1753 01:20:11,310 --> 01:20:15,470 Entón, se atopa-se escribir 40, 30 liñas de código, 1754 01:20:15,470 --> 01:20:16,960 probablemente está facendo mal. 1755 01:20:16,960 --> 01:20:19,390 Todo o que tes que facer é tipo de xogar coas cores 1756 01:20:19,390 --> 01:20:22,960 para ver como funciona isto. 1757 01:20:22,960 --> 01:20:27,040 >> Polo tanto, despois, dirixir-se para un pouco a máis difícil de un problema. 1758 01:20:27,040 --> 01:20:30,190 Aquí temos redimensionar onde estamos pedindo que 1759 01:20:30,190 --> 01:20:34,210 a-- estamos dándolle como entrada unha imaxe ea súa Adaptación 1760 01:20:34,210 --> 01:20:36,710 esta imaxe en algo maior ou algo menor 1761 01:20:36,710 --> 01:20:38,500 dependendo das dimensións que lle dan. 1762 01:20:38,500 --> 01:20:41,260 Entón lembre, en charla que David rapidamente 1763 01:20:41,260 --> 01:20:45,780 mirou sobre a información é posible polos seus ordenadores 1764 01:20:45,780 --> 01:20:47,590 para dicir que é un tipo de ficheiro. 1765 01:20:47,590 --> 01:20:50,530 Así, un arquivo de Word ten especial caracteres diante do que 1766 01:20:50,530 --> 01:20:52,040 informa ao seu ordenador é un arquivo de Word. 1767 01:20:52,040 --> 01:20:53,090 O mesmo cun JPEG. 1768 01:20:53,090 --> 01:20:55,131 Neste caso imos para darlle un ficheiro JPEG. 1769 01:20:55,131 --> 01:20:58,300 Todo o que si sabemos é que JPEG ficheiro é unha imaxe, non? 1770 01:20:58,300 --> 01:21:01,430 Pero os distingue de ordenador Lo de formas moi específicas. 1771 01:21:01,430 --> 01:21:04,070 Así, a principios de calquera arquivo JPEG, é 1772 01:21:04,070 --> 01:21:08,210 terá o que se chama bitmap Información cabeceira eo cabeceira do ficheiro de mapa de bits. 1773 01:21:08,210 --> 01:21:11,080 Todos estes son son diferentes partes de datos 1774 01:21:11,080 --> 01:21:14,870 que informa ao seu ordenador, hey, escoite, un JPEGs chegando 1775 01:21:14,870 --> 01:21:17,820 e estas son as dimensións ou características dese JPEG. 1776 01:21:17,820 --> 01:21:21,280 >> Entón vostedes realmente queren saber que información se garda dentro 1777 01:21:21,280 --> 01:21:23,560 destes cabeceiras e o que é o tamaño deles. 1778 01:21:23,560 --> 01:21:25,640 Porque cando está executando a través do seu programa, 1779 01:21:25,640 --> 01:21:27,370 vai querer saltar por riba dese importe. 1780 01:21:27,370 --> 01:21:27,940 Non? 1781 01:21:27,940 --> 01:21:29,910 Porque non me importa sobre como modificar a cabeceira, 1782 01:21:29,910 --> 01:21:31,493 lle importa sobre como modificar o que está despois. 1783 01:21:31,493 --> 01:21:32,450 Non? 1784 01:21:32,450 --> 01:21:36,040 Polo tanto, asegúrese de que vostede sabe quão grande son esas cousas. 1785 01:21:36,040 --> 01:21:39,065 >> En segundo lugar, antes de comezar intentando cambiar o tamaño da imaxe, 1786 01:21:39,065 --> 01:21:41,940 probablemente vai querer gardar as dimensións do orixinal. 1787 01:21:41,940 --> 01:21:42,520 Non? 1788 01:21:42,520 --> 01:21:45,550 Porque se eu te contar esta imaxe é de 100 píxeles por 100 píxeles, 1789 01:21:45,550 --> 01:21:47,630 e quero que faga catro veces maiores, 1790 01:21:47,630 --> 01:21:50,460 vostede sabe que ten que multiplicar esas dimensións por catro. 1791 01:21:50,460 --> 01:21:54,960 Entón quere un ficheiro de saída 400 por 400 píxeles, por exemplo. 1792 01:21:54,960 --> 01:21:58,300 Entón, é realmente útil para vós gardar as dimensións do orixinal. 1793 01:21:58,300 --> 01:22:00,780 E, a continuación, despois, tras termine de Adaptación, 1794 01:22:00,780 --> 01:22:06,270 pode escribir novas cabeceiras con estas novas dimensións despois do redimensionamento. 1795 01:22:06,270 --> 01:22:10,750 >> E a forma que físicamente pode crear en grandes píxeles 1796 01:22:10,750 --> 01:22:13,380 é que pode escribir nova RGB-- lembre, RGB, 1797 01:22:13,380 --> 01:22:17,784 todo o que significa vermello, verde, e píxeles blue-- a un arquivo fóra. 1798 01:22:17,784 --> 01:22:20,200 E vai querer ter cantidades diferentes de que 1799 01:22:20,200 --> 01:22:21,200 que chamamos enchido. 1800 01:22:21,200 --> 01:22:24,780 Todo é de recheo son espazos fotos antes e despois 1801 01:22:24,780 --> 01:22:29,265 que dicir, esencialmente, que your-- contar a súa imaxe como gran 1802 01:22:29,265 --> 01:22:30,589 debe tomar-se. 1803 01:22:30,589 --> 01:22:33,630 Isto é moi abstracto para unha morea de se aínda non leu a especificación pset, 1804 01:22:33,630 --> 01:22:35,410 pero vai ser moi útil para cando 1805 01:22:35,410 --> 01:22:36,460 en realidade estás lendo a través del. 1806 01:22:36,460 --> 01:22:38,126 Vostede é como, oh, si, iso ten sentido. 1807 01:22:38,126 --> 01:22:39,310 Por que eu teño que facer iso? 1808 01:22:39,310 --> 01:22:41,830 Ten sentido. 1809 01:22:41,830 --> 01:22:46,900 >> Para rematar, este pode ser un dos os programas máis frustrantes 1810 01:22:46,900 --> 01:22:51,160 sempre só porque non pode dicir que funciona ou non. 1811 01:22:51,160 --> 01:22:54,980 Todo isto programa, recupere, é facendo é que, se executado correctamente, 1812 01:22:54,980 --> 01:22:59,290 debe ser capaz de súpeto recuperar 50 imaxes que 1813 01:22:59,290 --> 01:23:01,025 foron perdidos na nosa disco duro. 1814 01:23:01,025 --> 01:23:03,900 E así o problema con este programa é que non pode realmente probalo 1815 01:23:03,900 --> 01:23:06,220 porque ou recuperado Los ou non fixo. 1816 01:23:06,220 --> 01:23:09,122 E para que tipo de só ten que xogar con el, 1817 01:23:09,122 --> 01:23:11,080 e se o seu programa é funcionando correctamente, vai 1818 01:23:11,080 --> 01:23:12,829 de súpeto ver que en seu directorio que ten 1819 01:23:12,829 --> 01:23:17,400 ten unha cantidade xigante de imaxes que están alí agora. 1820 01:23:17,400 --> 01:23:20,490 >> Entón, como eu ía abordar este problema é, somos 1821 01:23:20,490 --> 01:23:22,860 vai darlle o que é chamado ficheiro card.raw. 1822 01:23:22,860 --> 01:23:25,020 Esencialmente, iso é só un arquivo corrupto 1823 01:23:25,020 --> 01:23:28,870 con todas as imaxes almacenadas que vai ter para se recuperar. 1824 01:23:28,870 --> 01:23:32,330 Entón probablemente vai querer a entrada do seu card.raw, ou aberto, 1825 01:23:32,330 --> 01:23:35,510 seu arquivo card.raw e está Vai querer manipular 1826 01:23:35,510 --> 01:23:37,840 que sexa capaz de almacenar JPEG. 1827 01:23:37,840 --> 01:23:42,830 >> Así, quere comezar por rastrexar e almacenar JPEG cada individuo como atopalo. 1828 01:23:42,830 --> 01:23:47,180 Non vai a todos individualmente De súpeto só crear os 50 JPEGs. 1829 01:23:47,180 --> 01:23:50,190 Vai querer manter o control de cantos está abrindo. 1830 01:23:50,190 --> 01:23:52,015 E entón quere asegurarse de, cando está 1831 01:23:52,015 --> 01:23:54,640 de gravación nunha buffer-- vostedes vai saber o que eu estou falando 1832 01:23:54,640 --> 01:23:57,806 unha vez que ler a spec-- quere asegúrese de que está a usar un sen sinatura 1833 01:23:57,806 --> 01:23:59,370 char buffer. 1834 01:23:59,370 --> 01:24:01,790 >> E entón quere preguntar Se a cuestión de, 1835 01:24:01,790 --> 01:24:05,797 cantos bytes son en CF-- están nun arquivo de tarxeta? 1836 01:24:05,797 --> 01:24:08,380 Ese é o número que vai quero ler no seu buffer. 1837 01:24:08,380 --> 01:24:11,130 Vai querer asegurarse de os dous align porque entón 1838 01:24:11,130 --> 01:24:12,850 non terá memoria aleatoria vazando. 1839 01:24:12,850 --> 01:24:15,370 Vostede sabe exactamente cantas bytes que precisa e cantas 1840 01:24:15,370 --> 01:24:18,270 bytes que quere que teñan. 1841 01:24:18,270 --> 01:24:21,510 >> E entón, finalmente, quere usar unha función chamada sprint-- 1842 01:24:21,510 --> 01:24:26,160 s impresión F-- para xerar arquivo personalizado nomes para cada novo JPEG que atopa. 1843 01:24:26,160 --> 01:24:29,129 Entón, como crear e atopar JPEGs no seu cartón, 1844 01:24:29,129 --> 01:24:31,170 vai querer almacena-los e nomealos. 1845 01:24:31,170 --> 01:24:31,700 Non? 1846 01:24:31,700 --> 01:24:33,700 E así vai quere usar esta función 1847 01:24:33,700 --> 01:24:36,770 para crear os nomes que pode almacenar todos os seus JPEGs. 1848 01:24:36,770 --> 01:24:41,062 >> E, para rematar, non se esqueza de pechar cada JPEG despois que fixo. 1849 01:24:41,062 --> 01:24:42,770 Porque o que está vai facer é que é 1850 01:24:42,770 --> 01:24:44,728 vai probablemente teñen algún tipo de bucle que 1851 01:24:44,728 --> 01:24:46,470 percorre todos os seus JPEGs. 1852 01:24:46,470 --> 01:24:50,460 Está indo a escribir un JPEG e renome-lo como atopalo. 1853 01:24:50,460 --> 01:24:52,870 Pero despois que fixo con cada JPEG, 1854 01:24:52,870 --> 01:24:56,630 precisa pecha-la para que poida comezar máis e pasar á seguinte imaxe. 1855 01:24:56,630 --> 01:24:58,880 E así por algo que é realmente divertido que nos gusta facer, 1856 01:24:58,880 --> 01:25:03,430 porque esta é establecer un problema tan estraño pero tamén un problema estrañamente satisfactorio 1857 01:25:03,430 --> 01:25:08,380 conxunto, é que todas as imaxes que teño para vostede, se vostede recuperar correctamente, 1858 01:25:08,380 --> 01:25:11,910 Todas as imaxes son fotos de seu marabilloso corpo docente, tanto 1859 01:25:11,910 --> 01:25:14,240 de Harvard, en aqui-- e aquí en Yale. 1860 01:25:14,240 --> 01:25:17,260 E se ocorrer de recuperar todas esas imaxes 1861 01:25:17,260 --> 01:25:20,020 e identificar os funcionarios membros deses tarxetas, 1862 01:25:20,020 --> 01:25:23,040 e tomar selfies connosco se atopar-nos en torno ao campus, 1863 01:25:23,040 --> 01:25:28,270 para cada foto que enviar para nós, imos darlle un gigabyte de espazo Dropbox. 1864 01:25:28,270 --> 01:25:30,060 >> Entón, imos facer a matemática aquí. 1865 01:25:30,060 --> 01:25:33,010 Se hai 50 cadros e 50 membros do persoal docente, 1866 01:25:33,010 --> 01:25:37,160 se ocorrer de atopar todos os 50 de nós, iso é 50 gigabytes de Dropbox, 1867 01:25:37,160 --> 01:25:39,000 basicamente, nós estaremos dando a vostedes. 1868 01:25:39,000 --> 01:25:42,380 Así, algúns incentivos adicionais adicional se vós non o fixo só 1869 01:25:42,380 --> 01:25:44,480 se preocupan a recuperación de imaxes perdidas. 1870 01:25:44,480 --> 01:25:46,867 Hai tamén algúns incentivos adicionais. 1871 01:25:46,867 --> 01:25:47,825 É un conxunto de problemas diversión. 1872 01:25:47,825 --> 01:25:48,390 Realmente é. 1873 01:25:48,390 --> 01:25:51,980 É medio frustrante, pero, a continuación, tórnase moi divertido cando entender, 1874 01:25:51,980 --> 01:25:54,230 wow, que funciona e agora eu ten todas esas imaxes 1875 01:25:54,230 --> 01:25:55,604 que eu acaba creado por min mesmo. 1876 01:25:55,604 --> 01:25:58,800 1877 01:25:58,800 --> 01:26:00,075 >> Calquera preguntas sobre a pset? 1878 01:26:00,075 --> 01:26:02,408 Para quen xa está comezou, se ten dúbidas, 1879 01:26:02,408 --> 01:26:06,510 Eu vou estar aquí por uns minutos despois sección se quere falar comigo. 1880 01:26:06,510 --> 01:26:07,320 Moi ben, rapaces. 1881 01:26:07,320 --> 01:26:10,520 Me desculpe, eu información dumping sobre vós. 1882 01:26:10,520 --> 01:26:13,670 Os punteiros son realmente, realmente desafiante e frustrante. 1883 01:26:13,670 --> 01:26:16,187 >> E eu estou realmente contento que vostedes quedou comigo. 1884 01:26:16,187 --> 01:26:18,020 Falaremos máis en profundidade sobre a próxima semana 1885 01:26:18,020 --> 01:26:21,330 a medida que comezar a facer táboas de hash e máis funcións que os envolven. 1886 01:26:21,330 --> 01:26:23,821 1887 01:26:23,821 --> 01:26:24,320 Si. 1888 01:26:24,320 --> 01:26:26,278 Entón, se alguén ten algunha preguntas, eu estarei por preto. 1889 01:26:26,278 --> 01:26:29,330 Grazas por vir e ter máis doces porque hai máis doce. 1890 01:26:29,330 --> 01:26:32,220 1891 01:26:32,220 --> 01:26:33,770 Legal. 1892 01:26:33,770 --> 01:26:35,765