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/