我是靠谱客的博主 外向白羊,最近开发中收集的这篇文章主要介绍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++指针的引用理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部