C++引用与指针的区别详解:能否互相替代?
创作时间:
作者:
@小白创作中心
C++引用与指针的区别详解:能否互相替代?
引用
CSDN
1.
https://blog.csdn.net/2301_76886465/article/details/136519610
在C++编程中,引用和指针是两个非常重要的概念。虽然它们在某些方面有相似之处,但它们之间存在本质的区别。本文将详细探讨引用和指针的主要区别,帮助读者更好地理解它们的使用场景和限制。
1. 引用和指针的最大区别:引用不能改变指向
指向是什么意思呢?指向就是指针所指向的地址。
在上面这一张图片中,我们要修改链表next指针所指向的位置。从上一篇文章可以知道,引用必须进行初始化,而初始化之后无法再进行修改。但是我们在链表或者二叉树等数据结构中,我们是要改变指针的地址的。
2. 引用和指针在底层上面是一样的
引用是否有开辟空间?在语法上面引用并没有开辟空间,但是我们可以看到,在底层实现上:引用和指针是一样的,所以在底层上引用有开辟空间。这也告诉我们语法和底层在某种方面是背离的(就跟老婆饼没有老婆一样)。
3. 引用和指针在sizeof面前大小不同
在sizeof的意义不同,指针的大小是4/8字节,引用的大小取决于引用类型的大小。比如long long的大小是8个字节,它的引用也是8个字节。
4. 有多级指针,没有多级引用
我们给别名起别名(给弼马温取名齐天大圣本质上还是给孙悟空去别名),并不是多级引用。而我们有二级指针,它存放的是一级指针的地址。
5. 引用++是引用的实体++,指针++会向后偏移同一个类型的大小
总结
- 引用无法改变指向,所以引用无法替代指针,引用只是能在大多数情况下简化我们的代码
- 引用在语法上不占地址,指针开空间
- 因为引用必须进行初始化,所以引用比指针更安全一些,容易出现野指针,不容易出现野引用
- 在sizeof、++等意义不同
- 有多级指针,没有多级引用
C++祖师爷在设计的时候并不是想用引用替代指针,而是想方便我们的日常工作与学习。二者不是非黑即白,而是相辅相成。
热门推荐
阑尾炎手术后,这些细节你必须知道!
阑尾炎术后康复锻炼指南:快速恢复秘籍
最新消息!王星已回国,凌晨发文→
新媒体设计中的色彩心理学:从视觉冲击到情感共鸣
成都武侯祠国庆活动:文化盛宴不容错过
成都火壶表演:非遗文化的魅力
“成都手作”非遗体验活动收官 千余名学生感受传统文化魅力
隋炀帝和秦始皇,谁更“冤枉”?
名字背后的心理密码:以“郭宇墨”为例
郭宇墨:名字背后的神秘力量
冬游篁岭:麻糍公婆饼,五天玩转梯云人家
全球百万物种面临灭绝,保护行动已见成效
勃利虎伤人后,黑龙江全面部署人兽冲突防范工作
黑鱼垂钓必知:五大习性助你精准捕获
黑鱼养殖病害防治:烂鳃、烂身等五大疾病全解析
深圳首发数字人民币可视硬钱包,四大创新引领支付新趋势
糖尿病患者请注意:山药虽好,但这些事项一定要记牢!
瘦肉蒸山药,冬日暖身必备
科学补钙指南:功效、需求与注意事项全解析
太姥娘娘的“身世”
中国最受欢迎的十大宠物狗品种
为什么狗总是怕猫?揭秘狗与猫之间的千年恩怨
一开门就冲出去?揭秘狗狗行为大不同背后的真相!
泰迪犬的起源:从贵宾犬到“泰迪熊”的演变
高丽营大集最新开市时间出炉!每周六等你来赶集
高丽营大集:周末逛吃的绝佳去处
天津三星注销,三星手机在中国市场何去何从?
精锋医疗手术机器人:让复杂手术变得简单
被冤枉多年的5种“垃圾食品”,记得告知家人,碰到了可以放心吃
20种把泡面变得超好吃的小教程