【发布时间】:2016-07-02 08:40:54
【问题描述】:
所以我有一个指针和一个数组大小,它被传递给一个请求用户输入并将用户输入存储为数组元素的函数。
所以函数看起来像这样:
int addElements(int * ptr, int sizeArr) {
int k=0;
for (k=0; k<=size; k++) {
printf("please enter element number %d\n", k);
scanf("%d", *(ptr+k));
}
return pArr;
}
它返回一个指针,因为我需要进一步处理数组。
我明白了
Segmentation fault (Core dumped)
向数组输入元素时出错。
我在这里做错了什么?我可以将数组元素(从随机/自动值)更新为 0 就好了,只是 scanf 无法写入数组。
【问题讨论】:
-
pArr或ptr?此外,在您的循环中,k在最后一次传递中将是size,这对于大小为size的数组不是有效索引。 -
pArr的定义在哪里?
-
for (k=0; k<sizeArr; k++) { printf("please enter element number %d\n", k); scanf("%d", ptr+k); } -
已编辑。应该是 *(ptr+k)..但正如你们解释的那样:只是 ptr+k。
标签: c arrays function pointers scanf