1 00:00:00,000 --> 00:00:00,960 2 00:00:00,960 --> 00:00:03,360 >> [Música tocando] 3 00:00:03,360 --> 00:00:11,050 4 00:00:11,050 --> 00:00:12,065 >> Davin: Todo ben, persoal. 5 00:00:12,065 --> 00:00:13,642 6 00:00:13,642 --> 00:00:15,350 Polo tanto, esta é a revisión para a primeira proba. 7 00:00:15,350 --> 00:00:17,751 Está todo o mundo preparado para o cuestionario o mércores? 8 00:00:17,751 --> 00:00:18,292 ALLISON: Woo! 9 00:00:18,292 --> 00:00:18,743 ALUMNO: Woo! 10 00:00:18,743 --> 00:00:19,242 Davin: Yeah. 11 00:00:19,242 --> 00:00:19,920 ALLISON: Yeah! 12 00:00:19,920 --> 00:00:20,920 Davin: que está preparado cara. 13 00:00:20,920 --> 00:00:22,200 Este cara, dúas mans, agradable. 14 00:00:22,200 --> 00:00:23,234 15 00:00:23,234 --> 00:00:25,900 Entón revisión quiz hoxe, que vai para ser de aproximadamente unha hora e media. 16 00:00:25,900 --> 00:00:27,940 Nós imos pasar por riba de todos os principais conceptos que debes saber para o quiz. 17 00:00:27,940 --> 00:00:31,434 Nós imos pasar por riba de algunha codificación por exemplos de man, que son en cada cuestionario. 18 00:00:31,434 --> 00:00:34,350 E se ten dúbidas, Sinto-se libre levantando a man e todo 19 00:00:34,350 --> 00:00:34,945 así. 20 00:00:34,945 --> 00:00:36,695 Ben, sobre loxística o cuestionario están en liña. 21 00:00:36,695 --> 00:00:38,450 Entón imos dividir a xente ata en salas diferentes. 22 00:00:38,450 --> 00:00:39,491 Baséase no seu nome. 23 00:00:39,491 --> 00:00:43,630 Entón, se tes algunha preguntas sobre onde ir ou sobre o material é, como, 24 00:00:43,630 --> 00:00:46,810 a palabra oficial sobre o que está pasando estar no cuestionario, comprobar en liña. 25 00:00:46,810 --> 00:00:48,420 E iso é todo ata a data. 26 00:00:48,420 --> 00:00:51,280 Entón, se non hai preguntas para comezar, imos comezar. 27 00:00:51,280 --> 00:00:52,790 28 00:00:52,790 --> 00:00:53,710 E aquí está Allison. 29 00:00:53,710 --> 00:00:56,060 30 00:00:56,060 --> 00:00:57,000 >> [Claps] 31 00:00:57,000 --> 00:00:59,300 >> ALLISON: OK, grazas, Rob. 32 00:00:59,300 --> 00:01:00,280 Apreciar-lo. 33 00:01:00,280 --> 00:01:01,350 34 00:01:01,350 --> 00:01:03,050 Davin debería virado a este. 35 00:01:03,050 --> 00:01:07,240 Esta é unha lista non exhaustiva de temas, como sempre, como Davin dixo. 36 00:01:07,240 --> 00:01:10,860 Consulte a documentación cuestionario en liña sobre cero. 37 00:01:10,860 --> 00:01:13,680 Pero iso é moi much-- é no plano de estudos 38 00:01:13,680 --> 00:01:15,550 é todo o que temos ido máis ata agora. 39 00:01:15,550 --> 00:01:18,290 Todo aquí é un xogo xusto, así como calquera outra cousa 40 00:01:18,290 --> 00:01:21,380 que poden ser mencionado na charla. 41 00:01:21,380 --> 00:01:25,070 >> A miña sección, aquí, é só unha morea de revisión. 42 00:01:25,070 --> 00:01:27,775 Hai un par de exercicios que vostedes poidan traballar. 43 00:01:27,775 --> 00:01:30,650 Pero para a maior parte, nós realmente quero chegar a Davin cos códigos 44 00:01:30,650 --> 00:01:31,710 por exercicios de man. 45 00:01:31,710 --> 00:01:33,940 >> Entón, eu estou indo a voar por iso. 46 00:01:33,940 --> 00:01:36,330 Se ten algunha dúbida, me deixar. 47 00:01:36,330 --> 00:01:37,270 Levante súa man. 48 00:01:37,270 --> 00:01:39,250 Eu prometer que eu probablemente vou velo. 49 00:01:39,250 --> 00:01:41,042 Se non, pode movela ao redor. 50 00:01:41,042 --> 00:01:42,250 Eu vou estar falando rápido. 51 00:01:42,250 --> 00:01:43,950 Espero que todo o mundo está OK con iso. 52 00:01:43,950 --> 00:01:48,020 >> OK, palabra especial, Davin obviamente Esquecín o meu de follas estes diapositivas. 53 00:01:48,020 --> 00:01:51,880 [Risas] Vostede está en apuros, cara. 54 00:01:51,880 --> 00:01:55,770 Así consellos para cuestionario cero, práctica de codificación en papel. 55 00:01:55,770 --> 00:01:58,950 Vostedes están indo para obter un practicar con que agora con Davin, 56 00:01:58,950 --> 00:02:00,655 así que non vai estar completamente só. 57 00:02:00,655 --> 00:02:03,030 Coido que nós estamos indo realmente a través destas dúas funcións. 58 00:02:03,030 --> 00:02:04,500 Así estará ben preparado alí. 59 00:02:04,500 --> 00:02:05,958 >> Estar familiarizado cos seus conxuntos de problemas. 60 00:02:05,958 --> 00:02:08,150 Houbo preguntas en enquisas anteriores 61 00:02:08,150 --> 00:02:12,680 que lle vai preguntar, por exemplo, para codificar se algo moi semellante ao Mario. 62 00:02:12,680 --> 00:02:15,060 Polo tanto, ser moi familiarizado con seu problema define, así 63 00:02:15,060 --> 00:02:17,827 como as preguntas que lle preguntar no inicio o formulario 64 00:02:17,827 --> 00:02:19,660 que cubra, vontade atender-lo moi ben. 65 00:02:19,660 --> 00:02:20,940 66 00:02:20,940 --> 00:02:23,380 >> Fai unha proba anterior, en virtude as limitacións de tempo. 67 00:02:23,380 --> 00:02:25,430 Estas probas son longos. 68 00:02:25,430 --> 00:02:26,850 O tempo pasa moi rápido. 69 00:02:26,850 --> 00:02:30,480 E, moitas veces, non entende o quão rápido vai ata que realmente 70 00:02:30,480 --> 00:02:32,180 poñer-se baixo estas restricións. 71 00:02:32,180 --> 00:02:36,500 Entón, se pode simplemente esculpir, xa sabe, 75 minutos, ou esta noite ou mañá 72 00:02:36,500 --> 00:02:41,020 tomar un destes cuestionarios baixo iso, estará en moito mellor forma. 73 00:02:41,020 --> 00:02:43,060 >> E, tamén, a creación da súa folla de referencia. 74 00:02:43,060 --> 00:02:45,290 Lembre, ten un páxina adiante e de atrás 75 00:02:45,290 --> 00:02:47,040 como referencia para a súa proba o mércores. 76 00:02:47,040 --> 00:02:49,074 Creación que é unha boa forma de estudar. 77 00:02:49,074 --> 00:02:51,990 Todo o que está a ter problemas con que quere incluír alí. 78 00:02:51,990 --> 00:02:55,627 Todo o que os seus TFS ser, como, isto é realmente importante. 79 00:02:55,627 --> 00:02:57,960 Debes saber isto, son quizais as cousas que ten alí 80 00:02:57,960 --> 00:02:59,931 se non te-los memorizado. 81 00:02:59,931 --> 00:03:02,680 Mesmo se coñece-los realmente así, ás veces telo aí 82 00:03:02,680 --> 00:03:07,030 é só unha especie de confort para ti, que sei quizzes son estressantes. 83 00:03:07,030 --> 00:03:09,260 Así, calquera comodidade que comeza pode axudar. 84 00:03:09,260 --> 00:03:13,072 Todo ben, tamén, durmir e comer e lle gusta das cousas normais 85 00:03:13,072 --> 00:03:14,280 que dicirlle para probas. 86 00:03:14,280 --> 00:03:16,320 87 00:03:16,320 --> 00:03:18,890 >> Entón, comezando fácil, tipos de datos e tamaños. 88 00:03:18,890 --> 00:03:22,720 Como dixen, iso é só ir estar me xogando unha morea de cousas 89 00:03:22,720 --> 00:03:24,320 se aquí que ten que saber. 90 00:03:24,320 --> 00:03:27,600 Polo tanto, temos os nosos chars que son unha bytes, ints 91 00:03:27,600 --> 00:03:30,390 que son catro bytes, a longo de lonxitude, que son oito bytes. 92 00:03:30,390 --> 00:03:33,280 Basicamente, é só ti quero soster enteiros grandes. 93 00:03:33,280 --> 00:03:35,490 Carrozas, que son catro, dobres, que son oito. 94 00:03:35,490 --> 00:03:38,150 Unha vez máis, só lle dá máis espazo para os seus coches alegóricos. 95 00:03:38,150 --> 00:03:41,290 E a continuación, escriba estrela, de xeito que calquera punteiro nunha máquina de 32 bits, 96 00:03:41,290 --> 00:03:44,650 que é todo o que vostedes teñen que saber, é de catro bytes. 97 00:03:44,650 --> 00:03:46,542 >> Así, todas as cousas que debería sabe, quizais as cousas 98 00:03:46,542 --> 00:03:48,250 quere ter en súa folla de referencia. 99 00:03:48,250 --> 00:03:50,350 100 00:03:50,350 --> 00:03:53,520 OK, a conversión binaria en binario, conversión 101 00:03:53,520 --> 00:03:56,860 para hexadecimal, e cara atrás, todas as cousas que debes saber. 102 00:03:56,860 --> 00:03:59,480 Así, a partir de binario para decimal. 103 00:03:59,480 --> 00:04:03,309 Vostedes queren tomar un minuto rápido e intentar descubrir cada unha delas 104 00:04:03,309 --> 00:04:04,600 e despois me diga o que son? 105 00:04:04,600 --> 00:04:06,500 106 00:04:06,500 --> 00:04:10,240 >> Eu tamén teño o doce na miña bolsa, para que calquera persoa que responde recibe doces, pola maneira. 107 00:04:10,240 --> 00:04:13,560 108 00:04:13,560 --> 00:04:14,480 E eu teño moita. 109 00:04:14,480 --> 00:04:15,760 110 00:04:15,760 --> 00:04:16,870 Déixeme incorporarse iso. 111 00:04:16,870 --> 00:04:18,480 Vou dar isto para Gabe. 112 00:04:18,480 --> 00:04:21,829 Así, pode distribuír doces para quen é bo e cooperativo. 113 00:04:21,829 --> 00:04:23,490 >> OK, eu vin a man alí no fondo. 114 00:04:23,490 --> 00:04:26,418 115 00:04:26,418 --> 00:04:28,370 >> Estudante: Si, o primeiro é 42. 116 00:04:28,370 --> 00:04:30,280 >> ALLISON: Si, primeiro é 42, correcto. 117 00:04:30,280 --> 00:04:31,163 118 00:04:31,163 --> 00:04:32,038 Estudante: [inaudível]. 119 00:04:32,038 --> 00:04:34,810 [Risas] 120 00:04:34,810 --> 00:04:37,030 ALLISON: luns, alí en amarelo? 121 00:04:37,030 --> 00:04:38,910 ALUMNO: 110010. 122 00:04:38,910 --> 00:04:43,410 ALLISON: Correcto, e este último, aquí no fondo? 123 00:04:43,410 --> 00:04:44,570 Ademais, si, vostede sabe que quere? 124 00:04:44,570 --> 00:04:45,550 Só ten que tirar para fóra doces. 125 00:04:45,550 --> 00:04:46,483 Como preto de doces para todos? 126 00:04:46,483 --> 00:04:47,510 >> Estudante: [inaudível] cando estamos a facer. 127 00:04:47,510 --> 00:04:48,051 >> ALLISON: Shh. 128 00:04:48,051 --> 00:04:49,380 129 00:04:49,380 --> 00:04:50,910 E, a continuación, o último. 130 00:04:50,910 --> 00:04:52,000 Quen quere responder? 131 00:04:52,000 --> 00:04:52,744 Ben alí. 132 00:04:52,744 --> 00:04:54,480 >> ALUMNO: 11.100. 133 00:04:54,480 --> 00:04:56,820 >> ALLISON: 11100, mira isto. 134 00:04:56,820 --> 00:04:58,790 Parabéns, excelente traballo, todos. 135 00:04:58,790 --> 00:05:03,370 OK, todo o mundo medio que entende o proceso para facelo? 136 00:05:03,370 --> 00:05:08,700 Vostede, pasando de binario para decimal do xeito que eu tenden a facelo, está escribindo para fóra 137 00:05:08,700 --> 00:05:09,920 as potencias de 2. 138 00:05:09,920 --> 00:05:18,350 Entón eu digo, OK, 0 veces 2-0, polo tanto, iso é 0, 1 2 veces ao primeiro, 139 00:05:18,350 --> 00:05:21,400 é 2 indo diante dese xeito. 140 00:05:21,400 --> 00:05:25,790 Alguén quere que eu explícitamente pasar por un exemplo de binario? 141 00:05:25,790 --> 00:05:26,840 142 00:05:26,840 --> 00:05:28,140 OK, legal. 143 00:05:28,140 --> 00:05:30,390 >> Decimal para binario é moi semellante. 144 00:05:30,390 --> 00:05:31,550 145 00:05:31,550 --> 00:05:33,630 Eu tenden a escribir as potencias de 2. 146 00:05:33,630 --> 00:05:38,660 Comece o que é o máis grande, pero non ir máis alá do decimal 147 00:05:38,660 --> 00:05:39,710 que está a procurar. 148 00:05:39,710 --> 00:05:42,870 E, a continuación, tipo de traballar o seu camiño atrás sumando as cousas como necesarias. 149 00:05:42,870 --> 00:05:45,200 >> E, a continuación, con suma, é como adición normal. 150 00:05:45,200 --> 00:05:51,110 Se xa ten o caso en que está engadindo dous 1s, é obvio que se fai 2. 151 00:05:51,110 --> 00:05:56,875 2 en binario é agora un 0, entón tes que para transportar o seu 1 á seguinte columna. 152 00:05:56,875 --> 00:05:57,375 Legal. 153 00:05:57,375 --> 00:05:59,220 154 00:05:59,220 --> 00:06:03,240 >> Hexadecimal, isto pode ser algo que é un pouco menos familiar. 155 00:06:03,240 --> 00:06:06,600 Así como Rob estaba me contando antemán, o seu truco para este 156 00:06:06,600 --> 00:06:10,210 é só para división la en catro anacos de bytes, OK? 157 00:06:10,210 --> 00:06:11,050 Bits, desculpe. 158 00:06:11,050 --> 00:06:11,720 Vexa? 159 00:06:11,720 --> 00:06:12,220 Grazas Rob. 160 00:06:12,220 --> 00:06:15,874 É por iso que está aquí. [Noise] OK, entón nós só rompe-lo 161 00:06:15,874 --> 00:06:16,790 en catro bits de anacos. 162 00:06:16,790 --> 00:06:21,570 Así, con binarios para hexadecimal, Mira a primeira 4, 163 00:06:21,570 --> 00:06:25,573 que é, se temos catro 1s nun liña, o número que iso simboliza? 164 00:06:25,573 --> 00:06:26,540 >> ALUMNO: F. 165 00:06:26,540 --> 00:06:32,751 >> ALLISON: Entón, nese caso, o que é 11111111 ou- si? 166 00:06:32,751 --> 00:06:33,250 ESTUDANTE: FF. 167 00:06:33,250 --> 00:06:34,600 ALLISON: Perfecto, FF. 168 00:06:34,600 --> 00:06:36,900 Tan grande, doces para ti. 169 00:06:36,900 --> 00:06:41,100 Agora, para saber como hexadecimal para binario, nós basta pensar sobre que tipo de forma inversa. 170 00:06:41,100 --> 00:06:46,420 Para cada número ou letra que que temos no noso hexadecimal, 171 00:06:46,420 --> 00:06:53,930 só convertelo en seus catro bits [Risas] para a súa conversión de catro bits. 172 00:06:53,930 --> 00:06:58,696 Entón, 5, neste caso, o que é 5 se estamos representando o con catro bits? 173 00:06:58,696 --> 00:06:59,608 >> ALUMNO: 010? 174 00:06:59,608 --> 00:07:00,520 Mm-hm. 175 00:07:00,520 --> 00:07:03,605 E entón A, que é en realidade, 10, estaría? 176 00:07:03,605 --> 00:07:06,230 177 00:07:06,230 --> 00:07:08,040 1010. 178 00:07:08,040 --> 00:07:09,670 Polo tanto, temos que, aquí. 179 00:07:09,670 --> 00:07:13,990 Así, a conversión entre hexadecimal e binario en realidade non é tan malo así. 180 00:07:13,990 --> 00:07:16,565 Se ollar para el de catro bits anacos, será de ouro. 181 00:07:16,565 --> 00:07:18,330 182 00:07:18,330 --> 00:07:19,300 Everyone-- si? 183 00:07:19,300 --> 00:07:21,903 >> ROB: Isto é tontería, pero sempre recordo 184 00:07:21,903 --> 00:07:23,500 Un, xa que dun suposto ser 10. 185 00:07:23,500 --> 00:07:26,230 E binario é só de 10 a 10, assim-- 186 00:07:26,230 --> 00:07:27,310 >> ALLISON: Ah, alí imos nós. 187 00:07:27,310 --> 00:07:28,615 >> ROB: Hey. 188 00:07:28,615 --> 00:07:30,020 >> ALLISON: Ei, doces para Rob. 189 00:07:30,020 --> 00:07:31,707 190 00:07:31,707 --> 00:07:33,290 Hai cousas non-chocolate alí. 191 00:07:33,290 --> 00:07:34,180 Así, pode que algúns. 192 00:07:34,180 --> 00:07:35,790 193 00:07:35,790 --> 00:07:36,760 Matemáticas de modo ASCII. 194 00:07:36,760 --> 00:07:38,206 195 00:07:38,206 --> 00:07:38,705 Comporte-se. 196 00:07:38,705 --> 00:07:40,630 197 00:07:40,630 --> 00:07:44,720 Así matemáticas ASCII, como vostedes probablemente non recordo mal 198 00:07:44,720 --> 00:07:48,480 p set 2 con Visioneer e César, que fixo unha morea de presente. 199 00:07:48,480 --> 00:07:49,610 200 00:07:49,610 --> 00:07:51,980 Teña en conta que, os personaxes son fundamentalmente só números. 201 00:07:51,980 --> 00:07:54,780 Así, podemos facer contas con eles, só como nós facemos matemáticas con ints. 202 00:07:54,780 --> 00:07:58,090 >> Entón temos un pouco cousa simple aquí. 203 00:07:58,090 --> 00:08:00,940 Temos algúns en que é inicializar a 65. 204 00:08:00,940 --> 00:08:07,440 E B igual ao valor ASCII de A máis 1, char C igual a D menos 1, 205 00:08:07,440 --> 00:08:09,060 e carácter D igual a 68. 206 00:08:09,060 --> 00:08:13,130 Entón nós estamos indo a impresión todos eles, como vemos aquí. 207 00:08:13,130 --> 00:08:15,650 E alguén me pode dicir o que iso vai imprimir? 208 00:08:15,650 --> 00:08:17,335 209 00:08:17,335 --> 00:08:18,210 Estudante: [inaudível]. 210 00:08:18,210 --> 00:08:20,540 ALLISON: Exactamente, por iso, Unha cousa a notar é 211 00:08:20,540 --> 00:08:22,900 que estamos imprimindo caracteres de cada vez, aquí. 212 00:08:22,900 --> 00:08:28,290 Estamos designando aínda que A e B son enteiros cando os declarou anteriormente. 213 00:08:28,290 --> 00:08:32,870 Estamos imprimir-los como personaxes de a porcentaxe C e nosa declaración de printf, 214 00:08:32,870 --> 00:08:34,610 para que todo imprimirá como personaxes. 215 00:08:34,610 --> 00:08:40,730 E, por suposto, o valor ASCII 65 vontade imprimir como A. O valor ASCII de A + 1 216 00:08:40,730 --> 00:08:43,669 Sería 66, o que faría orgullo de B. Entón, en realidade, nós 217 00:08:43,669 --> 00:08:49,107 obter A B C D. Todo o mundo bo alí? 218 00:08:49,107 --> 00:08:49,690 Algunha pregunta? 219 00:08:49,690 --> 00:08:50,721 220 00:08:50,721 --> 00:08:51,220 Impresionante. 221 00:08:51,220 --> 00:08:52,500 222 00:08:52,500 --> 00:08:53,455 >> OK, ámbito de aplicación. 223 00:08:53,455 --> 00:08:55,090 224 00:08:55,090 --> 00:08:59,950 Entón alcance é, obviamente, un moi cousa importante a entender, aquí. 225 00:08:59,950 --> 00:09:03,250 Unha morea de ti, se ter erros de compilación, 226 00:09:03,250 --> 00:09:06,085 e el di que non ten acceso a algunha variable, 227 00:09:06,085 --> 00:09:08,540 probablemente é porque definiuse o dentro dun loop 228 00:09:08,540 --> 00:09:12,210 e entón intentou acceder a ela fóra del, ou viceversa. 229 00:09:12,210 --> 00:09:16,410 >> Entón alcance na súa esencia, el só determina onde 230 00:09:16,410 --> 00:09:20,800 dicimos que unha variable existe, onde nós pode mudalo, onde podemos acceder a ela. 231 00:09:20,800 --> 00:09:24,550 É só unha especie de dicir estas son os únicos lugares onde ten acceso 232 00:09:24,550 --> 00:09:26,060 a esta variable. 233 00:09:26,060 --> 00:09:30,080 >> Así, os dous alcance que falamos durante a clase son globais e locais. 234 00:09:30,080 --> 00:09:35,080 Así, as variables globais que falan sobre cando está definíndose os anteriores principal. 235 00:09:35,080 --> 00:09:38,390 Isto significa que todo o seu programa ten acceso a el, 236 00:09:38,390 --> 00:09:42,090 e existe durante o tempo como o programa é executado, OK? 237 00:09:42,090 --> 00:09:45,100 Local significa que é máis confinado a unha rexión. 238 00:09:45,100 --> 00:09:50,520 Así, sempre que ten funcións específicas como intercambio, sempre falar. 239 00:09:50,520 --> 00:09:54,380 Falamos sempre sobre intercambio con A e B. A e B hai dentro desa función. 240 00:09:54,380 --> 00:09:55,690 Non hai en ningún outro lugar. 241 00:09:55,690 --> 00:09:56,860 242 00:09:56,860 --> 00:10:00,610 >> Como así, cando tense declaracións ou loops. 243 00:10:00,610 --> 00:10:04,670 Sempre que temos, por exemplo, nas un loop temos int I é igual a 0. 244 00:10:04,670 --> 00:10:06,630 Temos algunha condición e actualiza-lo. 245 00:10:06,630 --> 00:10:10,270 Só existe dentro do claves dese loop. 246 00:10:10,270 --> 00:10:13,270 Se tentar acceder a ela en outro lugar, o compilador ía berrar contigo. 247 00:10:13,270 --> 00:10:14,560 Sería como, o que está intentando facer? 248 00:10:14,560 --> 00:10:15,400 Isto non existe. 249 00:10:15,400 --> 00:10:16,644 250 00:10:16,644 --> 00:10:18,435 Entón esta é a dous diferentes tipos de alcance. 251 00:10:18,435 --> 00:10:19,486 252 00:10:19,486 --> 00:10:20,860 Isto ten sentido para todos? 253 00:10:20,860 --> 00:10:23,870 254 00:10:23,870 --> 00:10:27,890 >> Así, por exemplo aquí, este é só un programa sinxelo. 255 00:10:27,890 --> 00:10:29,120 256 00:10:29,120 --> 00:10:32,890 O que vostedes pensan que é ocorrerá en cada punto 257 00:10:32,890 --> 00:10:34,210 que tratamos imprimir? 258 00:10:34,210 --> 00:10:40,150 Entón, este aquí, o que vai pasar? 259 00:10:40,150 --> 00:10:43,047 260 00:10:43,047 --> 00:10:44,255 ALUMNO: Ha imprimir tres. 261 00:10:44,255 --> 00:10:44,880 ALLISON: Certo. 262 00:10:44,880 --> 00:10:45,930 Vai imprimir tres. 263 00:10:45,930 --> 00:10:47,272 E aquí? 264 00:10:47,272 --> 00:10:48,230 Estudante: Non vai funcionar. 265 00:10:48,230 --> 00:10:48,910 ALLISON: Non vai funcionar. 266 00:10:48,910 --> 00:10:50,290 Está fóra de alcance, non? 267 00:10:50,290 --> 00:10:55,160 Variable local non existe fóra desas claves, todo ben? 268 00:10:55,160 --> 00:10:56,462 E entón o que dicir aquí? 269 00:10:56,462 --> 00:10:57,850 >> Estudante: [inaudível]. 270 00:10:57,850 --> 00:10:59,210 >> ALLISON: O que? 271 00:10:59,210 --> 00:10:59,900 Rob, vai. 272 00:10:59,900 --> 00:11:00,854 >> ROB: Eu só dixo. 273 00:11:00,854 --> 00:11:04,200 As variables globais deben subliñado variable global. 274 00:11:04,200 --> 00:11:05,660 >> ALLISON: Ah, si, me desculpe. 275 00:11:05,660 --> 00:11:06,200 Grazas, Rob. 276 00:11:06,200 --> 00:11:07,480 277 00:11:07,480 --> 00:11:10,170 Rob é como o noso compilador residente. 278 00:11:10,170 --> 00:11:12,684 El só vai berrar para nós cando nós precisa del. [Risas] Si, iso 279 00:11:12,684 --> 00:11:14,225 Debe ser subliñado variable global. 280 00:11:14,225 --> 00:11:15,760 281 00:11:15,760 --> 00:11:18,430 Entón, supoñendo que esta foi subliñado mundial 282 00:11:18,430 --> 00:11:20,260 variable, o que vai pasar aquí? 283 00:11:20,260 --> 00:11:21,260 ESTUDANTE: Isto vai funcionar. 284 00:11:21,260 --> 00:11:22,093 ALLISON: El vai traballar. 285 00:11:22,093 --> 00:11:24,655 Entón, que vai imprimir, polo que só un exemplo moi sinxelo. 286 00:11:24,655 --> 00:11:27,650 287 00:11:27,650 --> 00:11:29,870 OK, prototipos. 288 00:11:29,870 --> 00:11:33,680 Entón, obviamente, nós realmente salientar a vós 289 00:11:33,680 --> 00:11:36,460 para realizar funcións se ter sentido nos seus programas. 290 00:11:36,460 --> 00:11:38,460 Pero, por suposto, cando facer as súas propias funcións, 291 00:11:38,460 --> 00:11:40,930 normalmente vai define-los despois de inicio. 292 00:11:40,930 --> 00:11:42,430 E vai tentar chamalos na principal. 293 00:11:42,430 --> 00:11:46,030 E se non usar un prototipo, o compilador pode berrar contigo. 294 00:11:46,030 --> 00:11:49,590 >> Prototype é basicamente só dicindo o seu compilador 295 00:11:49,590 --> 00:11:52,400 que eu teño esa función por baixo de inicio. 296 00:11:52,400 --> 00:11:54,970 Vou chamalo antes de que eu define-lo. 297 00:11:54,970 --> 00:11:56,360 Só Manteña. 298 00:11:56,360 --> 00:12:00,660 Eu prometer que está definido, e terá todo o que necesitas. 299 00:12:00,660 --> 00:12:05,900 >> Así, a forma como o facemos é só o seu regreso Tipo, o nome da función, a súa entrada 300 00:12:05,900 --> 00:12:06,400 lista. 301 00:12:06,400 --> 00:12:09,760 É basicamente a primeira liña da súa declaración de función. 302 00:12:09,760 --> 00:12:11,510 É realmente todo que é. 303 00:12:11,510 --> 00:12:14,440 Pero esta é só unha tipo xeral de formato. 304 00:12:14,440 --> 00:12:17,220 >> Así, no noso exemplo aquí, que vostedes deben 305 00:12:17,220 --> 00:12:19,700 vimos no apartado nalgún momento, temos 306 00:12:19,700 --> 00:12:23,220 algúns int cubo que leva algún int de entrada. 307 00:12:23,220 --> 00:12:25,870 E nós temos o noso principal función, que esixe cubo. 308 00:12:25,870 --> 00:12:28,670 E cubo é definido tras o feito. 309 00:12:28,670 --> 00:12:34,450 >> Entón, se non tivésemos entrada int cubo na parte superior, cando ligamos cubo 310 00:12:34,450 --> 00:12:36,620 dentro principal, o noso compilador ía estar con rabia de nós. 311 00:12:36,620 --> 00:12:38,890 Sería como, o que está falando? 312 00:12:38,890 --> 00:12:40,360 O cubo non existe. 313 00:12:40,360 --> 00:12:41,910 Non sei o que está pedindo. 314 00:12:41,910 --> 00:12:43,490 E eu só vou parar. 315 00:12:43,490 --> 00:12:47,330 >> Pero por que fixemos o noso prototipo na parte superior, dixemos, 316 00:12:47,330 --> 00:12:49,800 vostede sabe, cando ve cubo, non se preocupe con iso. 317 00:12:49,800 --> 00:12:51,990 Eu prometer que se define no mesmo. 318 00:12:51,990 --> 00:12:53,750 E vou deixar facer o que quere. 319 00:12:53,750 --> 00:12:57,750 Entón, se xa ten unha función que é declarado despois que chamalo 320 00:12:57,750 --> 00:13:00,570 por primeira vez, ten que ten un prototipo na parte superior. 321 00:13:00,570 --> 00:13:01,640 322 00:13:01,640 --> 00:13:02,720 >> Si? 323 00:13:02,720 --> 00:13:04,412 >> ROB: El é cadrado, non cubagem. 324 00:13:04,412 --> 00:13:05,855 >> ALLISON: Oh meu Deus. 325 00:13:05,855 --> 00:13:09,435 Non have-- Gabe, eu penso era o noso revisor. 326 00:13:09,435 --> 00:13:10,740 327 00:13:10,740 --> 00:13:12,760 OK persoal, teña paciencia comigo, aquí. 328 00:13:12,760 --> 00:13:14,440 Espero que todo o mundo está quedando a idea. 329 00:13:14,440 --> 00:13:15,560 330 00:13:15,560 --> 00:13:20,380 OK, entón iso debe ter foi ao cadrado, non en cubos. 331 00:13:20,380 --> 00:13:22,700 Pero a idea segue sendo a mesma. 332 00:13:22,700 --> 00:13:23,702 333 00:13:23,702 --> 00:13:26,660 Calquera función que estamos chamando despois o feito debe ter un prototipo. 334 00:13:26,660 --> 00:13:27,730 335 00:13:27,730 --> 00:13:28,970 Todo o mundo ben con iso? 336 00:13:28,970 --> 00:13:30,730 337 00:13:30,730 --> 00:13:32,310 Outros erros de dixitación? 338 00:13:32,310 --> 00:13:32,810 Está ben. 339 00:13:32,810 --> 00:13:34,730 340 00:13:34,730 --> 00:13:36,230 Posibles erros de dixitación aquí antes de comezar, Rob? 341 00:13:36,230 --> 00:13:37,356 342 00:13:37,356 --> 00:13:42,380 [Risas] OK, entón estruturas. 343 00:13:42,380 --> 00:13:45,040 Basicamente, estruturas permiten que para crear o seu propio tipo de datos. 344 00:13:45,040 --> 00:13:49,264 Tanto como un int ou un char ou unha boia, é só un outro tipo. 345 00:13:49,264 --> 00:13:51,680 Gústame pensar niso como, como, crear o seu propio tipo de datos. 346 00:13:51,680 --> 00:13:53,740 Entón, el permite que fai iso. 347 00:13:53,740 --> 00:13:56,160 E que ten diferentes tipos de datos. 348 00:13:56,160 --> 00:14:01,030 >> Entón, se se lembra, nunha matriz, que só pode manter as cousas do mesmo tipo. 349 00:14:01,030 --> 00:14:04,660 Structs nos permiten realizar múltiples cousas de tipos diferentes. 350 00:14:04,660 --> 00:14:08,944 Polo tanto, neste caso aquí, nós ten un struct chamado Student, 351 00:14:08,944 --> 00:14:10,650 nomeado aquí na parte inferior. 352 00:14:10,650 --> 00:14:13,540 E nós temos algúns id int e algún nome cadea. 353 00:14:13,540 --> 00:14:14,620 354 00:14:14,620 --> 00:14:17,300 Polo tanto, este é só un outro tipo de datos. 355 00:14:17,300 --> 00:14:18,950 Agora temos un tipo de datos chamado Student. 356 00:14:18,950 --> 00:14:20,330 357 00:14:20,330 --> 00:14:24,750 >> Entón, por que podemos pensar en como só un outro tipo de datos, 358 00:14:24,750 --> 00:14:27,760 podemos declarar variables como fariamos con calquera outro. 359 00:14:27,760 --> 00:14:32,680 Entón, en vez de só ter, tipo, un int estudante, só temos un alumno, 360 00:14:32,680 --> 00:14:33,390 estudante 1. 361 00:14:33,390 --> 00:14:33,560 Oh, mire. 362 00:14:33,560 --> 00:14:34,059 É Rob. 363 00:14:34,059 --> 00:14:35,750 364 00:14:35,750 --> 00:14:38,880 Entón, aquí estamos declarando unha estrutura, é unha variable 365 00:14:38,880 --> 00:14:40,940 chamado estudante 1 do tipo alumno. 366 00:14:40,940 --> 00:14:45,370 Por iso, vai ter id e nome asociado a el. 367 00:14:45,370 --> 00:14:48,430 >> E a forma como acessamos estes elementos dentro da nosa estrutura 368 00:14:48,430 --> 00:14:50,100 é co operador punto, aquí. 369 00:14:50,100 --> 00:14:51,910 370 00:14:51,910 --> 00:14:54,660 Polo tanto, neste caso, nos declarou algún estudante 1. 371 00:14:54,660 --> 00:14:57,080 Nós concedido o ID para ser un. 372 00:14:57,080 --> 00:14:58,840 E nós asignado o nome a ser Rob. 373 00:14:58,840 --> 00:15:03,010 374 00:15:03,010 --> 00:15:04,960 OK, todo o mundo ben con iso? 375 00:15:04,960 --> 00:15:06,787 Use-o só como-- si? 376 00:15:06,787 --> 00:15:09,530 >> Estudante: Si, cando typedef-- necesitamos utilizar typedef? 377 00:15:09,530 --> 00:15:13,190 >> ALLISON: Entón typedef só isso-- di Rob, ten 378 00:15:13,190 --> 00:15:16,990 me pode resolver neste caso estou wrong-- pero typedef é só realmente declarando 379 00:15:16,990 --> 00:15:19,330 lo como un tipo que pode usar, non? 380 00:15:19,330 --> 00:15:22,550 >> ROB: Si, é basicamente polo que é só a creación de 381 00:15:22,550 --> 00:15:24,215 un alias, ou un alcume para un tipo. 382 00:15:24,215 --> 00:15:25,590 Entón pode escribir que [inaudível]. 383 00:15:25,590 --> 00:15:27,140 384 00:15:27,140 --> 00:15:30,350 Entón, [inaudível] existe, e agora só temos 385 00:15:30,350 --> 00:15:32,090 [Inaudível] significa exactamente o mesmo. 386 00:15:32,090 --> 00:15:37,210 E aquí, estamos ingresaran, creo, algún tipo struct 2 [inaudível]. 387 00:15:37,210 --> 00:15:40,680 Entón é só un apelido para un determinado tipo. 388 00:15:40,680 --> 00:15:44,344 >> ESTUDANTE: Cadea [inaudível] biblioteca se ingresaran anteriormente como carbón estrela. 389 00:15:44,344 --> 00:15:51,380 390 00:15:51,380 --> 00:15:54,390 >> ALLISON: Para os nosos propósitos aquí, se está declarando un struct, 391 00:15:54,390 --> 00:15:55,600 só facer typedef struct. 392 00:15:55,600 --> 00:15:57,680 393 00:15:57,680 --> 00:16:04,490 OK, entón de antemán, esta é só unha variable normal aquí. 394 00:16:04,490 --> 00:16:06,390 Nós acceder a ela con un punto. 395 00:16:06,390 --> 00:16:08,580 se temos un punteiro para un struct, podemos realmente 396 00:16:08,580 --> 00:16:10,700 usar unha frecha, que é moi legal. 397 00:16:10,700 --> 00:16:17,130 >> Polo tanto, neste caso, temos un punteiro para un estudante de un que é do tipo de estudante. 398 00:16:17,130 --> 00:16:19,020 Teña en conta que, co seu construción punteiro, 399 00:16:19,020 --> 00:16:23,710 Quere o que quere que escriba o seu punteiro está a apuntar para ser no inicio. 400 00:16:23,710 --> 00:16:25,960 Polo tanto, temos algún estudante 1, aquí. 401 00:16:25,960 --> 00:16:27,370 402 00:16:27,370 --> 00:16:31,050 E xa que este alumno 1 é agora un agroma, 403 00:16:31,050 --> 00:16:36,520 podemos realmente ir estudante nome unha frecha no canto de punto, porque é un punteiro, 404 00:16:36,520 --> 00:16:37,640 e asignar Rob. 405 00:16:37,640 --> 00:16:40,720 E agora, se quere Rob optar Davin, 406 00:16:40,720 --> 00:16:43,570 este é só amosar que unha forma diferente de facelo. 407 00:16:43,570 --> 00:16:48,850 >> Entón, en vez de usar a frecha, ten pode Também-- vou rematar isto e, a continuación, 408 00:16:48,850 --> 00:16:52,860 asumir que podería question-- Tamén fan referencia un alumno. 409 00:16:52,860 --> 00:16:56,170 Isto é dicir como ir o que está á estudante 1, que 410 00:16:56,170 --> 00:16:58,840 sería o noso struct alumno. 411 00:16:58,840 --> 00:17:03,910 Acceder-lle con un punto e o elemento que quere, e entón transferir-lo. 412 00:17:03,910 --> 00:17:05,326 Non era unha pregunta. 413 00:17:05,326 --> 00:17:08,034 Estudante: Si, entón como é que ten usar [inaudível] cando está 414 00:17:08,034 --> 00:17:10,367 facendo estrela estudante sen [Inaudível] de estudante? 415 00:17:10,367 --> 00:17:12,200 ALLISON: Por este é a creación dun punteiro. 416 00:17:12,200 --> 00:17:13,616 ROB: Nós imos falar sobre iso. 417 00:17:13,616 --> 00:17:16,119 ALLISON: Estamos indo falar sobre iso máis tarde na revisión. 418 00:17:16,119 --> 00:17:17,660 Entón, só tes que soster ese pensamento. 419 00:17:17,660 --> 00:17:20,560 Se aínda lle molesta no final, veña falar con un de nós. 420 00:17:20,560 --> 00:17:23,380 >> Entón, eses fan exactamente o mesmo. 421 00:17:23,380 --> 00:17:25,579 Estamos só mostrándolle dous diferentes formas de facelo. 422 00:17:25,579 --> 00:17:29,470 Alumno 1 é agora un punteiro, así pode acceder ao elemento de nome 423 00:17:29,470 --> 00:17:30,960 no interior da estrutura cunha frecha. 424 00:17:30,960 --> 00:17:36,440 Ou pode eliminar a referencia o punteiro, e entón acceder a ela, como faría normalmente. 425 00:17:36,440 --> 00:17:38,430 Será que isto ten sentido para cada un? 426 00:17:38,430 --> 00:17:39,480 427 00:17:39,480 --> 00:17:43,890 Se todo o punteiro cousas son un pouco confuso, Gabe vai falar sobre iso, 428 00:17:43,890 --> 00:17:45,740 e entón quizais esta fará máis sentido. 429 00:17:45,740 --> 00:17:46,240 Si? 430 00:17:46,240 --> 00:17:48,387 >> Estudante: Si, así como é esta distinta da? 431 00:17:48,387 --> 00:17:49,470 ALLISON: o anterior? 432 00:17:49,470 --> 00:17:52,330 Así, o estudante 1 neste caso non é un punteiro. 433 00:17:52,330 --> 00:17:54,380 É só a súa estrutura actual. 434 00:17:54,380 --> 00:17:55,400 >> ALUMNO: Aceptar. 435 00:17:55,400 --> 00:17:57,645 >> ALLISON: Considerando este é un punteiro para un struct. 436 00:17:57,645 --> 00:17:58,910 437 00:17:58,910 --> 00:18:02,060 >> ALUMNO: OK, pero non o tipo de acaban traballando o mesmo [inaudível]. 438 00:18:02,060 --> 00:18:03,310 >> ALLISON: É o mesmo funciona de forma eficaz. 439 00:18:03,310 --> 00:18:04,560 A súa sintaxe é só diferente. 440 00:18:04,560 --> 00:18:05,185 ALUMNO: Aceptar. 441 00:18:05,185 --> 00:18:07,600 >> ALLISON: Si, son eficazmente o mesmo. 442 00:18:07,600 --> 00:18:11,321 É só dependendo do contexto, pode querer un sobre o outro. 443 00:18:11,321 --> 00:18:11,820 Si? 444 00:18:11,820 --> 00:18:13,956 >> ALUMNO: Cando fai as referencias á 1-- 445 00:18:13,956 --> 00:18:14,580 ALLISON: Mm-hm? 446 00:18:14,580 --> 00:18:16,880 ESTUDANTE: Por que teñen os parénteses? 447 00:18:16,880 --> 00:18:19,575 ALLISON: Por estudante 1 é o punteiro. 448 00:18:19,575 --> 00:18:22,200 Entón, ten que asegurarse de que está só dereferencing o punteiro. 449 00:18:22,200 --> 00:18:23,380 >> ALUMNO: Aceptar. 450 00:18:23,380 --> 00:18:26,700 >> ALLISON: Entón, nese caso aquí, os parénteses arredor da cal 451 00:18:26,700 --> 00:18:29,875 significa que está dereferencing estudante 1. 452 00:18:29,875 --> 00:18:35,390 Entón vai para onde estudante 1 puntos, o que é a súa estrutura. 453 00:18:35,390 --> 00:18:38,010 Entón, agora pode pensar niso como que struct, 454 00:18:38,010 --> 00:18:39,785 para que poidamos utilizar a nosa operación normal do punto. 455 00:18:39,785 --> 00:18:42,752 456 00:18:42,752 --> 00:18:43,585 Algunha pregunta? 457 00:18:43,585 --> 00:18:45,840 458 00:18:45,840 --> 00:18:48,120 Legal, impresionante. 459 00:18:48,120 --> 00:18:51,359 >> Entón último, creo que é o meu último slide, Woo! 460 00:18:51,359 --> 00:18:52,775 OK, entón punto flotante imprecisión. 461 00:18:52,775 --> 00:18:54,090 462 00:18:54,090 --> 00:18:56,820 Falamos brevemente sobre que durante a charla. 463 00:18:56,820 --> 00:19:00,030 Basicamente, temos infinitos números reais. 464 00:19:00,030 --> 00:19:02,237 E se algún de vós amo a matemática, hai 465 00:19:02,237 --> 00:19:03,570 todo tipo de cousas legais coa xente. 466 00:19:03,570 --> 00:19:05,010 467 00:19:05,010 --> 00:19:07,190 >> Pero hai infinitos moitos números reais. 468 00:19:07,190 --> 00:19:09,850 Pero son só finito moitos bits que temos. 469 00:19:09,850 --> 00:19:13,240 Entón está indo sempre ten imprecisión, é todo. 470 00:19:13,240 --> 00:19:16,269 E iso é que é só unha especie de como algo que ten que saber. 471 00:19:16,269 --> 00:19:19,060 Que, como podemos pedirlle por que imprecisión existe punto flotante? 472 00:19:19,060 --> 00:19:20,004 473 00:19:20,004 --> 00:19:21,420 Así, só algo que debes saber. 474 00:19:21,420 --> 00:19:23,770 E con iso, eu estou virando la para punteiros. 475 00:19:23,770 --> 00:19:27,720 476 00:19:27,720 --> 00:19:28,520 >> Binky: Ola, persoal. 477 00:19:28,520 --> 00:19:29,616 Binky do meu nome. 478 00:19:29,616 --> 00:19:30,990 Vou falar punteiros. 479 00:19:30,990 --> 00:19:33,247 480 00:19:33,247 --> 00:19:35,830 Si, por iso é realmente punteiros miña parte favorita neste curso. 481 00:19:35,830 --> 00:19:39,740 Entón, só para deixar claro o que Allison estaba falando aquí, entón a razón 482 00:19:39,740 --> 00:19:43,810 para entendermos que a única diferenza aquí, a gran diferenza foi a forma 483 00:19:43,810 --> 00:19:44,760 declaramos cousas. 484 00:19:44,760 --> 00:19:47,560 Así estrela estudante significa que este é un punteiro para un estudante. 485 00:19:47,560 --> 00:19:52,960 Considerando que o foto antes, o estudante é un struct real, como un alumno real, 486 00:19:52,960 --> 00:19:54,400 conteñen calquera destas cousas. 487 00:19:54,400 --> 00:19:57,050 >> E a razón pola que nós quere a-- si, Davin? 488 00:19:57,050 --> 00:19:58,630 >> Davin: Que fai a frecha significa? 489 00:19:58,630 --> 00:20:04,240 >> Binky: Os medios de frecha exactamente o mesmo como esta. 490 00:20:04,240 --> 00:20:06,150 Entón, o que realmente non precisa de frecha. 491 00:20:06,150 --> 00:20:11,060 Como, se é único programa en C, pode só usar ese. 492 00:20:11,060 --> 00:20:12,850 Sentímolo, eu non o que é. 493 00:20:12,850 --> 00:20:14,920 Pode só usar esta sintaxe. 494 00:20:14,920 --> 00:20:17,430 >> Pero algunhas persoas, cando eles estaban designado C, 495 00:20:17,430 --> 00:20:19,870 descubriron que a xente usado que a sintaxe que logo, 496 00:20:19,870 --> 00:20:23,970 que van gustar só chegar cunha estrutura de sintaxe para el. 497 00:20:23,970 --> 00:20:26,820 E iso ocorreu en a forma desta frecha. 498 00:20:26,820 --> 00:20:29,210 E é moi bo, porque el simboliza algo 499 00:20:29,210 --> 00:20:33,670 como estamos, en realidade, seguir esta frecha, este punteiro, 500 00:20:33,670 --> 00:20:35,300 para un espazo na memoria. 501 00:20:35,300 --> 00:20:40,410 E cando chegamos alí, queremos mirar para o nome dese alumno, 502 00:20:40,410 --> 00:20:42,150 se iso ten sentido. 503 00:20:42,150 --> 00:20:43,000 Ok? 504 00:20:43,000 --> 00:20:44,290 >> Polo tanto, este é exactamente o mesmo. 505 00:20:44,290 --> 00:20:46,310 Esta é exactamente o mesmo que iso. 506 00:20:46,310 --> 00:20:48,130 Son compilados exactamente o mesmo, OK? 507 00:20:48,130 --> 00:20:50,100 508 00:20:50,100 --> 00:20:55,580 E a razón pola que aquí malloc algo, é porque, neste caso, 509 00:20:55,580 --> 00:20:59,120 nosa variable é realmente só unha variable punteiro. 510 00:20:59,120 --> 00:21:02,900 Entón, só temos un espazo en memoria que está sostendo un punteiro. 511 00:21:02,900 --> 00:21:06,570 Nós realmente non temos ningún espazo que mantén a estrutura real. 512 00:21:06,570 --> 00:21:08,660 >> Polo tanto, este ten que ser feito en dúas etapas. 513 00:21:08,660 --> 00:21:11,545 Temos que crear o memoria para poñer a estrutura en. 514 00:21:11,545 --> 00:21:14,445 E nós temos que crear o memoria para poñer o punteiro no. 515 00:21:14,445 --> 00:21:16,570 Entón, son basicamente dous diferentes variables, aquí. 516 00:21:16,570 --> 00:21:19,730 Un deles é do tipo alumno, agás que realmente non ten un nome. 517 00:21:19,730 --> 00:21:21,900 E o outro é do tipo estrela estudante. 518 00:21:21,900 --> 00:21:24,900 E entón estudante de 1 puntos alí, se iso ten sentido. 519 00:21:24,900 --> 00:21:25,871 520 00:21:25,871 --> 00:21:26,370 Ok? 521 00:21:26,370 --> 00:21:28,160 522 00:21:28,160 --> 00:21:31,860 >> Así, a razón pola que usamos punteiros é porque todo 523 00:21:31,860 --> 00:21:35,510 nun ordenador, cada variable nun ordenador ten dúas cousas. 524 00:21:35,510 --> 00:21:36,580 El ten o seu valor. 525 00:21:36,580 --> 00:21:38,420 E ten o seu enderezo. 526 00:21:38,420 --> 00:21:41,390 E un bo xeito de conceituar esta é que hai 527 00:21:41,390 --> 00:21:44,230 moitos problemas cando proba a usar funcións. 528 00:21:44,230 --> 00:21:47,200 E imos tratar ollar a un destes. 529 00:21:47,200 --> 00:21:50,370 É dicir, que vai pensar en memoria como caixas. 530 00:21:50,370 --> 00:21:52,810 >> Sempre penso en variables cando di que na é igual a 5. 531 00:21:52,810 --> 00:21:54,430 Pensa en poñer 5 nunha caixa. 532 00:21:54,430 --> 00:21:55,520 533 00:21:55,520 --> 00:22:00,030 Así que se queres pasar que int nunha función? 534 00:22:00,030 --> 00:22:03,230 Só pass-- non sabe-- x nunha función. 535 00:22:03,230 --> 00:22:06,090 Pero o que pasa é normalmente como seres humanos, ten 536 00:22:06,090 --> 00:22:09,050 pensaría algo como eu son pasando a caixa para unha persoa. 537 00:22:09,050 --> 00:22:12,070 E iso realmente non acontecer en computadores. 538 00:22:12,070 --> 00:22:17,770 O que pasa é que copiar o valor do cadro de caixa da persoa. 539 00:22:17,770 --> 00:22:22,440 >> Entón o que eu estou tentando dicir é que se ten un function-- sorry-- aquí, 540 00:22:22,440 --> 00:22:27,700 se temos unha función como a de cinco ata alí, se tentar pasar unha variable, 541 00:22:27,700 --> 00:22:29,450 el só vai copiar. 542 00:22:29,450 --> 00:22:35,771 Un NX initialize é igual a 3, que vai para copiar este valor até a variable a 543 00:22:35,771 --> 00:22:36,270 alí enriba. 544 00:22:36,270 --> 00:22:37,005 545 00:22:37,005 --> 00:22:39,630 OK, e este é o tipo de razón por iso que queremos usar punteiros. 546 00:22:39,630 --> 00:22:42,550 Porque en vez de dando só o valor, 547 00:22:42,550 --> 00:22:44,850 no canto de só pasar só o valor dunha función, 548 00:22:44,850 --> 00:22:46,530 queremos pasar por referencia. 549 00:22:46,530 --> 00:22:50,630 O que chamamos paso por referencia é amable de dar a caixa para a función, 550 00:22:50,630 --> 00:22:53,890 para que a función tamén pode cambiar os valores dentro desa caixa. 551 00:22:53,890 --> 00:22:57,280 >> OK, entón só algúns punteiro básica material é crear punteiros, 552 00:22:57,280 --> 00:23:00,300 só declaralo la un tipo, e pór unha estrela despois. 553 00:23:00,300 --> 00:23:02,307 E o tipo é só o que está apuntando. 554 00:23:02,307 --> 00:23:04,390 Entón, se é unha estrela int, está apuntando para un int. 555 00:23:04,390 --> 00:23:05,940 Se é unha estrela char, está apuntando para un gráfico. 556 00:23:05,940 --> 00:23:07,790 E se é unha estrela alumno, está apuntando a un estudante. 557 00:23:07,790 --> 00:23:08,770 Ok? 558 00:23:08,770 --> 00:23:10,510 >> E son todos os 4 bytes de longo. 559 00:23:10,510 --> 00:23:13,010 Como esta variable En realidade, non 560 00:23:13,010 --> 00:23:15,380 Debe manter un char, un int ou un estudante. 561 00:23:15,380 --> 00:23:16,890 El só precisa manter un enderezo. 562 00:23:16,890 --> 00:23:21,390 É por iso que eles son os 4 bytes longa nunha máquina normal de 32 bits. 563 00:23:21,390 --> 00:23:21,890 Ok? 564 00:23:21,890 --> 00:23:25,600 Entón, aquí, x é unha variable que apunta para un int. y apunta a un char. puntos z 565 00:23:25,600 --> 00:23:26,580 a unha boia. 566 00:23:26,580 --> 00:23:27,480 Todas as preguntas aquí? 567 00:23:27,480 --> 00:23:29,841 568 00:23:29,841 --> 00:23:30,340 Legal. 569 00:23:30,340 --> 00:23:32,550 E hai dous diferentes símbolos teñen 570 00:23:32,550 --> 00:23:34,341 a ter en conta cando benvida ao punteiro. 571 00:23:34,341 --> 00:23:36,540 Entón, facendo referencia e dereferencing son os grandes. 572 00:23:36,540 --> 00:23:38,100 573 00:23:38,100 --> 00:23:41,602 Así, o comercial de nome da variable dálle a? 574 00:23:41,602 --> 00:23:42,310 ALUMNO: Enderezo. 575 00:23:42,310 --> 00:23:43,380 Binky: Enderezo. 576 00:23:43,380 --> 00:23:47,330 Entón, se declarar un int é igual a 5, a continuación, comercial 577 00:23:47,330 --> 00:23:49,214 dun que lle vai dar a dirección. 578 00:23:49,214 --> 00:23:51,130 E realmente pode probar para imprimir iso e ver 579 00:23:51,130 --> 00:23:54,640 a dirección na memoria a variable ten. 580 00:23:54,640 --> 00:23:57,380 E entón dereferencing-- de xeito que estaba se referindo, 581 00:23:57,380 --> 00:24:00,380 recibindo o dereferencing address-- é exactamente o contrario. 582 00:24:00,380 --> 00:24:04,120 OK, así como tempos é o oposto dunha división, 583 00:24:04,120 --> 00:24:06,060 estrela é o contrario do comercial. 584 00:24:06,060 --> 00:24:09,710 Entón medio dereferencing ir alí. 585 00:24:09,710 --> 00:24:14,280 Entón, se dá star-- I non sabe-- 50, que é 586 00:24:14,280 --> 00:24:20,320 vai ir ao enderezo de número 50 dentro do seu ordenador. 587 00:24:20,320 --> 00:24:22,840 OK, e por que nós vemos que son opostos? 588 00:24:22,840 --> 00:24:27,320 Porque o que pasa se fai algo así como estrela comercial Unha? 589 00:24:27,320 --> 00:24:28,470 590 00:24:28,470 --> 00:24:33,460 Ben, un comercial dálle a dirección dunha variable, a dirección dun. 591 00:24:33,460 --> 00:24:35,830 Pero estrelas significa ir máis alá. 592 00:24:35,830 --> 00:24:38,930 >> Entón o que ocorre se ir ao enderezo dun? 593 00:24:38,930 --> 00:24:40,400 Só pode un, non? 594 00:24:40,400 --> 00:24:41,410 595 00:24:41,410 --> 00:24:43,600 Así vai a dirección do un é o mesmo que un. 596 00:24:43,600 --> 00:24:47,580 É por iso que eles son xeralmente referiuse á same-- este 597 00:24:47,580 --> 00:24:50,480 e iso son referidas operadores como contrario. 598 00:24:50,480 --> 00:24:50,980 Ok? 599 00:24:50,980 --> 00:24:52,780 600 00:24:52,780 --> 00:24:53,790 So cool. 601 00:24:53,790 --> 00:24:57,240 >> Baixo o capó, por exemplo, se declararmos int x é igual a 5, 602 00:24:57,240 --> 00:24:58,040 temos unha variable. 603 00:24:58,040 --> 00:25:00,790 E recorda que eu dixen que cada variable-- e iso é unha cousa boa 604 00:25:00,790 --> 00:25:03,820 para manterse en mente-- ten dous cousas distintas asociado. 605 00:25:03,820 --> 00:25:06,460 Ten un e un valor requirido. 606 00:25:06,460 --> 00:25:07,140 Ok? 607 00:25:07,140 --> 00:25:09,180 >> Así, o valor, neste caso, é de 5. 608 00:25:09,180 --> 00:25:12,140 E a dirección é-- imos dicir, eu son facendo algo up-- é 0x04. 609 00:25:12,140 --> 00:25:13,180 610 00:25:13,180 --> 00:25:17,200 E a única razón pola que nós normalmente representar os enderezos en hexadecimal 611 00:25:17,200 --> 00:25:19,770 é un, porque é como bo. 612 00:25:19,770 --> 00:25:21,600 El vai ben co binario. 613 00:25:21,600 --> 00:25:23,500 É doado converter de e para binario. 614 00:25:23,500 --> 00:25:26,890 E non queda moi grande se ten un número moi grande. 615 00:25:26,890 --> 00:25:29,990 Entón, nos gusta de usar hexadecimal en enderezos de impresión. 616 00:25:29,990 --> 00:25:31,890 Pero eu podería representar este como un enteiro. 617 00:25:31,890 --> 00:25:32,750 É moi ben. 618 00:25:32,750 --> 00:25:35,450 >> E por iso ten un enderezo 4 e un valor de 5. 619 00:25:35,450 --> 00:25:38,080 E entón eu dixo punteiro int estrela. 620 00:25:38,080 --> 00:25:40,070 Polo tanto, este é un tipo, previo diferente. 621 00:25:40,070 --> 00:25:43,220 Int punteiro estrela igual a dirección de x. 622 00:25:43,220 --> 00:25:46,425 Entón, o que será o valor de PTR? 623 00:25:46,425 --> 00:25:47,710 624 00:25:47,710 --> 00:25:51,600 Será o enderezo de x, aquí abaixo. 625 00:25:51,600 --> 00:25:54,190 OK, entón o valor vai ser o mesmo que o enderezo. 626 00:25:54,190 --> 00:25:56,130 Esa é a asignación de operar eu estou facendo. 627 00:25:56,130 --> 00:25:59,380 E entón PTR terá seu propio enderezo, o que acaba, 628 00:25:59,380 --> 00:26:02,050 neste caso, o 8, OK? 629 00:26:02,050 --> 00:26:03,850 630 00:26:03,850 --> 00:26:05,900 >> E entón eu crear unha nova copia de enteiro. 631 00:26:05,900 --> 00:26:08,790 E digo int copia é igual a ir máis alá. 632 00:26:08,790 --> 00:26:11,140 Entón, vai para o PTR está a apuntar. 633 00:26:11,140 --> 00:26:13,940 Ben, o que iso PTR ten? 634 00:26:13,940 --> 00:26:14,740 PTR ten 0x04. 635 00:26:14,740 --> 00:26:16,060 636 00:26:16,060 --> 00:26:18,400 Qué acontece se eu tentar ir alí? 637 00:26:18,400 --> 00:26:23,650 Vou atopar a cara que ten dirección x e que ten un enderezo 4. 638 00:26:23,650 --> 00:26:25,970 E quen ten abordar catro é x. 639 00:26:25,970 --> 00:26:26,950 Será que isto ten sentido? 640 00:26:26,950 --> 00:26:28,295 641 00:26:28,295 --> 00:26:28,795 Si? 642 00:26:28,795 --> 00:26:32,060 >> ALUMNO: Neste caso, é o punteiro nunha pila? 643 00:26:32,060 --> 00:26:36,024 >> Binky: Neste caso, it's-- boa pregunta. 644 00:26:36,024 --> 00:26:38,690 Realmente non penso sobre iso ao facer-se estes enderezos. 645 00:26:38,690 --> 00:26:42,570 Pero se esta é, tipo, todo estas son as variables locais, 646 00:26:42,570 --> 00:26:46,372 entón x vai vivir em-- todo vai vivir na pila. 647 00:26:46,372 --> 00:26:48,330 Entón, todo está indo estar apuntando á pila. 648 00:26:48,330 --> 00:26:49,360 649 00:26:49,360 --> 00:26:52,700 Só ten a pila cando comezar a usar malloc, non? 650 00:26:52,700 --> 00:26:59,430 >> Entón, se se lembra pila é cada vez chamar unha función no seu programa, 651 00:26:59,430 --> 00:27:02,800 como, por exemplo principal, ou calquera outra función, como printf. 652 00:27:02,800 --> 00:27:06,334 Todos os lugares son variables vai poñer nun cadro de pila. 653 00:27:06,334 --> 00:27:08,500 E eles están indo para obter como apilados na pila. 654 00:27:08,500 --> 00:27:09,930 Iso é o que se chama pila. 655 00:27:09,930 --> 00:27:12,200 E todas estas variables locais van estar alí. 656 00:27:12,200 --> 00:27:14,940 E o heap-- e imos para falar máis sobre este later-- 657 00:27:14,940 --> 00:27:19,050 a pila é onde todos alocada dinámica vidas de memoria. 658 00:27:19,050 --> 00:27:20,270 Legal? 659 00:27:20,270 --> 00:27:21,680 >> Imos para ese foto. 660 00:27:21,680 --> 00:27:22,800 Si? 661 00:27:22,800 --> 00:27:25,490 >> ALUMNO: Por que non é int copia retornando 0x04? 662 00:27:25,490 --> 00:27:27,870 663 00:27:27,870 --> 00:27:30,066 >> Binky: Por que non é int copia retornando 0x04? 664 00:27:30,066 --> 00:27:32,450 >> ALUMNO: ¿Por que non é que [inaudível]? 665 00:27:32,450 --> 00:27:35,530 >> Binky: Porque o que é un valor de PTR? 666 00:27:35,530 --> 00:27:37,394 667 00:27:37,394 --> 00:27:38,370 >> ALUMNO: 0x04. 668 00:27:38,370 --> 00:27:38,960 >> Binky: 0x04. 669 00:27:38,960 --> 00:27:40,910 Qué acontece se vai a 0x04? 670 00:27:40,910 --> 00:27:41,620 O que gañou? 671 00:27:41,620 --> 00:27:42,371 >> ALUMNO: Oh, Aceptar. 672 00:27:42,371 --> 00:27:42,995 Binky: Ve? 673 00:27:42,995 --> 00:27:43,536 Estudante: Si. 674 00:27:43,536 --> 00:27:44,890 Binky: Entón comeza 5. 675 00:27:44,890 --> 00:27:49,170 Así copia terá 5, se iso ten sentido. 676 00:27:49,170 --> 00:27:49,809 Si? 677 00:27:49,809 --> 00:27:52,803 >> ALUMNO: poderiamos conseguir 5 no cadro o valor [inaudível] 678 00:27:52,803 --> 00:27:55,300 se colocarmos int copiar [inaudível]. 679 00:27:55,300 --> 00:27:56,710 >> Binky: Int-- que faría, si. 680 00:27:56,710 --> 00:27:59,080 Isto faría practicamente o mesmo. 681 00:27:59,080 --> 00:28:02,080 Pero deste xeito, podemos pasar abordar a funcións. 682 00:28:02,080 --> 00:28:05,050 E esa é a cousa legal imos facer agora. 683 00:28:05,050 --> 00:28:06,770 684 00:28:06,770 --> 00:28:13,090 >> Polo tanto, este tipo de exercicio sempre vén á tona on-- moi xeralmente xorde en cuestionarios. 685 00:28:13,090 --> 00:28:15,870 Entón, é realmente bo para tratar facer este tipo de cousas mesmo. 686 00:28:15,870 --> 00:28:21,210 Polo tanto, proba manter o control do que a dirección é e quere que os valores das variables 687 00:28:21,210 --> 00:28:22,620 son en cada punto. 688 00:28:22,620 --> 00:28:24,370 Polo tanto, esta é exactamente o que imos facer. 689 00:28:24,370 --> 00:28:26,988 Aquí, temos medidas, un, dous, tres, catro, cinco. 690 00:28:26,988 --> 00:28:30,530 Un, dous, tres, catro, cinco. 691 00:28:30,530 --> 00:28:33,330 E imos manter o control os valores de x e dun. 692 00:28:33,330 --> 00:28:34,650 693 00:28:34,650 --> 00:28:40,530 >> Entón, o que isto está facendo, se esta é unha código de buggy, nós estamos intentando facer a cinco. 694 00:28:40,530 --> 00:28:43,610 Entón, estamos tentando entrar nunha variable e cambie o seu valor para 5. 695 00:28:43,610 --> 00:28:44,630 696 00:28:44,630 --> 00:28:49,900 E recorda se miña analoxía de ter un caixa e entregando a caixa a alguén? 697 00:28:49,900 --> 00:28:51,515 Entón principal ten esta caixa chamada x. 698 00:28:51,515 --> 00:28:52,570 699 00:28:52,570 --> 00:28:54,170 E que contén o valor 3. 700 00:28:54,170 --> 00:28:55,230 701 00:28:55,230 --> 00:28:57,455 E eu estou tentando entregar esta caixa para a cinco. 702 00:28:57,455 --> 00:28:58,560 703 00:28:58,560 --> 00:29:01,510 >> E quero cinco para cambiar o valor desta caixa para 5. 704 00:29:01,510 --> 00:29:03,080 705 00:29:03,080 --> 00:29:05,120 E entón eu só imprimir o valor de x. 706 00:29:05,120 --> 00:29:06,475 707 00:29:06,475 --> 00:29:08,850 Este é o meu function-- iso é o que eu estou tentando facer. 708 00:29:08,850 --> 00:29:12,450 Eu só estou tentando actualizar o valor de x para 5. 709 00:29:12,450 --> 00:29:13,512 710 00:29:13,512 --> 00:29:14,970 Claro que a función fai? 711 00:29:14,970 --> 00:29:16,210 712 00:29:16,210 --> 00:29:21,440 >> OK, entón o que será o valores de x e un aquí, 713 00:29:21,440 --> 00:29:27,734 primeira liña, á dereita antes da primeira linha-- eu dizer-- do programa? 714 00:29:27,734 --> 00:29:28,940 >> ESTUDANTE: Probablemente lixo. 715 00:29:28,940 --> 00:29:30,023 >> Binky: Só o material de lixo. 716 00:29:30,023 --> 00:29:32,590 Entón, eu só poñer N / A. Así nós realmente non sabemos. 717 00:29:32,590 --> 00:29:37,400 Como, a nin sequera existe aínda, por que non chamaron a cinco. 718 00:29:37,400 --> 00:29:38,980 Int un non está declarado. 719 00:29:38,980 --> 00:29:40,030 720 00:29:40,030 --> 00:29:42,920 E x vai existir aquí, pero nós non temos realmente 721 00:29:42,920 --> 00:29:45,370 asignado calquera valor a ela, entón OK? 722 00:29:45,370 --> 00:29:46,570 723 00:29:46,570 --> 00:29:52,340 >> E entón, o que será o Os valores de x e un número en dous? 724 00:29:52,340 --> 00:29:54,530 725 00:29:54,530 --> 00:29:55,410 >> Estudante: [inaudível]. 726 00:29:55,410 --> 00:29:57,540 >> Binky: Entón x será 3. 727 00:29:57,540 --> 00:29:59,650 Iso é doado, porque estamos atribuíndo 3 a el. 728 00:29:59,650 --> 00:30:03,500 E un non existe porque un só vive ata cinco. 729 00:30:03,500 --> 00:30:05,800 Entón eu vou ter 3 e nada. 730 00:30:05,800 --> 00:30:08,590 ou como lixo, sexa cal sexa, realmente non definido. 731 00:30:08,590 --> 00:30:11,640 732 00:30:11,640 --> 00:30:13,140 E agora, esta é a liña importante. 733 00:30:13,140 --> 00:30:14,931 Aquí, nós estamos indo a realmente chamar a cinco. 734 00:30:14,931 --> 00:30:17,140 735 00:30:17,140 --> 00:30:18,680 E recorda que eu dixen. 736 00:30:18,680 --> 00:30:20,240 Nunca pasar no cadro. 737 00:30:20,240 --> 00:30:23,110 Nós só copiar o valor de a caixa a outra caixa. 738 00:30:23,110 --> 00:30:27,000 Isto é todo ordenadores que, por favor copie cousas dun lugar a outro. 739 00:30:27,000 --> 00:30:33,550 >> Entón, para cinco, o que realmente fai é el copia o valor de x para un. 740 00:30:33,550 --> 00:30:35,130 Entón, o que será aquí? 741 00:30:35,130 --> 00:30:36,210 Os valores de x e dun. 742 00:30:36,210 --> 00:30:38,670 743 00:30:38,670 --> 00:30:43,360 3 e 3, imos copiar que ao longo de x para un. 744 00:30:43,360 --> 00:30:44,710 745 00:30:44,710 --> 00:30:45,320 Legal. 746 00:30:45,320 --> 00:30:46,140 >> Agora que estamos aquí. 747 00:30:46,140 --> 00:30:47,610 748 00:30:47,610 --> 00:30:49,430 E agora nós estamos indo para actualizar un é igual a 5. 749 00:30:49,430 --> 00:30:50,900 750 00:30:50,900 --> 00:30:53,070 O que vai ocorrer na liña de catro? 751 00:30:53,070 --> 00:30:55,120 752 00:30:55,120 --> 00:30:56,010 >> Estudante: [inaudível]. 753 00:30:56,010 --> 00:30:59,685 >> Binky: un é actualizado, pero x non se actualizado. 754 00:30:59,685 --> 00:31:02,050 755 00:31:02,050 --> 00:31:05,250 Como x aínda vive na principal, é un completamente diferente bloque de memoria. 756 00:31:05,250 --> 00:31:06,970 É unha variable distinta. 757 00:31:06,970 --> 00:31:07,900 unha é outra variable. 758 00:31:07,900 --> 00:31:10,000 Eles teñen o mesmo valor porque eu 759 00:31:10,000 --> 00:31:13,980 copiado sobre o valor de x para un. 760 00:31:13,980 --> 00:31:20,070 Pero agora cando fago un é igual a 5, el realmente non afectar de forma algunha x. 761 00:31:20,070 --> 00:31:21,450 Esta é a parte máis complicada. 762 00:31:21,450 --> 00:31:23,380 Será que ten sentido para todo o mundo? 763 00:31:23,380 --> 00:31:24,093 Si? 764 00:31:24,093 --> 00:31:25,717 ALUMNO: Só unha pregunta, ten tres. 765 00:31:25,717 --> 00:31:27,741 Por que é un já-- Oh, non, é 3. 766 00:31:27,741 --> 00:31:28,490 Sentímolo, non importa. 767 00:31:28,490 --> 00:31:29,310 Lin 5. 768 00:31:29,310 --> 00:31:30,415 >> Binky: Si, 3, 3. 769 00:31:30,415 --> 00:31:31,540 >> Estudante: [inaudível], si. 770 00:31:31,540 --> 00:31:35,290 Binky: E entón imos asignar 5 a un, pero realmente non cambia x. 771 00:31:35,290 --> 00:31:36,369 Boa? 772 00:31:36,369 --> 00:31:36,910 Estudante: Si. 773 00:31:36,910 --> 00:31:37,410 Binky: Si? 774 00:31:37,410 --> 00:31:42,330 Pode explicar de novo como un cópiase [inaudível]? 775 00:31:42,330 --> 00:31:48,480 >> Binky: OK, entón cando chamar a cinco de x, de xeito que esta liña de código aquí. 776 00:31:48,480 --> 00:31:50,100 777 00:31:50,100 --> 00:31:52,340 a cinco dos x, o que é x? 778 00:31:52,340 --> 00:31:55,160 779 00:31:55,160 --> 00:31:58,340 x está só a 3, neste punto, non? 780 00:31:58,340 --> 00:32:03,320 Entón, vostede podería só pensar en poñer a 3 aquí e esquecendo x. 781 00:32:03,320 --> 00:32:04,410 Basta pór a 3 aquí. 782 00:32:04,410 --> 00:32:10,880 Tipo, imos copiar o valor de x ao int a que está alí enriba. 783 00:32:10,880 --> 00:32:12,310 784 00:32:12,310 --> 00:32:13,630 Ok? 785 00:32:13,630 --> 00:32:14,780 >> Así, o valor de x é 3. 786 00:32:14,780 --> 00:32:17,680 Estamos indo para copiar 3 ata a. 787 00:32:17,680 --> 00:32:20,040 E todo isto outro bloque de memoria, esta outra variable 788 00:32:20,040 --> 00:32:22,640 chamado un terán 3, así. 789 00:32:22,640 --> 00:32:23,580 Será que isto ten sentido? 790 00:32:23,580 --> 00:32:24,780 791 00:32:24,780 --> 00:32:25,794 Si? 792 00:32:25,794 --> 00:32:31,008 >> ALUMNO: Se der a cinco como telo como un número enteiro x no canto dun, 793 00:32:31,008 --> 00:32:32,910 tería que resolver todo? 794 00:32:32,910 --> 00:32:36,290 >> Binky: Se é un integer-- non, que non estaba a reparar todo. 795 00:32:36,290 --> 00:32:37,590 Entón esa é unha pregunta moi boa. 796 00:32:37,590 --> 00:32:40,480 Realmente non importa o que chama esas variables. 797 00:32:40,480 --> 00:32:44,510 Unha vez máis, será cuestión de alcance, porque non son a mesma x. 798 00:32:44,510 --> 00:32:46,526 Son completamente espazos diferentes na memoria. 799 00:32:46,526 --> 00:32:47,400 Estudante: [inaudível]. 800 00:32:47,400 --> 00:32:49,020 Binky: Entón, iso realmente non importa o que chamalos. 801 00:32:49,020 --> 00:32:50,480 Isto non reparar as cousas, OK? 802 00:32:50,480 --> 00:32:53,390 803 00:32:53,390 --> 00:32:54,430 Máis preguntas? 804 00:32:54,430 --> 00:32:55,762 Si? 805 00:32:55,762 --> 00:32:58,498 >> ESTUDANTE: Como é volver número cinco [inaudível]? 806 00:32:58,498 --> 00:32:59,661 807 00:32:59,661 --> 00:33:01,160 Binky: OK, non fixemos iso aínda. 808 00:33:01,160 --> 00:33:03,432 Imos ao número cinco, entón. 809 00:33:03,432 --> 00:33:04,650 >> Estudante: [inaudível]? 810 00:33:04,650 --> 00:33:05,565 >> Binky: O que? 811 00:33:05,565 --> 00:33:08,179 >> ALUMNO: Ten un retorno en todo? 812 00:33:08,179 --> 00:33:09,970 Binky: Non temos un retorno, non do principal. 813 00:33:09,970 --> 00:33:12,940 Pero principal retorna 0 automaticamente se non regresa nada. 814 00:33:12,940 --> 00:33:14,400 815 00:33:14,400 --> 00:33:15,188 Si? 816 00:33:15,188 --> 00:33:22,658 >> ALUMNO: Podería facer main-- ou podería facer para cinco retorno dun? 817 00:33:22,658 --> 00:33:24,170 818 00:33:24,170 --> 00:33:27,990 >> Binky: Poderiamos ter a cinco devolver un, si. 819 00:33:27,990 --> 00:33:32,527 Pero, entón, teríamos de asignar x é igual ao valor de retorno de ata cinco, 820 00:33:32,527 --> 00:33:34,360 o que sería un pouco programa diferente. 821 00:33:34,360 --> 00:33:35,440 Ía traballar. 822 00:33:35,440 --> 00:33:38,730 Pero o que queremos facer é o que é chámase cambiar algo no lugar. 823 00:33:38,730 --> 00:33:41,690 Entón, nós queremos, en realidade, cambiar ese marco e non se preocupe 824 00:33:41,690 --> 00:33:44,390 sobre ter que volver valores ou calquera cousa. 825 00:33:44,390 --> 00:33:44,890 Ok? 826 00:33:44,890 --> 00:33:46,490 827 00:33:46,490 --> 00:33:50,150 >> Este é só como a función de intercambio David mostrou na charla, só que eu son 828 00:33:50,150 --> 00:33:51,740 só lidando con unha variable. 829 00:33:51,740 --> 00:33:55,960 E usou dous, entón int a eb e entón variable temporal e outros enfeites. 830 00:33:55,960 --> 00:33:57,020 Ok? 831 00:33:57,020 --> 00:33:58,070 Entón, cal é a última liña? 832 00:33:58,070 --> 00:34:04,400 Despois de cinco retorno, é simplemente a un vai ir aínda. 833 00:34:04,400 --> 00:34:06,120 834 00:34:06,120 --> 00:34:10,179 Non teremos un máis, e só x aínda vai vivir. 835 00:34:10,179 --> 00:34:12,130 >> E difícil de adiviñar? X non cambiar o seu valor, 836 00:34:12,130 --> 00:34:15,520 ao final, porque estamos cambiando só o valor dun. 837 00:34:15,520 --> 00:34:17,370 É por iso que foi de 3 x todo. 838 00:34:17,370 --> 00:34:17,870 Ok? 839 00:34:17,870 --> 00:34:20,195 840 00:34:20,195 --> 00:34:21,130 Boa. 841 00:34:21,130 --> 00:34:23,560 Polo tanto, este programa de non conseguir o que quería. 842 00:34:23,560 --> 00:34:24,760 Agora, imos resolve-lo. 843 00:34:24,760 --> 00:34:27,440 >> E o programa de corrección é usar punteiros. 844 00:34:27,440 --> 00:34:32,300 O que facemos é que temos tres liñas que son diferentes. 845 00:34:32,300 --> 00:34:34,020 Os primeiros si non estamos pasando x. 846 00:34:34,020 --> 00:34:35,535 Estamos pasando a dirección de x. 847 00:34:35,535 --> 00:34:37,330 848 00:34:37,330 --> 00:34:40,876 Entón, en vez de copiar o valor da caixa, 849 00:34:40,876 --> 00:34:42,500 Eu aínda vou copiar algo. 850 00:34:42,500 --> 00:34:45,380 Pero eu estou copiando a dirección da caixa. 851 00:34:45,380 --> 00:34:48,780 >> Entón, se eu pasar a dirección do caixa para a cinco, despois a cinco 852 00:34:48,780 --> 00:34:51,560 poderá descubrir que, en memoria e cambiar o seu valor. 853 00:34:51,560 --> 00:34:53,980 854 00:34:53,980 --> 00:34:59,580 >> Así, e despois alí enriba, eu teño un que non é un int máis. 855 00:34:59,580 --> 00:35:00,882 un é unha estrela int. 856 00:35:00,882 --> 00:35:02,090 É un punteiro para un enteiro. 857 00:35:02,090 --> 00:35:03,790 858 00:35:03,790 --> 00:35:07,310 E entón, por que eu estou pasando o abordar aquí, e entón o que fago 859 00:35:07,310 --> 00:35:10,530 non é un é igual a 5, xa un está sostendo un enderezo. 860 00:35:10,530 --> 00:35:16,710 Entón o que quero facer é ir alí e actualizar o contido deste enderezo 861 00:35:16,710 --> 00:35:18,305 con 5. 862 00:35:18,305 --> 00:35:21,130 >> OK, entón imos pasar por todas as liñas de un por un. 863 00:35:21,130 --> 00:35:22,410 864 00:35:22,410 --> 00:35:26,024 Entón, cando eu comezar, eu aínda ten N / A, N / A, N / A 865 00:35:26,024 --> 00:35:28,440 para todo na primeira liña, porque eu non teño realmente 866 00:35:28,440 --> 00:35:29,390 declarou cousas aínda. 867 00:35:29,390 --> 00:35:30,980 868 00:35:30,980 --> 00:35:35,110 E despois a liña dous, eu teño x é igual a 3. 869 00:35:35,110 --> 00:35:38,020 A int estrela a non existir, mesmo que antes. 870 00:35:38,020 --> 00:35:39,160 871 00:35:39,160 --> 00:35:40,640 >> Agora queda interesante. 872 00:35:40,640 --> 00:35:42,300 Entón eu vou pasar. 873 00:35:42,300 --> 00:35:45,720 E imos supor que a dirección de x é 12 en hexadecimal. 874 00:35:45,720 --> 00:35:46,880 875 00:35:46,880 --> 00:35:48,420 Nós só asumir iso. 876 00:35:48,420 --> 00:35:49,221 Eu fi-lo cara arriba. 877 00:35:49,221 --> 00:35:51,680 878 00:35:51,680 --> 00:35:53,500 Entón o que estou pasando aquí é un a cinco. 879 00:35:53,500 --> 00:35:54,460 Estou pasando 12. 880 00:35:54,460 --> 00:35:56,390 881 00:35:56,390 --> 00:35:58,610 >> Entón o valor que un ten? 882 00:35:58,610 --> 00:36:04,785 883 00:36:04,785 --> 00:36:06,210 >> Estudante: [inaudível]. 884 00:36:06,210 --> 00:36:06,950 >> Binky: Sentímolo? 885 00:36:06,950 --> 00:36:08,145 >> Estudante: [inaudível]. 886 00:36:08,145 --> 00:36:10,520 Binky: Si, como, deixar de asumir que estamos aquí, agora. 887 00:36:10,520 --> 00:36:11,540 888 00:36:11,540 --> 00:36:12,040 Estou preguntando. 889 00:36:12,040 --> 00:36:12,915 >> Estudante: [inaudível]. 890 00:36:12,915 --> 00:36:13,590 891 00:36:13,590 --> 00:36:14,890 >> Binky: foi iniciada. 892 00:36:14,890 --> 00:36:15,860 >> Estudante: [inaudível]. 893 00:36:15,860 --> 00:36:17,985 Binky: Por nós pasamos algo para a función. 894 00:36:17,985 --> 00:36:19,431 895 00:36:19,431 --> 00:36:19,930 Si? 896 00:36:19,930 --> 00:36:20,899 >> ALUMNO: Enderezo x. 897 00:36:20,899 --> 00:36:22,690 Binky: Vai ter o seu enderezo de x. 898 00:36:22,690 --> 00:36:25,800 E o enderezo de x é 12, bo. 899 00:36:25,800 --> 00:36:30,990 Entón x será tres, porque nós non cambiaron realmente x aínda. 900 00:36:30,990 --> 00:36:36,700 E entón un será 0x12, entón a dirección de x, porque iso é 901 00:36:36,700 --> 00:36:38,840 o que nós pasamos a cinco. 902 00:36:38,840 --> 00:36:40,940 >> E entón o que pasa se intentemos ir alí? 903 00:36:40,940 --> 00:36:42,145 Que atoparemos? 904 00:36:42,145 --> 00:36:47,120 Entón, se tentar imprimir unha estrela, imos seguir este enderezo 905 00:36:47,120 --> 00:36:48,620 e obter o valor dentro. 906 00:36:48,620 --> 00:36:50,470 E o valor é só o mesmo valor que x 907 00:36:50,470 --> 00:36:53,980 ten porque esa é a enderezo de x, que será de 3. 908 00:36:53,980 --> 00:36:55,440 909 00:36:55,440 --> 00:36:56,930 Será que somos bos? 910 00:36:56,930 --> 00:36:59,990 >> OK, e logo agora, nós realmente ir alí. 911 00:36:59,990 --> 00:37:05,510 E nós actualizamos o que quere É neste enderezo 12. 912 00:37:05,510 --> 00:37:07,390 Facemos máis cinco. 913 00:37:07,390 --> 00:37:10,560 Entón, agora ambos x e unha estrela son cinco. 914 00:37:10,560 --> 00:37:13,170 915 00:37:13,170 --> 00:37:13,680 >> Por que? 916 00:37:13,680 --> 00:37:17,070 Xa que a dirección de x é 12. 917 00:37:17,070 --> 00:37:20,920 E un ten tamén 12 como o seu valor. 918 00:37:20,920 --> 00:37:23,780 Entón, se seguirmos 12, estamos só atoparás x. 919 00:37:23,780 --> 00:37:27,400 Polo tanto, todo o que facemos con estrela un ocorrerá 920 00:37:27,400 --> 00:37:30,790 ax, porque contén un a dirección de x. 921 00:37:30,790 --> 00:37:31,918 922 00:37:31,918 --> 00:37:32,418 Ok? 923 00:37:32,418 --> 00:37:34,090 924 00:37:34,090 --> 00:37:37,750 >> E iso é como o cerne da corrección. 925 00:37:37,750 --> 00:37:41,500 Entón, agora somos capaces, desde cinco anos, de feito, 926 00:37:41,500 --> 00:37:43,840 memoria de acceso que viviu no inicio. 927 00:37:43,840 --> 00:37:47,980 Polo tanto, esta memoria non vive no cinco, como antes, esta dirección 12. 928 00:37:47,980 --> 00:37:50,980 E fomos capaces de ir alí e cambie o seu valor para 5. 929 00:37:50,980 --> 00:37:53,990 >> E entón, cando volvemos, esquecemos a. 930 00:37:53,990 --> 00:37:55,720 Esquecemos nos de unha estrela. 931 00:37:55,720 --> 00:37:57,020 E x aínda é cinco. 932 00:37:57,020 --> 00:37:58,327 933 00:37:58,327 --> 00:38:00,160 Entón, se quere aplicar unha función de intercambio, 934 00:38:00,160 --> 00:38:05,010 que tería só que facer exactamente o mesmo, agás que precisa para int estrelas aquí, 935 00:38:05,010 --> 00:38:06,140 e así por diante e así por diante. 936 00:38:06,140 --> 00:38:06,976 Ok? 937 00:38:06,976 --> 00:38:07,475 Será que somos bos? 938 00:38:07,475 --> 00:38:09,860 939 00:38:09,860 --> 00:38:10,610 Legal. 940 00:38:10,610 --> 00:38:12,410 >> Entón punteiro aritmética. 941 00:38:12,410 --> 00:38:13,960 Este é un tema un pouco complicado. 942 00:38:13,960 --> 00:38:16,554 Así, verifícase que os punteiros son só enteiros. 943 00:38:16,554 --> 00:38:17,970 Pode pensar neles como números enteiros. 944 00:38:17,970 --> 00:38:21,080 Porque na memoria, ten como dirección de memoria cero, un, dous, tres, 945 00:38:21,080 --> 00:38:21,900 catro, cinco. 946 00:38:21,900 --> 00:38:23,900 Así, podemos resumir enderezos de memoria. 947 00:38:23,900 --> 00:38:27,230 >> E iso é xeralmente o que fai cando está dentro e array, por exemplo. 948 00:38:27,230 --> 00:38:30,540 Unha matriz é como un contiguo bloque de memoria, de lotes de caracteres, 949 00:38:30,540 --> 00:38:31,840 por exemplo, os lotes de ints. 950 00:38:31,840 --> 00:38:34,420 Entón, se quere ir ao int segundo ou no terceiro int, 951 00:38:34,420 --> 00:38:37,830 pode simplemente sumar algo para o primeiro dirección, e vai chegar alí. 952 00:38:37,830 --> 00:38:39,620 Polo tanto, esta é realmente útil para iso. 953 00:38:39,620 --> 00:38:41,850 >> E a cousa para manter presente, con todo, é 954 00:38:41,850 --> 00:38:45,140 que non é só gusta aritmética normal no sentido 955 00:38:45,140 --> 00:38:50,304 que, se está lidando con, digamos, unha estrela int, e engadir un a el, 956 00:38:50,304 --> 00:38:52,220 entón non vai engadir 1 ao enderezo, 957 00:38:52,220 --> 00:38:53,950 está indo a engadir 4 ao enderezo. 958 00:38:53,950 --> 00:38:55,030 959 00:38:55,030 --> 00:38:56,670 Por un int é de 4 bytes. 960 00:38:56,670 --> 00:38:57,720 961 00:38:57,720 --> 00:38:59,540 >> Polo tanto, este é só como camiñando nun array. 962 00:38:59,540 --> 00:39:05,260 Se temos unha serie de lotes de ints e entón imos tentar ir ao segundo, 963 00:39:05,260 --> 00:39:08,790 É basicamente só suma dos enderezo do primeiro un máis un. 964 00:39:08,790 --> 00:39:10,040 965 00:39:10,040 --> 00:39:13,425 Pero iso non vai ser-- só digamos que a dirección do primeiro é 4. 966 00:39:13,425 --> 00:39:14,560 967 00:39:14,560 --> 00:39:16,250 Aquí, no caso en apreciado. 968 00:39:16,250 --> 00:39:19,780 969 00:39:19,780 --> 00:39:22,850 E se sumarmos, polo que este é o que está pasando. 970 00:39:22,850 --> 00:39:23,530 Temos un int. 971 00:39:23,530 --> 00:39:25,640 Int x é igual a 5. 972 00:39:25,640 --> 00:39:26,950 X ten un valor de 5. 973 00:39:26,950 --> 00:39:31,240 E nós arrincar este punteiro, int y int estrela y é igual ao enderezo de x. 974 00:39:31,240 --> 00:39:33,660 >> Imos asumir que a dirección de x é 4. 975 00:39:33,660 --> 00:39:36,960 O que vai ocorrer agora, se eu engadir unha suma de y? 976 00:39:36,960 --> 00:39:39,110 977 00:39:39,110 --> 00:39:44,790 Vai realmente suma 4 no canto de só un. 978 00:39:44,790 --> 00:39:50,920 Entón eu engadir a 1, pero, en realidade, engadiu 4, xa que o equipo de intelixente. 979 00:39:50,920 --> 00:39:55,275 Entón, que vai realmente engadir polo i veces o tamaño do tipo de punteiro. 980 00:39:55,275 --> 00:39:56,340 981 00:39:56,340 --> 00:39:56,840 Ok? 982 00:39:56,840 --> 00:39:58,030 983 00:39:58,030 --> 00:40:02,440 >> Polo tanto, se se tratase dun carbón animal, por exemplo, se isto fose un char estrela y, 984 00:40:02,440 --> 00:40:07,141 e se engadimos 1, entón iso sería ser de 5, porque carácter é un byte de lonxitude. 985 00:40:07,141 --> 00:40:07,640 Boa? 986 00:40:07,640 --> 00:40:10,560 987 00:40:10,560 --> 00:40:13,190 >> E, finalmente, chegamos ao punteiros e matrices. 988 00:40:13,190 --> 00:40:16,451 Acontece que cada vez está lidando con unha matriz, 989 00:40:16,451 --> 00:40:18,075 en realidade está lidando cun punteiro. 990 00:40:18,075 --> 00:40:19,720 991 00:40:19,720 --> 00:40:24,777 A razón conceptual moi agradable para dicir que as matrices son moi grandes. 992 00:40:24,777 --> 00:40:27,360 Entón lembre que eu dixen que cada vez que pasar cousas ao redor, 993 00:40:27,360 --> 00:40:29,097 copiar todo. 994 00:40:29,097 --> 00:40:31,180 Entón, se ten unha matriz iso é moi, moi grande, 995 00:40:31,180 --> 00:40:32,990 realmente non quere copiar todo o tempo 996 00:40:32,990 --> 00:40:35,710 ti pasalo ao redor para outro función, porque iso é só 997 00:40:35,710 --> 00:40:37,190 enormes cantidades de traballo. 998 00:40:37,190 --> 00:40:39,710 Entón, o que fai é só pasado a dirección do primeiro byte. 999 00:40:39,710 --> 00:40:40,969 1000 00:40:40,969 --> 00:40:44,010 E, a continuación, a función terá acceso a todos os elementos desta matriz. 1001 00:40:44,010 --> 00:40:48,670 Entón, pasou a matriz a través do seu enderezo, de xeito que a dirección do primeiro byte. 1002 00:40:48,670 --> 00:40:53,010 >> Entón, se nós declaramos int serie 3, aquí, sabemos 1003 00:40:53,010 --> 00:40:57,470 como acceder ao primeiro elemento utilizando a notación de corchetes. 1004 00:40:57,470 --> 00:41:02,410 Se se lembrar do soporte notación, array soporte 0 é igual a 1. 1005 00:41:02,410 --> 00:41:06,330 Ben, iso sería exactamente o aínda que só ir alí e poñer un. 1006 00:41:06,330 --> 00:41:07,370 1007 00:41:07,370 --> 00:41:09,110 OK, é exactamente o mesmo. 1008 00:41:09,110 --> 00:41:13,010 Así, a notación de corchetes aquí será o mesmo que esta liña. 1009 00:41:13,010 --> 00:41:18,600 >> E difícil de adiviñar o que a notación de corchetes para soporte de matriz 1 será? 1010 00:41:18,600 --> 00:41:20,440 Será só o mesmo que iso. 1011 00:41:20,440 --> 00:41:22,500 Entón, engadir un para matriz. 1012 00:41:22,500 --> 00:41:24,370 Mover un longo na memoria. 1013 00:41:24,370 --> 00:41:26,310 Vaia alí, e poñer a 2. 1014 00:41:26,310 --> 00:41:28,050 1015 00:41:28,050 --> 00:41:28,579 Ok? 1016 00:41:28,579 --> 00:41:29,870 E esta liña é o mesmo. 1017 00:41:29,870 --> 00:41:34,860 Queremos ir á terceira caixa, de xeito matriz máis dous. 1018 00:41:34,860 --> 00:41:37,465 Vaia alí, e poñer a 3. 1019 00:41:37,465 --> 00:41:39,340 Entón, na memoria, o que é vai pasar é que estamos 1020 00:41:39,340 --> 00:41:44,400 terá 1, 2, e 3, como o tres elementos desta matriz. 1021 00:41:44,400 --> 00:41:46,970 >> Poderiamos ter feito isto usando nosa notación soporte familiar. 1022 00:41:46,970 --> 00:41:49,410 Eu só quero que vostedes saben que son a mesma cousa. 1023 00:41:49,410 --> 00:41:50,530 1024 00:41:50,530 --> 00:41:53,010 OK, preguntas sobre iso? 1025 00:41:53,010 --> 00:41:56,115 1026 00:41:56,115 --> 00:41:56,615 Niza. 1027 00:41:56,615 --> 00:41:57,990 1028 00:41:57,990 --> 00:41:59,880 Agora, eu estou indo a man la para Hannah, 1029 00:41:59,880 --> 00:42:00,330 >> HANNAH: Yay, yee-haw. 1030 00:42:00,330 --> 00:42:02,246 >> Binky: Fala de memoria e artigo de material. 1031 00:42:02,246 --> 00:42:06,554 [Aplausos] 1032 00:42:06,554 --> 00:42:10,150 >> HANNAH: Ola, legal, entón nós estamos imos falar un pouco máis 1033 00:42:10,150 --> 00:42:13,090 sobre a memoria, que acabamos enderezado usando punteiros. 1034 00:42:13,090 --> 00:42:16,060 Polo tanto, hai dúas partes principais da memoria que estamos preocupados. 1035 00:42:16,060 --> 00:42:18,830 Temos a pila, que crece se no fondo, e heap, que 1036 00:42:18,830 --> 00:42:20,600 vai para abaixo dende o principio. 1037 00:42:20,600 --> 00:42:24,690 E a pila vai realizar todas as nosas variables de instancia. 1038 00:42:24,690 --> 00:42:28,860 Así, cada un chama a unha función obtén o seu propio pequeno cadro na pila. 1039 00:42:28,860 --> 00:42:32,160 Así como Gabe mencionado anteriormente, se nós chamar a función de novo e de novo, 1040 00:42:32,160 --> 00:42:34,180 imos apilar as cousas na pila. 1041 00:42:34,180 --> 00:42:35,220 1042 00:42:35,220 --> 00:42:38,570 >> E do mesmo xeito, a pila, que comeza na parte superior 1043 00:42:38,570 --> 00:42:42,660 vai realizar toda a memoria que dinámicamente reservar. 1044 00:42:42,660 --> 00:42:45,110 E así como nós dinamicamente reservar a memoria, 1045 00:42:45,110 --> 00:42:47,580 este vai descender ao fondo. 1046 00:42:47,580 --> 00:42:51,340 Algunhas cousas para estar en conta cando Utilizamos a pila eo heap, 1047 00:42:51,340 --> 00:42:55,200 coa pila, se temos moi many-- imos dizer-- chamadas recursivas, 1048 00:42:55,200 --> 00:42:58,392 e estamos chamando unha función de novo, e de novo, e de novo, e de novo, 1049 00:42:58,392 --> 00:43:00,350 e está acumulando, empilhado, empilhado. 1050 00:43:00,350 --> 00:43:01,570 E iso vai chocar coa pila. 1051 00:43:01,570 --> 00:43:03,040 Nós imos estar sen memoria. 1052 00:43:03,040 --> 00:43:05,100 Isto vai causar unha problema para o ordenador. 1053 00:43:05,100 --> 00:43:06,770 E iso chámase estourido de pila. 1054 00:43:06,770 --> 00:43:09,728 Entón, iso é sempre algo que debe ser consciente e tentar evitar. 1055 00:43:09,728 --> 00:43:10,228 1056 00:43:10,228 --> 00:43:14,050 E a pila, ten que lembrar para non baleirar accidentalmente memoria. 1057 00:43:14,050 --> 00:43:17,950 Cada vez que usar malloc, non esqueza liberar esa memoria. 1058 00:43:17,950 --> 00:43:20,040 Se non, que vai só estar na pila desperdiçado, 1059 00:43:20,040 --> 00:43:23,230 eo ordenador non vai saber que é libre para usar a memoria. 1060 00:43:23,230 --> 00:43:25,810 Entón, estas son algunhas cousas que ter moito coidado con cando 1061 00:43:25,810 --> 00:43:28,580 está lidando con a pila eo heap. 1062 00:43:28,580 --> 00:43:30,412 Calquera dúbida con isto? 1063 00:43:30,412 --> 00:43:31,304 Impresionante. 1064 00:43:31,304 --> 00:43:31,900 >> OK, legal. 1065 00:43:31,900 --> 00:43:32,940 1066 00:43:32,940 --> 00:43:36,810 Polo tanto, este tipo de ten a mesma idea como estourido de pila, onde 1067 00:43:36,810 --> 00:43:39,850 estamos indo alén da límites do que a memoria 1068 00:43:39,850 --> 00:43:41,960 é que se quere que sexa capaz de usar. 1069 00:43:41,960 --> 00:43:45,077 Entón tome, por exemplo, un buffer, ou podería só pensar nel como un array. 1070 00:43:45,077 --> 00:43:47,660 E nós dixemos, OK, imos crear esta bo abano pouco. 1071 00:43:47,660 --> 00:43:49,140 Vai ser unha cadea. 1072 00:43:49,140 --> 00:43:50,630 Ou que vai almacenar caracteres. 1073 00:43:50,630 --> 00:43:51,720 E está indo só para dicir Ola. 1074 00:43:51,720 --> 00:43:52,678 E é indeterminado. 1075 00:43:52,678 --> 00:43:53,990 É iso aí. 1076 00:43:53,990 --> 00:43:58,240 >> Pero se eu fose alguén mal e quería facer algo de malo con esa matriz, o que 1077 00:43:58,240 --> 00:44:02,310 Podería facer é tentar escribir tras o final da cadea. 1078 00:44:02,310 --> 00:44:04,490 E como vai ver, si Escribo o suficiente, 1079 00:44:04,490 --> 00:44:06,980 Podo realmente afectar a dirección do remitente. 1080 00:44:06,980 --> 00:44:09,530 E se eu comezar a afectar a dirección do remitente, 1081 00:44:09,530 --> 00:44:11,730 Eu afectar o xeito no que o programa é executado. 1082 00:44:11,730 --> 00:44:15,900 E, no canto de volver, ten sabe, unha secuencia feliz como Ola, eu 1083 00:44:15,900 --> 00:44:19,460 podería facer algo malo, como ir ao noutro lugar no seu ordenador, aínda 1084 00:44:19,460 --> 00:44:22,146 memoria, cambia-lo, o que quero facer. 1085 00:44:22,146 --> 00:44:25,020 Entón é iso que este sería parecido é se eu medio que encheu-se 1086 00:44:25,020 --> 00:44:27,400 con valor de lixo aleatorio, neste caso, só un. 1087 00:44:27,400 --> 00:44:30,490 E entón cando realmente chegou ao enderezo de memoria, 1088 00:44:30,490 --> 00:44:33,740 Comece a enche-lo con algo que fixen o que eu quería facer. 1089 00:44:33,740 --> 00:44:34,952 1090 00:44:34,952 --> 00:44:36,410 Calquera dúbida con buffer overflow? 1091 00:44:36,410 --> 00:44:38,450 1092 00:44:38,450 --> 00:44:40,730 Impresionante, non voando a través deste material. 1093 00:44:40,730 --> 00:44:43,530 >> OK, entón nós falamos unha morea de sobre punteiro con Gabe. 1094 00:44:43,530 --> 00:44:45,790 Como podemos realmente obter un punteiro? 1095 00:44:45,790 --> 00:44:48,070 Como podemos obter un enderezo na memoria? 1096 00:44:48,070 --> 00:44:51,040 Ben, podemos utilizar este bo función malloc chamada, que 1097 00:44:51,040 --> 00:44:53,370 está indo a obter un pequeno anaco de memoria, 1098 00:44:53,370 --> 00:44:55,480 especialmente na heap, como discutir, 1099 00:44:55,480 --> 00:44:59,780 e el lle vai dar de volta un Punteiro ao enderezo na memoria. 1100 00:44:59,780 --> 00:45:01,950 E o argumento de que nós ten que dar a malloc 1101 00:45:01,950 --> 00:45:04,280 é a cantidade de espazo na memoria que queremos. 1102 00:45:04,280 --> 00:45:06,100 >> Así pode ver o tamaño en bytes. 1103 00:45:06,100 --> 00:45:08,670 Digamos, por exemplo, ou de feito, neste exemplo, 1104 00:45:08,670 --> 00:45:12,040 alocamos abondo espazo para 10 enteiros. 1105 00:45:12,040 --> 00:45:15,640 Entón, probablemente o que imos querer para poñer aquí é un array de 10 enteiros. 1106 00:45:15,640 --> 00:45:19,641 Entón, nós darlle tamaño enteiros, o que Aprendemos era cantos bytes? 1107 00:45:19,641 --> 00:45:20,140 ESTUDANTE: 4. 1108 00:45:20,140 --> 00:45:22,920 HANNAH 4, bonito, e nós quero 10 destes nunha liña, 1109 00:45:22,920 --> 00:45:28,050 de xeito que temos espazo suficiente para almacenar todos os 10 números enteiros, neste caso. 1110 00:45:28,050 --> 00:45:31,290 Algo super importante, calquera momento que chama malloc, 1111 00:45:31,290 --> 00:45:32,880 ten que comprobar a null. 1112 00:45:32,880 --> 00:45:37,310 Se non comprobar a nulidade, así, malloc se é executado fóra do espazo 1113 00:45:37,310 --> 00:45:40,400 e xa non pode darlle calquera máis memoria, el volverá nulo. 1114 00:45:40,400 --> 00:45:42,060 1115 00:45:42,060 --> 00:45:45,630 Entón, se non verificar, malloc pode devolver nulo. 1116 00:45:45,630 --> 00:45:51,265 E entón, se intentamos desreferenciava un punteiro nulo, 1117 00:45:51,265 --> 00:45:54,960 nós estamos indo a obter un fallo de segmentación, que imos falar agora. 1118 00:45:54,960 --> 00:45:56,150 1119 00:45:56,150 --> 00:45:56,650 Impresionante. 1120 00:45:56,650 --> 00:45:58,300 >> OK, preguntas con malloc? 1121 00:45:58,300 --> 00:46:00,044 1122 00:46:00,044 --> 00:46:00,544 Si? 1123 00:46:00,544 --> 00:46:05,460 >> ALUMNO: Será que a comprobación nulo [Inaudível] non fagas iso no cuestionario? 1124 00:46:05,460 --> 00:46:08,100 >> HANNAH: Por suposto, a pregunta era el matter-- no cuestionario, 1125 00:46:08,100 --> 00:46:10,420 recibirá puntos fóra se non marcar para null? 1126 00:46:10,420 --> 00:46:12,794 Si, vai gañar puntos fóra se non comprobar a nulidade. 1127 00:46:12,794 --> 00:46:16,030 Cada vez que chama malloc, tanto no quiz e as súas Serie de exercicios e na vida real, 1128 00:46:16,030 --> 00:46:17,155 ten que comprobar a null. 1129 00:46:17,155 --> 00:46:18,330 Boa pregunta. 1130 00:46:18,330 --> 00:46:19,689 >> Gabe: E se eu non liberar? 1131 00:46:19,689 --> 00:46:21,730 HANNAH: Gabe quere saber o que se non o facemos libre. 1132 00:46:21,730 --> 00:46:25,030 Entón teremos unha escape de memoria no noso heap. 1133 00:46:25,030 --> 00:46:26,140 Algunha pregunta? 1134 00:46:26,140 --> 00:46:27,550 Si? 1135 00:46:27,550 --> 00:46:30,120 >> ESTUDANTE: Pode pasar por riba de você- buffer overflow rapidamente de novo? 1136 00:46:30,120 --> 00:46:30,530 >> HANNAH: Claro. 1137 00:46:30,530 --> 00:46:33,071 A cuestión era que podemos pasar por riba estourido de buffer realmente rápido. 1138 00:46:33,071 --> 00:46:35,050 Imos volver a eses diapositivas. 1139 00:46:35,050 --> 00:46:37,430 Así, un tapón, pode simplemente pense nisto como unha matriz, non? 1140 00:46:37,430 --> 00:46:39,360 Ten algún espazo na memoria. 1141 00:46:39,360 --> 00:46:43,580 E cando nós primeiro crear a nosa matriz, sabemos matrices teñen tamaño fixo, 1142 00:46:43,580 --> 00:46:45,470 ou o noso tapón ten un tamaño fixo. 1143 00:46:45,470 --> 00:46:51,360 >> Entón, digamos que, neste caso, temos só espazo suficiente para escribir a secuencia Ola. 1144 00:46:51,360 --> 00:46:57,340 Ou tamén pasado que conectado, se somos pasado o que a nosa matriz que dixo que podería realizar, 1145 00:46:57,340 --> 00:46:59,780 poderiamos realmente comezar escrita na memoria 1146 00:46:59,780 --> 00:47:01,780 que o ordenador non fai queren que a xente escribir en. 1147 00:47:01,780 --> 00:47:02,810 1148 00:47:02,810 --> 00:47:05,580 E, especialmente, se se loita algo así como o retorno 1149 00:47:05,580 --> 00:47:08,700 enderezo da función, o que, como calquera outro anaco de memoria, 1150 00:47:08,700 --> 00:47:11,420 é só un lugar na súa ordenador, realmente pode 1151 00:47:11,420 --> 00:47:14,080 cambialo e comezar a facer cousas malas. 1152 00:47:14,080 --> 00:47:15,272 Responder a súa pregunta? 1153 00:47:15,272 --> 00:47:16,230 Incrible, calquera outra cousa? 1154 00:47:16,230 --> 00:47:17,466 Si? 1155 00:47:17,466 --> 00:47:21,948 >> Estudante: Entón pila [inaudível], ten dixo que vai do fondo indo para arriba. 1156 00:47:21,948 --> 00:47:25,434 Dentro da franxa de pila, fai a memoria vai de, como, 1157 00:47:25,434 --> 00:47:27,230 de arriba abaixo pertencente a cada pausa? 1158 00:47:27,230 --> 00:47:28,646 1159 00:47:28,646 --> 00:47:32,100 >> HANNAH: Como você- retrasar a Rob nun presente. 1160 00:47:32,100 --> 00:47:35,370 1161 00:47:35,370 --> 00:47:38,213 >> ROB: El vai crecer na mesma dirección que a pila crece. 1162 00:47:38,213 --> 00:47:38,712 HANNAH: Aceptar. 1163 00:47:38,712 --> 00:47:40,967 ROB: Entón eu fico confuso. 1164 00:47:40,967 --> 00:47:42,331 Esta será a abstracción. 1165 00:47:42,331 --> 00:47:42,831 HANNAH: Aceptar. 1166 00:47:42,831 --> 00:47:44,000 ROB: Isto é correcto. 1167 00:47:44,000 --> 00:47:49,420 Polo tanto, se a pila está crecendo se, a continuación, el generally-- 1168 00:47:49,420 --> 00:47:52,380 Non ten que ser así. pero pode declarar int x. 1169 00:47:52,380 --> 00:47:54,120 Entón declarar int y. 1170 00:47:54,120 --> 00:47:57,300 Logo, int x será xeralmente inferior na pila do que int y. 1171 00:47:57,300 --> 00:47:59,300 Pero isto é só un feito. 1172 00:47:59,300 --> 00:48:02,410 Isto non é como unha cousa importante semente. 1173 00:48:02,410 --> 00:48:06,800 >> ROB: Entón a pregunta de novo foi só o que pasa cada cadro se acumula. 1174 00:48:06,800 --> 00:48:08,960 Así, cada función recibe un anaquiño da pila. 1175 00:48:08,960 --> 00:48:13,030 E como ir cara arriba, dentro dese anaquiño, dentro dese marco, 1176 00:48:13,030 --> 00:48:16,710 imos dicir que as variables dentro desta estrutura de mover-se tamén. 1177 00:48:16,710 --> 00:48:17,473 Pregunta? 1178 00:48:17,473 --> 00:48:18,688 >> ROB: Só estar no micrófono. 1179 00:48:18,688 --> 00:48:19,396 HANNAH: Ah, si. 1180 00:48:19,396 --> 00:48:20,440 ROB: Eu vou falar para ti. 1181 00:48:20,440 --> 00:48:21,410 HANNAH: Ah, si, Aceptar. 1182 00:48:21,410 --> 00:48:24,150 ROB: A excepción é para matrices e estruturas, 1183 00:48:24,150 --> 00:48:27,470 onde as matrices, un menor índice na matriz, 1184 00:48:27,470 --> 00:48:29,930 e en estruturas con maior campo nas estruturas 1185 00:48:29,930 --> 00:48:35,040 son garantir a ser en enderezos máis baixos que un valor máis tarde na matriz. 1186 00:48:35,040 --> 00:48:36,720 Polo tanto, aqueles son garantir. 1187 00:48:36,720 --> 00:48:40,310 Pero todas as variables específicas dentro, como int x e y int dentro dunha función, 1188 00:48:40,310 --> 00:48:43,030 non hai ningunha relación necesaria entre os enderezos. 1189 00:48:43,030 --> 00:48:44,882 1190 00:48:44,882 --> 00:48:46,340 HANNAH: Outra cuestión aquí? 1191 00:48:46,340 --> 00:48:51,620 Estudante: Entón, en tapón fluxo, só estourido de buffer 1192 00:48:51,620 --> 00:48:54,980 só aconteceu cando ter, como, atribuído 1193 00:48:54,980 --> 00:49:01,056 unha cantidade dunha matriz logo é maior que? 1194 00:49:01,056 --> 00:49:03,230 Como, pode? 1195 00:49:03,230 --> 00:49:05,435 Entón, se está pedindo algo do user-- 1196 00:49:05,435 --> 00:49:06,018 >> HANNAH: Mm-hm. 1197 00:49:06,018 --> 00:49:08,600 Estudante: Poden eles forzosamente darlle algo de volta 1198 00:49:08,600 --> 00:49:11,777 que é maior que calquera cousa xa alocada para eles? 1199 00:49:11,777 --> 00:49:13,610 HANNAH: Por suposto, así que o cuestión era basicamente 1200 00:49:13,610 --> 00:49:16,217 o usuario pode darlle máis do que pedir? 1201 00:49:16,217 --> 00:49:16,800 Estudante: Si. 1202 00:49:16,800 --> 00:49:18,480 HANNAH: Ben, pode previr o usuario de facelo. 1203 00:49:18,480 --> 00:49:21,350 Podería dicir especificamente non facer me dar máis do que x número de bytes 1204 00:49:21,350 --> 00:49:24,330 Eu só lle dei espazo para un número x de bytes, x número de caracteres. 1205 00:49:24,330 --> 00:49:25,700 Entón, iso é algo que quere evitar. 1206 00:49:25,700 --> 00:49:26,199 Si? 1207 00:49:26,199 --> 00:49:30,270 ¿Que é a diferenza entre estourido de pila e estourido de buffer? 1208 00:49:30,270 --> 00:49:32,140 >> HANNAH: OK, entón a pila overflow-- oh, o que 1209 00:49:32,140 --> 00:49:34,790 é a diferenza entre a pila estourido e estourido de buffer? 1210 00:49:34,790 --> 00:49:37,581 Por iso, queremos pensar de estourido de pila pasando cando estamos realmente 1211 00:49:37,581 --> 00:49:39,530 empilhado estas chamadas de función. 1212 00:49:39,530 --> 00:49:42,991 Imos dicir que ten unha función recursiva, porque sabemos que cada vez que 1213 00:49:42,991 --> 00:49:45,240 chamar unha función, que é fica seu propio cadro na pila. 1214 00:49:45,240 --> 00:49:47,950 >> Entón, nós apilar moi alto, e entón comezamos a rebosar. 1215 00:49:47,950 --> 00:49:50,530 E usamos moita memoria, e non teñen calquera lugar esquerda. 1216 00:49:50,530 --> 00:49:51,590 Recibimos este erro. 1217 00:49:51,590 --> 00:49:53,930 >> Buffer overflow é dentro dun programa. 1218 00:49:53,930 --> 00:49:57,180 Queremos non pode necesariamente falta de memoria do mesmo xeito 1219 00:49:57,180 --> 00:50:00,080 que pode se estamos empilhado se tantas chamadas de función, 1220 00:50:00,080 --> 00:50:04,540 pero escribimos pasado a memoria que sabemos que podemos usar. 1221 00:50:04,540 --> 00:50:06,170 E iso nos permite facer cousas malas. 1222 00:50:06,170 --> 00:50:08,060 1223 00:50:08,060 --> 00:50:08,560 Si? 1224 00:50:08,560 --> 00:50:10,950 >> ROB: Si, pode querer só para repetir iso, 1225 00:50:10,950 --> 00:50:12,699 pero tamén pode pensar dun estourido de pila 1226 00:50:12,699 --> 00:50:15,374 canto como un tipo específico de buffer overflow. 1227 00:50:15,374 --> 00:50:17,665 Ou só pensar no seu apilar como realmente un gran buffer. 1228 00:50:17,665 --> 00:50:20,724 Entón, cando rebosar ti empilhar, é como unha especie de buffer overflow. 1229 00:50:20,724 --> 00:50:23,390 Pero un estourido de pila é só un termo específico utilizado cando a pila 1230 00:50:23,390 --> 00:50:24,310 si reborda. 1231 00:50:24,310 --> 00:50:27,500 >> HANNAH: Certo, entón a repetir para o vídeo, 1232 00:50:27,500 --> 00:50:31,756 que pode pensar de estourido de pila como un tipo específico de buffer overflow. 1233 00:50:31,756 --> 00:50:33,040 Legal? 1234 00:50:33,040 --> 00:50:34,562 Máis algunha pregunta antes de irmos? 1235 00:50:34,562 --> 00:50:35,380 1236 00:50:35,380 --> 00:50:35,880 Impresionante. 1237 00:50:35,880 --> 00:50:37,130 1238 00:50:37,130 --> 00:50:39,727 >> OK, legal, entón imos falar algunhas mensaxes de erro comúns. 1239 00:50:39,727 --> 00:50:42,060 Isto é algo que ten apareceu en varios cuestionarios, 1240 00:50:42,060 --> 00:50:44,740 así que algo que paga a pena tomar unha segunda ollada. 1241 00:50:44,740 --> 00:50:46,860 Estou seguro de que atopou polo menos algúns deles 1242 00:50:46,860 --> 00:50:48,690 como está facendo o seu problema se pon. 1243 00:50:48,690 --> 00:50:50,980 Entón asegúrese de que pode falar sobre eles no quiz. 1244 00:50:50,980 --> 00:50:52,990 >> Así, o primeiro é un fallo de segmentación. 1245 00:50:52,990 --> 00:50:55,250 E iso é en calquera momento que tentan acceder a memoria 1246 00:50:55,250 --> 00:50:57,130 que non está autorizado a acceder. 1247 00:50:57,130 --> 00:51:00,280 Entón migh ver iso, por exemplo, na fuga. 1248 00:51:00,280 --> 00:51:03,390 Se detectar colisión volver nulo, e entón 1249 00:51:03,390 --> 00:51:05,500 tente facer algo que o valor nulo, 1250 00:51:05,500 --> 00:51:08,147 o ordenador daría un fallo de segmentación. 1251 00:51:08,147 --> 00:51:10,730 Entón, un, unha cousa importante a facer, a fin de tratar de evitar esta 1252 00:51:10,730 --> 00:51:12,000 é sempre comprobar a null. 1253 00:51:12,000 --> 00:51:13,300 1254 00:51:13,300 --> 00:51:16,180 >> Tamén pode ver declaración implícita da función. 1255 00:51:16,180 --> 00:51:18,370 Entón, iso é o que pasa cando Allison mostre 1256 00:51:18,370 --> 00:51:20,150 como podemos facer un prototipo, non? 1257 00:51:20,150 --> 00:51:23,440 Entón, imos dicir que temos algúns función que definimos. 1258 00:51:23,440 --> 00:51:24,440 Digamos cubo. 1259 00:51:24,440 --> 00:51:27,120 E que vai na parte inferior da nosa función, baixo principal. 1260 00:51:27,120 --> 00:51:35,205 >> Se esquecemos de dicir ao ordenador sobre cubo, cando principal intenta chamar cubo, 1261 00:51:35,205 --> 00:51:36,830 o ordenador será, como, oh meu Deus. 1262 00:51:36,830 --> 00:51:38,300 Eu non teño idea o que iso significa. 1263 00:51:38,300 --> 00:51:39,760 Non sei o que facer, aquí. 1264 00:51:39,760 --> 00:51:41,594 Así, o prototipo di non se preocupe. 1265 00:51:41,594 --> 00:51:42,510 Eu vou dicir a vostede. 1266 00:51:42,510 --> 00:51:43,132 >> Vai vir. 1267 00:51:43,132 --> 00:51:43,840 Non grite comigo. 1268 00:51:43,840 --> 00:51:46,697 Non me dea un implícito declaración de función. 1269 00:51:46,697 --> 00:51:49,280 Polo tanto, se recibe este erro, unha cousa que vai querer facer 1270 00:51:49,280 --> 00:51:50,821 é estar seguro de que o seu prototipo. 1271 00:51:50,821 --> 00:51:52,320 1272 00:51:52,320 --> 00:51:53,230 Ok? 1273 00:51:53,230 --> 00:51:55,680 >> E por último pero non menos importante, identificador non declarado 1274 00:51:55,680 --> 00:52:00,570 é, esencialmente, cando se trata de usar un variable que non declarou. 1275 00:52:00,570 --> 00:52:03,449 Entón, de súpeto, comeza dicindo como n plus plus. 1276 00:52:03,449 --> 00:52:04,740 E o ordenador di que é n? 1277 00:52:04,740 --> 00:52:06,660 Nunca me dixo n era unha cousa. 1278 00:52:06,660 --> 00:52:10,930 >> Entón, unha cousa que ten que ter seguro que fixo é dicir ao ordenador o que n é. 1279 00:52:10,930 --> 00:52:13,320 Así, por exemplo, n pode ser un número enteiro. 1280 00:52:13,320 --> 00:52:14,999 E entón vai evitar este erro. 1281 00:52:14,999 --> 00:52:16,290 Calquera dúbida sobre os erros máis comúns? 1282 00:52:16,290 --> 00:52:17,260 Si? 1283 00:52:17,260 --> 00:52:19,344 >> ALUMNO: Para o implícito declaración de función, 1284 00:52:19,344 --> 00:52:22,343 pode ser tamén que omitiu un das bibliotecas que debería 1285 00:52:22,343 --> 00:52:24,400 co fin de incluír, no canto de o prototipo? 1286 00:52:24,400 --> 00:52:26,359 >> HANNAH: Certo, entón o cuestión era, podería 1287 00:52:26,359 --> 00:52:28,650 tamén recibir este erro se esqueceuse de incluír unha biblioteca. 1288 00:52:28,650 --> 00:52:29,085 >> Estudante: Si. 1289 00:52:29,085 --> 00:52:30,876 >> HANNAH: Absolutamente, pois do mesmo xeito 1290 00:52:30,876 --> 00:52:33,540 que queremos poñer os nosos prototipos antes a función principal, 1291 00:52:33,540 --> 00:52:37,717 se temos unha biblioteca, aqueles van para incluír esencialmente os prototipos, 1292 00:52:37,717 --> 00:52:39,425 inclúen os axustes das funcións. 1293 00:52:39,425 --> 00:52:40,585 Excelente pregunta. 1294 00:52:40,585 --> 00:52:43,230 >> ALUMNO: Para unha segmentación fallo, tería que tamén 1295 00:52:43,230 --> 00:52:47,350 deberse nós, como, tratou para acceder a unha variable, 1296 00:52:47,350 --> 00:52:51,947 como, dun xeito diferente [inaudível] do que foi declarado en? 1297 00:52:51,947 --> 00:52:54,030 HANNAH: Por suposto, iso sería nós obter un fallo de segmentación 1298 00:52:54,030 --> 00:52:56,270 se intentamos acceder a un variable fóra do alcance? 1299 00:52:56,270 --> 00:52:57,104 Isto foi unha pregunta? 1300 00:52:57,104 --> 00:52:57,645 Estudante: Si. 1301 00:52:57,645 --> 00:52:58,430 HANNAH: Beautiful. 1302 00:52:58,430 --> 00:53:01,840 Entón, probablemente, está indo para obter un erro identificador non declarado no seu lugar. 1303 00:53:01,840 --> 00:53:04,006 El só vai dicir Non sei o que é. 1304 00:53:04,006 --> 00:53:04,920 1305 00:53:04,920 --> 00:53:05,920 Cool, calquera outra cousa? 1306 00:53:05,920 --> 00:53:07,744 1307 00:53:07,744 --> 00:53:08,980 Si, vale, bonito. 1308 00:53:08,980 --> 00:53:10,330 1309 00:53:10,330 --> 00:53:12,400 >> Todos destro, entón recursão. 1310 00:53:12,400 --> 00:53:15,160 Entón, eu mencionen algunhas veces para que puidésemos obter un estourido de pila 1311 00:53:15,160 --> 00:53:17,919 porque estamos chamando a nosa función recursiva tantas veces. 1312 00:53:17,919 --> 00:53:20,210 Estamos recibindo todos estes pila marcos, blah, blah, blah. 1313 00:53:20,210 --> 00:53:22,420 O que aínda é unha función recursiva? 1314 00:53:22,420 --> 00:53:25,680 Ben, unha función recursiva é calquera función que chama a si mesmo. 1315 00:53:25,680 --> 00:53:26,820 1316 00:53:26,820 --> 00:53:30,160 >> Algunhas cousas para estar en conta cando están implementando función recursiva, 1317 00:53:30,160 --> 00:53:31,940 non se esqueza de incluír un caso base. 1318 00:53:31,940 --> 00:53:34,010 Un caso base é a punto no que nos terminais. 1319 00:53:34,010 --> 00:53:38,740 Así, por exemplo, se estamos a codificación, , Dicir, Fibonacci de forma recursiva, 1320 00:53:38,740 --> 00:53:43,210 queremos estar seguro de que cando chegamos ao ou o primeiro número de Fibonacci 0, 1321 00:53:43,210 --> 00:53:46,220 estes dous números ten estes casos, porque estes non son dependentes 1322 00:53:46,220 --> 00:53:47,700 sobre as cousas que viñeron antes. 1323 00:53:47,700 --> 00:53:48,990 Aqueles teñen os seus propios valores. 1324 00:53:48,990 --> 00:53:51,270 1325 00:53:51,270 --> 00:53:55,320 >> Algúns profesionais a recursividade, que é un cuestión que xa vimos en probas anteriores. 1326 00:53:55,320 --> 00:53:57,930 Elas poden levar a máis conciso código, elegante. 1327 00:53:57,930 --> 00:54:00,510 E unha morea de funcións, unha morea de diferentes algoritmos, 1328 00:54:00,510 --> 00:54:02,350 realmente se prestan a recursividade. 1329 00:54:02,350 --> 00:54:05,510 A súa definición pode ser recursiva en si. 1330 00:54:05,510 --> 00:54:06,980 Entón Fibonacci é unha delas. 1331 00:54:06,980 --> 00:54:07,860 Factorial é unha delas. 1332 00:54:07,860 --> 00:54:10,480 Merge sort é um-- todo cousas que podes ollar. 1333 00:54:10,480 --> 00:54:12,650 1334 00:54:12,650 --> 00:54:13,460 OK, todas as preguntas? 1335 00:54:13,460 --> 00:54:13,960 Si? 1336 00:54:13,960 --> 00:54:15,644 1337 00:54:15,644 --> 00:54:19,612 >> ALUMNO: É un caso de canto semellante a un caso de base? 1338 00:54:19,612 --> 00:54:22,590 Ou será que, por algún outro tipo de [inaudível]? 1339 00:54:22,590 --> 00:54:25,170 >> HANNAH: Por suposto, así que un caso canto é tan any-- 1340 00:54:25,170 --> 00:54:27,580 é caso canto o mesmo que no caso de base? 1341 00:54:27,580 --> 00:54:32,825 Un caso canto é algo que o seu código pode comportarse un pouco diferente. 1342 00:54:32,825 --> 00:54:34,450 1343 00:54:34,450 --> 00:54:38,610 Se base é unha especie de relación, nos que son como casos particulares 1344 00:54:38,610 --> 00:54:40,240 que quere ollar. 1345 00:54:40,240 --> 00:54:43,240 Pero a idea dun caso base é que quere que a súa función recursiva 1346 00:54:43,240 --> 00:54:44,870 para deixar en algún momento. 1347 00:54:44,870 --> 00:54:46,490 El non pode continuar chamando-se para sempre. 1348 00:54:46,490 --> 00:54:47,781 El que deixar nalgún momento. 1349 00:54:47,781 --> 00:54:49,340 1350 00:54:49,340 --> 00:54:53,460 >> ROB: Si, a miúdo, os seus casos base pode ser exemplos de bases de canto. 1351 00:54:53,460 --> 00:54:55,876 >> HANNAH: Correcto, legal, algo? 1352 00:54:55,876 --> 00:54:58,732 >> ALUMNO: Podería explicar baséase algo máis? 1353 00:54:58,732 --> 00:55:01,600 Non entendo moi ben [Inaudível] casos base. 1354 00:55:01,600 --> 00:55:02,676 >> HANNAH: Dos casos base? 1355 00:55:02,676 --> 00:55:03,140 >> ALUMNO: casos de Base, si. 1356 00:55:03,140 --> 00:55:03,770 >> HANNAH: Ah si, con certeza. 1357 00:55:03,770 --> 00:55:04,270 Imos ver. 1358 00:55:04,270 --> 00:55:05,480 Non temos giz por aquí? 1359 00:55:05,480 --> 00:55:06,690 1360 00:55:06,690 --> 00:55:07,320 Si, nós facemos. 1361 00:55:07,320 --> 00:55:09,530 OK, entón moi rapidamente, eu vou intento escribir o suficientemente 1362 00:55:09,530 --> 00:55:11,320 así podes ver na pantalla. 1363 00:55:11,320 --> 00:55:13,490 Imos falar, realmente rapidamente, de Fibonacci. 1364 00:55:13,490 --> 00:55:15,550 Entón, eu vou dar-lle a secuencia de Fibonacci. 1365 00:55:15,550 --> 00:55:17,090 Pode buscar a definición. 1366 00:55:17,090 --> 00:55:26,050 >> Esencialmente, cada número na secuencia é a suma dos dous números anteriores. 1367 00:55:26,050 --> 00:55:29,720 OK, entón o camiño que eu acabamos de describir Fibonacci, 1368 00:55:29,720 --> 00:55:31,530 podería escoitar a recursividade, non? 1369 00:55:31,530 --> 00:55:35,280 Cando eu dixen que cada número é a suma dos dous números anteriores, 1370 00:55:35,280 --> 00:55:36,420 poderiamos dicir Aceptar. 1371 00:55:36,420 --> 00:55:38,570 Ben, o Fibonacci enésima number-- entón imos 1372 00:55:38,570 --> 00:55:42,260 dicir que temos esta función chamado FIB fib-- de n 1373 00:55:42,260 --> 00:55:48,260 será igual a FIB de n menos 1 plus-- Sentímolo, 1374 00:55:48,260 --> 00:55:51,240 imos pasar á seguinte liña sobre lorota aqui-- de n menos 2. 1375 00:55:51,240 --> 00:55:52,790 1376 00:55:52,790 --> 00:55:56,790 >> OK, entón iso funciona moi ben se está mirando para, por exemplo, a cero, un, 1377 00:55:56,790 --> 00:55:59,410 dous, tres, catro, número quinta Fibonacci, 1378 00:55:59,410 --> 00:56:03,561 onde pode dicir que 5 é igual a 2 + 3. 1379 00:56:03,561 --> 00:56:05,060 Pero e se está no inicio? 1380 00:56:05,060 --> 00:56:07,184 E se está só acertando estes dous primeiros valores? 1381 00:56:07,184 --> 00:56:08,470 1382 00:56:08,470 --> 00:56:11,330 >> Para obter este 1, non se pode dicir engadir os dous anteriores, 1383 00:56:11,330 --> 00:56:13,930 porque que o cero correo eu non sei. 1384 00:56:13,930 --> 00:56:15,390 Entón, nalgún momento, precisamos parar. 1385 00:56:15,390 --> 00:56:21,250 Nalgún momento, necesitamos dicir que estes dous só teñen as súas propias definicións. 1386 00:56:21,250 --> 00:56:23,890 O número 0 Fibonacci é 0. 1387 00:56:23,890 --> 00:56:26,115 E o primeiro número de Fibonacci é 1. 1388 00:56:26,115 --> 00:56:34,120 >> Así, a forma que eu podería codificar tanto, eu diría se n é inferior a dous, 1389 00:56:34,120 --> 00:56:35,130 despois é só volver n. 1390 00:56:35,130 --> 00:56:36,494 E iso sería o meu caso base. 1391 00:56:36,494 --> 00:56:38,660 É así que eu sei que deixar cunha función recursiva. 1392 00:56:38,660 --> 00:56:40,640 1393 00:56:40,640 --> 00:56:41,410 Está claro? 1394 00:56:41,410 --> 00:56:41,940 Impresionante. 1395 00:56:41,940 --> 00:56:43,260 Algo sobre recursão? 1396 00:56:43,260 --> 00:56:44,890 1397 00:56:44,890 --> 00:56:45,930 Linda. 1398 00:56:45,930 --> 00:56:48,750 >> Imos axiña falar investigación e os tempos especie executados. 1399 00:56:48,750 --> 00:56:52,660 E entón eu vou dar algúns Davin tempo para falar de exemplos de codificación. 1400 00:56:52,660 --> 00:56:56,490 Entón, aquí están a procura principal e tipo que debes saber sobre. 1401 00:56:56,490 --> 00:56:59,500 Guarantee-- eu non podo asegurar, porque eu non vin o quiz-- 1402 00:56:59,500 --> 00:57:01,940 pero iso vén se cuestionario tras proba tras deixar de fumar. 1403 00:57:01,940 --> 00:57:04,050 Entón, en definitiva usar este gráfico. 1404 00:57:04,050 --> 00:57:05,682 Tipo, este gráfico. 1405 00:57:05,682 --> 00:57:06,890 Pon-o na súa folla de fraude. 1406 00:57:06,890 --> 00:57:07,931 Vai ser unha persoa feliz. 1407 00:57:07,931 --> 00:57:09,010 1408 00:57:09,010 --> 00:57:12,590 >> Isto dinos os tempos de execución de cada destes algoritmos de ordenación e busca. 1409 00:57:12,590 --> 00:57:14,020 1410 00:57:14,020 --> 00:57:18,850 Así, procura lineal, verás run tempo, e mesmo coa procura binaria. 1411 00:57:18,850 --> 00:57:21,490 Ir sobre o que estes algoritmos facer, a idea xeral. 1412 00:57:21,490 --> 00:57:24,220 Véxanse algúns pseudocódigo, se non o propio código. 1413 00:57:24,220 --> 00:57:25,610 1414 00:57:25,610 --> 00:57:30,380 >> Vai ver que ten unha especie de burbulla superior ligado no peor caso de n ao cadrado. 1415 00:57:30,380 --> 00:57:31,490 1416 00:57:31,490 --> 00:57:34,680 Entón, se a nosa gama foi completamente atrás antes de que quería para clasificalo, 1417 00:57:34,680 --> 00:57:37,090 diriamos que iso é vai tomar medidas n ao cadrado. 1418 00:57:37,090 --> 00:57:38,160 1419 00:57:38,160 --> 00:57:41,730 Pero, no mellor caso, de xeito que o límite inferior para o mellor caso 1420 00:57:41,730 --> 00:57:44,300 será se é xa perfectamente ordenados. 1421 00:57:44,300 --> 00:57:46,671 Entón todo o que temos que facer é comproba que está clasificada. 1422 00:57:46,671 --> 00:57:47,921 Existe unha pregunta aquí? 1423 00:57:47,921 --> 00:57:49,805 >> ALUMNO: Cando faría quere usar tipo? 1424 00:57:49,805 --> 00:57:50,747 A especie. 1425 00:57:50,747 --> 00:57:52,160 Estou só curioso. 1426 00:57:52,160 --> 00:57:53,510 >> HANNAH: Cando desexa utilizar a selección tipo? 1427 00:57:53,510 --> 00:57:54,010 Isto un? 1428 00:57:54,010 --> 00:57:55,705 A que está n ao cadrado en ambos casos? 1429 00:57:55,705 --> 00:57:56,860 >> Estudante: [inaudível]. 1430 00:57:56,860 --> 00:57:58,151 >> HANNAH: Entón, é moi diferente. 1431 00:57:58,151 --> 00:58:00,760 Se ten específico requisitos para o seu programa, 1432 00:58:00,760 --> 00:58:04,887 como cousas como se nós só dixo implantar un sorry-- search-- 1433 00:58:04,887 --> 00:58:06,720 aplicar un tipo, vai probablemente vai querer ir 1434 00:58:06,720 --> 00:58:09,950 a un dos que ten un mellor caso de n, 1435 00:58:09,950 --> 00:58:12,410 ou un límite inferior no mellor caso n. 1436 00:58:12,410 --> 00:58:14,790 Pero pode haber certas cousas, como, por exemplo, 1437 00:58:14,790 --> 00:58:16,767 swaps son realmente caros, por algunha razón. 1438 00:58:16,767 --> 00:58:18,850 Entón desexa facer bubble sort, porque 1439 00:58:18,850 --> 00:58:20,641 Ten que facer tantos swaps, cousas así. 1440 00:58:20,641 --> 00:58:21,710 1441 00:58:21,710 --> 00:58:23,098 Calquera si outro--? 1442 00:58:23,098 --> 00:58:25,488 >> ESTUDANTE: Sería [inaudível] dicir que [inaudível]? 1443 00:58:25,488 --> 00:58:30,077 1444 00:58:30,077 --> 00:58:31,910 HANNAH: Iso é unha cousa que ía dicirlle 1445 00:58:31,910 --> 00:58:33,670 se está mirando para a súa implementación. 1446 00:58:33,670 --> 00:58:35,850 O xeito que eu sería realmente pensar por que é n 1447 00:58:35,850 --> 00:58:40,840 cadrado é que debemos correr a través da nosa matriz de lonxitude n, 1448 00:58:40,840 --> 00:58:42,765 cada vez facendo como máximo, n swaps. 1449 00:58:42,765 --> 00:58:43,980 1450 00:58:43,980 --> 00:58:46,220 E nós temos que facer este proceso n veces. 1451 00:58:46,220 --> 00:58:51,130 >> Entón, cando ten que facer, como máximo, n swaps e para n atravesa a matriz, 1452 00:58:51,130 --> 00:58:52,380 alí será n ao cadrado. 1453 00:58:52,380 --> 00:58:55,480 Pero si, iso será revelado a través deste dobre para loop, 1454 00:58:55,480 --> 00:58:59,428 como a cuestión asked-- ou nested bucle for, debo dicir. 1455 00:58:59,428 --> 00:59:00,890 Ok? 1456 00:59:00,890 --> 00:59:03,375 >> E, a continuación, merge sort, que é o tipo máis rápido agora, 1457 00:59:03,375 --> 00:59:07,560 ou que nós Cubrimos en CS50, sabe que o algoritmo principal é 1458 00:59:07,560 --> 00:59:10,150 esta idea de invadir anacos separados e, a continuación, 1459 00:59:10,150 --> 00:59:11,980 unindo estes bits ordenados. 1460 00:59:11,980 --> 00:59:14,170 E nos log n log n. 1461 00:59:14,170 --> 00:59:17,110 Calquera dúbida sobre investigacións e tipo antes de pasalo? 1462 00:59:17,110 --> 00:59:19,840 1463 00:59:19,840 --> 00:59:21,040 Imos ver. 1464 00:59:21,040 --> 00:59:21,800 >> Oh, listas ligadas. 1465 00:59:21,800 --> 00:59:23,210 Sentímolo, teño máis dun tema. 1466 00:59:23,210 --> 00:59:25,000 OK, impresionante, listas ligadas. 1467 00:59:25,000 --> 00:59:27,900 Problema coas matrices, eles teñen un tamaño fixo. 1468 00:59:27,900 --> 00:59:30,634 Entón, se non sabe como é grande súa entrada será, 1469 00:59:30,634 --> 00:59:32,050 non quere crear unha matriz. 1470 00:59:32,050 --> 00:59:34,080 Porque se creamos un matriz que é demasiado pequeno, 1471 00:59:34,080 --> 00:59:35,930 que pode executar en buffer overflow. 1472 00:59:35,930 --> 00:59:38,890 >> Entón, en vez diso, poderíamos facer algo con listas ligadas, que 1473 00:59:38,890 --> 00:59:44,280 permítenos ter unha dinámica estrutura de datos de tamaño 1474 00:59:44,280 --> 00:59:48,970 que nos permitirá almacenar unha cantidade de datos máis flexible. 1475 00:59:48,970 --> 00:59:54,030 Así, dentro de cada nodo na nosa lista ligada, temos dúas pezas. 1476 00:59:54,030 --> 00:59:56,820 Temos o valor real que almacena. 1477 00:59:56,820 --> 00:59:59,530 Entón, iso é só a cousa que faría ver na matriz, por exemplo. 1478 00:59:59,530 --> 01:00:04,600 E entón nós tamén manter o control dun punteiro para a seguinte cousa na memoria. 1479 01:00:04,600 --> 01:00:06,430 >> A diferenza de matrices, as cales sabemos que están todos indo 1480 01:00:06,430 --> 01:00:10,890 para ser-- elementos da matriz son todos un despois do outro en memory-- conectado 1481 01:00:10,890 --> 01:00:13,300 listas podería estar en calquera lugar da memoria. 1482 01:00:13,300 --> 01:00:14,590 Son lugares arbitrarios. 1483 01:00:14,590 --> 01:00:16,410 Entón, se fósemos realmente ir atopalos, nós 1484 01:00:16,410 --> 01:00:19,770 Debe manter o control do seguinte cousa na nosa lista. 1485 01:00:19,770 --> 01:00:22,840 >> E, a continuación, a fin de saber onde esta lista como un todo é, 1486 01:00:22,840 --> 01:00:26,276 todos temos que seguir é o primeiro elemento na nosa lista ligada. 1487 01:00:26,276 --> 01:00:27,900 E iso vai permitir seguir adiante. 1488 01:00:27,900 --> 01:00:31,020 1489 01:00:31,020 --> 01:00:33,070 >> Entón é así que pode definir un modo. 1490 01:00:33,070 --> 01:00:36,160 Esta é unha grande oportunidade para sacar proveito de estruturas. 1491 01:00:36,160 --> 01:00:39,660 Porque ten esa idea, ben, para un determinado nodo, teño dúas pezas. 1492 01:00:39,660 --> 01:00:41,770 Eu teño o valor real en si. 1493 01:00:41,770 --> 01:00:45,610 E entón eu teño un punteiro para a seguinte elemento da lista ligada. 1494 01:00:45,610 --> 01:00:49,150 Entón ve, temos un enteiro n, que será o valor real, 1495 01:00:49,150 --> 01:00:53,150 e logo, un punteiro para un nó, chamado próxima. 1496 01:00:53,150 --> 01:00:56,431 Así que vai ser o seguinte elemento na nosa lista ligada. 1497 01:00:56,431 --> 01:00:56,972 Estudante: Si? 1498 01:00:56,972 --> 01:01:01,920 Ten que especificar que a estrela é como un struct? 1499 01:01:01,920 --> 01:01:05,620 >> HANNAH: Si, así que unha vez que este É case como unha especie de, 1500 01:01:05,620 --> 01:01:07,980 parece unha recursiva en que definición 1501 01:01:07,980 --> 01:01:12,080 Debe saber o que un nó é dentro para atopar un nó. 1502 01:01:12,080 --> 01:01:14,450 Xa que non ten realmente sabe o que un nó é completamente 1503 01:01:14,450 --> 01:01:17,283 ata chegar ao final do isto-- e tras iso, podemos chamalo só 1504 01:01:17,283 --> 01:01:21,935 un node-- dentro desta definición, necesitamos chamalo dun nodo struct. 1505 01:01:21,935 --> 01:01:22,560 Excelente pregunta. 1506 01:01:22,560 --> 01:01:23,580 1507 01:01:23,580 --> 01:01:25,214 Algo máis? 1508 01:01:25,214 --> 01:01:26,198 Si? 1509 01:01:26,198 --> 01:01:29,150 >> ALUMNO: Por que nós ten que dicir nodo dúas veces? 1510 01:01:29,150 --> 01:01:33,578 Porque, cando estabamos na [inaudível] nós só tivemos que facelo en punto e coma, 1511 01:01:33,578 --> 01:01:37,352 pero agora temos que descubrir que nó struct? [Inaudível]. 1512 01:01:37,352 --> 01:01:39,060 HANNAH: Entón, eu creo no último exemplo, 1513 01:01:39,060 --> 01:01:42,110 estabamos só creando calquera momento quería usar un estudante despois diso, vostede 1514 01:01:42,110 --> 01:01:46,430 tiven que usar struct node-- Estou sorry-- estudante struct. 1515 01:01:46,430 --> 01:01:51,575 Isto nos permitiu, despois do feito, só nó uso engadir un novo tipo, esencialmente. 1516 01:01:51,575 --> 01:01:53,324 1517 01:01:53,324 --> 01:01:53,990 Isto ten sentido? 1518 01:01:53,990 --> 01:01:54,984 1519 01:01:54,984 --> 01:01:57,150 Entón nós teriamos que volver e mirar o código antes. 1520 01:01:57,150 --> 01:01:59,025 Pero eu creo que nós non utilizamos typedef. 1521 01:01:59,025 --> 01:02:02,050 E a pregunta, Por que necesitamos utilizar typedef? 1522 01:02:02,050 --> 01:02:05,540 Typedef permítenos evitar a struct palabra ao principio. 1523 01:02:05,540 --> 01:02:06,221 Si? 1524 01:02:06,221 --> 01:02:08,095 ALUMNO: Que tipo de preguntas viría 1525 01:02:08,095 --> 01:02:10,400 en termos en canto a nós e listas ligadas? 1526 01:02:10,400 --> 01:02:15,110 >> HANNAH: Entón, unha cousa é, poderiamos dicir como quizais lle buscar unha lista ligada? 1527 01:02:15,110 --> 01:02:16,930 OK, porque é un pouco máis complicado 1528 01:02:16,930 --> 01:02:18,520 do que se está buscando a través dunha matriz. 1529 01:02:18,520 --> 01:02:21,472 Podemos só ollar elemento cero, elemento un, dous elemento, bla, bla, 1530 01:02:21,472 --> 01:02:21,972 bla. 1531 01:02:21,972 --> 01:02:22,629 1532 01:02:22,629 --> 01:02:24,420 Se queremos buscar a través dunha lista ligada, 1533 01:02:24,420 --> 01:02:27,229 nós realmente temos que seguir este pequeno labirinto de punteiros. 1534 01:02:27,229 --> 01:02:29,270 Entón, imos realmente ir por iso moi rapidamente. 1535 01:02:29,270 --> 01:02:30,460 1536 01:02:30,460 --> 01:02:32,860 Que poderiamos facer en ordenar a-- imos dicir que 1537 01:02:32,860 --> 01:02:35,430 quero só iterado nosa lista enteiramente conectados. 1538 01:02:35,430 --> 01:02:37,450 Queremos comezar na cabeza. 1539 01:02:37,450 --> 01:02:39,890 E, a continuación, a fin de pasar ao seguinte elemento, 1540 01:02:39,890 --> 01:02:43,680 no canto de só incrementando por un como se pode en pasar por unha matriz, 1541 01:02:43,680 --> 01:02:45,720 nós estamos indo realmente para siga o seguinte punteiro, 1542 01:02:45,720 --> 01:02:48,360 para que poidamos atopar onde en memoria ao seguinte elemento é. 1543 01:02:48,360 --> 01:02:49,357 1544 01:02:49,357 --> 01:02:51,690 Entón, sei que non é suficiente para levar todo isto en agora, 1545 01:02:51,690 --> 01:02:52,650 pero vai ter eses diapositivas. 1546 01:02:52,650 --> 01:02:54,730 Así, pode pasar por este un pouco máis lentamente. 1547 01:02:54,730 --> 01:02:56,890 Pero, esencialmente, o que queremos que facer é seguir estes punteiros 1548 01:02:56,890 --> 01:02:58,550 a través da totalidade da lista encadeada. 1549 01:02:58,550 --> 01:03:00,258 Polo tanto, esta é unha cuestión pode ser solicitado. 1550 01:03:00,258 --> 01:03:01,920 1551 01:03:01,920 --> 01:03:03,980 >> Algo a ter en conta con inserción, digamos 1552 01:03:03,980 --> 01:03:07,925 queriamos poñer un novo elemento na parte de diante da nosa lista ligada. 1553 01:03:07,925 --> 01:03:10,800 Temos que ter moito coidado sobre a orde na que nós 1554 01:03:10,800 --> 01:03:12,760 realocados os punteiros. 1555 01:03:12,760 --> 01:03:15,230 Porque imos dicir que eu só dixen Aceptar. 1556 01:03:15,230 --> 01:03:18,930 Fai punto cabeza a este novo elemento. 1557 01:03:18,930 --> 01:03:23,550 Basta facelo ligar a un Entón, temos esencialmente perdeu o resto da nosa lista, 1558 01:03:23,550 --> 01:03:25,860 porque eu non me lembro onde dúas vidas. 1559 01:03:25,860 --> 01:03:27,730 >> Entón temos que facer nun orde moi específica. 1560 01:03:27,730 --> 01:03:31,500 En primeiro lugar, facer o novo punto elemento para a cabeza. 1561 01:03:31,500 --> 01:03:33,970 E, entón, facer a cabeza apuntar para o novo elemento. 1562 01:03:33,970 --> 01:03:38,455 Entón imos ver o que parece con arrows-- só como aquel. 1563 01:03:38,455 --> 01:03:42,080 Entón, primeiro ten a nova punto elemento para a cabeza de idade. 1564 01:03:42,080 --> 01:03:45,990 E agora temos a cabeza apuntar ao novo primeiro elemento. 1565 01:03:45,990 --> 01:03:47,187 Calquera dúbida con isto? 1566 01:03:47,187 --> 01:03:49,870 1567 01:03:49,870 --> 01:03:54,350 >> OK aquí está un código novo, algo a ollar a un pouco máis tarde. 1568 01:03:54,350 --> 01:03:58,630 E agora vou entrega-lo para Davin para GDB e algo de práctica 1569 01:03:58,630 --> 01:03:59,480 codificación en papel. 1570 01:03:59,480 --> 01:04:00,597 1571 01:04:00,597 --> 01:04:01,096 Linda. 1572 01:04:01,096 --> 01:04:01,810 >> ROB: E Rob. 1573 01:04:01,810 --> 01:04:02,360 >> HANNAH: Oh, Davin e Rob. 1574 01:04:02,360 --> 01:04:03,055 Sinto moito. 1575 01:04:03,055 --> 01:04:03,596 >> ALUMNO: Woo! 1576 01:04:03,596 --> 01:04:08,140 1577 01:04:08,140 --> 01:04:09,110 >> ROB: Grazas. 1578 01:04:09,110 --> 01:04:11,209 >> Davin: Quere dicir todo ben rápido? 1579 01:04:11,209 --> 01:04:11,875 ROB: Si, si. 1580 01:04:11,875 --> 01:04:12,845 Davin: Xa que estou enriba. 1581 01:04:12,845 --> 01:04:16,240 1582 01:04:16,240 --> 01:04:19,520 OK, mentres coloca o Rob micrófono conectado, entón o que é GDB? 1583 01:04:19,520 --> 01:04:23,945 Todo o mundo debe ter visto en GDB clase e tamén no horario de oficina. 1584 01:04:23,945 --> 01:04:25,070 E ten que estar a usar. 1585 01:04:25,070 --> 01:04:25,750 Entón, cal é o GDB? 1586 01:04:25,750 --> 01:04:28,030 1587 01:04:28,030 --> 01:04:28,850 Calquera? 1588 01:04:28,850 --> 01:04:29,540 >> ALUMNO: É un depurador. 1589 01:04:29,540 --> 01:04:30,250 >> Davin: É un depurador. 1590 01:04:30,250 --> 01:04:31,624 E o que iso permitirá que faga? 1591 01:04:31,624 --> 01:04:33,064 Como, por que nos gusta GDB? 1592 01:04:33,064 --> 01:04:34,480 ALUMNO: Para retardar o programa. 1593 01:04:34,480 --> 01:04:36,740 Davin: Certo, entón podes andar por el como un ritmo humano. 1594 01:04:36,740 --> 01:04:38,490 E entón o que son algúns comandos que pode facer? 1595 01:04:38,490 --> 01:04:40,407 Ben, pausa pode ser seu mando favorito. 1596 01:04:40,407 --> 01:04:43,240 Por que permite romper a programa e realmente atravesala la 1597 01:04:43,240 --> 01:04:44,280 liña por liña. 1598 01:04:44,280 --> 01:04:46,500 >> Run permite que executa-o. 1599 01:04:46,500 --> 01:04:48,210 Logo, como entrar por. 1600 01:04:48,210 --> 01:04:49,820 Cal é o próximo e entre paso? 1601 01:04:49,820 --> 01:04:52,190 1602 01:04:52,190 --> 01:04:53,190 Espera, dicir isto en voz alta. 1603 01:04:53,190 --> 01:04:54,060 Foi correcta. 1604 01:04:54,060 --> 01:04:55,280 >> Estudante: [inaudível]. 1605 01:04:55,280 --> 01:04:56,190 >> Davin: Si, impresionante. 1606 01:04:56,190 --> 01:04:59,210 Así como, xunto e paso, se you're-- digamos que ten unha función que 1607 01:04:59,210 --> 01:04:59,950 definir. 1608 01:04:59,950 --> 01:05:03,350 Digamos que algúns na súa función principal, e só está acertando next, next, 1609 01:05:03,350 --> 01:05:03,850 seguinte. 1610 01:05:03,850 --> 01:05:05,910 Está realmente indo a executar esta función, 1611 01:05:05,910 --> 01:05:07,285 pero vai ir sobre el. 1612 01:05:07,285 --> 01:05:09,711 Se acertar o paso, ou s ou o que quere, que é 1613 01:05:09,711 --> 01:05:11,460 vai realmente saltar en que a función, 1614 01:05:11,460 --> 01:05:14,110 e, a continuación, pode bater seguinte para ver as diferentes conexións 1615 01:05:14,110 --> 01:05:16,170 dentro desa función particular. 1616 01:05:16,170 --> 01:05:16,670 Si? 1617 01:05:16,670 --> 01:05:18,670 >> Estudante: Existe un xeito para ir, como, volver atrás? 1618 01:05:18,670 --> 01:05:20,750 Davin: Finish, si, rematar con ir para fóra. 1619 01:05:20,750 --> 01:05:22,570 Por iso, vai rematar esta función, e entón está 1620 01:05:22,570 --> 01:05:24,153 estará de volta en principal, por exemplo. 1621 01:05:24,153 --> 01:05:25,250 1622 01:05:25,250 --> 01:05:27,370 Imprimir ha imprimir lo xa. 1623 01:05:27,370 --> 01:05:29,381 Algo que sempre uso é display. 1624 01:05:29,381 --> 01:05:31,880 O display imprimir lo constantemente ao longo de todo 1625 01:05:31,880 --> 01:05:32,470 do seu programa. 1626 01:05:32,470 --> 01:05:33,810 >> Por exemplo, se está en un loop for, e 1627 01:05:33,810 --> 01:05:37,018 quero ver como algo está cambiando, e non quere, como, constantemente 1628 01:05:37,018 --> 01:05:38,940 estar facendo como impresión, impresión, impresión, display 1629 01:05:38,940 --> 01:05:43,230 ha amosar esta variable continuamente, cada vez que bater en Seguinte. 1630 01:05:43,230 --> 01:05:44,310 E continuar. 1631 01:05:44,310 --> 01:05:45,905 Entón GBD, iso é GDB. 1632 01:05:45,905 --> 01:05:47,160 1633 01:05:47,160 --> 01:05:49,180 >> Estudante: Cal é a única onde [inaudível]? 1634 01:05:49,180 --> 01:05:50,150 1635 01:05:50,150 --> 01:05:50,900 Davin: Que é? 1636 01:05:50,900 --> 01:05:52,310 1637 01:05:52,310 --> 01:05:54,390 >> ESTUDANTE: Cal é as-- as variables locais. 1638 01:05:54,390 --> 01:05:55,364 1639 01:05:55,364 --> 01:05:57,780 ROB: Hai algo realmente como os veciños locais ou algo así. 1640 01:05:57,780 --> 01:05:58,140 Eu can't-- 1641 01:05:58,140 --> 01:05:59,930 >> Davin: Pode ser algo parecido, si. 1642 01:05:59,930 --> 01:06:00,830 >> HANNAH: En os veciños? 1643 01:06:00,830 --> 01:06:01,510 >> Davin: É iso. 1644 01:06:01,510 --> 01:06:02,134 Esa é a única. 1645 01:06:02,134 --> 01:06:03,040 ROB: Beautiful. 1646 01:06:03,040 --> 01:06:04,030 >> Davin: Yeah. 1647 01:06:04,030 --> 01:06:06,010 >> Estudante: Qué seguir facer? 1648 01:06:06,010 --> 01:06:08,010 >> Davin: É continues-- polo que é só seguirá os seus programas. 1649 01:06:08,010 --> 01:06:09,843 Entón, se romper e bater seguir, que vai 1650 01:06:09,843 --> 01:06:13,119 só para executar o programa, ata chega esta pausa de novo. 1651 01:06:13,119 --> 01:06:14,910 Así, por exemplo, se rompe nunha función, 1652 01:06:14,910 --> 01:06:16,720 e vai facer como por loop ou algo así, 1653 01:06:16,720 --> 01:06:19,869 e acertar seguir, que vai seguir e volver a ese rango. 1654 01:06:19,869 --> 01:06:22,660 Ou non hai ningunha ruptura, que vai seguir e rematar o programa. 1655 01:06:22,660 --> 01:06:25,000 >> ROB: Entón, só tes que gustar paradas executados logo o primeiro punto de interrupción 1656 01:06:25,000 --> 01:06:27,010 acertar, se logo hit seguir, que vai manter 1657 01:06:27,010 --> 01:06:28,070 indo ata que el é o seguinte punto de interrupción. 1658 01:06:28,070 --> 01:06:30,111 E entón continuará ao seguinte punto de interrupción. 1659 01:06:30,111 --> 01:06:31,264 1660 01:06:31,264 --> 01:06:32,680 Davin: Calquera outras preguntas sobre GDB? 1661 01:06:32,680 --> 01:06:33,577 1662 01:06:33,577 --> 01:06:35,410 Entón eu creo que, no pasado, nós pedímoslle que 1663 01:06:35,410 --> 01:06:37,690 GDB é e dar un exemplo de algunhas cousas que 1664 01:06:37,690 --> 01:06:40,770 pode facer GDB, de xeito simple real, pero si. 1665 01:06:40,770 --> 01:06:42,280 Alí vai. 1666 01:06:42,280 --> 01:06:43,250 E nós? 1667 01:06:43,250 --> 01:06:49,571 >> ROB: Si, así que dirección foi? 1668 01:06:49,571 --> 01:06:50,851 1669 01:06:50,851 --> 01:06:51,726 ALUMNO: Era iso. 1670 01:06:51,726 --> 01:06:52,160 Davin: Agarde. 1671 01:06:52,160 --> 01:06:52,270 ROB: Este cara? 1672 01:06:52,270 --> 01:06:52,936 Davin: Que un. 1673 01:06:52,936 --> 01:06:54,660 ROB: Este cara, oh, eu non entendín. 1674 01:06:54,660 --> 01:06:56,940 Polo tanto, non eran claras sobre o que as-- non 1675 01:06:56,940 --> 01:06:58,680 sabe quen foi-- pero a cuestión. 1676 01:06:58,680 --> 01:07:01,180 Non sabemos exactamente o que estaban pregunta sobre iso, entón só 1677 01:07:01,180 --> 01:07:04,800 para aclarar algo. 1678 01:07:04,800 --> 01:07:07,750 Entón, primeiro, como dixen antes, typedef está sempre usando só 1679 01:07:07,750 --> 01:07:09,305 crear un apelido a un tipo. 1680 01:07:09,305 --> 01:07:13,420 Entón, aquí, o apelido que estamos crear é para este nodo struct tipo. 1681 01:07:13,420 --> 01:07:18,070 >> Entón, primeiro, ignorando este nodo no typedef, de xeito que este struct nodo crespos 1682 01:07:18,070 --> 01:07:21,060 prepare-se para a próxima crespos Brace é o tipo de nodo struct. 1683 01:07:21,060 --> 01:07:23,470 E necesitamos que o nó alí enriba, porque nós 1684 01:07:23,470 --> 01:07:25,190 cómpre facer referencia nó aquí. 1685 01:07:25,190 --> 01:07:29,380 Así, con este tipo de estrutura recursiva, ten que dar este struct un nome, 1686 01:07:29,380 --> 01:07:31,340 ou entón non podía dicir nodo struct aquí. 1687 01:07:31,340 --> 01:07:33,340 Considerando que, antes con estudante cando foron escritas, eu creo, 1688 01:07:33,340 --> 01:07:35,423 que non teñen a dicir alumno alí enriba, porque nós 1689 01:07:35,423 --> 01:07:40,370 non teño que dicir struct alumno dentro da propia estrutura. 1690 01:07:40,370 --> 01:07:43,730 Por iso, é o recursiva que obríganos a dicir nó alí. 1691 01:07:43,730 --> 01:07:46,610 >> Este nodo é só o nome que estamos dando nó ao typedef. 1692 01:07:46,610 --> 01:07:48,520 Así que o nó non é o mesmo que o nó. 1693 01:07:48,520 --> 01:07:51,567 Pero ese nó struct é o aínda que o nó struct. 1694 01:07:51,567 --> 01:07:54,150 Davin: Entón sempre que chamar, como, nó na súa función principal, 1695 01:07:54,150 --> 01:07:55,350 non vai ten que dicir nodo struct. 1696 01:07:55,350 --> 01:07:58,360 Pode só dicir que nós, porque é un nó diferente-- é basicamente 1697 01:07:58,360 --> 01:07:59,440 está dicindo, Aceptar. 1698 01:07:59,440 --> 01:08:01,490 En vez de ter que chamar struct nó no meu código, 1699 01:08:01,490 --> 01:08:04,050 Eu só quero cambiar o nome como nodo para facelo máis fácil. 1700 01:08:04,050 --> 01:08:06,800 >> ROB: Se sempre usar typedef, entón que 1701 01:08:06,800 --> 01:08:11,240 é o único lugar que vai ter para declarar unha variable coa nó struct 1702 01:08:11,240 --> 01:08:11,740 protagonizar, si. 1703 01:08:11,740 --> 01:08:14,650 1704 01:08:14,650 --> 01:08:20,801 >> Davin: OK, entón a última parte É difícil ensinar because-- 1705 01:08:20,801 --> 01:08:22,185 1706 01:08:22,185 --> 01:08:22,685 ROB: O que? 1707 01:08:22,685 --> 01:08:24,098 1708 01:08:24,098 --> 01:08:25,649 >> Davin: Por a codificación en papel. 1709 01:08:25,649 --> 01:08:28,689 Así, cada ano, temos código sobre cuestións de papel. 1710 01:08:28,689 --> 01:08:32,510 Entón eu creo que o ano pasado, 12 dos 80 puntos foron código no papel. 1711 01:08:32,510 --> 01:08:36,720 Ano antes, 10 de 80, ano antes diso, 20 dos 100, 1712 01:08:36,720 --> 01:08:37,939 polo que moi poucos destes. 1713 01:08:37,939 --> 01:08:40,970 Entón vai ter que ser capaz para codificar estas funcións coa man. 1714 01:08:40,970 --> 01:08:45,340 >> Entón eu entender que poderiamos pasar por un algúns deles para ver como as persoas fan, 1715 01:08:45,340 --> 01:08:47,340 tipo de camiñar por os lentamente coas persoas. 1716 01:08:47,340 --> 01:08:48,790 1717 01:08:48,790 --> 01:08:52,420 Así, en xeral, e strlen atoi foron moi popular. 1718 01:08:52,420 --> 01:08:55,670 O ano pasado, creo que tivemos GetPositiveInt e randomInt. 1719 01:08:55,670 --> 01:08:58,591 Pero pow, entón o poder, tamén un positivo tamén. 1720 01:08:58,591 --> 01:09:00,965 Nós só pasar por quizais un ou dous deles en conxunto. 1721 01:09:00,965 --> 01:09:02,510 1722 01:09:02,510 --> 01:09:03,729 O que a xente quere ver? 1723 01:09:03,729 --> 01:09:05,037 1724 01:09:05,037 --> 01:09:05,767 >> ALUMNO: Atoi. 1725 01:09:05,767 --> 01:09:06,350 Estudante: Si. 1726 01:09:06,350 --> 01:09:06,859 Davin: Atoi? 1727 01:09:06,859 --> 01:09:07,800 Estudante: [inaudível]. 1728 01:09:07,800 --> 01:09:09,682 Davin: OK, eu vou para facelo no taboleiro. 1729 01:09:09,682 --> 01:09:11,765 Ten unha preferencia se fago iso aquí ou alí? 1730 01:09:11,765 --> 01:09:13,580 1731 01:09:13,580 --> 01:09:14,550 Alí, Gabe di que non. 1732 01:09:14,550 --> 01:09:16,729 1733 01:09:16,729 --> 01:09:19,580 >> ROB: E este é pensamentos xerais sobre estas cuestións de codificación. 1734 01:09:19,580 --> 01:09:21,705 Probe escribir algo. 1735 01:09:21,705 --> 01:09:22,580 Non deixalo en branco. 1736 01:09:22,580 --> 01:09:23,080 >> Davin: Si. 1737 01:09:23,080 --> 01:09:25,520 ROB: Se pode obter o tipo de retorno correcto, 1738 01:09:25,520 --> 01:09:27,090 ou que poderiamos dar a ti, pero se pode, como, 1739 01:09:27,090 --> 01:09:30,256 escribir a sinatura da función xeral, Se pode obter os casos base correcta, 1740 01:09:30,256 --> 01:09:32,244 ou casos de canto, ou lembrando cheque de nulo, 1741 01:09:32,244 --> 01:09:34,160 sempre que teña algún cousas, entón quizais nós 1742 01:09:34,160 --> 01:09:35,880 pode darlle un par apunta para o problema. 1743 01:09:35,880 --> 01:09:36,810 Non basta deixar en branco. 1744 01:09:36,810 --> 01:09:38,560 >> Davin: Si, e se son só completamente 1745 01:09:38,560 --> 01:09:40,580 perplexo coa forma como a realmente converterse código. 1746 01:09:40,580 --> 01:09:43,140 Se escribir pseudocódigo, iso é moi bo tamén. 1747 01:09:43,140 --> 01:09:46,390 Entón, é como, é unha cuestión de seis puntos, e escribir o pseudocódigo correcto, 1748 01:09:46,390 --> 01:09:47,858 vai ter polo menos dous puntos. 1749 01:09:47,858 --> 01:09:49,149 Polo tanto, non basta deixar los en branco. 1750 01:09:49,149 --> 01:09:50,279 Tente poñer algo. 1751 01:09:50,279 --> 01:09:51,770 >> ROB: El que ser o pseudocódigo correcto, con todo. 1752 01:09:51,770 --> 01:09:52,270 >> Davin: Si. 1753 01:09:52,270 --> 01:09:55,381 ROB: Entón, nós estamos xeralmente son menos tolerante con erros en pseudocódigo. 1754 01:09:55,381 --> 01:09:57,130 Davin: OK, entón vostedes quería ver atoi. 1755 01:09:57,130 --> 01:09:58,480 1756 01:09:58,480 --> 01:10:02,820 OK, entón só realmente-- entón o que quere facer 1757 01:10:02,820 --> 01:10:04,969 é que vai ser dado algún tipo de número. 1758 01:10:04,969 --> 01:10:07,010 Pero ese número non é será un int, non? 1759 01:10:07,010 --> 01:10:08,574 Que será? 1760 01:10:08,574 --> 01:10:09,480 >> Estudante: [inaudível]. 1761 01:10:09,480 --> 01:10:11,146 >> Davin: Vai ser unha cadea, non? 1762 01:10:11,146 --> 01:10:13,160 Entón, se foi dado un string-- imos dizer-- 1763 01:10:13,160 --> 01:10:15,228 >> ROB: Debo puxar arriba un editor? 1764 01:10:15,228 --> 01:10:16,200 Podo tirar up-- 1765 01:10:16,200 --> 01:10:16,800 >> Davin: Ah, quere facelo on-- 1766 01:10:16,800 --> 01:10:17,420 >> ROB: Prefire o consello? 1767 01:10:17,420 --> 01:10:18,800 >> Davin: O que quere facer? 1768 01:10:18,800 --> 01:10:19,900 Quero dicir, quere facelo a man? 1769 01:10:19,900 --> 01:10:21,460 Ou quere facelo polo ordenador? 1770 01:10:21,460 --> 01:10:22,180 >> ROB: Fai-o coa man. 1771 01:10:22,180 --> 01:10:22,805 >> Davin: [Risas] 1772 01:10:22,805 --> 01:10:23,950 ROB: Fai-o coa man. 1773 01:10:23,950 --> 01:10:25,469 >> Davin: OK, así que será atoi. 1774 01:10:25,469 --> 01:10:27,760 Entón, cal é ele-- Quero dicir, nós imos probablemente, dar iso a ti. 1775 01:10:27,760 --> 01:10:29,106 Pero que é o que vai volver? 1776 01:10:29,106 --> 01:10:29,452 >> ALUMNO: Int. 1777 01:10:29,452 --> 01:10:31,076 >> Davin: El vai volver int, non? 1778 01:10:31,076 --> 01:10:33,772 Assim-- Non quero facelo alí. 1779 01:10:33,772 --> 01:10:34,510 Vou facelo aquí. 1780 01:10:34,510 --> 01:10:36,596 >> ROB: Pode tirar abaixo e empuxe-se sobre ela. 1781 01:10:36,596 --> 01:10:38,500 1782 01:10:38,500 --> 01:10:40,385 >> Davin: si. 1783 01:10:40,385 --> 01:10:43,880 [Risas] cambio do xogo. 1784 01:10:43,880 --> 01:10:50,950 OK, así que será atoi int, eo que é que vai tomar? 1785 01:10:50,950 --> 01:10:52,180 1786 01:10:52,180 --> 01:10:57,780 Unha estrela char, entón só un corda, estrela s, así. 1787 01:10:57,780 --> 01:10:59,240 >> ROB: Estrela agradable, agradable. 1788 01:10:59,240 --> 01:11:02,582 1789 01:11:02,582 --> 01:11:04,040 Davin: Isto non pode estar alí, Aceptar. 1790 01:11:04,040 --> 01:11:04,540 ROB: Yeah. 1791 01:11:04,540 --> 01:11:06,670 Davin: OK, entón o primeiro cousa que quere que eu fazer-- 1792 01:11:06,670 --> 01:11:08,490 Non sei se alguén mirou na práctica solutions-- 1793 01:11:08,490 --> 01:11:10,150 pero o que vai querer facer é que está 1794 01:11:10,150 --> 01:11:11,570 Vai querer ter un loop, porque é 1795 01:11:11,570 --> 01:11:14,100 Vai querer realmente pasar por esta cadea. 1796 01:11:14,100 --> 01:11:18,880 Entón atenciosa-- entón imos dicir nós estamos indo a un loop, 1797 01:11:18,880 --> 01:11:22,270 e nós estamos indo a percorrer cada elemento da cadea. 1798 01:11:22,270 --> 01:11:23,470 Canto tempo é ese? 1799 01:11:23,470 --> 01:11:26,464 Cantas veces é que imos iterado nese loop? 1800 01:11:26,464 --> 01:11:27,130 ALUMNO: Sterln? 1801 01:11:27,130 --> 01:11:27,963 Davin: Sterln, si. 1802 01:11:27,963 --> 01:11:29,350 1803 01:11:29,350 --> 01:11:41,294 Entón, digamos que a lonxitude é igual a int sterln s. 1804 01:11:41,294 --> 01:11:44,240 1805 01:11:44,240 --> 01:11:48,740 E só curioso, por que é sempre amable de mellor de facelo do lado de fóra de loops? 1806 01:11:48,740 --> 01:11:52,277 Como, por que é mellor chamar esta función fóra dun loop? 1807 01:11:52,277 --> 01:11:53,360 Só unha rápida comprobación de sanidade? 1808 01:11:53,360 --> 01:11:55,810 1809 01:11:55,810 --> 01:11:56,311 Si? 1810 01:11:56,311 --> 01:11:58,268 Estudante: Entón non facer ten que manter a verificación el. 1811 01:11:58,268 --> 01:11:59,400 Pode só [inaudível]. 1812 01:11:59,400 --> 01:12:01,560 >> Davin: Exactamente, entón si, o que ela dixo. 1813 01:12:01,560 --> 01:12:03,101 Entón, non debemos manter a verificación el. 1814 01:12:03,101 --> 01:12:05,690 Así, por exemplo, se eu estou chamando esta función dentro dun loop, 1815 01:12:05,690 --> 01:12:08,050 entón eu vou seguir chamando esa función varias veces. 1816 01:12:08,050 --> 01:12:10,080 E iso vai diminuír a eficiencia do seu programa. 1817 01:12:10,080 --> 01:12:12,370 Por iso é sempre útil declaralo la fóra. 1818 01:12:12,370 --> 01:12:14,370 >> ROB: Isto é dito, en calquera destes problemas, 1819 01:12:14,370 --> 01:12:17,940 moi ben, sempre que obter un Solución de traballo, que obtén todo o crédito. 1820 01:12:17,940 --> 01:12:20,820 Entón non se preocupe se o seu proxecto é absolutamente horrendo. 1821 01:12:20,820 --> 01:12:22,120 1822 01:12:22,120 --> 01:12:25,230 Pode facernos chat lectura do seu código. 1823 01:12:25,230 --> 01:12:28,160 Pero desde que funciona, vai conseguir os puntos. 1824 01:12:28,160 --> 01:12:29,302 >> Davin: Si. 1825 01:12:29,302 --> 01:12:31,260 OK, entón eu vou declarar algunha variable. 1826 01:12:31,260 --> 01:12:33,900 El só vai chamar int suma. 1827 01:12:33,900 --> 01:12:37,031 E eu estou indo a definir esta igual a cero, como aquel. 1828 01:12:37,031 --> 01:12:38,780 E iso só vai para ser un espazo reservado. 1829 01:12:38,780 --> 01:12:40,960 Así que será o que eu vou volver. 1830 01:12:40,960 --> 01:12:43,730 Entón eu vou para, finalmente, volver suma fóra deste programa. 1831 01:12:43,730 --> 01:12:44,980 Entón, eu teño esas dúas variables. 1832 01:12:44,980 --> 01:12:45,563 Teño lonxitude. 1833 01:12:45,563 --> 01:12:46,500 Teño suma. 1834 01:12:46,500 --> 01:12:48,290 E agora imos saltar ao noso cadea. 1835 01:12:48,290 --> 01:12:49,510 >> Entón, imos ter o noso loop for. 1836 01:12:49,510 --> 01:13:06,520 Entón, catro int I é igual a 0 w, mentres I é menor que a lonxitude I máis aló. 1837 01:13:06,520 --> 01:13:07,150 E agora- 1838 01:13:07,150 --> 01:13:10,920 1839 01:13:10,920 --> 01:13:11,420 ROB: Nice. 1840 01:13:11,420 --> 01:13:14,030 Davin: OK, e agora aquí vén a carne do noso código. 1841 01:13:14,030 --> 01:13:17,380 Entón pode realmente facer iso basicamente nunha liña. 1842 01:13:17,380 --> 01:13:20,702 Entón, alguén ten unha idea de que imos facer a continuación? 1843 01:13:20,702 --> 01:13:23,680 1844 01:13:23,680 --> 01:13:25,380 OK, entón iso é OK. 1845 01:13:25,380 --> 01:13:35,860 Entón, nós estamos facendo para dicir suma equals-- me deixe fuxir esta suma over-- 1846 01:13:35,860 --> 01:13:50,010 é igual a suma 10 veces plus-- estamos vai levar s eu menos un 1847 01:13:50,010 --> 01:13:54,787 Cita 0 unha cita feito, así. 1848 01:13:54,787 --> 01:13:55,620 ROB: Moi intuitivo. 1849 01:13:55,620 --> 01:13:56,980 1850 01:13:56,980 --> 01:13:57,880 >> Davin: Esmagado-lo. 1851 01:13:57,880 --> 01:14:01,438 OK, entón someone-- eu puiden, eu puiden. 1852 01:14:01,438 --> 01:14:03,680 1853 01:14:03,680 --> 01:14:06,960 OK, entón iso vai claramente superior. 1854 01:14:06,960 --> 01:14:08,320 1855 01:14:08,320 --> 01:14:09,450 O que isto significa? 1856 01:14:09,450 --> 01:14:12,120 Entón, alguén sabe o que significa isto? 1857 01:14:12,120 --> 01:14:13,826 Todo o mundo pode ver iso? 1858 01:14:13,826 --> 01:14:16,088 Non, ninguén pode ver iso, OK. 1859 01:14:16,088 --> 01:14:17,390 1860 01:14:17,390 --> 01:14:18,340 Vou a-- 1861 01:14:18,340 --> 01:14:20,506 >> ROB: Vou escribir o fórmula só aquí. 1862 01:14:20,506 --> 01:14:23,140 Davin: OK, Rob vai facelo no ordenador, o que é divertido. 1863 01:14:23,140 --> 01:14:26,889 1864 01:14:26,889 --> 01:14:27,514 ROB: Oh meu Deus. 1865 01:14:27,514 --> 01:14:34,340 1866 01:14:34,340 --> 01:14:35,010 Ou eu non vou. 1867 01:14:35,010 --> 01:14:36,288 1868 01:14:36,288 --> 01:14:36,954 Davin: Agarde. 1869 01:14:36,954 --> 01:14:42,300 1870 01:14:42,300 --> 01:14:44,260 ALUMNO: Eu teño unha pregunta. 1871 01:14:44,260 --> 01:14:45,348 Davin: Si, con certeza. 1872 01:14:45,348 --> 01:14:46,223 Estudante: [inaudível]? 1873 01:14:46,223 --> 01:14:52,529 1874 01:14:52,529 --> 01:14:54,570 Davin: Aceptar, polo que, en realidade, como, só, en xeral, 1875 01:14:54,570 --> 01:14:56,710 se fose poñer, como, nesta declaración int 1876 01:14:56,710 --> 01:14:59,770 I é igual á lonxitude 0 comas é igual sterln, isso-- 1877 01:14:59,770 --> 01:15:01,200 >> Estudante: [inaudível]. 1878 01:15:01,200 --> 01:15:03,585 >> Davin: Isto é bo, porque que-- 1879 01:15:03,585 --> 01:15:05,543 ALUMNO: Por que aínda que empregar lonxitude? 1880 01:15:05,543 --> 01:15:08,620 Por que non poderiamos só [inaudível] sterln s, como se todo o tempo [inaudível]? 1881 01:15:08,620 --> 01:15:09,460 >> Davin: Quere dicir aquí? 1882 01:15:09,460 --> 01:15:10,001 >> Estudante: Si. 1883 01:15:10,001 --> 01:15:12,630 Davin: Por cada tempo presente para carreiras de circuíto, 1884 01:15:12,630 --> 01:15:14,295 que vai avaliar esta condición. 1885 01:15:14,295 --> 01:15:14,920 ESTUDANTE: Certo. 1886 01:15:14,920 --> 01:15:16,836 Davin: E se ten sterln alí, entón é 1887 01:15:16,836 --> 01:15:19,510 terá que realmente chamar que a función de cada vez. 1888 01:15:19,510 --> 01:15:21,090 Entón, en vez de só comparando-a con un int, 1889 01:15:21,090 --> 01:15:23,548 vai estar chamando a función e logo, comparando-a 1890 01:15:23,548 --> 01:15:24,510 ao valor de retorno. 1891 01:15:24,510 --> 01:15:25,860 Si, por iso é xusto, si. 1892 01:15:25,860 --> 01:15:28,860 1893 01:15:28,860 --> 01:15:30,770 >> Bo, OK, entón agora todos poden velo. 1894 01:15:30,770 --> 01:15:33,400 Que does-- dicir como, é iso. 1895 01:15:33,400 --> 01:15:34,580 Este é a conxestión, así aquí. 1896 01:15:34,580 --> 01:15:37,030 1897 01:15:37,030 --> 01:15:37,930 O que significa isto? 1898 01:15:37,930 --> 01:15:39,250 1899 01:15:39,250 --> 01:15:39,970 O que estou facendo? 1900 01:15:39,970 --> 01:15:41,890 1901 01:15:41,890 --> 01:15:42,880 Si, unha idea? 1902 01:15:42,880 --> 01:15:43,482 Si? 1903 01:15:43,482 --> 01:15:45,692 >> Estudante: Ben, entón cando está entrando nunha matriz, 1904 01:15:45,692 --> 01:15:47,525 vai estar indo de esquerda a dereita, 1905 01:15:47,525 --> 01:15:51,786 entón está indo a ir en decimal dende abaixo o [inaudível]. 1906 01:15:51,786 --> 01:15:52,410 Davin: Exactamente. 1907 01:15:52,410 --> 01:15:55,063 Estudante: Entón, cada un ten que multiplicar 1908 01:15:55,063 --> 01:15:59,490 o que viu como o valor do int por o momento que comeza a se mover máis que un. 1909 01:15:59,490 --> 01:16:01,590 >> Davin: Perfecto, perfecto, así, por exemplo, imos 1910 01:16:01,590 --> 01:16:05,376 dicir que eu dei você- eu son vai escribir aquí. 1911 01:16:05,376 --> 01:16:06,480 Non, eu non son. 1912 01:16:06,480 --> 01:16:08,640 Vou escribir aquí. 1913 01:16:08,640 --> 01:16:12,080 Imos dicir que eu te dei 76, non? 1914 01:16:12,080 --> 01:16:13,380 Imos dicir que eu te dou 76. 1915 01:16:13,380 --> 01:16:15,360 Isto é unha cadea, para comezar, OK? 1916 01:16:15,360 --> 01:16:16,840 >> Así, a lonxitude é o que? 1917 01:16:16,840 --> 01:16:18,060 1918 01:16:18,060 --> 01:16:19,060 2, non? 1919 01:16:19,060 --> 01:16:20,290 Suma é 0. 1920 01:16:20,290 --> 01:16:21,600 A continuación, ir ao noso loop. 1921 01:16:21,600 --> 01:16:24,187 OK, a primeira iteración tanto, que é o que vai ser? 1922 01:16:24,187 --> 01:16:25,270 Será suma é 0. 1923 01:16:25,270 --> 01:16:27,180 Así resumir veces 10 0. 1924 01:16:27,180 --> 01:16:28,500 Isto é sen sentido. 1925 01:16:28,500 --> 01:16:29,880 Entón, o que iso fai? 1926 01:16:29,880 --> 01:16:30,845 1927 01:16:30,845 --> 01:16:31,720 Estudante: [inaudível]. 1928 01:16:31,720 --> 01:16:33,110 1929 01:16:33,110 --> 01:16:37,430 >> Davin: El vai transformar esta caracteres nun número enteiro, non? 1930 01:16:37,430 --> 01:16:42,160 É unha especie de como o seu problema set-- este light-- 1931 01:16:42,160 --> 01:16:44,170 é tipo como con problema definido para Visioneer. 1932 01:16:44,170 --> 01:16:45,980 Está lidando con valores ASCII. 1933 01:16:45,980 --> 01:16:48,520 Entón, se eu darlle, así, un sete, pero é un personaxe, 1934 01:16:48,520 --> 01:16:50,965 e quere saber, OK, o díxito é iso? 1935 01:16:50,965 --> 01:16:53,540 1936 01:16:53,540 --> 01:16:54,910 Si, podería, si. 1937 01:16:54,910 --> 01:16:55,900 Entón, o díxito é iso? 1938 01:16:55,900 --> 01:16:59,550 Podería restar 0 a partir del, pero ten que restar 0, o personaxe. 1939 01:16:59,550 --> 01:17:01,425 >> E onde algunhas persoas tropezar, son 1940 01:17:01,425 --> 01:17:04,260 como, OK, ben, eu teño que saber os valores ASCII para este cuestionario? 1941 01:17:04,260 --> 01:17:06,218 Non, definitivamente non facer Debe saber o ASCII 1942 01:17:06,218 --> 01:17:09,520 valores de, como, en minúsculas un, maiúsculas A, cero. 1943 01:17:09,520 --> 01:17:12,060 >> ROB: Non hai ningunha razón para non poñer isto na folla de fraude. 1944 01:17:12,060 --> 01:17:14,226 >> Davin: Definitivamente non facer perder o seu espazo con este. 1945 01:17:14,226 --> 01:17:18,090 Pode literally-- soa vez de dicir 48, como ata 1946 01:17:18,090 --> 01:17:24,630 alí, que é equivalente a dicindo un, un apóstrofo, 1947 01:17:24,630 --> 01:17:27,680 así, exactamente o mesmo. 1948 01:17:27,680 --> 01:17:34,106 >> ROB: Vostede case podería pensar niso como se-- Deus, eu teño do meu, 1949 01:17:34,106 --> 01:17:37,490 oops-- case se podía pensar niso como se tivésemos algo como isto de hash 1950 01:17:37,490 --> 01:17:39,755 definir 0 como 48. 1951 01:17:39,755 --> 01:17:41,320 1952 01:17:41,320 --> 01:17:42,030 Iso non vai funcionar. 1953 01:17:42,030 --> 01:17:45,502 Pero pense nisto como comiñas simples 0 comiñas simples, e para todos os personaxes. 1954 01:17:45,502 --> 01:17:47,960 Pense nisso como unha constante que representa o valor ASCII. 1955 01:17:47,960 --> 01:17:49,080 >> Davin: Si. 1956 01:17:49,080 --> 01:17:52,820 OK, entón a primeira vez, de forma con 76-- así na primeira vez, 1957 01:17:52,820 --> 01:17:57,260 este é só o carácter 7 menos o carácter 0, 1958 01:17:57,260 --> 01:18:00,420 e estes son sete integers-- ben, aqueles 1959 01:18:00,420 --> 01:18:04,030 San sete espazos de distancia uns dos outro na táboa ASCII ou o que quere. 1960 01:18:04,030 --> 01:18:06,770 Entón, que vai voltar un int de 7. 1961 01:18:06,770 --> 01:18:08,720 Entón, agora, suma igual a 7. 1962 01:18:08,720 --> 01:18:10,830 >> OK, ben, imos saltar neste loop novo. 1963 01:18:10,830 --> 01:18:13,010 OK, agora é a suma de 10 veces. 1964 01:18:13,010 --> 01:18:15,800 Entón está efectivamente movendo a 7 á esquerda. 1965 01:18:15,800 --> 01:18:17,542 Será que isto ten sentido? 1966 01:18:17,542 --> 01:18:19,250 Está efectivamente movelo á esquerda. 1967 01:18:19,250 --> 01:18:21,790 >> E entón add-- este será 6 menos 0. 1968 01:18:21,790 --> 01:18:22,650 Iso é 6. 1969 01:18:22,650 --> 01:18:24,752 Por iso, será 70 + 6. 1970 01:18:24,752 --> 01:18:25,996 76, que é o seu número. 1971 01:18:25,996 --> 01:18:28,370 Polo tanto, independentemente de que o número Eu dei a vostede, é só lentamente 1972 01:18:28,370 --> 01:18:31,610 indo desprazar os valores maiores á esquerda, un factor de 10 1973 01:18:31,610 --> 01:18:35,525 cada vez no loop for, e logo engadir, que corresponda. 1974 01:18:35,525 --> 01:18:37,350 1975 01:18:37,350 --> 01:18:37,865 >> Na parte de atrás? 1976 01:18:37,865 --> 01:18:40,240 ESTUDANTE: Non temos que facer verificación no programa? 1977 01:18:40,240 --> 01:18:41,580 1978 01:18:41,580 --> 01:18:44,302 >> ROB: Entón, na medida en que a comprobación vai para o programa, 1979 01:18:44,302 --> 01:18:46,510 queremos lle dicir moito moito o que tes que comprobar. 1980 01:18:46,510 --> 01:18:48,670 Se non lle din nada, a continuación, xeralmente 1981 01:18:48,670 --> 01:18:50,320 asumir que ten que comprobar a maioría das cousas. 1982 01:18:50,320 --> 01:18:54,772 Como pode, só para ser seguro, probablemente debería comprobar hey, é s null? 1983 01:18:54,772 --> 01:18:56,230 Entón eu non teño ningunha idea do que volver. 1984 01:18:56,230 --> 01:18:58,814 Pero queremos dicirlle este tipo de cousas. 1985 01:18:58,814 --> 01:18:59,480 0, eu non sei. 1986 01:18:59,480 --> 01:19:02,786 >> Davin: E por que quere para comprobar de novo se s é igual a null? 1987 01:19:02,786 --> 01:19:03,660 Estudante: [inaudível]. 1988 01:19:03,660 --> 01:19:04,880 Davin: Por do char estrela. 1989 01:19:04,880 --> 01:19:05,510 É un punteiro. 1990 01:19:05,510 --> 01:19:09,240 Así, un perfectamente aceptable declaración, eu podería dicir, OK, 1991 01:19:09,240 --> 01:19:11,917 s é igual a cero, porque podería ser un punteiro para null. 1992 01:19:11,917 --> 01:19:14,250 Así, sempre que ten punteiros no seu camiño en como esta, 1993 01:19:14,250 --> 01:19:15,420 vostede probabelmente debería comprobar. 1994 01:19:15,420 --> 01:19:18,461 Porque se non comprobar se, e entón, entón vai no seu loop for, 1995 01:19:18,461 --> 01:19:20,100 e está doing-- fuxir cara a abaixo. 1996 01:19:20,100 --> 01:19:21,980 1997 01:19:21,980 --> 01:19:22,920 Scoot abaixo. 1998 01:19:22,920 --> 01:19:23,860 >> ROB: Sentímolo, é iso. 1999 01:19:23,860 --> 01:19:25,860 >> Davin: E así, como, é nulo, e entón 2000 01:19:25,860 --> 01:19:28,267 facelo, o que erro vai conseguir? 2001 01:19:28,267 --> 01:19:29,850 ALUMNO: Vai obter un fallo set. 2002 01:19:29,850 --> 01:19:31,250 Davin: Está indo a definir culpa, non, porque é 2003 01:19:31,250 --> 01:19:32,616 intentando índice para null. 2004 01:19:32,616 --> 01:19:35,240 Entón vai tentar índice na memoria que non posúe. 2005 01:19:35,240 --> 01:19:39,550 Polo tanto, este, se este é nula, e o fas, vai ciclo. 2006 01:19:39,550 --> 01:19:43,656 >> ROB: Eu tamén creo que o exame no que pedimos a esta pregunta, podemos dicirlle 2007 01:19:43,656 --> 01:19:45,655 que pode simplemente asumir é un número positivo. 2008 01:19:45,655 --> 01:19:48,270 Porque atoi tamén se espera para xestionar números negativos, 2009 01:19:48,270 --> 01:19:49,686 entón tería que caso especial. 2010 01:19:49,686 --> 01:19:53,080 Ei, é a primeira personaxe un trazo, caso en que, OK, 2011 01:19:53,080 --> 01:19:54,839 agora é un enteiro negativo. 2012 01:19:54,839 --> 01:19:56,380 Nós imos dicirlle estes tipos de cousas. 2013 01:19:56,380 --> 01:19:58,005 Nós imos dicirlle o que precisa para xestionar. 2014 01:19:58,005 --> 01:19:59,310 Davin: Si. 2015 01:19:59,310 --> 01:20:02,530 Entón, eu estou seguro que algunhas persoas poidan have-- se comezou a ollar para exames antigos, 2016 01:20:02,530 --> 01:20:03,900 viu sterln. 2017 01:20:03,900 --> 01:20:05,120 Isto é un popular. 2018 01:20:05,120 --> 01:20:09,790 E eu creo que en sterln, tiña que facer esta comprobación para nulo, o regreso 2019 01:20:09,790 --> 01:20:10,950 0 ou algo parecido. 2020 01:20:10,950 --> 01:20:11,940 Tipo, tiña que comprobar a null. 2021 01:20:11,940 --> 01:20:14,230 E se non o fixo, que foi punto fóra no quiz. 2022 01:20:14,230 --> 01:20:16,750 2023 01:20:16,750 --> 01:20:19,500 Sexa como sexa, fai todo o mundo sentir Aceptar con atoi? 2024 01:20:19,500 --> 01:20:21,112 2025 01:20:21,112 --> 01:20:22,820 Alguén quere pasar por riba de pezas de novo? 2026 01:20:22,820 --> 01:20:23,815 2027 01:20:23,815 --> 01:20:25,565 ROB: Oh si, eu creo que nós tamén dicirlle que 2028 01:20:25,565 --> 01:20:28,565 pode asumir que todo o que é-- eles están realmente entrando nun número, 2029 01:20:28,565 --> 01:20:32,821 que non ten que preocuparse, como, letras estar na cadea, así. 2030 01:20:32,821 --> 01:20:33,320 Davin: Yeah. 2031 01:20:33,320 --> 01:20:33,922 Si? 2032 01:20:33,922 --> 01:20:35,713 ALUMNO: Pode ir ao longo de máis dunha vez cando 2033 01:20:35,713 --> 01:20:37,860 usa comiñas dobres e comiñas simples? 2034 01:20:37,860 --> 01:20:41,290 >> Davin: Claro, así entre comiñas, moi simplemente, é comiñas dobres son cadeas. 2035 01:20:41,290 --> 01:20:43,370 Entón, se dobrar Cita calquera cousa, iso é unha cadea. 2036 01:20:43,370 --> 01:20:48,270 Así, como se eu tivese ese 0 aquí, e eu fixen iso, iso é unha cadea. 2037 01:20:48,270 --> 01:20:50,060 Isto non é un personaxe. 2038 01:20:50,060 --> 01:20:54,816 Entón eu non podo atopar este valor no meu ASCII gráfico, porque é unha cadea, si. 2039 01:20:54,816 --> 01:20:57,770 2040 01:20:57,770 --> 01:20:59,480 >> OK, todas as outras preguntas? 2041 01:20:59,480 --> 01:21:00,405 Si? 2042 01:21:00,405 --> 01:21:02,345 >> Estudante: Entón xa respondeu iso, 2043 01:21:02,345 --> 01:21:05,255 pero como, cando en realidade estamos escribindo isto no cuestionario, 2044 01:21:05,255 --> 01:21:08,165 quere que a xente escribe con barras ceros [inaudível]? 2045 01:21:08,165 --> 01:21:11,041 2046 01:21:11,041 --> 01:21:11,540 Davin: Non. 2047 01:21:11,540 --> 01:21:13,800 A cuestión era que ten que pór unha barra través dos ceros 2048 01:21:13,800 --> 01:21:14,890 para indicar se son ceros? 2049 01:21:14,890 --> 01:21:15,890 Non, nós imos descubrir iso. 2050 01:21:15,890 --> 01:21:16,940 2051 01:21:16,940 --> 01:21:19,530 Si, grazas, son bos. 2052 01:21:19,530 --> 01:21:20,860 OK, algo máis? 2053 01:21:20,860 --> 01:21:25,060 Alguén quere a-- entón eu creo que nós funcionamos algo ao longo do tempo. 2054 01:21:25,060 --> 01:21:27,305 Queres ver outro, ou? 2055 01:21:27,305 --> 01:21:28,096 ALUMNO: randomInt. 2056 01:21:28,096 --> 01:21:29,230 2057 01:21:29,230 --> 01:21:30,750 >> Davin: randomInt, OK, exactamente. 2058 01:21:30,750 --> 01:21:32,975 Entón imos facer randomInt. 2059 01:21:32,975 --> 01:21:34,395 2060 01:21:34,395 --> 01:21:35,270 Vou facelo por aquí. 2061 01:21:35,270 --> 01:21:36,770 2062 01:21:36,770 --> 01:21:39,210 Entón randomInt é realmente moi simple. 2063 01:21:39,210 --> 01:21:43,578 Creo atoi é probablemente o máis difícil unha que se require nos anos anteriores. 2064 01:21:43,578 --> 01:21:44,453 Estudante: [inaudível]. 2065 01:21:44,453 --> 01:21:46,660 2066 01:21:46,660 --> 01:21:47,161 >> Davin: O que? 2067 01:21:47,161 --> 01:21:49,493 ROB: Eu estou vendo se é tipo de visible dende aquí. 2068 01:21:49,493 --> 01:21:50,040 Davin: É? 2069 01:21:50,040 --> 01:21:52,500 ROB: Eu non creo que é going-- creo vai correr cara á dereita. 2070 01:21:52,500 --> 01:21:53,791 Davin: OK, entón eu vou facer un agasallo. 2071 01:21:53,791 --> 01:21:56,250 E entón só poñelas na pantalla. 2072 01:21:56,250 --> 01:21:57,150 >> ROB: Todo ben. 2073 01:21:57,150 --> 01:21:58,190 >> Davin: Queres ser o meu escriba? 2074 01:21:58,190 --> 01:21:58,600 >> ROB: Yeah. 2075 01:21:58,600 --> 01:21:59,100 >> Davin: Nice. 2076 01:21:59,100 --> 01:22:01,210 2077 01:22:01,210 --> 01:22:02,727 OK, eu podo borrar isto? 2078 01:22:02,727 --> 01:22:04,188 >> Estudante: Si. 2079 01:22:04,188 --> 01:22:05,162 >> Davin: Isto é tan difícil. 2080 01:22:05,162 --> 01:22:10,032 2081 01:22:10,032 --> 01:22:12,062 (Cantando) Está facendo o que está facendo. 2082 01:22:12,062 --> 01:22:14,454 E facer o que non fai. 2083 01:22:14,454 --> 01:22:14,954 Todo correcto. 2084 01:22:14,954 --> 01:22:19,790 2085 01:22:19,790 --> 01:22:22,930 >> OK, se ben me lembra, en o quiz do randomInt era como, 2086 01:22:22,930 --> 01:22:26,190 OK, eu vou lle dar dous números, como un a e un b. 2087 01:22:26,190 --> 01:22:30,380 E quero que me dea un RandomInt entre eses números. 2088 01:22:30,380 --> 01:22:33,440 Entón randomInt vai tomar dous números de 2089 01:22:33,440 --> 01:22:41,690 así RandomInt-- e é vai voltar un int. 2090 01:22:41,690 --> 01:22:42,930 >> Entón, cal é o valor de retorno? 2091 01:22:42,930 --> 01:22:44,151 Eu só lle dixen. 2092 01:22:44,151 --> 01:22:44,650 Int, non? 2093 01:22:44,650 --> 01:22:46,400 2094 01:22:46,400 --> 01:22:49,260 Así, e entón é vai levar dous ints. 2095 01:22:49,260 --> 01:22:56,301 Por iso, vai levar int un e int b, así. 2096 01:22:56,301 --> 01:22:58,217 Entón, o que é randomInt vai facer é que vai 2097 01:22:58,217 --> 01:23:02,440 para volver algún valor aleatorio entre estes dous valores. 2098 01:23:02,440 --> 01:23:05,140 Por iso, será maior do que un, menos de b. 2099 01:23:05,140 --> 01:23:09,020 Entón, eu creo que probablemente pode supoñer que a é o menor dos dous valores. 2100 01:23:09,020 --> 01:23:12,210 Entón, se estamos lidando con aleatoriedade, que a función 2101 01:23:12,210 --> 01:23:14,825 vimos que dános cousas aleatorias? 2102 01:23:14,825 --> 01:23:15,450 ALUMNO: Drand. 2103 01:23:15,450 --> 01:23:16,506 Davin: Drand, exactamente. 2104 01:23:16,506 --> 01:23:18,630 Entón, vai probablemente quere usar o seu drand. 2105 01:23:18,630 --> 01:23:19,940 2106 01:23:19,940 --> 01:23:29,160 Entón pode dicir int chou, e nós imos só dicir que é igual a 0 momento. 2107 01:23:29,160 --> 01:23:30,170 2108 01:23:30,170 --> 01:23:38,690 E eles están, imos dicir, OK, iguais aleatorios drand 48. 2109 01:23:38,690 --> 01:23:39,747 2110 01:23:39,747 --> 01:23:40,830 E o que iso volver? 2111 01:23:40,830 --> 01:23:43,742 O que fai esta función lle dar? 2112 01:23:43,742 --> 01:23:45,610 >> ESTUDANTE: Entre 0 e 1. 2113 01:23:45,610 --> 01:23:47,870 >> Davin: Si, entre 0 e 1. 2114 01:23:47,870 --> 01:23:48,890 Entón vai ser-- 2115 01:23:48,890 --> 01:23:51,070 >> ROB: E iso é-- creo queremos lle dicir iso. 2116 01:23:51,070 --> 01:23:52,670 Tipo, pode utilizar drand 48. 2117 01:23:52,670 --> 01:23:54,350 Podes comprobar que o exame pasado. 2118 01:23:54,350 --> 01:23:56,720 Pero nós probablemente diría vostede Pode usar drand 48, que 2119 01:23:56,720 --> 01:23:58,790 retorna un flotador entre 0 e 1. 2120 01:23:58,790 --> 01:24:00,830 >> Davin: Si, si, eu son seguro sobre o exame 2121 01:24:00,830 --> 01:24:03,860 el di que probablemente quere usar drand, si. 2122 01:24:03,860 --> 01:24:07,041 Entón, que vai volver algún valor entre 0 e 1. 2123 01:24:07,041 --> 01:24:08,790 E entón o que está Vai querer facer? 2124 01:24:08,790 --> 01:24:16,360 Ben, quere multiplicar por-- espera, eu creo que é así, me desculpe. 2125 01:24:16,360 --> 01:24:18,018 Eu só vou facer iso. 2126 01:24:18,018 --> 01:24:19,410 Non sei. 2127 01:24:19,410 --> 01:24:22,240 >> Entón b menos un. 2128 01:24:22,240 --> 01:24:23,310 2129 01:24:23,310 --> 01:24:24,490 Entón, por que b menos un? 2130 01:24:24,490 --> 01:24:26,110 2131 01:24:26,110 --> 01:24:30,490 Entón, digamos que drand lle dá de volta un OK int--, eu vou facer o resto, 2132 01:24:30,490 --> 01:24:33,380 por iso, unha. 2133 01:24:33,380 --> 01:24:36,130 Entón, o que é does-- y b menos un. 2134 01:24:36,130 --> 01:24:40,670 Entón, imos dicir que drand lle dá de volta o valor máximo que podería, finalmente, 2135 01:24:40,670 --> 01:24:41,410 darlle. 2136 01:24:41,410 --> 01:24:42,409 Que será? 2137 01:24:42,409 --> 01:24:43,010 ESTUDANTE: 1. 2138 01:24:43,010 --> 01:24:44,430 >> Davin: 1, non? 2139 01:24:44,430 --> 01:24:47,880 Entón, se isto é un, e está multiplicándose a por b menos un, 2140 01:24:47,880 --> 01:24:50,110 ben, iso é só o diferenza entre menos A. 2141 01:24:50,110 --> 01:24:52,870 E se, a continuación, engadir que de volta a un, que é o que? 2142 01:24:52,870 --> 01:24:54,290 2143 01:24:54,290 --> 01:24:55,180 É basicamente b. 2144 01:24:55,180 --> 01:24:56,435 2145 01:24:56,435 --> 01:24:57,310 Será que isto ten sentido? 2146 01:24:57,310 --> 01:24:57,851 >> Estudante: Si. 2147 01:24:57,851 --> 01:24:59,480 2148 01:24:59,480 --> 01:25:02,170 >> Davin: Entón, se isto é o máximo valora-lo podería ser, 2149 01:25:02,170 --> 01:25:03,175 que vai ser un. 2150 01:25:03,175 --> 01:25:04,122 2151 01:25:04,122 --> 01:25:06,330 E entón este é só o diferenza entre os dous. 2152 01:25:06,330 --> 01:25:11,410 Engadir nun, entón iso é vai volver ao acaso. 2153 01:25:11,410 --> 01:25:15,000 2154 01:25:15,000 --> 01:25:18,620 E, no caso de canto que drand lle dá de volta un, 2155 01:25:18,620 --> 01:25:20,970 chou só será efectivamente ser b. 2156 01:25:20,970 --> 01:25:22,700 Pero iso é o máximo que se pode. 2157 01:25:22,700 --> 01:25:27,420 Entón, se vai ser menor que que, por iso, imos dicir que é como 0,9, 2158 01:25:27,420 --> 01:25:31,080 así entón 0,9 veces b menos un será menos 2159 01:25:31,080 --> 01:25:33,230 que a diferenza entre b menos un. 2160 01:25:33,230 --> 01:25:35,830 >> E entón se engadir que en que un, entón este valor é 2161 01:25:35,830 --> 01:25:38,986 será maior que un, porque está engadindo algo para el, 2162 01:25:38,986 --> 01:25:40,360 pero vai ser menor que b. 2163 01:25:40,360 --> 01:25:41,430 2164 01:25:41,430 --> 01:25:44,420 Entón está indo a obter un chou número, porque está chamando drand. 2165 01:25:44,420 --> 01:25:48,000 E que rand, este número aleatorio é vai estar nalgún lugar entre un 2166 01:25:48,000 --> 01:25:49,342 e b. 2167 01:25:49,342 --> 01:25:50,780 Será que isto ten sentido? 2168 01:25:50,780 --> 01:25:52,990 >> ROB: Só poñelas números de formigón, de xeito 2169 01:25:52,990 --> 01:25:55,450 imos dicir que quere escoller un número aleatorio entre 7 e 10. 2170 01:25:55,450 --> 01:25:56,960 Entón b menos unha é a nosa gama. 2171 01:25:56,960 --> 01:26:00,150 Polo tanto, hai unha serie de tres números queremos escoller. 2172 01:26:00,150 --> 01:26:03,290 E, a continuación, multiplicando que, entre 0 e 1 1, 2173 01:26:03,290 --> 01:26:07,430 que, a continuación, dá-nos some-- digamos que nos dá 1,5. 2174 01:26:07,430 --> 01:26:10,670 >> Logo, 1,5, queremos ir 7-10. 2175 01:26:10,670 --> 01:26:14,470 Entón 1.5 máis 7 tráenos de volta ao noso 7-10 intervalo. 2176 01:26:14,470 --> 01:26:17,580 E entón nós estamos almacenando-o dentro un número enteiro, de xeito que truncados a 8 abaixo. 2177 01:26:17,580 --> 01:26:18,790 E entón nós só devolver iso. 2178 01:26:18,790 --> 01:26:21,310 Entón b menos unha é a nosa gama. 2179 01:26:21,310 --> 01:26:25,770 un desprázase para os números que queremos dentro dese rango. 2180 01:26:25,770 --> 01:26:30,540 Entón, entre 7 e 10, e entón nós pode devolver o que imos acabar con. 2181 01:26:30,540 --> 01:26:32,684 >> Davin: Si, bo. 2182 01:26:32,684 --> 01:26:34,470 >> ROB: Grazas. 2183 01:26:34,470 --> 01:26:35,628 >> Davin: Si, o que hai? 2184 01:26:35,628 --> 01:26:39,746 >> ALUMNO: Será que executa-lo a calquera tipo de Erros ASCII cando we're-- se drand é 2185 01:26:39,746 --> 01:26:40,996 voltar un float [inaudível]. 2186 01:26:40,996 --> 01:26:42,470 2187 01:26:42,470 --> 01:26:45,360 >> ROB: Entón, así como Rob dixo: porque acaso non é un int, 2188 01:26:45,360 --> 01:26:47,080 así drand será un float. 2189 01:26:47,080 --> 01:26:48,470 Así, e logo se multiplica para fóra. 2190 01:26:48,470 --> 01:26:50,507 E pode obter algún tipo de números flotador. 2191 01:26:50,507 --> 01:26:51,840 E entón vai truncar. 2192 01:26:51,840 --> 01:26:52,339 >> ALUMNO: Aceptar. 2193 01:26:52,339 --> 01:26:53,019 Davin: Yeah. 2194 01:26:53,019 --> 01:26:56,060 ROB: E se o compilador foron para avisar sobre, como, perda de precisión, 2195 01:26:56,060 --> 01:26:58,986 só xogou un int en alí, e entón é bo. 2196 01:26:58,986 --> 01:27:00,398 2197 01:27:00,398 --> 01:27:00,898 Davin: Si? 2198 01:27:00,898 --> 01:27:02,332 2199 01:27:02,332 --> 01:27:04,722 >> ESTUDANTE: Tería o mesma probabilidade de obter, 2200 01:27:04,722 --> 01:27:06,156 como, b ou un [inaudível]? 2201 01:27:06,156 --> 01:27:08,080 2202 01:27:08,080 --> 01:27:10,980 >> ROB: Entón, eu estou realmente é-- wondering-- é randomInt suposto 2203 01:27:10,980 --> 01:27:14,362 para ser un número a partir dun a menos que b? 2204 01:27:14,362 --> 01:27:16,820 Como, se é entre 7 e 10, cales son as posibilidades? 2205 01:27:16,820 --> 01:27:18,454 7, 8 e 9, ou 7, 8, 9, 10? 2206 01:27:18,454 --> 01:27:19,120 Davin: Eu esquezo. 2207 01:27:19,120 --> 01:27:19,880 Sobre o problema set-- 2208 01:27:19,880 --> 01:27:20,570 >> ROB: Eu creo que é 7, 8, 9. 2209 01:27:20,570 --> 01:27:22,785 >> Davin: Ela di especificamente que un de inclusiva e dunha exclusiva. 2210 01:27:22,785 --> 01:27:23,110 >> ROB: Yeah. 2211 01:27:23,110 --> 01:27:23,670 >> Davin: Pero eu don't-- Estou não-- 2212 01:27:23,670 --> 01:27:25,878 >> ROB: Entón, eu creo que estes se non incluído, caso en que, 2213 01:27:25,878 --> 01:27:28,152 hai un xeito probabilidade de 7, 8 e 9. 2214 01:27:28,152 --> 01:27:29,360 Non hai ningunha probabilidade de 10. 2215 01:27:29,360 --> 01:27:31,770 2216 01:27:31,770 --> 01:27:32,270 Davin: Si? 2217 01:27:32,270 --> 01:27:33,395 ALUMNO: Eu teño unha pregunta. 2218 01:27:33,395 --> 01:27:38,090 Queremos establecer unha función retorna non un valor, senón unha matriz. 2219 01:27:38,090 --> 01:27:41,020 Entón cal sería o sintaxe despois volver? 2220 01:27:41,020 --> 01:27:44,604 >> Davin: OK, entón would-- tras o retorno? 2221 01:27:44,604 --> 01:27:47,020 Entón, digamos que declarara un array nalgún lugar alí enriba. 2222 01:27:47,020 --> 01:27:49,708 Entón tería que voltar só nome da matriz. 2223 01:27:49,708 --> 01:27:50,676 >> ALUMNO: OK, grazas. 2224 01:27:50,676 --> 01:27:51,718 Despois é só volver con a-- 2225 01:27:51,718 --> 01:27:52,759 Davin: Oh, espera, desculpe. 2226 01:27:52,759 --> 01:27:54,620 A cuestión era como retornar un array. 2227 01:27:54,620 --> 01:27:56,170 >> ROB: Aínda que non puidese ser unha matriz declarada 2228 01:27:56,170 --> 01:27:57,260 na pila ou algo así. 2229 01:27:57,260 --> 01:27:59,510 Tería que ser algo malloced porque malloc 2230 01:27:59,510 --> 01:28:01,610 é como dar a volta asignación automática de memoria. 2231 01:28:01,610 --> 01:28:02,109 >> Davin: Si. 2232 01:28:02,109 --> 01:28:03,433 2233 01:28:03,433 --> 01:28:04,933 ROB: Como comeza en torno de ámbito local. 2234 01:28:04,933 --> 01:28:09,670 2235 01:28:09,670 --> 01:28:11,550 >> Davin: Pero faría basta voltar a súa nome-- 2236 01:28:11,550 --> 01:28:17,890 >> Estudante: [inaudível] non é un valor, por exemplo, dous números, polo que 2237 01:28:17,890 --> 01:28:18,390 [Inaudível]. 2238 01:28:18,390 --> 01:28:19,590 >> Davin: Non pode volver número múltiple. 2239 01:28:19,590 --> 01:28:20,850 Non pode, como, return-- 2240 01:28:20,850 --> 01:28:23,630 >> ALUMNO: Eu falei sobre o retorno unha matriz ou algo parecido. 2241 01:28:23,630 --> 01:28:26,050 >> Davin: Si, entón a pregunta é Podo voltar varios valores. 2242 01:28:26,050 --> 01:28:27,460 Non podes voltar varios valores. 2243 01:28:27,460 --> 01:28:30,270 Non pode, así, volver a entón b volver ou algo parecido. 2244 01:28:30,270 --> 01:28:32,710 Porque despois de volver, ten volver para fóra da función. 2245 01:28:32,710 --> 01:28:35,790 E, a continuación, a función está feito, e como Rob dixo, está na pila. 2246 01:28:35,790 --> 01:28:38,260 >> Polo tanto, todo o que a memoria só queda retorno para o equipo. 2247 01:28:38,260 --> 01:28:40,025 Todo é esquecido, basicamente. 2248 01:28:40,025 --> 01:28:41,480 2249 01:28:41,480 --> 01:28:44,430 Entón, se quere volver múltiple valores, ten que voltar un array, 2250 01:28:44,430 --> 01:28:45,971 E o xeito de facelo é mallocing. 2251 01:28:45,971 --> 01:28:48,780 E entón volvería x así. 2252 01:28:48,780 --> 01:28:50,280 Basicamente, só devolver o nome. 2253 01:28:50,280 --> 01:28:51,620 E cando volver algo como isto, está 2254 01:28:51,620 --> 01:28:53,200 en realidade, non o retorno do valor. 2255 01:28:53,200 --> 01:28:55,430 >> Entón, digamos que almacenou os valores nunha matriz. 2256 01:28:55,430 --> 01:28:57,910 Non é realmente voltar estes valores. 2257 01:28:57,910 --> 01:29:01,515 Como, se eu volvese un int, eu son retornando realmente copias dos valores. 2258 01:29:01,515 --> 01:29:02,017 2259 01:29:02,017 --> 01:29:03,850 Pero, se eu fose para volver algo como iso, 2260 01:29:03,850 --> 01:29:06,450 Estou volvendo unha referencia a eses valores. 2261 01:29:06,450 --> 01:29:09,090 Entón, eu estou volvendo basicamente un de enderezos de memoria para os valores. 2262 01:29:09,090 --> 01:29:10,079 Será que isto ten sentido? 2263 01:29:10,079 --> 01:29:10,620 Estudante: Si. 2264 01:29:10,620 --> 01:29:11,120 Davin: Nice. 2265 01:29:11,120 --> 01:29:12,760 2266 01:29:12,760 --> 01:29:13,410 Si? 2267 01:29:13,410 --> 01:29:15,430 >> ALUMNO: Cando está usando drand aquí, 2268 01:29:15,430 --> 01:29:17,660 ten que poñer srand antes diso? 2269 01:29:17,660 --> 01:29:20,320 >> Davin: Non, non, eu non penso así. 2270 01:29:20,320 --> 01:29:23,040 >> ROB: Si, entón tes dicir nada sobre srand? 2271 01:29:23,040 --> 01:29:26,900 O nivel de vostedes nunca dicindo srand en todo é só para facer srand de null. 2272 01:29:26,900 --> 01:29:29,350 Entón drand no seu propio traballo. 2273 01:29:29,350 --> 01:29:33,759 E vai sementar automaticamente con o tempo actual, é o que usa. 2274 01:29:33,759 --> 01:29:35,175 2275 01:29:35,175 --> 01:29:35,675 Davin: Si? 2276 01:29:35,675 --> 01:29:40,950 ALUMNO: Vostede [inaudível] cos números? 2277 01:29:40,950 --> 01:29:42,570 Davin: Si, pode. 2278 01:29:42,570 --> 01:29:46,770 Estudante: Entón, podería dicir, como, 4 veces 2. 2279 01:29:46,770 --> 01:29:50,280 A cousa é, non pode asumir logo é un int catro bytes. 2280 01:29:50,280 --> 01:29:51,020 O only-- 2281 01:29:51,020 --> 01:29:53,830 >> Davin: É dicir, para o quiz que poida. 2282 01:29:53,830 --> 01:29:54,830 [Risas] 2283 01:29:54,830 --> 01:29:55,780 >> ROB: Hum, non. 2284 01:29:55,780 --> 01:29:56,780 Davin: Si, si, pode. 2285 01:29:56,780 --> 01:30:00,197 Se preguntar quão grande é un int, non pode ser, como, catro ou oito. 2286 01:30:00,197 --> 01:30:02,030 ROB: Ah, entón se o pregunta é concreto, 2287 01:30:02,030 --> 01:30:04,857 como, se é un problema de codificación, ten que dicir o tamaño do int. 2288 01:30:04,857 --> 01:30:06,690 Se é unha táboa, ou el di cantos bytes, 2289 01:30:06,690 --> 01:30:08,808 non debe cubrir o tamaño enteiros. 2290 01:30:08,808 --> 01:30:11,278 >> ESTUDANTES: [Risas] 2291 01:30:11,278 --> 01:30:18,210 2292 01:30:18,210 --> 01:30:20,580 >> Davin: Certo, entón por que é tamaño do int importante aquí? 2293 01:30:20,580 --> 01:30:23,085 Así como, se nós estamos indo a 32 bits procesador ou algo parecido, 2294 01:30:23,085 --> 01:30:24,300 a continuación, el será catro bytes. 2295 01:30:24,300 --> 01:30:26,342 Pero nalgúns dos máis novos material, que podería ser o que? 2296 01:30:26,342 --> 01:30:27,383 Podería ser oito, non? 2297 01:30:27,383 --> 01:30:30,550 Entón, se só isso- código ríxido catro, logo nalgunhas máquinas, que vai funcionar. 2298 01:30:30,550 --> 01:30:32,180 Algunhas máquinas, que non vai funcionar. 2299 01:30:32,180 --> 01:30:35,270 Pero se o cuestionario que estamos como o grande é un int? 2300 01:30:35,270 --> 01:30:35,770 Pon catro. 2301 01:30:35,770 --> 01:30:38,710 2302 01:30:38,710 --> 01:30:39,210 ROB: Certo. 2303 01:30:39,210 --> 01:30:39,790 Davin: Si? 2304 01:30:39,790 --> 01:30:43,192 Estudante: Entón por que estamos declarando [Inaudível] dentro dunha función, 2305 01:30:43,192 --> 01:30:45,622 debemos poñer 3 dentro desa función? 2306 01:30:45,622 --> 01:30:46,907 Ou podemos usalo fóra? 2307 01:30:46,907 --> 01:30:48,740 Davin: Pode usalo fóra esa función. 2308 01:30:48,740 --> 01:30:49,890 Entón, está pedindo libre. 2309 01:30:49,890 --> 01:30:51,700 >> ESTUDANTE: perder o control de onde [inaudível]. 2310 01:30:51,700 --> 01:30:54,720 >> ROB: Ah, o libre non happen-- iso forma parte da maxia do malloc 2311 01:30:54,720 --> 01:30:57,220 é que non está restrinxida ao ámbito local. 2312 01:30:57,220 --> 01:31:00,700 Ten control total sobre canto tempo as súas variables de vivir. 2313 01:31:00,700 --> 01:31:05,380 Entón chamamos malloc aquí, pode ser unha función completamente separado. 2314 01:31:05,380 --> 01:31:08,670 Pode ser de 10 horas máis tarde que finalmente chame gratis. 2315 01:31:08,670 --> 01:31:11,764 >> Davin: Entón, por exemplo, como unha parella semanas a partir de agora, cando finalmente 2316 01:31:11,764 --> 01:31:13,680 facer o dicionario ortográfico Serie de exercicios, vai 2317 01:31:13,680 --> 01:31:16,410 ter algunha función que crea toneladas de nodos. 2318 01:31:16,410 --> 01:31:18,630 Entón está mallocing toneladas de nós nesta función. 2319 01:31:18,630 --> 01:31:20,670 E tras unha función separada, está 2320 01:31:20,670 --> 01:31:22,440 Vai querer liberar todos eses nós. 2321 01:31:22,440 --> 01:31:25,740 Así, pode literalmente só pasar liberar un punteiro, polo tanto, un enderezo de memoria 2322 01:31:25,740 --> 01:31:26,684 ao que malloced. 2323 01:31:26,684 --> 01:31:27,600 E iso vai estar ben. 2324 01:31:27,600 --> 01:31:29,725 Non ten que liberar, semellantes, na mesma función. 2325 01:31:29,725 --> 01:31:30,449 Si? 2326 01:31:30,449 --> 01:31:36,197 >> Estudante: Entón un malloc variable [inaudível] aí? 2327 01:31:36,197 --> 01:31:37,384 É iso que está dicindo? 2328 01:31:37,384 --> 01:31:38,300 Davin: Agarde, dicir iso? 2329 01:31:38,300 --> 01:31:38,800 Sentímolo. 2330 01:31:38,800 --> 01:31:42,300 >> ALUMNO: Se unha variable malloc pode ser libre en calquera lugar do código, 2331 01:31:42,300 --> 01:31:44,800 logo eles poden acceder en calquera parte do código? 2332 01:31:44,800 --> 01:31:45,800 Pode perder los local? 2333 01:31:45,800 --> 01:31:47,880 >> Davin: Oh, ela preguntou: como, a variable, como-- 2334 01:31:47,880 --> 01:31:51,300 2335 01:31:51,300 --> 01:31:55,510 >> ROB: Entón aínda que ter algún tipo de referencia 2336 01:31:55,510 --> 01:31:57,220 para o bloque do malloc de memoria. 2337 01:31:57,220 --> 01:31:58,540 Entón, aquí, estamos volvendo x. 2338 01:31:58,540 --> 01:31:59,040 ALUMNO: Oh. 2339 01:31:59,040 --> 01:32:01,920 ROB: Si non volver x aquí, e iso era só baleiro, 2340 01:32:01,920 --> 01:32:04,550 entón non teriamos acceso ao o punteiro que foi malloced, 2341 01:32:04,550 --> 01:32:05,920 e é batido memoria. 2342 01:32:05,920 --> 01:32:06,690 >> ALUMNO: Aceptar. 2343 01:32:06,690 --> 01:32:10,010 >> Davin: Así como, imos dicir que ten iso, como, aquí. 2344 01:32:10,010 --> 01:32:10,510 ROB: Non. 2345 01:32:10,510 --> 01:32:13,430 Davin: Na miña principal función, eu non podo só chamar este xe ser, como, OK, 2346 01:32:13,430 --> 01:32:14,645 nesta función, eu fixen iso. 2347 01:32:14,645 --> 01:32:14,960 >> ROB: Certo. 2348 01:32:14,960 --> 01:32:17,790 >> Davin: Entón eu vou chamar x en, como, principal ou algo parecido. 2349 01:32:17,790 --> 01:32:18,540 Non pode facelo. 2350 01:32:18,540 --> 01:32:19,600 Vas para voltar algo. 2351 01:32:19,600 --> 01:32:21,000 Pero que é o que vai volver? 2352 01:32:21,000 --> 01:32:22,130 Vai volver un enderezo de memoria. 2353 01:32:22,130 --> 01:32:25,130 E por retornar a memoria dirección, que se pode acceder noutros lugares. 2354 01:32:25,130 --> 01:32:27,262 2355 01:32:27,262 --> 01:32:28,255 Máis algunha pregunta? 2356 01:32:28,255 --> 01:32:28,755 Si? 2357 01:32:28,755 --> 01:32:31,213 >> ALUMNO: É a función anterior sendo de verificación para [inaudível]? 2358 01:32:31,213 --> 01:32:33,270 2359 01:32:33,270 --> 01:32:35,005 >> Davin: Por que non teño que facer iso? 2360 01:32:35,005 --> 01:32:35,880 Estudante: [inaudível]. 2361 01:32:35,880 --> 01:32:37,755 Davin: Porque é non mallocing nada. 2362 01:32:37,755 --> 01:32:39,640 Por iso é não-- si, é non como un string s. 2363 01:32:39,640 --> 01:32:41,160 É un punteiro a algún lugar. 2364 01:32:41,160 --> 01:32:42,951 Estes son só valores. 2365 01:32:42,951 --> 01:32:43,450 ALUMNO: Aceptar. 2366 01:32:43,450 --> 01:32:43,949 Davin: Yeah. 2367 01:32:43,949 --> 01:32:47,600 2368 01:32:47,600 --> 01:32:48,470 Algo máis? 2369 01:32:48,470 --> 01:32:48,970 ROB: Si? 2370 01:32:48,970 --> 01:32:50,386 ALUMNO: Pero cando [inaudível]? 2371 01:32:50,386 --> 01:32:55,050 2372 01:32:55,050 --> 01:32:58,690 >> ROB: Entón, a fin de liberar o memoria, diriamos aquí. 2373 01:32:58,690 --> 01:33:01,350 Así, x é o noso punteiro a o bloque de memoria. 2374 01:33:01,350 --> 01:33:02,845 Nós liberar ese punteiro. 2375 01:33:02,845 --> 01:33:04,470 E nós non necesariamente facelo aquí. 2376 01:33:04,470 --> 01:33:05,390 Podemos facelo en calquera lugar. 2377 01:33:05,390 --> 01:33:10,400 Pero só chamar gratis en algo que malloc retorna. 2378 01:33:10,400 --> 01:33:12,940 Entón malloc, aquí, volveu o que está sendo almacenado en x. 2379 01:33:12,940 --> 01:33:14,802 Así, podemos chamar gratis en x. 2380 01:33:14,802 --> 01:33:18,730 2381 01:33:18,730 --> 01:33:20,556 Algunha última pregunta? 2382 01:33:20,556 --> 01:33:21,701 >> Davin: Algunha última pregunta? 2383 01:33:21,701 --> 01:33:22,200 Si? 2384 01:33:22,200 --> 01:33:25,152 >> ESTUDANTE: Sentímolo, pero pode volver a explicar por que ía liberar alí? 2385 01:33:25,152 --> 01:33:26,630 Por que [inaudível]? 2386 01:33:26,630 --> 01:33:27,774 >> Davin: Por aquí? 2387 01:33:27,774 --> 01:33:29,109 >> Estudante: Si, como despois. 2388 01:33:29,109 --> 01:33:30,900 Davin: Probablemente Non quero un libre aquí. 2389 01:33:30,900 --> 01:33:31,630 ROB: Probablemente non o faría. 2390 01:33:31,630 --> 01:33:33,060 Davin: Si, que isto non faría nada. 2391 01:33:33,060 --> 01:33:35,220 Este sería, así, crear memoria, facer cousas para el, 2392 01:33:35,220 --> 01:33:37,390 e, a continuación, inmediatamente esquece-lo, si. 2393 01:33:37,390 --> 01:33:39,850 >> ROB: Pero podemos facer, como, aquí por algún motivo. 2394 01:33:39,850 --> 01:33:43,902 Poderiamos dicir int estrela y é igual a matriz de retorno. 2395 01:33:43,902 --> 01:33:47,900 Fai algo con y, quizais imprimir o contido. 2396 01:33:47,900 --> 01:33:49,350 E entón, finalmente, estamos a facer. 2397 01:33:49,350 --> 01:33:50,626 Podemos liberar y. 2398 01:33:50,626 --> 01:33:51,501 Estudante: [inaudível]. 2399 01:33:51,501 --> 01:33:57,839 2400 01:33:57,839 --> 01:33:59,005 Davin: Debo cambiar para abaixo? 2401 01:33:59,005 --> 01:34:00,445 Grazas. 2402 01:34:00,445 --> 01:34:00,945 ROB: Nice. 2403 01:34:00,945 --> 01:34:02,400 2404 01:34:02,400 --> 01:34:03,646 >> Davin: OK, é iso. 2405 01:34:03,646 --> 01:34:04,520 ROB: Todo ben, bo. 2406 01:34:04,520 --> 01:34:05,070 Boa sorte. 2407 01:34:05,070 --> 01:34:06,800 >> Davin: Se ten dúbidas, envíanos. 2408 01:34:06,800 --> 01:34:08,670 Boa sorte. 2409 01:34:08,670 --> 01:34:10,283