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ć?