1

我无法理解这段代码:

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;
}

我已更改strtoll为,_strtoi64因为我在 Windows 上编程并相信它们执行相同的功能。

根据_strtoi64 的 MSDN 页面,第二个参数应该是指向结束字符串的字符的指针。如果endp只是刚刚宣布,它指的是什么?

4

1 回答 1

3

它是一个“结果参数”——你不必在指针中放任何东西,函数返回后它会指向数字后面的字符。

编辑:这也是您传递 &endp 而不仅仅是 endp 的原因——该函数需要一个“指向指针的指针”,以便它可以填充指针值

于 2012-07-07T17:51:46.340 回答