1 00:00:00,000 --> 00:00:03,080 >> COLUMNA 1: Acontece que pudermos intercambiar correctamente os valores en dous 2 00:00:03,080 --> 00:00:07,670 variables, pasando-os en un funcionar non por valor ou por copia, pero 3 00:00:07,670 --> 00:00:10,390 por referencia ou por seus enderezos. 4 00:00:10,390 --> 00:00:12,740 Noutras palabras, necesitamos alavancar algo coñecido como un punteiro. 5 00:00:12,740 --> 00:00:15,580 Un punteiro, en realidade, é só o enderezo de algunha variable. 6 00:00:15,580 --> 00:00:19,660 E por iso, se nós fornecen unha función chamada, digamos, intercambiar co enderezo do 7 00:00:19,660 --> 00:00:23,550 unha variable e o enderezo doutro variable, cambio deberá ter poderes para 8 00:00:23,550 --> 00:00:26,090 ir a cada un destes enderezos e, de feito, cambiar o 9 00:00:26,090 --> 00:00:27,360 valores que están alí. 10 00:00:27,360 --> 00:00:28,890 >> A ver isto no contexto. 11 00:00:28,890 --> 00:00:31,360 Imos reimplementar cambio do seguinte xeito. 12 00:00:31,360 --> 00:00:35,810 En primeiro lugar, imos cambiar a non ser un int pero para ser un punteiro para un int ou o 13 00:00:35,810 --> 00:00:36,920 enderezo dun int. 14 00:00:36,920 --> 00:00:40,820 Entón imos facer o mesmo para b, cambiando lo dun int para ser un punteiro a un 15 00:00:40,820 --> 00:00:42,780 int ou o enderezo dun int. 16 00:00:42,780 --> 00:00:45,860 >> Entón, dentro de intercambio, imos aínda declarar tmp para que teñamos unha 17 00:00:45,860 --> 00:00:47,810 lugar temporal para un valor de. 18 00:00:47,810 --> 00:00:52,430 Mais dun valor non é en si, xa que, de novo, un é agora o enderezo 19 00:00:52,430 --> 00:00:53,270 dalgúns int. 20 00:00:53,270 --> 00:00:57,320 Polo tanto, se queremos ir a este enderezo e obter int nese enderezo, temos 21 00:00:57,320 --> 00:01:03,020 desreferenciava este punteiro, tamén por medio de o operador estrela, escribindo unha estrela. 22 00:01:03,020 --> 00:01:05,470 >> Logo, eu non quero cambiar o valor dun. 23 00:01:05,470 --> 00:01:08,770 Quero cambiar o valor en un, tendo en conta, de novo, 24 00:01:08,770 --> 00:01:10,350 que é unha dirección. 25 00:01:10,350 --> 00:01:14,050 Entón, para facelo, eu teño de novo dicir unha estrela queda. 26 00:01:14,050 --> 00:01:18,360 E agora quero poñer no valor que está en b, e non o valor de b, que 27 00:01:18,360 --> 00:01:19,720 tamén é un enderezo. 28 00:01:19,720 --> 00:01:22,280 >> Entón unha vez digo, estrela b. 29 00:01:22,280 --> 00:01:26,690 Entón, na miña última liña, eu teño substituír o que está en dirección b con 30 00:01:26,690 --> 00:01:28,970 o que estaba en un lugar orixinal. 31 00:01:28,970 --> 00:01:32,910 Para iso, fago estrela b queda tmp. 32 00:01:32,910 --> 00:01:34,820 >> Agora, ao final do día, esta función aínda é só 33 00:01:34,820 --> 00:01:35,950 tres liñas de código. 34 00:01:35,950 --> 00:01:39,860 Pero por que é manipular valores por medio do seu enderezo e non o 35 00:01:39,860 --> 00:01:43,700 valores brutos que foron pasados ​​ao función, eu afirmo que intercambio é agora 36 00:01:43,700 --> 00:01:47,670 poderes para cambiar os valores que son pasados ​​a través dos seus enderezos. 37 00:01:47,670 --> 00:01:49,510 >> Pero eu teño que facer un cambio aínda. 38 00:01:49,510 --> 00:01:52,190 Eu non podo máis pasar en x e y si. 39 00:01:52,190 --> 00:01:55,030 Necesito pasar nos enderezos de x e y. 40 00:01:55,030 --> 00:01:58,160 E para facelo, eu teño un pouco diferente top notación arriba. 41 00:01:58,160 --> 00:02:02,510 Quero cambiar x e y pasando en o enderezo de x, indicada por 42 00:02:02,510 --> 00:02:07,190 ampersand x, eo enderezo y, indicará y comercial. 43 00:02:07,190 --> 00:02:10,570 >> Do mesmo xeito, encima agora que eu teño cambiar prototipo da función para 44 00:02:10,570 --> 00:02:14,980 coincidir co cambio que fixen, de xeito que a é, de novo, un punteiro para un int. 45 00:02:14,980 --> 00:02:17,190 b é, de novo, un punteiro para un int. 46 00:02:17,190 --> 00:02:18,770 E agora podo gardar o meu arquivo. 47 00:02:18,770 --> 00:02:20,680 E imos recompilar e executalo. 48 00:02:20,680 --> 00:02:25,330 >> Fai cambio barra intercambio de puntos. 49 00:02:25,330 --> 00:02:29,660 E este tempo, x e y son, de feito agora trocados co fin de que os seus valores non son 50 00:02:29,660 --> 00:02:31,950 1 e 2, pero 2 e 1. 51 00:02:31,950 --> 00:02:34,900