常常有的时候想 我传的明明是指针 为什么感觉传了拷贝。
比如今天同学来问我一个题目:#include <iostream>
using namespace std;
void swap(char* a,char* b){
char* temp;
temp=a;
a=b;
b=temp;
}
int main(){
char* a="zhongguo";
char*b="guozhong";
swap(a,b);
cout<<a<<endl;
cout<<b<<endl;
return 0;
}
就是不能换,非常郁闷。最后突然意识到,传是指针,但是我想改变的也是指针,所以对于指针来说传的仍然是拷贝,所以应该要用引用!
#include <iostream>
using namespace std;
void swap(char& a,char& b){
char* temp;
temp=&a;
a=b;
b=*temp;
}
int main(){
char* a="zhongguo";
char*b="guozhong";
swap(a,b);
cout<<a<<endl;
cout<<b<<endl;
return 0;
}
上面这代代码就对了。