C++ 中:const int * a 和 const int * & a的区别。

 我来答
晴天宝宝E7
2013-09-09 · 超过10用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:32.8万
展开全部
const int *a 是指向const int 变量的指针,const int *& a 是指向const int 变量的指针的引用,在座函数形参时,区别是很大的,函数的参数进行的是值拷贝,即使传的是指针,也的对指针(即指针里存的地址)的拷贝,因此,如果在函数内部改变了参数自身的地址,比如使参数等于NULL,此时是不会影响函数外指针的本身的地址值的,但使用指针的引用的话就可避免这种情况,指针的引用等效于指针的指针。
百度网友cd8541ae4
2013-09-09 · TA获得超过264个赞
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:114万
展开全部
const int *a;

a是一个指针,指向const int类型的变量。

const int * &a;

a是一个引用,引用的是一个 const int *的指针。

例如:

 int a = 10;
 const int *pa = &a;
 const int * &rpa = pa;
 cout<< *pa <<endl;
 cout<< *rpa <<endl;

pa是一个的类型是const int *,指向a,const的意思是不能修改pa指向的变量的值。

rpa是一个const int * &类型,是pa的一个引用,用法跟pa一样。

 

这里就是弄清楚引用,例如

int a = 10;
int &ra = a;

ra就是a的引用,ra实际上指向a的地址,但是它不是指针,是引用,是a的别名,用法跟a一样。

cout<<ra;

输入也是10.

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dingzongfu
2013-09-09 · 超过11用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:30.9万
展开全部
const int * a 是整型常量指针,它所指向的对象值不可改变,
const int *&a是整型常量指针的引用,它定义了一个整型常量指针的引用(或别名)。

他们两个的主要区别:第二个在声明时必须初始化,它本身并不占用内存,只是它所指向对象的别名。引用在初始化后不可修改。
第一个可以只声明不初始化,在使用时再赋值即可。在声明后就对其分配了内存空间。

注:指针和引用的主要区别:
1、可以定义指针的引用,没有引用的指针
2、可以定义数组的引用,没有引用的数组
3、可以定义指向空值的指针,不能定义指向空值的引用。

希望对你有所帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Daizy落樱
2013-09-09
知道答主
回答量:10
采纳率:0%
帮助的人:13万
展开全部
const int * & a是引用
两个a用法差不多,但意义有区别
引用相当于别名,具体参见C++相关说明
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式