0

私はポインタに慣れていないので、少し問題があります。0〜100のランダムなint値をアウトプリントする簡単なプログラムがあります。しかし、最初の値のみを出力し、その後、セグメンテーション エラー (コア ダンプ) が発生します。

#include <stdio.h>
#include <stdlib.h>

void printArray(int **array, int size) 
{
  int i;
  for (i=0; i<size; i++)
  {
    printf("index[%d] = %i \n",i,*array[i]);
  }
}

int main() 
{   
  int size = 10;
  int *array = (int *) malloc (sizeof(size));
  int i;
  for (i=0; i<size; i++) 
  {
    array[i] = rand() % 100 + 1;
  }

  printArray(&array,size);
  free(array);

  return 0;

}

理由は本当にわかりません、助けてください。ありがとう :)

4

2 に答える 2

2
int *array = (int *) malloc (sizeof(size));

サイズは整数です。したがって、sizeof(size) は 10 個の整数の配列ではなく、1 個の整数のサイズです。あなたはおそらくそうするつもりでした

int *array = (int *) malloc (size * sizeof(int));

またはさらに良いことに、

int *array = (int *) calloc(size, sizeof(int));
于 2013-04-07T20:50:30.867 に答える