0

为什么这种交换方法不起作用

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

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

为什么?我觉得和普通的一样。。

4

3 回答 3

3

C 按值传递函数参数:您只是交换指针的副本。

如果你想交换两个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. x并且y表现得就像局部变量一样。

  2. 您的代码正在交换xy值,而不是它们指向的值。

于 2013-02-04T22:36:29.243 回答