永发信息网

C++中,引用与取地址有什么区别?它们分别有什么作用?怎样区分?

答案:3  悬赏:80  手机版
解决时间 2021-03-19 11:28
C++中,引用与取地址有什么区别?它们分别有什么作用?怎样区分?
最佳答案
引用不占内存
引用&就像一个“修饰”一样,只有在定义和声明或者说明参数类型的时候才用,平时引用变量和普通变量一样。比如:
int& b;//只是说明作用
b=10;

取地址符号是一个“动作”,比如:
int y = 10;
int *x = &y;//这里是取y的地址
全部回答
所谓引用就是为对象起一个别名。例如变量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的地址是没有改变的,那么根据他们的地址就可以操作他们的值,也就不用考虑函数生命周期了。举的例子比较简单,实际中的应用比这个复杂的多。只要能理解就好。
取地址就是指针变量的首地址。比如,int *p; int b=&p; 而引用就是一个变量的别名, 比如说int a=5; int &b=a; 这时候a,b都是5. 二直的区别很明显的,一个在等号左边一个在等号右边。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
自学吉他,弹双音独奏,弹出的歌(例如《小星
电叉的操作键于油叉的操作键不一样
求“你是我的人”表情包,纯文字也行
十三画的汉字有哪些十三画的汉字
刘记早点(无锡中路)地址在什么地方,想过去办
轻轨是什么
观察一种自然现象,写作文。帮帮我嘛1
A2驾驶证一年没扣分,就可以免审一次吗、
SAP:PO里怎么查看PO创建者?
玩电脑时间久了手指是不是会肿
真空包装机如何换发热丝
宿迁三方商贸有限公司在哪里啊,我有事要去这
梦到曾经暗恋的人
男生一般都介意现任提起或者问有些前任的事吗
coc怎么从5本快速升级到6
推荐资讯
想刷硅藻泥我旧房翻新,需不需要刷底漆?
梦幻西游墨魂笔之踪怎么回到神秘洞穴
雷雷餐厅怎么去啊,有知道地址的么
金庸群侠传3.加强版如何入古墓后带小龙女平安
朗逸右后尾灯罩坏了,灯下面蹭了七八道漆,修
年金怎么计算
广州市天河区华景路的邮政编码是多少
昌吉公交公司
一个是耐运俱乐部旁边的商务酒店,一个是人民
路灯工程投标这个地址在什么地方,我要处理点
桥梁横坡采用单向变坡,横坡由-2.7%线性变化
男方彩礼钱给两万会不会太少?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?