• 什么时候形参不得不用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重指针;

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

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

  • 相关阅读:
    DLL文件是什么?
    regsvr32的作用是什么?
    win10 解决.net framework 3.5 (安装报错 0x80240438)
    git 常用命令
    Wine使用初体验
    Windows 桌面快捷方式图标变白的问题
    WSL使用初体验/WIN10下安装ubuntu20.04
    Windows 重新安装Microsoft Store/用户无权进入WindowsApps文件夹
    linux命令
    linux命令
  • 原文地址:https://www.cnblogs.com/mathzzz/p/2685560.html
Copyright © 2020-2023  润新知