2つの整数変数iとjがあり、これら2つの変数を引数として取り、xor演算子を使用してそれらの内容を交換する関数を作成したいと思います。ここで、値によって引数を取るように関数を作成するとvoid swap (int x , int y);
(以下の関数と同じ関数本体を使用swap
)、関数内で値が適切に交換されます。しかし、私が欲しいのは、呼び出し元の関数の変数の値を交換することです。参照によって(およびポインターによっても)引数を渡すことを使用しました。
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 ;
}
しかし、どちらの場合も正しい結果を示しませんでした!
swap
関数が参照またはポインターによって引数を渡すときに値を交換しないのはなぜですか?