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 に答える