此代码似乎按预期方式工作,填充使用单个指针数的数组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答案的评论中提到的原因)。 –