二级指针补充

  昨天对于分享了一些关于二级指针的见解,但是我感觉还是要对其在进行补充一下比较好,当时我在二级指针这方面迷糊了很久,即使是现在有时候也会犯迷糊;

  当初我学二级指针的时候认为,一级指针必须指向了一个内存空间后才可以将它分配给一个二级指针;  

  也就是这样的:

  {

    int a;

    int *b = NULL;

    int **c = NULL;

    b = &a;

    c = &b;

  }

  刚开始我认为如果b不指向a 的空间,则不能建立一个二级指针指向他,也就是我当时认为,二级指针是指向一级指针所指向的内存空间的;

  但是正如上次所说的那样,二级指针指向的是一级指针的空间,正是因为这样二级指针才可以操作一级指针的指向;

  这正是无法用一级指针去改变另一个一级指针的原因;

  {

    int a = 10;

    int b = 20;

    int *c = NULL;

    int *d = NULL;

    c = &a;

    d = c;//将c的指向赋给了d

    d = &b;//这里改变了d的指向是不会改变c的指向的,d指向的是b的空间,只能操作b 的空间

  }

  所以说一级指针即使指向NULL 二级指针也能指向它

  {

    int *a = NULL;

    int **b = &a;

  }

  而二级指针的作用也正是如此,可以操作一级指针的指向;

  {

    int *a  = NULL;

    int **b = NULL;

    int *c = NULL;

    b = &a;

    *b = (int *)malloc(sizeof(int));//在堆区分配空间,并通过二级指针b 控制一级指针a 指向这块内存空间

    b = &c;//这是改变了二级指针b 的指向;将它重新指向了c,这个改变不会影响 a 所指向的内存空间;

  }

  以上就是我对二级指针的一些补充,希望对大家有些帮助

转载于:https://www.cnblogs.com/huhaihao/p/7583475.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值