【指针vs引用】

指针:指针是一个特殊的变量,它里面存储的的数值为内存里的一个地址,通过`*`访问内存地址所指向的值。使用场景上:适用于动态内存管理,实现复杂的数据结构(链表,树等)

引用:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 适用于实现操作符重载,返回引用实现链式调用
 

相同点

  1. 指针和引用都能间接的访问变量
  2. 支持多态
  3. 函数传参时避免拷贝
  4. 引用是指针的语法糖,在汇编层面引用通过指针实现(实际传入地址 )

 不同点:

  1. 引用在概念上定义一个变量的别名,不占内存空间;指针存储一个变量的地址占,内存空间
  2. 引用在定义时必须初始化;指针没有要求
  3. 引用在初始化一个实体后,就不能在引用其他实体;而指针只要没有const修饰可以在任何时候指向任何一个同类型 实体
  4. 没有NULL引用(不需要检查),但有NULL指针(对指针操作时需要检查)
  5. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占 4个字节)
  6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
  7. 指针有多级指针,但是引用没有多级引用
  8. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
  9. 引用比指针使用起来相对更安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值