C语言:指向指针的指针——二级指针

和上一篇文章一样,使用的学习工具为阿尔法编程,网址: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).

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值