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에 대한 이진 연산 XOR을 사용 :
그래서 나는 다음 있습니다. 그러나 swapString을 사용하여 동일한 작업을 수행하려고 시도했지만 작동하지 않습니다.
내가 말하는 오류 메시지가 : 유효하지 않은 피연산자^바이너리
는 두 개의 문자열 리터럴를 교환 XOR을 사용하는 방법을 알고 계십니까 ('숯불 *'와 '숯불 *'을 가지고)? C에서 가능합니까? 미리 감사드립니다 !!
을 작동합니다. 그렇게한다면,'intSwap (& a, & a)'를 호출하는 것이 엉망이되지 않도록 추가 논리를 추가해야합니다. –