首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于指针的区别,该如何解决

2012-03-31 
关于指针的区别C/C++ code#includeiostreamusing namespace stdint swap(int *x,int *y){int temptemp

关于指针的区别

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++编译器报类型不一致的错误的。

热点排行