指针和引用的区别

引用:

* 引用并非对象,它只是为一个已经存在的对象所起的另外一个名字。

* 定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。

* 引用必须初始化,且一旦初始化,引用将和它的初始值对象一直绑定在一起,无法再重新绑定到     另外一个对象。

指针:

* 指针是“指向”另外一种类型的复合类型,与引用类似,也实现了对其他对象的间接访问。

* 指针本身就是就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向     不同的对象。

* 指针无需在定义时赋初值。

区别:

* 引用不可以为空,但指针可以为空。

* 引用不可以改变指向,对一个对象"至死不渝";但是指针可以改变指向,而指向其它对象。

* 引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。

* 引用比指针使用起来形式上更漂亮,使用引用指向的内容时可以直接用引用变量名,而不像指针一样要使用*;定义引用的时候也不用像指针一样使用&取址。

* 引用比指针更安全。由于不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,因此引用很安全。对于指针来说,它可以随时指向别的对象,并且可以不被初始化,或为nullptr,所以不安全。const指针虽然不能改变指向,但仍然存在空指针,并且有可能产生野指针(即多个指针指向一块内存,free掉一个指针之后,别的指针就成了野指针)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇种田家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值