c/c++语言开发共享char **应付字符串?

当我遇到char **时,我很困惑,是否真的有必要应对字符串?
例如:

double strtod(const char *nptr,char **endptr); 

如果endptr不为NULL,则指向停止扫描的字符的指针将存储在endptr指向的位置。 — MSDN
这很复杂,为什么不只是将指向字符的指针复制到endptr ? 调用之后的所有计算都可以通过将指针的值传递给endptr来实现。
真的需要char**吗?

    想象一下,有一个名为my_type的类型,你有一个名为foo()的函数需要一个指向my_type的指针,以便它可以修改它:

     void foo(my_type *t); 

    现在,让我们看一下my_type实际定义的方式:

     typedef char* my_type; 

    因此,类型是否已经是指针并不重要。 如果要将指针传递给该类型的变量,则需要其地址。 所以分解为:

     my_type *t 

    将会:

     char **t 

    每当你想要一个指向char *类型变量的指针时,你需要一个char **

    C中的参数按值传递。 如果希望函数的调用者看到对传递给函数的参数所做的更改,则需要将参数的地址传递给函数。 这就是char**被传递的原因。 调用者有一个char*类型的变量并传递其地址。 如果在函数中更改了它,则调用者可以看到该更改。

    例如:

     void set_int(int i) { i = 4; } /* Caller */ int x = 7; set_int(x); /* 'x' is still 7 */ void really_set_int(int* i) { *i = 4; } /* Caller */ int x = 7; really_set_int(&x); /* 'x' is now 4 */ 

    char*类型变量的相同行为。 如果函数需要更改char* 指向的内容(而不是其内容),则需要char*的地址,其类型为char**

      以上就是c/c++开发分享char **应付字符串?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549189.html

      (0)
      上一篇 2021年1月13日
      下一篇 2021年1月13日

      精彩推荐