1 00:00:00,000 --> 00:00:03,388 >> [REPRODUCCIÓN DE MÚSICA] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: De acuerdo. 4 00:00:06,020 --> 00:00:07,680 Trabajar con una sola las variables es bastante divertido. 5 00:00:07,680 --> 00:00:09,500 Pero lo que si queremos trabajar con una gran cantidad de variables, 6 00:00:09,500 --> 00:00:12,760 pero no quiero tener un montón de diferentes nombres volando alrededor nuestro código? 7 00:00:12,760 --> 00:00:15,980 En este caso, las matrices son va a venir en muy práctico. 8 00:00:15,980 --> 00:00:19,510 Las matrices son un dato realmente fundamental estructura para cualquier lenguaje de programación 9 00:00:19,510 --> 00:00:20,260 que va a utilizar. 10 00:00:20,260 --> 00:00:24,450 Y son muy, muy útil, sobre todo, como veremos, en el CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Utilizamos matrices para mantener valores del mismo tipo de datos 12 00:00:27,870 --> 00:00:29,830 en ubicaciones de memoria contiguas. 13 00:00:29,830 --> 00:00:32,430 Es decir, es una de manera que podemos agrupar 14 00:00:32,430 --> 00:00:35,430 un montón de números enteros juntos en memoria o un grupo de caracteres 15 00:00:35,430 --> 00:00:38,270 o flota en la memoria de verdad cerrar juntos y trabajar 16 00:00:38,270 --> 00:00:41,930 con ellos sin tener que dar a cada de un nombre propio, único, que puede 17 00:00:41,930 --> 00:00:44,500 volverse un problema después de un rato. 18 00:00:44,500 --> 00:00:48,130 >> Ahora, una manera de analogía entre matrices es pensar en su poste local 19 00:00:48,130 --> 00:00:49,000 el cargo por un segundo. 20 00:00:49,000 --> 00:00:51,820 Así que paso lejos de la programación y cierra los ojos 21 00:00:51,820 --> 00:00:54,120 y visualizar en su mente su oficina de correos local. 22 00:00:54,120 --> 00:00:57,160 Por lo general, en la mayoría de post oficinas, hay un gran banco 23 00:00:57,160 --> 00:01:00,490 a apartados de correos en la pared. 24 00:01:00,490 --> 00:01:03,510 >> Una matriz es un bloque gigante de memoria contigua, 25 00:01:03,510 --> 00:01:06,120 de la misma manera que un correo electrónico banco en su oficina de correos 26 00:01:06,120 --> 00:01:11,230 es un gran espacio en el pared de la oficina de correos. 27 00:01:11,230 --> 00:01:15,750 Las matrices se han dividido en pequeñas, idénticamente bloques de tamaño del espacio, 28 00:01:15,750 --> 00:01:19,930 cada uno de los cuales se llama un elemento, en de la misma manera que la pared del puesto 29 00:01:19,930 --> 00:01:23,840 la oficina se ha dividido en pequeñas, idénticamente bloques de tamaño del espacio, 30 00:01:23,840 --> 00:01:27,560 que llamamos un apartado de correos. 31 00:01:27,560 --> 00:01:31,650 Cada elemento de la matriz puede almacenar una cierta cantidad de datos, 32 00:01:31,650 --> 00:01:37,540 así como cada apartado de correos es capaz para mantener una cierta cantidad de correo. 33 00:01:37,540 --> 00:01:41,540 >> ¿Qué puede ser almacenado en cada elemento de la matriz es variables de los mismos datos 34 00:01:41,540 --> 00:01:45,300 tipo, tal como int o char, simplemente como en su casilla de correo, 35 00:01:45,300 --> 00:01:47,300 sólo se puede encajar cosas de un tipo similar, 36 00:01:47,300 --> 00:01:50,430 tales como cartas o paquetes pequeños. 37 00:01:50,430 --> 00:01:55,050 Por último, podemos acceder a cada elemento de la la matriz directamente por número de índice, 38 00:01:55,050 --> 00:01:59,770 al igual que podemos acceder a nuestra oficina de correos boxear por conocer su número de buzón. 39 00:01:59,770 --> 00:02:02,750 Esperemos que la analogía le ayuda a obtener la cabeza 40 00:02:02,750 --> 00:02:05,540 en torno a la idea de matrices por analogías a otra cosa 41 00:02:05,540 --> 00:02:08,400 que son, probablemente, ya familiarizados. 42 00:02:08,400 --> 00:02:13,182 >> En C, los elementos de una matriz son indexadas a partir de 0, no desde 1. 43 00:02:13,182 --> 00:02:14,390 Y esto es realmente importante. 44 00:02:14,390 --> 00:02:18,530 Y de hecho, es por eso que, en el CS 50, y por qué los informáticos frecuentes 45 00:02:18,530 --> 00:02:22,150 contará a partir de 0, es debido a la gran variedad de C 46 00:02:22,150 --> 00:02:24,660 indexación, que siempre comienza en 0. 47 00:02:24,660 --> 00:02:28,730 Así que si una serie se compone de n elementos, el primer elemento de dicha matriz 48 00:02:28,730 --> 00:02:32,960 se encuentra en el índice 0, y el último elemento de la matriz 49 00:02:32,960 --> 00:02:36,610 se encuentra en el índice n menos 1. 50 00:02:36,610 --> 00:02:43,160 Una vez más, si hay n elementos en nuestra matriz, el último índice es n menos 1. 51 00:02:43,160 --> 00:02:46,820 >> Así que si nuestra matriz tiene 50 elementos, los primer elemento se encuentra en el índice 0, 52 00:02:46,820 --> 00:02:51,060 y el último elemento se encuentra en el índice 49. 53 00:02:51,060 --> 00:02:53,940 Desafortunadamente, o afortunadamente, dependiendo de su perspectiva, 54 00:02:53,940 --> 00:02:56,170 C es muy indulgente aquí. 55 00:02:56,170 --> 00:02:59,480 No le impedirá salir de los límites de la matriz. 56 00:02:59,480 --> 00:03:03,080 Usted podría tener acceso al menos 3 elemento de la matriz 57 00:03:03,080 --> 00:03:07,400 o el elemento 59 de la matriz, si su array sólo cuenta con 50 elementos. 58 00:03:07,400 --> 00:03:11,060 No detendrá su programa de compilar, pero en tiempo de ejecución, 59 00:03:11,060 --> 00:03:14,350 puede encontrarse con un fallo de segmentación temida 60 00:03:14,350 --> 00:03:17,460 si usted comienza a acceder a la memoria que está fuera de los límites de lo que 61 00:03:17,460 --> 00:03:19,260 que pidió su programa para darle. 62 00:03:19,260 --> 00:03:21,250 Así que ten cuidado. 63 00:03:21,250 --> 00:03:23,120 >> ¿Qué hace un array declaración parece? 64 00:03:23,120 --> 00:03:26,940 ¿Cómo codificar una matriz en existencia como codificamos cualquier otra variable? 65 00:03:26,940 --> 00:03:31,250 Hay tres partes en una matriz declaration-- un tipo, un nombre, 66 00:03:31,250 --> 00:03:31,880 y un tamaño. 67 00:03:31,880 --> 00:03:34,088 Esto es muy similar a una declaración de variables, que 68 00:03:34,088 --> 00:03:36,970 es sólo un tipo y un nombre, siendo el elemento de tamaño 69 00:03:36,970 --> 00:03:39,860 el caso especial de una matriz, porque estamos recibiendo un montón de ellos 70 00:03:39,860 --> 00:03:41,830 al mismo tiempo. 71 00:03:41,830 --> 00:03:45,560 >> Así que el tipo es qué tipo de variable que quiere cada elemento de la matriz sea. 72 00:03:45,560 --> 00:03:47,150 No quiero que una matriz de enteros? 73 00:03:47,150 --> 00:03:49,010 Entonces, el tipo de datos debe ser int. 74 00:03:49,010 --> 00:03:51,760 ¿Quieres que sea un serie de dobles o flotadores? 75 00:03:51,760 --> 00:03:54,545 El tipo de datos debe ser el doble o flotar. 76 00:03:54,545 --> 00:03:56,420 El nombre es lo que quiere llamar a su matriz. 77 00:03:56,420 --> 00:04:00,970 ¿Qué quieres para nombrar este gigante banco de números enteros o flotadores o caracteres 78 00:04:00,970 --> 00:04:03,250 o dobles, o lo que usted tiene? 79 00:04:03,250 --> 00:04:04,700 ¿Qué quieres llamarlo? 80 00:04:04,700 --> 00:04:06,110 Explica por sí mismo bonito. 81 00:04:06,110 --> 00:04:08,610 >> Por último, el tamaño, que va dentro de corchetes, 82 00:04:08,610 --> 00:04:12,180 es el número de elementos que lo haría como la matriz para contener. 83 00:04:12,180 --> 00:04:13,530 ¿Cuántos números enteros es lo que quieres? 84 00:04:13,530 --> 00:04:15,570 ¿Cuántas carrozas es lo que quieres? 85 00:04:15,570 --> 00:04:19,070 >> Así, por ejemplo, int calificaciones de los estudiantes 40. 86 00:04:19,070 --> 00:04:26,020 Esto declara una matriz llamada Estudiante calificaciones, que consta de 40 números enteros. 87 00:04:26,020 --> 00:04:28,180 Explica por sí mismo bonito, espero. 88 00:04:28,180 --> 00:04:29,330 He aquí otro ejemplo. 89 00:04:29,330 --> 00:04:31,560 Precios del menú dobles 8. 90 00:04:31,560 --> 00:04:34,610 Esto crea una matriz llamada Los precios del menú, que consiste 91 00:04:34,610 --> 00:04:38,300 espacio en la memoria durante ocho dobles. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Si usted piensa en cada elemento de una matriz de tipo de tipo de datos, 94 00:04:45,750 --> 00:04:49,860 Así, por ejemplo, un único elemento de una matriz de tipo int, de la misma manera que 95 00:04:49,860 --> 00:04:52,770 pensaría en cualquier otro variable de tipo int, 96 00:04:52,770 --> 00:04:56,440 todas las operaciones familiares que nos discutido previamente en las Operaciones 97 00:04:56,440 --> 00:04:58,270 vídeo tendrá sentido. 98 00:04:58,270 --> 00:05:01,620 Así que aquí, podríamos declarar una matriz de Booleans llamados Truthtable, 99 00:05:01,620 --> 00:05:05,590 que consiste en piezas para 10 Booleanos. 100 00:05:05,590 --> 00:05:09,650 >> Y entonces, al igual que pudimos asignar un valor a cualquier otra variable de tipo 101 00:05:09,650 --> 00:05:13,470 Boole, podríamos decir algo como Truthtable corchete 102 00:05:13,470 --> 00:05:18,040 2, que es la forma indicada, qué elemento de la tabla de verdad? 103 00:05:18,040 --> 00:05:20,350 El tercer elemento de la tabla de verdad, porque recuerden, 104 00:05:20,350 --> 00:05:21,800 estamos contando desde 0. 105 00:05:21,800 --> 00:05:25,690 Así que esa es la forma en que indicamos el tercer elemento de la tabla de verdad. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 es igual a falsa, al igual que podríamos declare-- 107 00:05:28,680 --> 00:05:33,560 o podríamos ceder, más bien, cualquier Variable de tipo booleano es falso. 108 00:05:33,560 --> 00:05:35,050 >> También podemos utilizarlo en condiciones. 109 00:05:35,050 --> 00:05:39,000 si (truthtable 7 == true), es decir, 110 00:05:39,000 --> 00:05:42,370 si el octavo elemento de Truthtable es cierto, 111 00:05:42,370 --> 00:05:46,760 tal vez queremos imprimir un mensaje para el usuario, printf ("TRUE! n") ;. 112 00:05:46,760 --> 00:05:50,290 Eso nos hace decir Truthtable 10 es igual a la verdadera, ¿no? 113 00:05:50,290 --> 00:05:53,590 Bueno, yo puedo, pero es bastante peligroso, porque recuerden, 114 00:05:53,590 --> 00:05:56,260 tenemos un arreglo de 10 Booleanos. 115 00:05:56,260 --> 00:06:02,340 Así que el mayor índice de que el compilador nos ha dado es 9. 116 00:06:02,340 --> 00:06:06,010 >> Este programa se compilará, pero si algo más en la memoria 117 00:06:06,010 --> 00:06:09,110 existe donde nos haría esperar Truthtable 10 para ir, 118 00:06:09,110 --> 00:06:13,980 podríamos sufrir un fallo de segmentación. Nosotros podría salirse con la suya, pero en general, 119 00:06:13,980 --> 00:06:14,710 bastante peligroso. 120 00:06:14,710 --> 00:06:19,759 Así que lo que estoy haciendo aquí es C jurídica, pero no necesariamente la mejor jugada. 121 00:06:19,759 --> 00:06:22,300 Ahora, cuando se declara y inicializar una matriz de forma simultánea, 122 00:06:22,300 --> 00:06:23,960 hay realmente una bonita sintaxis especial que 123 00:06:23,960 --> 00:06:26,250 puede utilizar para llenar la matriz con sus valores iniciales. 124 00:06:26,250 --> 00:06:30,130 Se puede conseguir engorroso declarar una matriz de tamaño 100, 125 00:06:30,130 --> 00:06:33,430 y luego tengo que decir, el elemento 0 es igual a esto; elemento 1 es igual a esto; 126 00:06:33,430 --> 00:06:34,850 elemento 2 es igual que. 127 00:06:34,850 --> 00:06:36,370 ¿Qué es el punto, ¿no? 128 00:06:36,370 --> 00:06:39,470 >> Si se trata de una pequeña matriz, podría hacer algo como esto. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 es igual abierta corchete y luego coma 130 00:06:44,360 --> 00:06:48,060 separar la lista de elementos que usted quiere poner en la matriz. 131 00:06:48,060 --> 00:06:50,520 A continuación, cierre coma corchete. 132 00:06:50,520 --> 00:06:53,910 Esto crea una gran variedad de tamaño de tres llamados Truthtable, 133 00:06:53,910 --> 00:06:56,090 con elementos falsos, verdadero y cierto. 134 00:06:56,090 --> 00:06:59,270 Y de hecho, la creación de instancias sintaxis que tengo aquí es 135 00:06:59,270 --> 00:07:03,350 exactamente lo mismo que hacer la sintaxis elemento individual a continuación. 136 00:07:03,350 --> 00:07:09,380 Estas dos formas de codificación haría producir la misma gama exacta. 137 00:07:09,380 --> 00:07:11,740 >> Del mismo modo, podríamos iterar sobre todo de los elementos 138 00:07:11,740 --> 00:07:15,400 de una matriz mediante un bucle, que, a su De hecho, es un muy fuertemente recomendado 139 00:07:15,400 --> 00:07:16,790 en casa de ejercicios. 140 00:07:16,790 --> 00:07:20,720 ¿Cómo se crea una matriz de 100 números enteros, donde 141 00:07:20,720 --> 00:07:23,477 cada elemento de la matriz es su índice? 142 00:07:23,477 --> 00:07:26,560 Así, por ejemplo, tenemos una gama de 100 números enteros, y en el primer elemento, 143 00:07:26,560 --> 00:07:27,790 queremos poner 0. 144 00:07:27,790 --> 00:07:29,810 En el segundo elemento, queremos poner 1. 145 00:07:29,810 --> 00:07:33,319 En el tercer elemento, queremos poner 2; Y así sucesivamente y así sucesivamente. 146 00:07:33,319 --> 00:07:35,360 Esa es una muy buena en casa de ejercicios para hacer eso. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Aquí, no se ve como también ha cambiado mucho. 149 00:07:40,220 --> 00:07:44,170 Pero nótese que entre el corchetes, esta vez, 150 00:07:44,170 --> 00:07:45,830 De hecho, he omitido el número. 151 00:07:45,830 --> 00:07:48,000 Si está utilizando este mismo instanciación especial 152 00:07:48,000 --> 00:07:50,380 sintaxis para crear una matriz, que en realidad no lo hace 153 00:07:50,380 --> 00:07:53,491 necesario indicar el tamaño de la matriz de antemano. 154 00:07:53,491 --> 00:07:55,740 El compilador es lo suficientemente inteligente saber que en realidad 155 00:07:55,740 --> 00:07:58,980 quieren una matriz de tamaño 3, porque usted pone tres elementos 156 00:07:58,980 --> 00:08:00,640 a la derecha del signo igual. 157 00:08:00,640 --> 00:08:04,140 Si puso cuatro, tendría que dada una tabla de verdad del tamaño de cuatro; 158 00:08:04,140 --> 00:08:06,270 Y así sucesivamente y así sucesivamente. 159 00:08:06,270 --> 00:08:09,380 >> Las matrices no están restringidas a un solo dimensión, que está muy bien. 160 00:08:09,380 --> 00:08:12,000 En realidad puede tener hasta especificadores secundarios como desee. 161 00:08:12,000 --> 00:08:16,470 Así por ejemplo, si desea crear un tablero para el juego acorazado, que, 162 00:08:16,470 --> 00:08:20,910 si alguna vez jugado, es un juego que es jugado con clavijas en el 10 por 10 rejilla, 163 00:08:20,910 --> 00:08:22,450 podría crear una serie como esta. 164 00:08:22,450 --> 00:08:26,030 Se podría decir Bool acorazado corchete 10 165 00:08:26,030 --> 00:08:29,590 cuadrado cerrado corchete soporte de 10 cierra corchetes. 166 00:08:29,590 --> 00:08:32,710 >> Y luego, se puede optar por interpretar esto en su mente como un 10 167 00:08:32,710 --> 00:08:35,576 por 10 rejilla de celdas. 168 00:08:35,576 --> 00:08:37,409 Ahora, de hecho, en la memoria, lo que realmente hace justamente 169 00:08:37,409 --> 00:08:42,440 siendo un elemento 100, dimensional única. 170 00:08:42,440 --> 00:08:46,070 Y esto, de hecho, va para si tener tres dimensiones o cuatro o cinco. 171 00:08:46,070 --> 00:08:49,420 En realidad, sólo hace multiplicar toda la indices-- 172 00:08:49,420 --> 00:08:51,130 o la totalidad del tamaño specifiers-- juntos, 173 00:08:51,130 --> 00:08:53,480 y que acaba de obtener un unidimensional array de ese tamaño. 174 00:08:53,480 --> 00:08:57,090 >> Pero en términos de organización y la visualización y la percepción humana, 175 00:08:57,090 --> 00:08:59,240 puede ser mucho más fácil para trabajar con una cuadrícula 176 00:08:59,240 --> 00:09:02,980 si usted está trabajando en un juego como Tic-tac-dedo del pie o del acorazado, 177 00:09:02,980 --> 00:09:05,179 o algo asi. 178 00:09:05,179 --> 00:09:06,970 Es una gran abstracción, en lugar de tener 179 00:09:06,970 --> 00:09:09,340 pensar en un Tic-tac-toe tablero como una línea de nueve años 180 00:09:09,340 --> 00:09:13,810 cuadrados o un tablero acorazado como una línea de 100 plazas. 181 00:09:13,810 --> 00:09:16,010 Un 10 por 10 de rejilla o de tres A las tres de la rejilla es, probablemente, 182 00:09:16,010 --> 00:09:17,225 mucho más fácil de percibir. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Ahora, algo realmente importante acerca de las matrices. 185 00:09:22,280 --> 00:09:25,950 Podemos tratar a cada individuo elemento de la matriz como una variable. 186 00:09:25,950 --> 00:09:27,700 Vimos que antes cuando estábamos asignando 187 00:09:27,700 --> 00:09:32,240 el valor Fiel a ciertos Booleans o ponerlas a prueba en los condicionales. 188 00:09:32,240 --> 00:09:35,960 Pero no podemos tratar todo arrays sí mismos como variables. 189 00:09:35,960 --> 00:09:41,760 No podemos, por ejemplo, asignar una matriz a otra matriz mediante la asignación 190 00:09:41,760 --> 00:09:42,930 operador. 191 00:09:42,930 --> 00:09:44,640 No es C. legal 192 00:09:44,640 --> 00:09:47,920 >> Si queremos, por ejemplo-- lo estaríamos haciendo en ese ejemplo 193 00:09:47,920 --> 00:09:50,200 sería copiar una matriz en otra. 194 00:09:50,200 --> 00:09:53,810 Si queremos hacer eso, que en realidad necesitará utilizar un bucle para copiar 195 00:09:53,810 --> 00:09:56,550 cada elemento individual de una en una. 196 00:09:56,550 --> 00:09:58,700 Sé que es un poco lento. 197 00:09:58,700 --> 00:10:04,022 >> Así, por ejemplo, si tuviéramos este par de líneas de código, funcionaría esto? 198 00:10:04,022 --> 00:10:05,230 Bueno, no, no lo haría, ¿no? 199 00:10:05,230 --> 00:10:07,860 Debido a que estamos tratando para asignar los alimentos a la barra. 200 00:10:07,860 --> 00:10:09,860 Eso no va a trabajar, porque es una matriz, 201 00:10:09,860 --> 00:10:13,130 y que acabamos de describir que eso no es legal C. 202 00:10:13,130 --> 00:10:15,580 >> En cambio, si queremos copiar el contenido de los alimentos 203 00:10:15,580 --> 00:10:18,070 en la barra, que es lo que que estamos tratando de hacer aquí, 204 00:10:18,070 --> 00:10:19,970 necesitaríamos una sintaxis como esta. 205 00:10:19,970 --> 00:10:24,170 Tenemos un bucle for que va de J es igual a 0 hasta 5, 206 00:10:24,170 --> 00:10:28,390 y incrementamos J en cada iteración de el lazo y elementos de asignar el estilo. 207 00:10:28,390 --> 00:10:33,360 Esto resultaría en bar también ser uno, dos, tres, cuatro, cinco, 208 00:10:33,360 --> 00:10:36,730 pero tenemos que hacerlo esta misma manera lenta elemento por elemento, 209 00:10:36,730 --> 00:10:40,009 en lugar de con sólo la copia de toda la matriz. 210 00:10:40,009 --> 00:10:42,050 En otra programación idiomas, las más modernas, 211 00:10:42,050 --> 00:10:45,610 puede, de hecho, hacer justo así de simple es igual a la sintaxis. 212 00:10:45,610 --> 00:10:49,620 Pero C, por desgracia, estamos no se les permite hacer eso. 213 00:10:49,620 --> 00:10:52,026 >> Ahora, hay otra cosa que quiero mencionar 214 00:10:52,026 --> 00:10:54,650 acerca de las matrices que pueden ser un poco poco complicado la primera vez que 215 00:10:54,650 --> 00:10:55,990 trabajar con ellos. 216 00:10:55,990 --> 00:10:59,860 Hemos discutido en un video sobre el alcance variable 217 00:10:59,860 --> 00:11:04,940 que la mayoría de las variables en C, cuando se llama en funciones, se pasan por valor. 218 00:11:04,940 --> 00:11:08,620 ¿Te acuerdas de lo que significa para pasar algo de valor? 219 00:11:08,620 --> 00:11:12,570 Significa que estamos haciendo una copia de la variable que está siendo aprobada en. 220 00:11:12,570 --> 00:11:16,290 La función destinatario de la llamada, la función de eso está recibiendo la variable, 221 00:11:16,290 --> 00:11:17,730 no recibe la propia variable. 222 00:11:17,730 --> 00:11:20,850 Consigue su propio local, copia de la misma para trabajar. 223 00:11:20,850 --> 00:11:24,070 >> Matrices, por supuesto, lo hacen No seguir esta regla. 224 00:11:24,070 --> 00:11:27,600 Más bien, lo que llamamos presente se pasa por referencia. 225 00:11:27,600 --> 00:11:31,360 El destinatario de la llamada realidad ¿Recibe la matriz. 226 00:11:31,360 --> 00:11:34,207 No recibe su propia copia local de la misma. 227 00:11:34,207 --> 00:11:36,040 Y si lo piensas él, esto tiene sentido. 228 00:11:36,040 --> 00:11:39,750 Si las matrices son realmente grande, toma mucho tiempo y esfuerzo 229 00:11:39,750 --> 00:11:44,470 para hacer una copia de una serie de 100 o 1.000 o 10.000 elementos, 230 00:11:44,470 --> 00:11:48,290 que no vale la pena para un funcionar para recibir una copia de la misma, 231 00:11:48,290 --> 00:11:51,037 hacer un trabajo con él, y luego solo se puede hacer con la copia; 232 00:11:51,037 --> 00:11:53,120 no necesita tener que dando vueltas más. 233 00:11:53,120 --> 00:11:54,710 >> Debido a que las matrices son algunos voluminoso y engorroso, 234 00:11:54,710 --> 00:11:56,001 acabamos de pasar por referencia. 235 00:11:56,001 --> 00:12:01,210 Sólo confiamos en que la función que, no romper nada. 236 00:12:01,210 --> 00:12:03,010 Así se pone de hecho la matriz. 237 00:12:03,010 --> 00:12:05,290 No puede ser su propia copia local de la misma. 238 00:12:05,290 --> 00:12:07,170 >> Entonces, qué significa esto, entonces, cuando el destinatario de la llamada 239 00:12:07,170 --> 00:12:08,970 manipula elementos de la matriz? 240 00:12:08,970 --> 00:12:10,780 ¿Lo que pasa? 241 00:12:10,780 --> 00:12:13,210 Por ahora, vamos a glosamos sobre qué exactamente esto 242 00:12:13,210 --> 00:12:15,320 sucede, por qué matrices se pasan por referencia 243 00:12:15,320 --> 00:12:17,810 y todo lo demás se pasa por valor. 244 00:12:17,810 --> 00:12:20,470 Pero te prometo, lo haremos devolver y le dará la respuesta 245 00:12:20,470 --> 00:12:23,750 a esto en un video más tarde. 246 00:12:23,750 --> 00:12:28,110 >> He aquí un ejercicio más para usted antes de terminar las cosas en matrices. 247 00:12:28,110 --> 00:12:31,400 El montón de código aquí, eso es no particularmente buen estilo, 248 00:12:31,400 --> 00:12:33,400 simplemente voy a hacer esta advertencia. 249 00:12:33,400 --> 00:12:36,660 No hay comentarios por aquí, que es bastante mala forma. 250 00:12:36,660 --> 00:12:39,750 Pero es sólo porque yo quería ser capaz de adaptarse a todo en la pantalla. 251 00:12:39,750 --> 00:12:44,360 >> En la parte superior, se puede ver que tengo dos declaraciones de funciones para la matriz de conjuntos 252 00:12:44,360 --> 00:12:45,820 y establecer int. 253 00:12:45,820 --> 00:12:49,680 Set variedad aparentemente toma una matriz de cuatro enteros como su entrada. 254 00:12:49,680 --> 00:12:52,767 Y conjunto int aparentemente toma un solo entero como su entrada. 255 00:12:52,767 --> 00:12:54,350 Pero dos de ellos no tienen una salida. 256 00:12:54,350 --> 00:12:57,689 La salida, el regreso escriba, de cada uno es nula. 257 00:12:57,689 --> 00:12:59,480 En principal, tenemos una par de líneas de código. 258 00:12:59,480 --> 00:13:02,730 Declaramos una variable entera denominado A y asignarle el valor 10. 259 00:13:02,730 --> 00:13:07,080 Declaramos una matriz de cuatro enteros llamado B y asignar los elementos 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, y 3, respectivamente. 261 00:13:08,730 --> 00:13:12,190 Entonces, tenemos una llamada a establecer int y un llamado para establecer matriz. 262 00:13:12,190 --> 00:13:15,910 Las definiciones de la matriz de conjuntos y el conjunto de int están allá abajo, en la parte inferior. 263 00:13:15,910 --> 00:13:17,640 >> Y así, una vez más, le pido a la pregunta. 264 00:13:17,640 --> 00:13:20,770 Lo que se imprime aquí al final de Main? 265 00:13:20,770 --> 00:13:23,020 Hay una col impresión. estoy impresión de dos enteros. 266 00:13:23,020 --> 00:13:28,010 Estoy imprimir el contenido de A y el contenido de B cuadrado soporte de 0. 267 00:13:28,010 --> 00:13:29,880 Pausa el video aquí y tomar un minuto. 268 00:13:29,880 --> 00:13:35,482 ¿Puedes imaginar lo que esto función imprimirá al final? 269 00:13:35,482 --> 00:13:38,190 Esperemos que, si usted recuerda la distinción entre pasar por valor 270 00:13:38,190 --> 00:13:41,680 y que pasa por referencia, esta problema no era demasiado difícil para ti. 271 00:13:41,680 --> 00:13:44,130 Y la respuesta que lo haría he encontrado es esto. 272 00:13:44,130 --> 00:13:47,660 Si usted no está realmente seguro en cuanto a ¿por qué ese es el caso, tomar un segundo, 273 00:13:47,660 --> 00:13:50,620 volver, reviso lo que yo era sólo discutir acerca de pasar arrays 274 00:13:50,620 --> 00:13:53,450 por referencia, que pasa frente otras variables de valor, 275 00:13:53,450 --> 00:13:56,680 y es de esperar, que va a hacer un poco más de sentido. 276 00:13:56,680 --> 00:13:59,760 >> Soy Doug Lloyd, y esto es CS50. 277 00:13:59,760 --> 00:14:01,467