首页 > 代码库 > C/C++中的取地址与引用
C/C++中的取地址与引用
取地址和引用都采用&的标识符,很容易让人造成误会。
就c/C++而言。引用只是C++中的知识,而取地址是两者共有的。
取地址:
在第6行中我定义了一个指向int类型的指针p,运用&a获取a的地址,并将a的地址赋予它,即p指向a所在的空间。
在第7行中取p所指向空间的值(*:有个高端名字叫解引用)输出。
引用:
在第6行我定义了一个引用b,并将a赋予b。其实质就是给a取了一个小名叫b。对a操作就是对b操作,如果改变b的值(eg。b=20),那么a的值也相应改变(a也会等于20)
从第7、8行更能反应我上面说的,a和b的值相等,并且地址也相同。因此引用是不占用空间的,仅仅是个别名而已。
在函数调用的时候也可能会混淆引用与取地址:
先看一下第2、3行的函数原型。两个函数的功能都是交换两个数。swap1的两个形参都是指针,而swap2的形参是两个引用。
再看一下第8行、第9行,调用swap1的时候传了两个地址给它(x=&a,y=&b),即x指向a的空间,y指向b的空间。调用swap2的时候传了两个引用给它(x=a,y=b),即x只是a的一个别名,y是b的一个别名,实则都代表同一块空间。
函数调用的时候,引用相对于指针来说更高效、跟简便。因为指针传参的实质还是传值调用,copy地址需要开销,而引用直接被编译器优化。有些时候需要二级指针的地方,使用指针的引用会使问题简化很多,我在对树的操作的时候就碰到过,大家可以感受一下。
C/C++中的取地址与引用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。