我有一个关于使用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
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用二进制运算XOR来表示intSwap.但是,当我尝试使用swapString做同样的事情时,它不起作用.
我收到错误消息说:二进制操作数无效^(有'char*'和'char*')
你知道如何使用XOR交换两个字符串文字吗?在C中有可能吗?谢谢!
指针上没有按位操作.除了derefence之外,唯一可以采取行动的行动是+和-.所以你需要投射++回来.
无论如何,这是一个不好的做法,不会为你节省任何周期.编译器将使用简单的分配识别交换并为您优化.
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |