- 完整面试流程解析:面试前中后阶段全知道(一)(3-30)
- 一次完整的面试流程包含以下几个阶段:面试前阶段;面试阶段;面试后阶段。 1、面试前阶段:此阶段主
这篇文章会详细地为大家讲解 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++指针与引用有什么区别”的文章分享到此结束啦。希望上述内容能对大家有所帮助,让大家能学到更多知识。如果觉得文章不错,就把它分享出去,让更多人看到吧。
温馨提示:本内容地址http://m.ysjob.cc/article/articledetail-266226.html转载请注明,以上详细讲解引用与指针的区别,阅读后定有收获资讯信息来自颍上人才网(颍上地区最大的颍上人才网,颍上人才网)