使用指针:指针指向指针

时间:2014-06-22 08:06:16

标签: c pointers

这里我试图创建一个可以在没有第三个变量的情况下交换两个值的函数。除了下面说明的内容之外,还有哪些其他实现可能会起作用?

void swap(int* x, int* y)
{
    (*x)=(*x)+(*y);
    (*y)=(*x)-(*y);
    (*x)=(*x)-(*y);

}

2 个答案:

答案 0 :(得分:3)

看起来您正在尝试XOR swap trick

#include <stdio.h>

void swap(int* x, int* y)
{
    *x^=*y;
    *y^=*x;
    *x^=*y;
}
int main(){
    int x = 1;
    int y = 2;
    swap(&x, &y);
    printf("x = %d, y =%d\n", x, y);
}

答案 1 :(得分:0)

它实际上应该有用......

我在您的函数中使用了以下代码:

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

int a1=1;
int a2=2;

main()
{
   swap(&a1,&a2);

   printf("a1= %d\na2= %d \n",a1 ,a2);
}