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

很多人痛恨C语言的指针,因为它不好用而且灵活多变容易出错,一旦发生了错误,纠错也很麻烦。也有很多人很喜欢指针,因为它可以让程序员觉得他可以控制内存的每一片空间。C++为了与C兼容,也保留了指针这个神奇的产物,但是它也加入了一个跟指针乍一看有点相同的引用。很多书上都说,引用是对变量取一个别名。这话不错,那么到底如何去理解它呢?

无论你是神马变量,其实都是内存某个地址的别名罢了。只要你是变量,你就会占用内存的空间。引用和指针的区别主要有以下几点:

(1)引用是直接引用,指针是间接引用;

假如我们声明并初始化变量a: int a=1;那么内存中就肯定有一个地方的值变为了1,而且以名字a来引用。如果这时候我们在定义一个引用int &b=a;那么这块内存区域就多了一个名字b,我们引用名字b同样是引用名字a。因为引用只是为某一内存空间取一个别名,所以引用并不占用内存空间。然后指针就会占用内存空间。在32位机上面,无论是是神马指针,都是4个字节,指针里面存的是某个内存空间的地址。所以,当我们使用指针的时候,我们是通过找到指针里面储存的地址,接着根据地址寻到那片内存空间的。这是一种间接引用;

(2)引用不能变,指针可以变;

当然这不是绝对的,如果指针被加上了const修饰符之后,它也是不可以变的。正因为引用只是别名,所以在声明它的时候必须要初始化,而且一旦初始化之后就再也不能更改了。这也算是一种放弃使用指针的代价。

当然以上只是很肤浅的理解,但是大致也对,关于引用的实现原理远远没有这么简单,待我以后有时间才补上吧~~

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值