我是靠谱客的博主 外向白羊,这篇文章主要介绍C++指针的引用理解,现在分享给大家,希望可以做个参考。

指针可以作为参数传递直接修改所指的变量的值,如下代码:

void change(int *p){
*p = 20;
}
int main(){
int a = 10 ;
int * pa = &a;
change(pa);
cout<<"a = "<<a<<endl;//输出20
cout<<"*pa = "<<*pa<<endl;//输出20
}

指针传递实际上也是值传递,传递的值便是指针的地址,执行* p = 20后,虽然传递的是一个地址的副本,但是副本的值就是变量的地址,执行后,所指向的地址的值变成了20,达到了修改变量值的目的。所以,当需要修改指针所指向的对象时,这种传递方式就有问题了,因为修改的是指针的副本,所以原本指针所指向的对象并没有发生改变,这个效果就像普通的swap函数一样,如下代码:

int m = 30;
void change(int *p){
p = &m; //期望的是修改p指向m,即期望修改指针的值,但实际上只是副本指向了m
}
int main(){
int a = 10 ;
int * pa = &a;
change(pa);
cout<<"a = "<<a<<endl;//输出10
cout<<"*pa = "<<*pa<<endl;//输出10,并没有修改成功。
}

如果代码改为如下:

int m = 30;
void change(int *&p){ //指针的引用
p = &m; //期望的是修改p指向m,但实际上只是副本指向了m
}
int main(){
int a = 10 ;
int * pa = &a;
change(pa);
cout<<"a = "<<a<<endl;//输出10
cout<<"*pa = "<<*pa<<endl;//输出30。修改成功。
}

重点:理解其中的关键就是所要修改的是指针的值还是指针所指向的值。

最后

以上就是外向白羊最近收集整理的关于C++指针的引用理解的全部内容,更多相关C++指针内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(105)

评论列表共有 0 条评论

立即
投稿
返回
顶部