0

定義から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か?

4

2 に答える 2

6

の型はpEndですchar *。の型は&pEndですchar **

C は関数に引数を値で渡すため、ポインターを変更するには、ポインターにポインターを渡す必要があります。

を直接定義することもできますが、 aを変更するという考え方であるchar **ため、 a に初期化する必要があります。char *strtodchar *

お気に入り:

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

d1 = strtod (szOrbits, p);

明らかに中間pポインタは必要なく、&q直接使用できます。

于 2012-09-21T19:29:12.813 に答える
2

pEndchar*あなたが観察したように、です。への最初の呼び出し例は、2 番目の引数としてstrtod()渡します。は のアドレスであるため、タイプは です。&pEnd&pEndpEndchar**

于 2012-09-21T19:28:55.767 に答える