关于指针的区别
- C/C++ code
#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;}
个下面这个有什么差别啊 两种用法可以达到一样的效果,谢谢详细点啊
- C/C++ code
#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;}
[解决办法]
第一个:交换了值
第二个:交换了指针
另外,第二个程序应该传入a,b的地址:swap(&a,&b);
[解决办法]
你两个都是调用了库里面的函数。而不是你自己写的
[解决办法]
要搞清楚指针变量值和指针指向的变量值
int swap(int *x,int *y)
{
int *temp;
temp=x;
x=y;
y=temp;
return 0;//这个只是交换了指针变量值,没有交换指针指向的变量值
}
[解决办法]
[解决办法]
- C/C++ code
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++编译器报类型不一致的错误的。