欢迎光临~湖南智能应用科技有限公司-hniat.com
语言选择:
∷
基础知识
浅谈C++中引用和指针的区别
本质:引用是别名,指针是地址,具体的:
①从现象上看,指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变。这句话可以理解为:指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变。
②从内存分配上看,程序为指针变量分配内存区域,而不为引用分配内存区域,因为引用声明时必须初始化,从而指向一个已经存在的对象。引用不能指向空值。
注:标准没有规定引用要不要占用内存,也没有规定引用具体要怎么实现。
③ 从编译上看,程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。这是使用指针不安全而使用引用安全的主要原因
。从某种意义上来说引用可以被认为是不能改变的指针。
④不存在指向空值的引用这个事实,意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。
⑤理论上,对于指针的级数没有限制,但是引用只能是一级。如下:
int** p1; // 合法。指向指针的指针
int*& p2; // 合法。指向指针的引用
int&* p3; // 非法。指向引用的指针是非法的
int&& p4; // 非法。指向引用的引用是非法的
注意上述读法是从左到右。
上一个:
MFC中SubclassDlgItem函数的整理
下一个:
详谈C++引用&和指针在作为形参时的区别
相关资讯
谈谈我用于「机器视觉」开发环境
2019-05-23
Python手写机器学习最简单的KNN算法
2019-06-17
双目立体标定与立体校正
2019-11-10
Win32控制台应用程序、Win32项目、MFC应用程序的区别与联系
2019-11-22
Win32控制台程序是什么
2019-11-22
栏目导航
人才猎聘
+
公司新闻
+
解决方案
+
高端材料
机器视觉
智能测试
智能应用
区块链应用
行业资讯
+
行业跟踪
基础知识
产业政策
+
资讯中心
deepseek各模型的区别
数智化合作签约成功举办
国家数据局等17部门联合印发《“数
关于印发《湖南省人工智能产业发展三
湖南智能招聘物联网前端工程师
联系我们
联系人:徐经理
手机:13907330718
电话:0731-22222718
邮箱:hniatcom@163.com
地址: 湖南省株洲市石峰区联诚路79号轨道智谷2号倒班房6楼603室
分享
手机
分类
顶部
关闭
湖南智能-QQ
湖南智能-MSN
湖南智能-Skype
湖南智能-阿里
关闭
用手机扫描二维码
关闭