C++中指针和引用的区别

★ 相同点:

  • 1.都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。

★ 区别:

  • 1.指针是一个实体,而引用仅是个别名;
  • 2.引用使用时无需解引用( ∗ * ),指针需要解引用;
  • 3.引用只能在定义时被初始化一次,之后不可变;指针可变;
  • 4.引用没有 c o n s t const const,指针有 c o n s t , c o n s t const,const constconst 的指针不可变;
  • 5.引用不能为空,指针可以为空;
  • 6. s i z e o f sizeof sizeof 引用得到的是所指向的变量(对象)的大小,而 s i z e o f sizeof sizeof 指针得到的是指针本身(所指向的变量或对象的地址)的大小;
  • 7.指针和引用的自增( + + ++ ++)运算意义不一样;
  • 8.引用比指针更安全。由于不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,因此引用很安全。对于指针来说,它可以随时指向别的对象,并且可以不被初始化,或为 N U L L NULL NULL,所以不安全。 c o n s t const const 指针虽然不能改变指向,但仍然存在空指针,并且有可能产生野指针(即多个指针指向一块内存, f r e e free free掉一个指针之后,别的指针就成了野指针)。

对于第 8 8 8点扩展:
指针更灵活,引用更安全
1.指针比引用更安全

  • 1.1 1.1 1.1 引用比指针更安全,比如:如果调用一个某类型空悬指针(空悬指针:此指针的值不是空,但是它指向的内容已经被 d e l e t e delete delete了)的成员方法,可能导致系统崩溃;但是引用永远不能是空的,就不存在这个问题.

2.指针比引用更灵活

  • 2.1 2.1 2.1 你可以让一个函数的最后一个参数的类型是指针,缺省值是 N U L L NULL NULL;在这个函数里面检查
    此指针的值,如果是空则做 1 1 1,如果不是空则做 2 2 2(会用到这个指针).而如果用引用,则无法实现.
  • 2.2 2.2 2.2 对指针可以有 + + , − − ++, -- ++,这样的操作;而引用永远只能指向一个地方.而且只能在初始化的时候指定,以后就不能重新指向别的对象了.

参考:详细介绍=====c++中的引用与指针的区别
指针与引用的区别与联系,哪个更安全?为什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值