1 00:00:00,000 --> 00:00:03,080 >> ALTAVOZ 1: Resulta que podamos intercambiar con éxito los valores de dos 2 00:00:03,080 --> 00:00:07,670 las variables de pasarlos en un funcionar, no por valor o por copia, pero 3 00:00:07,670 --> 00:00:10,390 por referencia o por sus direcciones. 4 00:00:10,390 --> 00:00:12,740 En otras palabras, tenemos que aprovechar algo conocido como un puntero. 5 00:00:12,740 --> 00:00:15,580 Un puntero, en realidad, es sólo el dirección de una variable. 6 00:00:15,580 --> 00:00:19,660 Y así, si proporcionamos una función llamada, por ejemplo, cambiar la dirección de 7 00:00:19,660 --> 00:00:23,550 una variable y la dirección de otro variable de intercambio debe estar facultada para 8 00:00:23,550 --> 00:00:26,090 ir a cada una de esas direcciones y, de hecho cambiar la 9 00:00:26,090 --> 00:00:27,360 valores que están ahí. 10 00:00:27,360 --> 00:00:28,890 >> Veamos esto en contexto. 11 00:00:28,890 --> 00:00:31,360 Vamos a volver a implementar de intercambio como sigue. 12 00:00:31,360 --> 00:00:35,810 En primer lugar, vamos a cambiar un no ser un int pero para ser un puntero a un int o el 13 00:00:35,810 --> 00:00:36,920 dirección de un int. 14 00:00:36,920 --> 00:00:40,820 Entonces vamos a hacer lo mismo para b, el cambio de desde un int que es un puntero a una 15 00:00:40,820 --> 00:00:42,780 int o la dirección de un int. 16 00:00:42,780 --> 00:00:45,860 >> Entonces dentro de swap, vamos todavía declarar tmp para que tengamos una 17 00:00:45,860 --> 00:00:47,810 lugar temporal para un valor de. 18 00:00:47,810 --> 00:00:52,430 Pero de un valor no es un sí, porque, de nuevo, a es ahora la dirección 19 00:00:52,430 --> 00:00:53,270 de algunos int. 20 00:00:53,270 --> 00:00:57,320 Así que si queremos ir a esa dirección y conseguir int en esa dirección, tenemos 21 00:00:57,320 --> 00:01:03,020 eliminar la referencia de este puntero, también por medio de el operador de la estrella, estrella de una escritura. 22 00:01:03,020 --> 00:01:05,470 >> Después, yo no quiero cambiar el valor de a. 23 00:01:05,470 --> 00:01:08,770 Quiero cambiar el valor en una, teniendo en cuenta, de nuevo, 24 00:01:08,770 --> 00:01:10,350 que una es una dirección. 25 00:01:10,350 --> 00:01:14,050 Así que para hacerlo, yo necesito de nuevo decir una estrella consigue. 26 00:01:14,050 --> 00:01:18,360 Y ahora quiero poner en el valor eso es en b, no el valor de b, que 27 00:01:18,360 --> 00:01:19,720 También es una dirección. 28 00:01:19,720 --> 00:01:22,280 >> Así que de nuevo os digo, estrella b. 29 00:01:22,280 --> 00:01:26,690 Entonces, en mi última línea, tengo que sobreescribir lo que está en la dirección b con 30 00:01:26,690 --> 00:01:28,970 lo que estaba en un lugar original. 31 00:01:28,970 --> 00:01:32,910 Para hacer eso, lo hago estrellas b consigue tmp. 32 00:01:32,910 --> 00:01:34,820 >> Ahora, al final del día, esta función sigue siendo sólo 33 00:01:34,820 --> 00:01:35,950 tres líneas de código. 34 00:01:35,950 --> 00:01:39,860 Pero debido a que es la manipulación de los valores por medio de su dirección y no la 35 00:01:39,860 --> 00:01:43,700 valores brutos que se aprobaron en el función, afirmo que intercambio es ahora 36 00:01:43,700 --> 00:01:47,670 facultado para modificar los valores que se pasan a través de sus direcciones. 37 00:01:47,670 --> 00:01:49,510 >> Pero tengo que hacer un cambio aún. 38 00:01:49,510 --> 00:01:52,190 Yo ya no puedo pasar en X e Y sí mismos. 39 00:01:52,190 --> 00:01:55,030 Tengo que pasar en las direcciones de x e y. 40 00:01:55,030 --> 00:01:58,160 Y para hacer eso, necesito un poco diferente cima notación arriba. 41 00:01:58,160 --> 00:02:02,510 Quiero cambiar x e y pasándole la dirección de x, indicado por 42 00:02:02,510 --> 00:02:07,190 signo x, y la dirección de Y, indicado por el signo y. 43 00:02:07,190 --> 00:02:10,570 >> Del mismo modo, en lo alto ahora qué tengo que cambiar el prototipo de la función de 44 00:02:10,570 --> 00:02:14,980 coincidir con el cambio que he hecho, por lo que a es, de nuevo, un puntero a un int. 45 00:02:14,980 --> 00:02:17,190 b es, de nuevo, un puntero a un int. 46 00:02:17,190 --> 00:02:18,770 Y ahora puedo guardar mi archivo. 47 00:02:18,770 --> 00:02:20,680 Y vamos a volver a compilar y ejecutarlo. 48 00:02:20,680 --> 00:02:25,330 >> Hacer intercambio slash dot swap. 49 00:02:25,330 --> 00:02:29,660 Y esta vez, x e y son de hecho ahora intercambiado de manera que sus valores no son 50 00:02:29,660 --> 00:02:31,950 1 y 2, pero 2 y 1. 51 00:02:31,950 --> 00:02:34,900