• 什么时候形参不得不用n重指针


    先回答当n=2的情形,一句话回答:

    当要通过一个函数来改变 指针变量的值 的时候,就必须把这个指针变量的地址 作为实参,传递给函数;

    这个时候,这个函数所接收到的变量 当然就是 二重指针!

    典型的例子有:

    long int strtol(const char *nptr, char **endptr, int base);

    char *p;

    char *str = "200/300"

    int n = strtol(str, &p, 10);

    这第二个参数就是要把指针变量p的赋值为字符'/'所在的地址;

    还有

    char *strtok_r(char *str, const char *delim, char **saveptr); // 这个函数非标准库函数,linux一般都有

    char *save, *p;

    char buf[100] = "200/300";

    p = strtol(buf, "/", &save);

    这个同上,还是把save的值赋值为字符'/' 所在的地址;

    --------------------------------

    总之一句话,C函数都是拷贝变量值传递给函数,当函数要改变父环境的变量,就必须接收这个变量的地址,所以:

    当函数要改变一个n重指针(栈区的指针本身是个变量)的值,形参就必然是n+1重指针;

    如果函数要改变 父环境指针变量所指向的内存空间的内容,则不需要传它的地址,直接传这个指针的值即可,

    这一点新手学习的时候容易晕头;再次强调一下;

  • 相关阅读:
    linux C/C++编程之库-动态库,静态库创建及使用
    类linux 系统iptables 系统初始化配置
    OS error set
    OpenWrt修改
    OpenWrt backfire trunk源码下载及编译
    OpenWrt compiles
    OpenWrt 学习网址
    nginx编译配置
    cocos2d-x中的坐标系
    SGU 231 Prime Sum 求<=n内有多少对素数(a,b)使得a+b也为素数 规律题
  • 原文地址:https://www.cnblogs.com/mathzzz/p/2685560.html
Copyright © 2020-2023  润新知