交换功能不起作用

时间:2013-02-04 22:32:58

标签: c swap

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

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

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

为什么呢?我认为它和普通的一样......

3 个答案:

答案 0 :(得分:3)

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

如果你想交换两个int

void swap(int *x,int *y)
{
   int temp;
   temp = *x;
   *x = *y;
   *y = temp;
}

答案 1 :(得分:1)

您正在交换堆栈中临时指针中存储的地址,而不是存储在它们指向的内存中的值。你想这样做:

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

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

答案 2 :(得分:1)

  1. xy的行为与局部变量相似。

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