我有一个关于使用XOR两个交换两个字符串文字的快速问题。使用XOR交换两个指针
,所以我有以下几点:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void intSwap(int *a, int *b){
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
void swapString(char **a, char **b){
char *temp=*a;
*a=*b;
*b=temp;
}
void main(){
char *s= "ha";
char *t= "Oh";
printf("%s and %s \n",s,t); // prints ha Oh
swapString(&s,&t);
printf("%s and %s \n",s,t); // prints Oh ha
int a=10;
int b=5;
printf("%d %d\n",a,b); //print 10 5
intSwap(&a,&b);
printf("%d %d\n",a,b); //print 5 10
}
正如你所看到的,我用二进制异或运算,为intSwap。但是,当我试图用swapString做同样的事情时,它不起作用。
我得到错误信息说:无效的操作数为二进制^(具有“字符*”和“字符*”)
你知道如何使用XOR交换两个字符串文字?在C中可能吗?谢谢!
我希望你不会在任何生产应用程序中使用此代码。如果你这样做,你必须添加额外的逻辑来确保调用'intSwap(&a,&a)'不会搞砸。 –