|
先抛出两个问题:
首先看一段代码:
指针其实就是一个存放内存地址的整数,这个整数表示的是被指向的变量的地址。 引用其实就是变量的别名,就是给变量重新起了一个名字,注意引用既然是个别名,那它一定要有本体,一个人叫王二小,我们也可以给它起个别名叫二蛋,我们提到二蛋和王二小其实都是同一个人。 区别:
02指针和引用的使用场景 引用的主要功能就是作为函数的参数和返回值,看一段代码:
为什么通过vec[3] =3可以改变vector容器的值,因为[]操作符返回的就是引用,相当于为内部的变量起了一个别名,这里还可以让[]操作符返回一个指针,即*vec[3]=3,这是不是有点丑,而且不符合语法需求。 其实我们平时编程过程中可能也注意到,实际上引用可以做的事情指针都可以做,但为什么还要引用这个东西? 答案: 用恰当的工具做恰如其分的工作,指针可以毫无约束的操作内存中的任何东西,功能十分强大,但是也很危险,所以可以在恰当的时机使用引用,当你需要指向某个东西,而且一定专一,绝不会让其指向其它东西,例如有些函数参数为了避免拷贝可以使用引用,或者实现一个操作符而其语法需求无法由指针达成,例如vec[3]=3,可以使用引用,其它任何时候,都要使用指针。 引用在c++11后其实有很多知识点,具体可以看我之前的文章: 参考资料《More Effective C++》 http://www.runoob.com/w3cnote/cpp-difference-between-pointers-and-references.html http://blog.csdn.net/weikangc/article/details/49762929 http://www.jianshu.com/p/e548a978d737 http://zhuanlan.zhihu.com/p/63096392 |
微信公众号
手机版