我正在尝试创建一个用数据填充多个数组的函数。问题是,每当我尝试输入2个以上的数字时,我就会出现分段错误。当我不使用双指针时,它工作正常。
#include <stdio.h>
#include <stdlib.h>
int readInput(int **array);
int main()
{
int *array;
readInput(&array);
free(array);
return 0;
}
int readInput(int **array)
{
int n,i;
printf("Enter n:\n");
scanf("%d",&n);
*array = (int*) malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",array[i]);
}
return 0;
}
答案 0 :(得分:2)
scanf("%d",array[i]);
由于数组是int**
,array[i]
是int*
(即索引0是指向刚分配的数组的指针,其余是随机未分配的内存)
(*array)[i]
可能更像你正在寻找的东西。