后台参数获取到参数但是依旧报空指针_C++日志(二十六)指针和引用的异同、指针的安全隐患...

38b7febbb7da3a038ce58a191935978d.png

1、指针和引用的异同

C++中,指针和引用并存,二者似乎有很多相同点,但是又不完全相同。有些情况下指针能做到的,引用也能做到,那么什么场合下适合使用指针,又是什么场合下适合使用引用呢?下面不是根据二者在性质上的差异进行分类,而是直接从使用的角度进行归类。

首先分析二者的相同点:指针和引用在作为函数参数传递时,都不是传递的值,可以认为二者传递的都是地址,也就是说二者都能有效减少输出传递过程的内存开销。

其次是二者的不同点:引用必须在声明的同时进行初始化,指向一个存在的对象。而指针并不要求必须进行初始化,同时指针还可以被定义为空指针,即不指向任何对象。另一点的显著不同是,引用一旦指向某个对象就不能再去指向别的对象,而指针可以更换其指向的对象。

根据上述的相同点和不同点可以看出,引用更像是一个常量指针。因此,引用能实现的功能指针都能实现。C++并不是为了兼容C才使用引用这个概念,那么引用必然有它的优越之处。按照郑莉老师书中所介绍的,“函数参数双向传递和避免使用指针的算术运算”运算时,引用具有安全处理数据的效果,此时使用指针会增加代码的复杂度。(个人认为:引用的作用依旧不是明显,反而会造成不同程序员的代码可读性差,可能是自己还没有真正掌握引用的强大之处)。

指针和引用还有很多需要进行讨论的地方,根据二者的语法与定义都可以很自然的推理出来,比如new申请的内存首地址只能赋值给指针,等等。

2、指针的安全隐患

指针虽然强大,但是这种针对地址的操作对程序员的水平要求也比较高,因而存在着很多的安全隐患。比如,使用指针处理数组时和可能出现越界问题,如果没有下标检查就会造成难以预料的影响。

当然,指针的安全隐患问题还有很多,但是自己目前仅仅理解了一点,等以后理解的更加深入再进行记录。

参考:

【1】https://www.zhihu.com/question/37608201/answer/72766337

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值