1 00:00:00,000 --> 00:00:03,080 >> ALTAVEU 1: Resulta que puguem intercanviar amb èxit els valors de dues 2 00:00:03,080 --> 00:00:07,670 les variables d'passar en un funcionar, no per valor o per còpia, però 3 00:00:07,670 --> 00:00:10,390 per referència o per les seves direccions. 4 00:00:10,390 --> 00:00:12,740 En altres paraules, hem d'aprofitar alguna cosa conegut com un punter. 5 00:00:12,740 --> 00:00:15,580 Un punter, en realitat, és només el direcció d'una variable. 6 00:00:15,580 --> 00:00:19,660 I així, si proporcionem una funció anomenada, per exemple, canviar l'adreça de 7 00:00:19,660 --> 00:00:23,550 una variable i la direcció d'un altre variable d'intercanvi ha d'estar facultada per 8 00:00:23,550 --> 00:00:26,090 anar a cadascuna d'aquestes adreces i, de fet canviar la 9 00:00:26,090 --> 00:00:27,360 valors que hi són. 10 00:00:27,360 --> 00:00:28,890 >> Vegem això en context. 11 00:00:28,890 --> 00:00:31,360 Anem a tornar a implementar d'intercanvi com segueix. 12 00:00:31,360 --> 00:00:35,810 En primer lloc, anem a canviar un no ser un int però per ser un punter a un int o el 13 00:00:35,810 --> 00:00:36,920 direcció d'un int. 14 00:00:36,920 --> 00:00:40,820 Llavors farem el mateix per b, el canvi de des d'un int que és un punter a una 15 00:00:40,820 --> 00:00:42,780 int o la direcció d'un int. 16 00:00:42,780 --> 00:00:45,860 >> Llavors dins de swap, anem encara declarar tmp perquè tinguem una 17 00:00:45,860 --> 00:00:47,810 lloc temporal per un valor de. 18 00:00:47,810 --> 00:00:52,430 Però d'un valor no és un sí, perquè, de nou, a és ara la direcció 19 00:00:52,430 --> 00:00:53,270 d'alguns int. 20 00:00:53,270 --> 00:00:57,320 Així que si volem anar a aquesta direcció i aconseguir int en aquesta direcció, tenim 21 00:00:57,320 --> 00:01:03,020 eliminar la referència d'aquest punter, també per mitjà de l'operador de l'estrella, estrella d'una escriptura. 22 00:01:03,020 --> 00:01:05,470 >> Després, jo no vull canviar el valor de a. 23 00:01:05,470 --> 00:01:08,770 Vull canviar el valor en 1, tenint en compte, de nou, 24 00:01:08,770 --> 00:01:10,350 que una és una direcció. 25 00:01:10,350 --> 00:01:14,050 Així que per fer-ho, jo necessito un altre cop dir una estrella aconsegueix. 26 00:01:14,050 --> 00:01:18,360 I ara vull posar en el valor això és en b, no el valor de b, que 27 00:01:18,360 --> 00:01:19,720 També és una direcció. 28 00:01:19,720 --> 00:01:22,280 >> Així que de nou us dic, estel b. 29 00:01:22,280 --> 00:01:26,690 Llavors, en la meva última línia, he de sobreescriure el que està en la direcció b amb 30 00:01:26,690 --> 00:01:28,970 el que estava en un lloc original. 31 00:01:28,970 --> 00:01:32,910 Per fer això, ho faig estrelles b aconsegueix tmp. 32 00:01:32,910 --> 00:01:34,820 >> Ara, al final del dia, aquesta funció segueix sent només 33 00:01:34,820 --> 00:01:35,950 tres línies de codi. 34 00:01:35,950 --> 00:01:39,860 Però pel fet que és la manipulació dels valors per mitjà de la seva direcció i no la 35 00:01:39,860 --> 00:01:43,700 valors bruts que es van aprovar en el funció, afirmo que intercanvi és ara 36 00:01:43,700 --> 00:01:47,670 facultat per modificar els valors que es passen a través de les seves direccions. 37 00:01:47,670 --> 00:01:49,510 >> Però he de fer un canvi encara. 38 00:01:49,510 --> 00:01:52,190 Jo ja no puc passar a X i Y si mateixos. 39 00:01:52,190 --> 00:01:55,030 He de passar a les adreces de x i y. 40 00:01:55,030 --> 00:01:58,160 I per fer això, necessito una mica diferent cim notació dalt. 41 00:01:58,160 --> 00:02:02,510 Vull canviar x i y passant-li la direcció de x, indicat per 42 00:02:02,510 --> 00:02:07,190 signe x, i la direcció de I, indicat pel signe i. 43 00:02:07,190 --> 00:02:10,570 >> De la mateixa manera, a la part alta ara què he de canviar el prototip de la funció de 44 00:02:10,570 --> 00:02:14,980 coincidir amb el canvi que he fet, pel que a és, de nou, un punter a un int. 45 00:02:14,980 --> 00:02:17,190 b és, de nou, un punter a un int. 46 00:02:17,190 --> 00:02:18,770 I ara puc guardar el meu arxiu. 47 00:02:18,770 --> 00:02:20,680 I anem a tornar a compilar i executar-lo. 48 00:02:20,680 --> 00:02:25,330 >> Fer intercanvi slash dot swap. 49 00:02:25,330 --> 00:02:29,660 I aquesta vegada, x i y són de fet ara intercanviat de manera que els seus valors no són 50 00:02:29,660 --> 00:02:31,950 1 i 2, però 2 i 1. 51 00:02:31,950 --> 00:02:34,900