c - 二维数组中的动态内存分配

标签 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;

最佳答案

有一个严重的错字:

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

应该是

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

关于c - 二维数组中的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22508535/

相关文章:

c - 无法将 char 指针传递给 gethostname (Linux)

c - 链接列表添加功能未按预期工作

c - 高级 C 赋值错误

c - C 中 If 语句中的 Malloc

C:在没有 realloc() 的情况下调整数组大小

c - 格式化字符串漏洞

c - 当您将 12ab 等输入到 scanf ("%d",&argu) 时会发生什么?

c - 此代码中的第二个 scanf 将不会读取。 (C 代码)

c - 从c中的文件流中获取数据

c - 函数中动态分配内存的范围