从定义 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
直接使用.