二级指针

多级指针(pointer to pointer to)是指向指针的指针,二级指针是指向一级指针的指针。

一级指针指向的是某个变量,也就是一级指针中存储的是某个变量的内存地址;二级指针指向一级指针,也就是二级指针中存储的是一级指针的内存地址。

int main(void)
{
    int a = 10;                        //声明一个变量a
    int *p = &a;                       //声明指针p,指向变量a
    int **q = &p;                      //声明二级指针q,指向一级指针p
    printf("a = %d\n",a);              //打印变量a的值
    printf("a的地址&a=%p\n",&a);        //打印变量a的地址
    printf("p = %p\n",p);              //打印p的值
    printf("p的地址&p=%p\n",&p);        //打印p的地址
    printf("p的解引用*p=%d\n",*p);      //打印p的解引用
    printf("q = %p\n",q);              //打印q的值
    printf("q的地址&q=%p\n",&q);        //打印q的地址
    printf("q的解引用*q=%p\n",*q);      //打印q的解引用
    printf("q的双重解引用**q=%d\n",**q); //打印q的双重解引用
    return 0;
}

执行结果:

a = 10

a的地址&a=0x7fff5fbff838

p = 0x7fff5fbff838

p的地址&p=0x7fff5fbff830

p的解引用*p=10

q = 0x7fff5fbff830

q的地址&q=0x7fff5fbff828

q的解引用*q=0x7fff5fbff838

q的双重解引用**q=10

内存结构示意图:

如上图的代码和执行后的结果,从结果中就可以看出变量a,一级指针p和二级指针q的关系。

在学习的过程中主要是对二级指针不是很理解,所以这里特别对二级指针说明一下。

变量q是一个二级指针,里面存放的是一级指针p的地址,对q的解引用就得到了q所指向的一级指针的值,也就是变量a的地址,对q双重解引用就得到了变量a的值,所以也可以通过二级指针来修改变量a的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薇远镖局

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值