pointer(指针) :* 或->
references(引用) : &
联系
- 指针:对象在内存中的地址;
- 引用:对象的别名,本质上是一个功能受限但是安全性更高的指针;
- 引用访问变量的话是直接访问,而指针是间接访问。
可以说,reference是一种特殊的pointer。
区别一
reference无null,但pointer可被设为null。
- 一个reference必须总代表某个对象
- 一个变量用来指向(代表)另一个对象,或不指向(代表)任何一个对象时,可用pointer
区别1.1
reference必须有初值,而对pointer则没有这样的限制。
区别1.2
reference使用前不需要测试其有效性,而通常需要测试pointers是否为null。
区别二
pointer可以被重新赋值,指向另一个对象;而reference却总是指向它最初获得的那个对象。
总结
一、采用pointer的情况:
- 可能“不指向任何对象”:可将pointer设为null;
- “在不同时间指向不同对象”:可改变pointer所指对象。
二、采用reference的情况:
- 确定“总会代表某个对象”;
- “一旦代表了该对象就不能够再该改变”;
- 某些操作符必须返回一个reference(如:operate[ ])。
参考
1. 在c++底层中,引用是通过指针实现的,所以,在实现层面上来说,引用就是指针;
2. 在c++语法上来说,c++编译器并不为引用类型分配内存,所以引用不能为空,必须被初始化,一旦初始化不能更改引用对象;
3. 所有对引用的操作都是对原始对象的操作。
参考来自:
详解c++ 引用(reference)与 指针(pointer)的区别与联系
C++ 引用(reference)与 指针(pointer)的区别与联系