strtod定义和传递指针的类型

Pet*_*rba 0 c strtod

从定义 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吗?

oua*_*uah 6

类型pEndchar *.类型&pEndchar **.

C通过值将参数传递给函数,因此要修改指针,需要将指针传递给指针.

你可以char **直接定义一个,但你需要将它初始化为a,char *因为这个想法strtod是修改一个char *.

喜欢:

char *q;
char **p = &q;

d1 = strtod (szOrbits, p);
Run Code Online (Sandbox Code Playgroud)

显然,中间p指针不是必需的,您可以&q直接使用.