void swapChar(char*p1,char*p2){
char a=*p1;char b=*p2;
(*p1)^=(*p2);
(*p2)^=(*p1);
(*p1)^=(*p2);
cout<<(*p1)<<"&"<<(*p2)<<endl;
}
int main(int argc, const char * argv[]) {
char str[10]="abc" ;
swapChar(str, str);
cout<<str;
cout<<str[2];
}
输出:
&
c
swap的两个参数如果传入两个指向同一个地址的指针时:
(*p1)^=(*p2)=0;...;导致str的第一个元素就是null(空格的ascii码是32),所以cout<<str也打印空,因为相当于一开始就碰到了结束符号'\0';但str[2]='c'是有数据的可以打印出来
用指针的时候慎用异或交换数据