C语言 指针操作:指针赋值给指针



在这里,我试图使一个函数,可以交换两个值没有第三个变量。除了下面所述的实现之外,还有什么其他实现可以做到这一点?

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

看起来你正在尝试做XOR交换技巧?

#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 =%dn", x, y);
}

它实际上应该可以工作…

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

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= %dna2= %d n",a1 ,a2);
}

最新更新