关于指针的区别
#include<iostream>using namespace std;int swap(int *x,int *y){ int temp; temp=*x; *x=*y; *y=temp;return 0; }int main(){ int a,b; cout<<"Enter two number of a,b:"<<endl; cin>>a>>b; cout<<"a="<<a<<"b="<<b<<endl; swap(&a,&b); cout<<"change of a,b:"<<a<<","<<b<<endl; return 0;}
#include<iostream>using namespace std;int swap(int *x,int *y){ int *temp; temp=x; x=y; y=temp;return 0; }int main(){ int a,b; cout<<"Enter two number of a,b:"<<endl; cin>>a>>b; cout<<"a="<<a<<"b="<<b<<endl; swap(a,b); cout<<"change of a,b:"<<a<<","<<b<<endl; return 0;}
void swap(int *x,int *y)//使用指针传递地址{int temp;temp=*x;*x=*y;*y=temp;}
[解决办法]
第二个调用时参数传递错误吧, 并且即使该过来,也实现不了交换的目的
[解决办法]
你的第一个例程是调用你自己的函数,而第二个例程之所以效果一样是因为你传如的是int形C++根据函数的重载它适合的函数,因此实际上调用的是 swap(int &a, int &b)这是库里面的,由于此函数用的是引用所以和你的第一个例程的结果是一样的,如果库函数里没有swap(int &a, int &b)这个函数 那么你的程序会被C++编译器报类型不一致的错误的。