>> David J. MALAN: Chcę napisać program w które staramy się zamienić wartości
dwie zmienne X i Y.
Z góry, napisałem wiele tego programu już.
Po pierwsze, oświadczam zmiennej x, i przechowywać w niej wartości 1.
Następnie Oświadczam zmiennej Y i przechowywać w niej wartości, 2.
>> Następnie kontynuuj printf aby wyświetlić wartości tych dwóch zmiennych.
Potem twierdzą z innym printf być zamiana tych zmiennych.
Potem wywołać funkcję o nazwie Swap.
A potem twierdzą, że zmienne zostały zamienione.
A następnie wydrukować, że to, co twierdzą są nowe wartości x i y.
>> Teraz co to jest funkcja wymiany?
To nie jest coś, co przychodzi z C. Rzeczywiście, jeśli spojrzymy na szczycie mojej
plik, można zauważyć, że już zgłoszone Prototyp tej funkcji konwersji
podając, że ma dwa ints, arbitralnie zwany b, a to
Funkcja nie zwraca niczego.
Więc zapewne, że robi to, co mówi w swapów wartości A i B.
Załóżmy teraz wdrożyć swapa.
>> Po pierwsze, mam zamiar zadeklarować tymczasowy zmienną i przypisać do niego
wartość, choć mogłem tylko jak łatwo przechowywać w to b.
Ja to się zmieni wartość z jest równa w b.
I wtedy wreszcie, mam zamiar zmienić wartość b, aby być tym, czym był, ale jest
teraz w temp.
>> Teraz twierdzą, co właśnie zrobił jest logicznie poprawne.
Mam zapisane w zmiennej tymczasowej, zmianie wartości należy się B, a następnie
zmienił wartość B jest to, co było.
Ale kiedy skompilować i uruchomić ten Program, martwię się, że nie jest
będzie to, co widzę.
>> Uczynić, nie swapa.
kropka slash, nie swapa.
I niestety, zgodnie z printf, wartość x i y, nawet
po tym, jak twierdzą, nie wymieniając je, jest jeszcze 1 i 2.
>> Teraz to dlaczego?
Cóż, okazuje się, że w głównym, kiedy Swap wywołać tę funkcję, przekazując
x i y jako argumenty, to faktycznie kopie z X i Y, które
przekazywane są do wymiany.
Mianowicie, ich wartości 1 i 2 przedstawiają przeszedł do wymiany jak i b..
I to i b, że jesteśmy ostatecznie zamiana w głównym.
>> To znaczy, 1 wynosi 2, 2 staje 1.
Ale ponieważ wymiany nie zwraca wartości i dlatego, że otrzymała kopie x.
i y, to zachowanie brak wpływu na x i y.
Rzeczywiście, o zakresie i b są, że tak powiem, do wymiany, a X i Y pozostają
obejmuje zasięgiem główne.
>> Więc mamy problem.
Ale, jak to naprawić?