C++语言之“指针”和“引用”

1.先在一次面试中,主管问我什么是指针,什么是引用。

我根据之前在书上学到的,巴拉巴拉讲了一大堆,什么指针是指向这个变量的地址,乱七八糟的,具体怎么讲的,后面也忘记了。

面试官后面说,嗯,你说的也对,但是我可以教你。以后面试有人这么问你就讲,指针就是变量的内存地址;引用就是单向指针!!!

瞬间惊到,原来自己以前都在死读书!!!亦或者是,自己对于指针就没有理解透彻,瞬间茅塞顿开!!!


2.上面的话其实还是有那么一点点拗口的。简单来说,指针就是一个变量,存储的是内存地址。而引用,是变量的别名,本身就是关联了一个内存地址的变量,可以理解成在这个内存地址上用一个变量来代替0xXXXXXXXX。因此,指针是可以变的,它可以指向别的内存,而引用可以理解成是直接通过内存地址来访问,内存地址是绑定的,是不可变的。

用一个也许不是那么恰当的类比吧!

指针就像是--int a = 10; 变量a是可变的;

引用就像是--#define LENGTH 10   LENGTH是不可变的


3.指针的初始化:

Type *Pointer = &Variable;

*Pointer就是一个变量, 用‘*'来标明这就是个指针变量。用‘&’给他赋值,就是将内存地址赋值给指针变量。

而我们可以看到,在引用中,其实写法就是&Variable。

因此,如果要类比的话,Type *Pointer = &Variable;就相当于 int a = 10;

指针就相当于int,它是一个存储内存地址的变量,而引用就相当于常量10,它本身就代表一个内存。


附:以上是我的个人理解,指针这块一直是C/C++学习者非常头痛的一个难点。如果我的描述有误,请不吝赐教;如果您有自己的理解,或者更好的表述,也欢迎交流!

猜你喜欢

转载自blog.csdn.net/m0_37811192/article/details/81047616