1 głośnik: Okazuje się, że można powodzeniem zamienić wartości w dwóch zmienne, przekazując je do funkcjonować nie przez wartość lub kopii, ale w odniesieniu lub adresami. Innymi słowy, musimy wykorzystać czegoś znanego jako wskaźnika. Wskaźnik, tak naprawdę, to tylko adres jakiejś zmiennej. I tak, jeśli mamy zapewnić funkcję o nazwie, powiedzmy, zamienić z adresem Zmienna i adres innego zmienna, wymiany powinna być uprawniona do Do każdego z tych adresów i rzeczywiście zmienić Wartości, które są tam. Zobaczmy to w kontekście. Miejmy reimplement swapa w następujący sposób. Najpierw zmieńmy nie być int ale być wskaźnik do int lub adres wew. Potem zróbmy to samo dla b, zmieniając to z int być wskaźnik do int lub adres int. Następnie wewnątrz swapu, niech nadal Oświadczam tmp tak, że mamy tymczasowe miejsce dla wartości tych. Ale jest to wartość sama w sobie nie jest, ponieważ, ponownie, jest teraz adres niektórych int. Tak więc, jeśli chcemy, aby przejść do tego adresu i uzyskać int pod tym adresem, mamy nieprawidłowego tego wskaźnika, również w drodze Operator gwiazdki, pisanie star. Następnie, nie chcę, aby zmienić wartość. Chcę, aby zmienić wartość na , mając na uwadze, ponownie który jest adres. Tak, aby to zrobić, trzeba jeszcze raz powiedzieć gwiazda dostaje. A teraz chcę umieścić wartości to jest w punkcie B, a nie wartość b, które jest również adres. Więc jeszcze raz mówię, Star B. Następnie w ostatnim wierszu, muszę zastąpić to, co jest pod adresem bz to, co było w pierwotnej lokalizacji w. Aby to zrobić, ja gwiazda b dostaje tmp. Teraz na koniec dnia, to Funkcja jest jeszcze tylko trzy linie kodu. Ale ponieważ jest to manipulowanie wartości poprzez ich adres i nie Wartości surowych, które były przekazywane do Funkcja, że ​​twierdzą, że zamiana jest teraz uprawniona do zmiany wartości, które są przekazywane w poprzez ich adresy. Ale muszę zrobić jeszcze jedną zmianę. Już nie mogę przejść w x oraz y siebie. Muszę przejść w adresach x i y. I aby to zrobić, potrzebuję nieco inny zapis do góry. Chcę zamienić x i y, przekazując Adres x, oznaczone Ampersand x, a adres y, wskazane przez znaku & r. Podobnie do góry teraz muszę zmienić prototyp z funkcji do pasuje do zmian, które zrobiłem, tak aby jest, ponownie, wskaźnik do int. b jest, ponownie, wskaźnik do int. A teraz mogę zapisać swój plik. I niech ponownie skompilować i uruchomić go. Dokonać wymiany kropka slash swapa. I tym razem, X i Y są rzeczywiście teraz zamienione tak, że ich wartości są 1 i 2, 2 i 1, lecz.