0

このスワップ方法が機能しなかった理由

void swap(int *x,int *y){

     int *temp;
     temp = x;
     x = y;
     y = temp;
}

なんで?一般的なものと同じだと思います..

4

3 に答える 3

3

C は関数の引数を値で渡します。ポインタのコピーを交換するだけです。

2つを交換したい場合int

void swap(int *x,int *y)
{
   int temp;
   temp = *x;
   *x = *y;
   *y = temp;
}
于 2013-02-04T22:36:19.553 に答える
1

それらが指すメモリに格納されている値ではなく、スタック上の一時ポインタに格納されているアドレスをスワップしています。代わりにこれを行いたい:

void swap(int *x,int *y){

     int temp = *x;
     *x = *y;
     *y = temp;
}
于 2013-02-04T22:36:06.617 に答える
1
  1. xyローカル変数と同じように動作します。

  2. あなたのコードは、それらが指す値ではなく、値を交換xしています。y

于 2013-02-04T22:36:29.243 に答える