本文为学习记录,如有理解错误,还请指正。
一般指针,指针变量,地址统称为指针。
我们使用地图来比喻指针,假设一个没有任何标记的地图就是一个野指针,一个有明确标记(每个地图上只能同时有一个标记)的地图就是一个有指向的指针,一个地图边界之外的标记为空指针(不指向地图内的任何地址)。
野指针就像是一个不给你任何标记的地图,你的目的地可以是地图上的任何地方,而且你也不知道目的地在哪个方向。
一个有明确指向的指针就像是给你标记好目的地的地图,你明确知道要往什么地方走才能到达目的地,取得对应的东西。
一个空地图可以通过添加标记(指针赋值)来确定一个唯一的目的地,同时也可以修改目的地。
int* p; //一个没有明确标记的地图
int a=10;
p=&a; //在地图上标记出a的地址
*p; //跟着地图上的地址找到目标
p=NULL; //将地址上的标记移到地图之外
二级指针
二级指针就像一个地图标记着另一个地图的地址。假设小明手里有一张寻宝图,小明高高兴兴的去到寻宝图上标记的位置寻找宝藏,挖出来一看,结果又是一个标着宝藏地址地图,小明又去到这个地图上标记的位置,终于找到了宝藏。
这里的第一张地图就是一级指针,第二张地图就是二级指针。每次去挖出宝藏的过程就是解引用(*);
int c=20;
int*p=&c
int**p2=&p;
*p2;//跟随第一张地图挖出第二张地图
*(*p2)//跟随第二张地图挖出宝藏