本文参考自: 原文地址
1.先在一次面试中,主管问我什么是指针,什么是引用。
我根据之前在书上学到的,巴拉巴拉讲了一大堆,什么指针是指向这个变量的地址,乱七八糟的,具体怎么讲的,后面也忘记了。
面试官后面说,嗯,你说的也对,但是我可以教你。以后面试有人这么问你就讲,指针就是变量的内存地址;引用就是单向指针!!!
瞬间惊到,原来自己以前都在死读书!!!亦或者是,自己对于指针就没有理解透彻,瞬间茅塞顿开!!!
2.上面的话其实还是有那么一点点拗口的。简单来说,指针就是一个变量,存储的是内存地址。而引用,本身就是内存地址。因此,指针是可以变的,它可以指向别的内存,而引用是不可变的。因为,我们内存地址我们可以认为是常量。
3.指针的初始化:
Type *Pointer = &Variable;
*Pointer就是一个变量, 用‘*'来标明这就是个指针变量。用‘&’给他赋值,就是将内存地址赋值给指针变量。
而我们可以看到,在引用中,其实写法就是&Variable。
因此,如果要类比的话,Type *Pointer = &Variable;就相当于 int a = 10;
指针就相当于int,它是一个存储内存地址的变量,而引用就相当于常量10,它本身就代表一个内存地址。
附:以上是我的个人理解,指针这块一直是C/C++学习者非常头痛的一个难点。如果我的描述有误,请不吝赐教;如果您有自己的理解,或者更好的表述,也欢迎交流!