C语言指针篇(二)多级指针
多级指针
多级指针常常使用于数组.这里仅仅介绍一下它长什么样,后文会再次详细对比使用.
多级指针呢,常见的有二级指针.见图.
二级指针的写法: char **p;
这样来看: char *(*p)
先看一级指针.char *p; *p是一个指针,指向了一个char大小的小盒子.
再看看二级指针. char * (*p) (*p) 是一个指针,指向了一个 * 的小圆圈 .那这个小圆圈叫*(*p) ,这第二个小圆圈既然是指针,那它指向了一个char 大小的小盒子.
在二级指针里面, 只有一个指针变量,就是p , 这个指针变量表示 这个二级指针链的入口地址.
二级指针的使用
二级指针的使用是比较烧脑的.但是仔细整理一下,还是可以从图上简单地理解出来.
对比一级指针.一级指针的使用
char *p;
1 int main(){ 2 3 char *p; 4 char a = 10; 5 6 p = &a; //指针变量p的赋值是决定了p指向哪个具体的地址,这里是指向小盒子a的地址. 7 *p = 20; //对p进行*运算是表示,对p指向的小盒子的内容进行取值或者赋值. 8 9 char **p; 10 char a = 10; 11 12 //我们先记住一条规则,如果x是一个地址,那么通过 *运算就可以访问这个这个空间里面存放的数据. 13 14 *p = &a; //这里的*p表示的是对p取值,那二级指针p的值是什么?当然是存放着一级指针的地址啦, 通过*运算,就可以访问一级指针这个小圆圈里面的数据,将这个小圆圈里面的内容,写成小盒子a的地址. 15 **p = 20; //上一步把*p的值写成了小盒子a的地址,那现在*p里面的内容就是a的地址啦,通过 *运算,就可以访问小盒子里面的内容啦. 16 17 }
说到底,二级指针就是一级指针的扩展,只要搞明白一级指针怎么读,怎么操作,内存图怎么画,怎么指向空间,怎么访问空间,也一样能用相同的规则,来解读二级指针,多级指针.
二级指针的例子到数组那里再展开.
多画图,是学好指针的诀窍.