C++中,引用与取地址有什么区别?它们分别有什么作用?怎样区分?
答案:3 悬赏:80 手机版
解决时间 2021-03-19 11:28
- 提问者网友:棒棒糖
- 2021-03-18 17:08
C++中,引用与取地址有什么区别?它们分别有什么作用?怎样区分?
最佳答案
- 五星知识达人网友:狂恋
- 2021-03-18 17:26
引用不占内存
引用&就像一个“修饰”一样,只有在定义和声明或者说明参数类型的时候才用,平时引用变量和普通变量一样。比如:
int& b;//只是说明作用
b=10;
取地址符号是一个“动作”,比如:
int y = 10;
int *x = &y;//这里是取y的地址
引用&就像一个“修饰”一样,只有在定义和声明或者说明参数类型的时候才用,平时引用变量和普通变量一样。比如:
int& b;//只是说明作用
b=10;
取地址符号是一个“动作”,比如:
int y = 10;
int *x = &y;//这里是取y的地址
全部回答
- 1楼网友:由着我着迷
- 2021-03-18 18:51
所谓引用就是为对象起一个别名。例如变量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的地址是没有改变的,那么根据他们的地址就可以操作他们的值,也就不用考虑函数生命周期了。举的例子比较简单,实际中的应用比这个复杂的多。只要能理解就好。
- 2楼网友:神的生死簿
- 2021-03-18 18:42
取地址就是指针变量的首地址。比如,int *p; int b=&p;
而引用就是一个变量的别名,
比如说int a=5;
int &b=a;
这时候a,b都是5.
二直的区别很明显的,一个在等号左边一个在等号右边。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯