3个回答
展开全部
一、功能不同
1、引用:用来进行传值。
2、取地址:用来获取首地址。
二、运算不同
1、引用:对引用求地址,就是对目标变量求地址。&ra与&a相等。即常说引用名是目标变量名的一个别名。
2、取地址:是这样一种运算,返回一个指针,该指针的值是当时声明p 时开辟的地址,指针的类型是p的类型对应的指针类型。
三、特点不同
1、引用:引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
2、取地址:使用&运算符取地址的时候却不需要加任何强转就能编译通过。
参考资料来源:百度百科-&
参考资料来源:百度百科-C++引用
推荐于2017-05-16
展开全部
所谓引用就是为对象起一个别名。例如变量b = &a,b就是a的一个引用。对b的任何操作等同于对a的操作,也就是说,如果你改变了b的值,同时a的值也会发生改变。b就是a的另外一个名字,他们实质是同一个变量。就好比是同一个人,只不过穿着不同的衣服而已。至于引用的用处,给你举一个简单的例子,比如一个交换两个值的函数swap(int a, int b),如果将两个值带进去,发生交换的只是形参a和b,因为函数结束的时候这两个参数的生命周期结束了,换句话说,实参a和b的值并未发生交换。而如果swap(int &a,int &b)则不同,他的参数是a和b的引用,也就是说函数中的a和b就是你带入的实参,当函数中的a和b发生变化时,被引用的值在同时也发生了变化,而不会受到函数声明周期的影响。取地址则顾名思义,就是取得对象的地址,通过指针来操作对象,也可以达到引用的效果,它不是直接对对象进行操作,而是根据对象的地址。与引用不同的是,引用是不占用存储空间的,而如果用指针指向对象地址的时候会有自己的存储空间。举个简单的例子,swap(int *a, int *b), *a和*b是指向实参的指针,即他们有实参的地址,而我们知道a和b的地址是没有改变的,那么根据他们的地址就可以操作他们的值,也就不用考虑函数生命周期了。举的例子比较简单,实际中的应用比这个复杂的多。只要能理解就好。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-10
展开全部
引用&,你可以理解为给变量起了个别名。 只有在定义和声明或者说明参数类型的时候才用,平时引用变量和普通变量一样 比如:
int& b;//只是说明作用
b=8;
取地址符号&是一个“动作”,表示取该变量的地址。 比如:
int a = 8;
int *b = &a;//这里是取a的地址
int& b;//只是说明作用
b=8;
取地址符号&是一个“动作”,表示取该变量的地址。 比如:
int a = 8;
int *b = &a;//这里是取a的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询