欢迎光临~湖南智能应用科技有限公司-hniat.com
语言选择:
∷
Toggle navigation
导航菜单
网站首页
公司简介
组织结构
研发团队
企业文化
质量体系
公司业务
工业物联
机器视觉
智能加工
智能测试
智能应用
区块链应用
公司产品
精选产品
公司案例
合作伙伴
重点客户
典型案例
新闻资讯
人才猎聘
公司新闻
解决方案
行业资讯
产业政策
下载中心
帮助文档
档案下载
辅助工具
联系我们
在线留言
基础知识
浅谈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
栏目导航
人才猎聘
+
公司新闻
+
解决方案
+
高端材料
机器视觉
智能测试
智能应用
区块链应用
行业资讯
+
行业跟踪
基础知识
产业政策
+
资讯中心
国家数据局等17部门联合印发《“数
关于印发《湖南省人工智能产业发展三
湖南智能招聘物联网前端工程师
湖南智能株洲招聘java产品工程师
湖南智能株洲招聘java全栈工程师
联系我们
联系人:徐经理
手机:13907330718
电话:0731-22222718
邮箱:hniatcom@163.com
地址: 湖南省株洲市石峰区联诚路79号轨道智谷2号倒班房6楼603室
分享
手机
分类
顶部
关闭
湖南智能-QQ
湖南智能-MSN
湖南智能-Skype
湖南智能-阿里
关闭
用手机扫描二维码
关闭