从定义 double strtod ( const char * str, char ** endptr );
C参考站点提供了强大功能的示例:
char szOrbits[] = "365.24 29.53";
char * pEnd;
double d1, d2;
d1 = strtod (szOrbits,&pEnd);
d2 = strtod (pEnd,NULL);
Run Code Online (Sandbox Code Playgroud)
如果endptr应该是类型char **为什么char *pEnd在这里使用?不是char **pEnd吗?
类型pEnd是char *.类型&pEnd是char **.
C通过值将参数传递给函数,因此要修改指针,需要将指针传递给指针.
你可以char **直接定义一个,但你需要将它初始化为a,char *因为这个想法strtod是修改一个char *.
喜欢:
char *q;
char **p = &q;
d1 = strtod (szOrbits, p);
Run Code Online (Sandbox Code Playgroud)
显然,中间p指针不是必需的,您可以&q直接使用.