>> 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.