1 00:00:00,000 --> 00:00:03,080 >> 1 głośnik: Okazuje się, że można powodzeniem zamienić wartości w dwóch 2 00:00:03,080 --> 00:00:07,670 zmienne, przekazując je do funkcjonować nie przez wartość lub kopii, ale 3 00:00:07,670 --> 00:00:10,390 w odniesieniu lub adresami. 4 00:00:10,390 --> 00:00:12,740 Innymi słowy, musimy wykorzystać czegoś znanego jako wskaźnika. 5 00:00:12,740 --> 00:00:15,580 Wskaźnik, tak naprawdę, to tylko adres jakiejś zmiennej. 6 00:00:15,580 --> 00:00:19,660 I tak, jeśli mamy zapewnić funkcję o nazwie, powiedzmy, zamienić z adresem 7 00:00:19,660 --> 00:00:23,550 Zmienna i adres innego zmienna, wymiany powinna być uprawniona do 8 00:00:23,550 --> 00:00:26,090 Do każdego z tych adresów i rzeczywiście zmienić 9 00:00:26,090 --> 00:00:27,360 Wartości, które są tam. 10 00:00:27,360 --> 00:00:28,890 >> Zobaczmy to w kontekście. 11 00:00:28,890 --> 00:00:31,360 Miejmy reimplement swapa w następujący sposób. 12 00:00:31,360 --> 00:00:35,810 Najpierw zmieńmy nie być int ale być wskaźnik do int lub 13 00:00:35,810 --> 00:00:36,920 adres wew. 14 00:00:36,920 --> 00:00:40,820 Potem zróbmy to samo dla b, zmieniając to z int być wskaźnik do 15 00:00:40,820 --> 00:00:42,780 int lub adres int. 16 00:00:42,780 --> 00:00:45,860 >> Następnie wewnątrz swapu, niech nadal Oświadczam tmp tak, że mamy 17 00:00:45,860 --> 00:00:47,810 tymczasowe miejsce dla wartości tych. 18 00:00:47,810 --> 00:00:52,430 Ale jest to wartość sama w sobie nie jest, ponieważ, ponownie, jest teraz adres 19 00:00:52,430 --> 00:00:53,270 niektórych int. 20 00:00:53,270 --> 00:00:57,320 Tak więc, jeśli chcemy, aby przejść do tego adresu i uzyskać int pod tym adresem, mamy 21 00:00:57,320 --> 00:01:03,020 nieprawidłowego tego wskaźnika, również w drodze Operator gwiazdki, pisanie star. 22 00:01:03,020 --> 00:01:05,470 >> Następnie, nie chcę, aby zmienić wartość. 23 00:01:05,470 --> 00:01:08,770 Chcę, aby zmienić wartość na , mając na uwadze, ponownie 24 00:01:08,770 --> 00:01:10,350 który jest adres. 25 00:01:10,350 --> 00:01:14,050 Tak, aby to zrobić, trzeba jeszcze raz powiedzieć gwiazda dostaje. 26 00:01:14,050 --> 00:01:18,360 A teraz chcę umieścić wartości to jest w punkcie B, a nie wartość b, które 27 00:01:18,360 --> 00:01:19,720 jest również adres. 28 00:01:19,720 --> 00:01:22,280 >> Więc jeszcze raz mówię, Star B. 29 00:01:22,280 --> 00:01:26,690 Następnie w ostatnim wierszu, muszę zastąpić to, co jest pod adresem bz 30 00:01:26,690 --> 00:01:28,970 to, co było w pierwotnej lokalizacji w. 31 00:01:28,970 --> 00:01:32,910 Aby to zrobić, ja gwiazda b dostaje tmp. 32 00:01:32,910 --> 00:01:34,820 >> Teraz na koniec dnia, to Funkcja jest jeszcze tylko 33 00:01:34,820 --> 00:01:35,950 trzy linie kodu. 34 00:01:35,950 --> 00:01:39,860 Ale ponieważ jest to manipulowanie wartości poprzez ich adres i nie 35 00:01:39,860 --> 00:01:43,700 Wartości surowych, które były przekazywane do Funkcja, że ​​twierdzą, że zamiana jest teraz 36 00:01:43,700 --> 00:01:47,670 uprawniona do zmiany wartości, które są przekazywane w poprzez ich adresy. 37 00:01:47,670 --> 00:01:49,510 >> Ale muszę zrobić jeszcze jedną zmianę. 38 00:01:49,510 --> 00:01:52,190 Już nie mogę przejść w x oraz y siebie. 39 00:01:52,190 --> 00:01:55,030 Muszę przejść w adresach x i y. 40 00:01:55,030 --> 00:01:58,160 I aby to zrobić, potrzebuję nieco inny zapis do góry. 41 00:01:58,160 --> 00:02:02,510 Chcę zamienić x i y, przekazując Adres x, oznaczone 42 00:02:02,510 --> 00:02:07,190 Ampersand x, a adres y, wskazane przez znaku & r. 43 00:02:07,190 --> 00:02:10,570 >> Podobnie do góry teraz muszę zmienić prototyp z funkcji do 44 00:02:10,570 --> 00:02:14,980 pasuje do zmian, które zrobiłem, tak aby jest, ponownie, wskaźnik do int. 45 00:02:14,980 --> 00:02:17,190 b jest, ponownie, wskaźnik do int. 46 00:02:17,190 --> 00:02:18,770 A teraz mogę zapisać swój plik. 47 00:02:18,770 --> 00:02:20,680 I niech ponownie skompilować i uruchomić go. 48 00:02:20,680 --> 00:02:25,330 >> Dokonać wymiany kropka slash swapa. 49 00:02:25,330 --> 00:02:29,660 I tym razem, X i Y są rzeczywiście teraz zamienione tak, że ich wartości są 50 00:02:29,660 --> 00:02:31,950 1 i 2, 2 i 1, lecz. 51 00:02:31,950 --> 00:02:34,900