【C++ Basics】 区别pointers和references

pointer(指针)*-> 
references(引用) : &

联系

  • 指针:对象在内存中的地址;
  • 引用:对象的别名,本质上是一个功能受限但是安全性更高的指针;
  • 引用访问变量的话是直接访问,而指针是间接访问。

可以说,reference是一种特殊的pointer。

区别一

reference无null,但pointer可被设为null。

  • 一个reference必须总代表某个对象
  • 一个变量用来指向(代表)另一个对象,或不指向(代表)任何一个对象时,可用pointer

区别1.1

reference必须有初值,而对pointer则没有这样的限制。

区别1.2

reference使用前不需要测试其有效性,而通常需要测试pointers是否为null。

区别二

pointer可以被重新赋值,指向另一个对象;而reference却总是指向它最初获得的那个对象。

总结

一、采用pointer的情况:

  1. 可能“不指向任何对象”:可将pointer设为null
  2. 在不同时间指向不同对象”:可改变pointer所指对象

二、采用reference的情况:

  1. 确定“总会代表某个对象”;
  2. 一旦代表了该对象就不能够再该改变”;
  3. 某些操作符必须返回一个reference(如:operate[ ])。

参考

1. 在c++底层中,引用是通过指针实现的,所以,在实现层面上来说,引用就是指针;
2. 在c++语法上来说,c++编译器并不为引用类型分配内存,所以引用不能为空,必须被初始化,一旦初始化不能更改引用对象;
3. 所有对引用的操作都是对原始对象的操作。

参考来自:
详解c++ 引用(reference)与 指针(pointer)的区别与联系
C++ 引用(reference)与 指针(pointer)的区别与联系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值