- 热门职位
- 热门地点
- 地区招聘
这篇文章会详细地为大家讲解 C++指针与引用的区别。小编认为这很实用,所以把它分享给大家作为参考,希望大家读完这篇文章后能够有所收获。
1、引用与指针的区别
指针的原理和引用的原理非常相似。因此,在很多时候,尤其是在面试的时候,它们经常会被拿来进行比较。
本文来梳理一下引用和指针的一些异同。
1.1 相同点
两者都是关于地址的概念。
指针是一个变量,它存储着一块内存地址。引用是某一个内存的别名。我们能够使用指针或引用来修改对应内存的值。
1.2 区别
我们不能先声明一个变量引用,然后再给它赋值。我们只能在声明变量的时候同时进行初始化。
int?a?=?3; int?&b;??//?非法 int?&c?=?a;?//?合法
而指针没有这个限制:
int?*p;?//?合法
引用一旦被声明就无法更改,然而指针是可以更改的。在某种程度上,引用与常量指针有相似之处。
int?a?=?3; int?&b?=?a; int?const?*p?=?&a;
这是两者在使用上的一个巨大区别。我们拿到一个引用时,可以放心地使用,因为它肯定不会为空。然而,指针却不是这样,它有可能是为空指针,必须要经过判断之后才能使用。
sizeof 函数能够计算变量内存块的大小。然而,当我们对指针使用 sizeof 时,得到的是指针这个变量自身所占用的内存大小,并非指针指向的变量的内存大小。而引用不存在这样的问题。
我们先来看引用的指针:
int?a?=?3; int?&b?=?a; int?*p?=?&b;
这段代码不会报错。然而,若我们真的去运行它,就会发现 p 只是一个普通的 int 型指针,它所指向的是变量 a。因为 b 是一个引用,其地址与 a 相同。所以,当我们定义一个指向 b 的指针时,实际上就是在定义指向 a 的指针。这就是指向引用的指针不存在的原因。
再来看看指针的引用。指针的引用是存在的,并且很容易理解。其本质上就是指针的一个别名。
int?a?=?3; int?*p?=?&a; int?*&pt?=?p;
pt 能够指向其他变量,并且能够修改解引用的值,在使用方面它与 p 不存在任何差别。
除了上述内容,指针和引用在一些细微方面存在差别。比如自增和自减的含义不一样,指针的自增自减意味着指针的移动,然而引用的自增自减则是变量的值发生改变。
这篇关于“C++指针与引用有什么区别”的文章分享到此结束啦。希望上述内容能对大家有所帮助,让大家能学到更多知识。如果觉得文章不错,就把它分享出去,让更多人看到吧。
小学语文名师分享:如何通过‘动’字提升学生智慧与成绩
小学著名的汉语老师 小学汉语老师de微信公共帐户 在广阔的书籍中,我会发 ...
浙江大学三位一体面试现场实况:家长考生雨中共同前行,感人瞬间令人动容
6月19日凌晨6:15,在雨雨雨的伴随着郑大学的“tripe”采访在Yuquan校园和Z ...
浙江大学三位一体初审入围分数变化分析:2024年首考入围分总体降低,理科生更友好
在智格大学的初步评论中,没有“一对一得分线”这样的事情。所谓的“一对一分数要求” ...
面试系统操作流程详解:考生信息核对、必答题抽取与试讲题目查看指南
再次登录后,输入面试系统的主页。每个候选人的访谈顺序是固定的,审查员的操作顺序也对应。 ...
香港大学硕士项目面试指南:形式与详细攻略全解析
许多学生需要参加香港大学硕士课程的录取面试。但是,根据香港大学的规定,并非所有硕士课程都 ...