C 二维阵列中的动态内存分配
scanf的C 二维阵列中的动态内存分配,c,malloc,scanf,C,Malloc,Scanf,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));
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;
int**arr,m,n,i,j;
scanf(“%d%d”,&m,&n);
arr=(int**)malloc(m*sizeof(int*);
对于(i=0;i
有一个严重的打字错误:
arr[m] = (int *) malloc(n*sizeof(int));
应该是
arr[i] = malloc(n * sizeof(int));
关于
(*arr)[i][j]
?请给出一个简单的输入格式示例。@timrau首先我希望用户分别在m和n变量中输入行数和列数,然后我尝试为它们分配内存。然后用户将输入numbers@timrau是的,我也加入了与实际问题无关的内容,但我尝试了&arr[i][j]同样,它也不起作用。我的调试器在此语句处停止。我使用malloc的方式是否有问题?看起来我使用的地址是错误的,因为您调用malloc
的方式看起来很好,我们需要您的输入格式来诊断问题。调试器停止时有任何消息吗?它正在等待您的输入吗错误waa like:spiral.exe中0x0f75effe处的未处理异常:0xC0000005:访问冲突写入位置0xcdcdcdcd。首先,我希望用户分别在m和n变量中输入行数和列数,然后我尝试为它们分配内存。然后,用户将输入数字示例:3 4 1 2 3 4 5 6 7 8 9 10 11 12,其中3和4不是行和列