在微信上,程序员互动联盟的qq上,太多的人问说指针好难啊,怎么学习指针?
那么首先什么是指针?
C 和 C++中的指针是一个很重要,也很灵活的元素。学会使用指针,不仅因为它是 C 和 C++的重要组成部分,更因为对有些问题使用指针会极大地简化解决过程,甚 至有些问题只能使用指针解决。 指针本质上是一个变量,只是它存储的值不是一般的数字或字符,而是其他变量的地址。
那么指针这么难,如何学习指针?
实际上初学者觉得指针较难的原因并不是指针的语法规则复杂(实际上并不比 for 循环复杂),也不是指针使用灵活(初学也用不到太多种用法,也就接下来将要说的两种),而是指针牵扯到一个叫做“地址”的东西。这个地址是什么东西,地址和它所指的变量有什么关系,这是最常问的两个问题。 想象一排盒子,就是内存空间;其中一个盒子,就是一个变量;盒子里面放的小球,就是变量的值;而地址就是这个盒子在一排盒子中的编号。 如果我在一排盒子里选一个盒子 a{int a;},在 a 里放一个小球{a=3;}。然后再选一个特殊盒子{int *b;},注意特殊指的是里面将要放的东西{int *}特殊,盒子本身{b}没什 么特殊的。接下来将看看盒子 a 的位置{&a},并将其写在一张纸上并放入盒子 b{b=&a;}。这样盒子 b 的特殊性就体现出来了:里面放的不是球{3},而是纸{&a}。 现在我想将盒子 a 里的球{3}换成另一个球{4},但是无法直接动盒子 a(例如忘了盒子 a 在哪了),手边只有盒子 b。我打开盒子 b,看到了写着盒子 a 位置的纸{p}, 从而找到了盒子 a{*p},最后将盒子 a 里的球换成另一个球{*p=4;}。 这个例子形象准确的描述了变量和指针的工作过程。
说到最后,好像还没有说到如何学习指针,其实,没有什么技巧,掌握它的基本概念后,多用,多写就行了,无他,唯熟而已。