和上一篇文章一样,使用的学习工具为阿尔法编程,网址:http://www.alphacoding.cn/
指向指针的指针,和名字一样,本质上依旧是指针。一级指针就比较抽象了,那二级指针不是更让人接收不了吗,莫急,待我慢慢道来:
先贴图:
假如我们先定义一个变量a,赋值为100,地址为&a。同样,再定义一级指针*p和二级指针**q。我们让一级指针指向变量a,二级指针指向一级指针:
p=&a;
q=&p;
那么他们的关系为:
这样他们的关系是不是比较清晰了?如果你听过数据结构,应该会觉得它和链表极其相似!
回归正题,如果我们想引用变量a的值,有几种方法?
1.直接使用变量a,
2.使用一级指针*p:p指向了a的地址,使用*p引用a的数据,
3.使用二级指针**q:q指向了p的地址,*q引用p的数据,而p的数据就是a的地址,再来一个*,即**q(=*p),引用到了a的数据。
如果你觉得这种方法理解起来有些抽象,那就再来个更具体的例子:
假设有一个 int 类型的变量 a,它的值为 100,地址为 0x1000;p 是指向 a 的指针变量,那么 p 的值就为 0x1000,假设p的地址为 0x2000;q 又是指向 p的指针变量(即二级指针),那么 q 的值就为 0x2000,假设q的地址为 0x3000。来说明最难理解的二级指针指向a的数据,则:q=0x2000,*q=0x1000,**q=100。
至此,二级指针的内容全部讲完。如果感觉这篇文章对你理解C语言指针有所帮助,可以点赞喔(huahua)(huahua).