在函数中访问动态分配的数组时出现分段错误

时间:2012-11-25 15:49:37

标签: c malloc

我正在尝试创建一个用数据填充多个数组的函数。问题是,每当我尝试输入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;

}

1 个答案:

答案 0 :(得分:2)

scanf("%d",array[i]);

由于数组是int**array[i]int*(即索引0是指向刚分配的数组的指针,其余是随机未分配的内存)

(*array)[i]可能更像你正在寻找的东西。