这里我试图做一个函数,它可以交换两个值而不用第三个变量。除了下面说明的其他实现之外,还有哪些其他实现可以实现?使用指针:指针指针指针
void swap(int* x, int* y)
{
(*x)=(*x)+(*y);
(*y)=(*x)-(*y);
(*x)=(*x)-(*y);
}
这里我试图做一个函数,它可以交换两个值而不用第三个变量。除了下面说明的其他实现之外,还有哪些其他实现可以实现?使用指针:指针指针指针
void swap(int* x, int* y)
{
(*x)=(*x)+(*y);
(*y)=(*x)-(*y);
(*x)=(*x)-(*y);
}
看起来你正在试图做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);
}
它实际上应该工作...
我用下面的代码与功能:
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);
}
我曾尝试过使用相同的代码,但当时并不能正常工作,但现在它可以正常工作。可能是一些翻译等问题。 @Oli Charlesworth抱歉给您带来不便。 – Priyanka
您需要的XOR交换算法。请在wiki上查找 – ALM865
您的错误信息与此代码无关。 –
@OliCharlesworth应用程序有什么问题?为什么上面的代码无效? – Priyanka