指针和引用的概念、联系、区别

指针的概念

  • 指针是一个地址变量,把地址存放在一个变量中,然后通过先找出地址变量中的值,再由此地址找到要访问的变量的方法,称为“间接访问”。

引用的概念

  • 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。

引用的特性

  1. 引用在定义时必须初始化
  2. 一个变量可以有多个引用
  3. 引用一旦引用一个实体,再不能引用其他实体

两者本质

  • 指针是地址,引用是别名,都是间接访问的地址概念。
  • 汇编代码中指针和引用在编译器中的实现是一样的
  • 指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。

指针和引用的区别

  1. 指针是一个实体,而引用仅是个别名。
  2. 引用只能在定义时被初始化一次,之后不可变,但指针可以改变。
  3. 指针可以有多级,但引用只有一级。
  4. 引用不能为空,指针可以为空。
  5. sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小
  6. 指针和引用的自增(++)运算意义不一样
  7. 引用是类型安全的,而指针不是 ,引用比指针多了类型检查。
  8. 引用没有const,指针有const,const的指针不可变。
  9. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理。

指针和引用的效率

  • 两者的效率是一致的,因为在底层中,指针和引用的参数都指向同一个地址。
  • 在高级编程语言中,因为用*传参可能会指向空的地址或者错误的地址,所以要时时判断参数是否为空,导致降低效率。
  • 而用&传参数,则参数不可能为空或者错误地址,这也算稍微提升了一些效率。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值