C strtod定义和传递指针的类型

C strtod定义和传递指针的类型,c,strtod,C,Strtod,根据定义,双strtod常量char*str,char**endptr C参考网站为这一强大功能提供了一个示例: char szOrbits[] = "365.24 29.53"; char * pEnd; double d1, d2; d1 = strtod (szOrbits,&pEnd); d2 = strtod (pEnd,NULL); 如果endptr应该是char**类型,为什么这里使用char*pEnd?而不是char**pEnd?正如您所观察到的,pEnd是char*。

根据定义,双strtod常量char*str,char**endptr

C参考网站为这一强大功能提供了一个示例:

char szOrbits[] = "365.24 29.53";
char * pEnd;
double d1, d2;
d1 = strtod (szOrbits,&pEnd);
d2 = strtod (pEnd,NULL);
如果endptr应该是char**类型,为什么这里使用char*pEnd?而不是char**pEnd?

正如您所观察到的,pEnd是char*。对strtod的第一个示例调用将&pEnd作为第二个参数传递&pEnd是pEnd的地址,因此为char**。

pEnd的类型为char*。&pEnd的类型为char**

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

您可以直接定义char**但需要将其初始化为char*,因为strod正在修改char*

比如:


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

在C中查找按引用传递。它就是这样做的。endptr是char**类型,因此函数可以修改它指向的char*。+1很好地解释了对指针的经典误解/
char *q;
char **p = &q;

d1 = strtod (szOrbits, p);