2012-07-07 55 views
1

我無法理解這樣的代碼:與strtoll/_strtoi64參數問題

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編程,並相信他們能夠實現同樣的功能。

根據MSDN page for _strtoi64,第二個參數應該是一個指向結束字符串的字符的指針。如果endp只是剛剛宣佈,它指向什麼?

+1

與strtoll指針返回那裏的最後它在轉換期間讀取的字符 – Ulterior 2012-07-07 17:51:48

回答

3

這是一個「結果參數」 - 您不必將任何東西放入指針中,並且在函數返回後它將指向數字後面的字符。

編輯:這也是爲什麼你逝去的& ENDP並不僅僅是ENDP - 功能需要一個「指針的指針」,所以它可以在指針值填補