2d数组中的动态内存分配和使用scanf

时间:2014-03-19 14:10:23

标签: c malloc scanf

scanf声明给我带来了麻烦......我尝试&arr[i][j](arr+i)+j取代*(arr+i)+j ......但这句话仍然存在问题......我无法解决问题所在......

int **arr, m, n, i, j;
scanf("%d%d", &m, &n);
arr = (int **) malloc( m * sizeof(int *) );

for (i = 0; i < m; i++)
  arr[m] = (int *) malloc(n*sizeof(int));

for(i = 0; i < m; i++)
  for(j = 0; j < n; j++)
    scanf("%d", *(arr + i) + j); //this statement

for(i = 0; i < m; i++) {
  for(j = 0; j < n; j++) {
    printf("%d ", *(*(arr + i) + j));
  printf("\n");
}

getch();
return 0;

1 个答案:

答案 0 :(得分:2)

有一个严重的错字:

  arr[m] = (int *) malloc(n*sizeof(int));

应该是

  arr[i] = malloc(n * sizeof(int));