• 指针、指针的指针、指针的传递、流程图思维导图


      学习c语言的同学,在指针的传递中,好多搞不明白,为什么被调函数的形参有的时候用指针的指针,而不是用一般指针。

      一、如果是指针p已经有确定的指向且不需要在被调函数中改变它的指向(确定的指向也就是它的值,当然这个值一定是一个具体的地址,而不是NULL或野指针),只需要对指针p指向的地址进行操作,那么,被调函数形参请用普通指针就可以了;

      二、假如指针p没有具体指向(NULL,也可能是个野指针)或有具体指向,需要在被调函数中改变p的指向(给它赋予一个新的值,当然这个值是一个地址了),那么被调函数的形参就需要用指针的指针(主调函数&p),在被调函数中通过对指针的指针进行解引用,获取指针p的地址(指针p),向p的地址(指针p)写值,就可以改变p的指向了,比如在被调函数中malloc一个空间,将该空间的地址赋值给p。

      三、有同学说了,普通指针也可以改变它的值,当然可以改变,改变了形参指针的指向,对实参毫无影响,实参还是指向原来的地址;还有同学说,什么指针,地址,变量弄不明白,这么说,所有的变量都是地址,指针变量,也是地址,不同的是指针变量保存的是地址,指针的指针只保存指针的地址,普通变量保存的什么不用说了吧,还有,请不要把p和&p混为一谈,p是p(变量),&是运算符,&p是取p的地址,p = p1;是把p1的值赋值给p。

    下图的p是主调函数的指针变量;pp,q是被调函数的指针变量;c语言的参数传递是值传递;

    指针的指针传递的是p的地址(200010) ,一般指针传递的是p的值(10001)

      这个图,是用网上的在线流程图编辑器画的,请点击这里。

  • 相关阅读:
    背景不动,内容滚动的解决方案(移动端)
    移动端真实1px的实现方法
    用户模板和用户场景
    构建之法阅读笔记02
    学习进度六
    NABCD
    构建之法阅读笔记01
    学习进度五
    梦断代码阅读笔记03
    地铁系统
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/12204940.html
Copyright © 2020-2023  润新知