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)

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

  • 相关阅读:
    JavaScript原型详解
    jQuery插件开发全解析
    再谈JavaScript闭包及应用
    狗日的Javascript中的闭包
    UML的基本图(一)
    项目开发-树形层级结构中的数量统计
    不要再坑人啦!NSOperation才是苹果推荐使用的多线程技术!
    linux下查看文件内容cat,more,less
    cocos2d-x -- 渠道SDK【棱镜】接入(2)
    关于虚拟机装kali-linux的联网问题
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/12204940.html
Copyright © 2011-2022 走看看