strtod定义和传递指针的类型

时间:2012-09-21 19:26:02

标签: 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);

如果endptr的类型为char **,为什么char *pEnd在这里使用?而不是char **pEnd

2 个答案:

答案 0 :(得分:6)

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

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

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

像:

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

d1 = strtod (szOrbits, p);

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

答案 1 :(得分:2)

正如您所观察到的,

pEndchar*。对strtod()的第一个示例调用将&pEnd作为第二个参数传递。 &pEndpEnd的地址,因此类型为char**

相关问题