000
29.06.2008, 11:14 Uhr
jp
|
Hallo, ich arbeite mich gerade mit einem Buch in C++ ein. Da ist ein kleines Beispiel, wie man mit Zeigern innerhalb einer Funktion den Wert zweier Variablen vertauscht:
C++: |
#include <iostream> #include <conio.h>
using namespace std;
void swap( int *x, int *y );
int main() { int x = 5, y = 10; cout << "Vor Vertauschen:\nx = " << x << "\ny = " << y << endl; swap( &x, &y ); cout << "Nach Vertauschen:\nx = " << x << "\ny = " << y << endl; getch(); }
void swap( int *x, int *y ) { int temp; temp = *x; *x = *y; *y = temp; }
|
Jetzt habe ich aber aus versehen beim ersten eintippen beim Aufruf von swap die Adressoperatoren für die Argumente weggelassen:
C++: |
int main() { ... swap( x, y ); ... }
|
Und es funktioniert trotzdem. Das verstehe ich nicht. So wie ich es bis jetzt verstanden habe, erwartet die Funktion swap zwei Argumente mit Adressen. Jetzt aber übergebe ich einfach zwei int-Werte. Wieso funktioniert das? |