一个关于指针的问题

来源:百度知道 编辑:UC知道 时间:2024/05/07 19:55:39
int change(int *pa,int *pb)
{
}

int x=4;
int y=4;
change(x,y);

程序对错我们先不看,我只想问,这个函数传递参数对了没?
到底是change(x,y);这个,还是change(&x,&y);这个?
我总觉得*pa 和 *pb代表的是值,传递参数应该是值而不是地址
但我感觉不太清楚,到底是哪个,问下,为什么?
象这个
int a=5;
int *p=&a;
*p=6;
cout<<*p<<endl;

上面的这个没错,为什么都是给指针p附值,一个是地址,一个却是值呢? 什么时候附地址?什么时候附值呢?

int *p=&a;
*p=6;
楼主是这两个没搞清楚

int *p=&a;
相当于
int *p;
p=&a;

对于函数的形参(int *pa,int *pb)也一样,实际上传递 &x,&y的时候也是
pa = &x;
pb = &y;

所以 "我总觉得*pa 和 *pb代表的是值" 肯定是不对的,他们都表示地址,

要分清楚指针定义和指针赋值

int *p = &a;//这个是地址的传递
*p = b;//这个是值的传递

楼主仔细区分一下,简单的办法,*p前面有 int 的肯定是传递地址,没有的话就是传递数值

int change(int *pa,int *pb)
{
}

int x=4;
int y=4;
change(&x,&y);

上面是指针,你必须将地址传给它。

*p=6; 实际上是a=6; p是个地址指针,但*p是取或修改p所指向的值。

看大家已经写了这么多了就少说两句吧!

C++中的参数传递,全部是值传递,所谓传地址,其实是传的地址的值!

change(&x,&y);
int *pa,int *pb是指针,类型要匹配。传递参数应该是值而不是地址,这里传递的是地址的值。