Mã này dường như làm việc như mong đợi, populates một mảng các số sử dụng một con trỏ đơnstrtol tái sử dụng 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;
}
Câu hỏi của tôi là:
Nó có giá trị sử dụng p như param1 (nguồn) và & p là tham số 2 (địa chỉ của ký tự không hợp lệ đầu tiên) trong strtol?
Cảm ơn bạn Klas, nhưng những gì về các từ khóa hạn chế? cho toàn bộ thời gian của con trỏ, chỉ có nó hoặc giá trị trực tiếp bắt nguồn từ nó (như con trỏ +1) sẽ được sử dụng để truy cập đối tượng mà nó trỏ, đó có vẻ là một vấn đề –
Nó sẽ là một vấn đề nếu ' strtol' sẽ truy cập '** endptr', nhưng nó không (vì những lý do tôi đã đề cập trong bình luận của tôi cho câu trả lời của Kirilenko). –