zoukankan      html  css  js  c++  java
  • 指针、指针的指针、指针的传递、流程图思维导图

      学习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)

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

  • 相关阅读:
    VSCode远程编写Shell并实时调试配置过程
    eclispe 无法启动调试 cannot connect to VM
    工作流之设置表访问权限
    利用工作流返回达到无限次重复办理业务的过程
    eworkflow工作流系统在iis中发布
    ie8用ajax访问不能每次都刷新的问题
    视频演示(动态指定执行人+指定申请人的上级)
    视频演示eworkflow集成定制aspx页面的过程
    利用开发框架中的标签库集成报表工具
    流程设计器之标签工具
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/12204940.html
Copyright © 2011-2022 走看看