1

I am having trouble understanding this code:

static long long _be_decode_int(const char **data, long long *data_len)
{
    char *endp;
    long long ret = strtoll(*data, &endp, 10);
    *data_len -= (endp - *data);
    *data = endp;
    return ret;
}

I have changed strtoll to _strtoi64 because I am programming on Windows and believe them to perform the same function.

According to the MSDN page for _strtoi64, the second parameter should be a pointer to the character that ends the string. If endp has only just been declared, what does it point to?

4

1 に答える 1

3

これは「結果パラメーター」です。ポインターに何も入れる必要はありません。関数が戻った後、数値の後の文字を指します。

編集: これは、endp だけでなく &endp を渡す理由でもあります。関数には、ポインター値を入力できるように「ポインターへのポインター」が必要です。

于 2012-07-07T17:51:46.340 に答える