zoukankan      html  css  js  c++  java
  • 传递指针与传递指针的引用

    问题原型:

    函数声明如下:

    bool read_proInfo(char*&PDATA, char*AC_str, char*DE_str, char*SQ_str, int&AC_len, int &DE_len, int&SQ_len)

    PDATA指向一段字符的开始位置,read_proInfo函数每次解析一条数据,解析完之后,希望PDATA能够指向下一条数据的开始位置,方法就是在函数的结尾让PDATA指向下一条数据的位置。如果传递参数的形式是char*PDATA,则函数结束后,PDATA指向的内容不会改变,而如果传递char*&PDATA,函数结束后,PDATA则可以指向下一条数据的位置。

    问题产生

    我们知道,参数的传递分为按值传递和按地址传递。按值传递传递的是参数的拷贝,不会改变传入参数的值,但是按地址传递是可以改变的。我们也知道,传递数组的名称和传递指针都是按地址传递的。那么,char*PDATA是按地址传递的,为什么函数结束后PDATA的值没有被改变呢?

    问题解答

    知识点的混淆。没有深入的理解自己产生问题char*PDATA是按地址传递的,我们也可以改变PDATA所指向位置的值,但是问题原型中想要改变的是PDATA指向的地址,而非PDATA所指向的地址的值。想要改变PDATA指向的地址,是改变指针的值,所以需要传递指针的引用。

    问题总结

    注意区分改变“指针指向地址的值”还是“指针指向的地址,即指针本身的值”,前者传递指针的值,即指针指向的地址;后者传递指针的引用 ,即指针的地址。

  • 相关阅读:
    window redis 安装配置
    mongodb下载及安装配置教程【仅供参考】
    合并对象
    JSON
    函数声明与函数表达式
    mongodb write 【摘自网上,只为记录,学习】
    javascript 操作cookie
    javascript 将多维数组转换为一维数组
    javascript 去除字符串中重复字符
    javascript 获取url参数
  • 原文地址:https://www.cnblogs.com/zhenghao2/p/6612680.html
Copyright © 2011-2022 走看看