1

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

}

4

1 回答 1

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

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

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

于 2012-11-25T15:57:13.743 回答