此代碼似乎按預期方式工作,填充使用單個指針數的數組strtol將重用PARAM
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main(void)
{
int arr[4], count = 0, i;
char *p, s[32] = " \t 10, 15 \n ,20, 25 , ";
p = s;
do {
arr[count++] = (int)strtol(p, &p, 10);
while (isspace(*p) || *p == ',') p++;
} while (*p);
for (i = 0; i < count; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
我的問題是:
它是有效的使用數p作爲參數1(源)和& p作爲參數2(第一個無效字符的地址)在strtol中?
謝謝Klas,但限制關鍵字怎麼樣?對於指針的生命週期,只有它或者直接從它得到的值(比如指針+ 1)纔會被用來訪問它指向的對象,這似乎是一個問題 –
這將是一個問題,如果' strtol'可以訪問'** endptr',但它不會(因爲我在我對Kirilenko答案的評論中提到的原因)。 –