Austauschen von Werten zweier Variablen durch den Operator xor mithilfe von Referenzen oder Zeigern
Ich habe zwei ganzzahlige Variablen i und j und möchte eine Funktion erstellen, die diese beiden Variablen als Argument verwendet und deren Inhalt mit dem Operator xor austauscht. Nun, wenn ich die Funktion dazu bringe, Argumente nach Wert zu nehmen, d.h.void swap (int x , int y);
(mit Funktionskörper wie für die Funktionswap
unten) dann werden die Werte innerhalb der Funktion schön getauscht. Was ich aber möchte, ist das Austauschen der Werte der Variablen in der aufrufenden Funktion. Ich habe Argumente als Referenz übergeben (und auch als Zeiger):
void swap ( int& x , int& y )
{
x^=y^=x^=y;
cout << x<< " " << y << endl ;
}
int main ()
{
int i (1), j (2) ;
swap ( i, j ) ;
cout << i << " " << j << endl ;
}
aber keiner der Fälle zeigte das richtige Ergebnis!
Warum ist derswap
Funktion nicht die Werte bei der Übergabe von Argumenten als Referenz oder Zeiger tauschen?