我需要为二维数组(也称为矩阵)创建一些函数,而问题只是从第一个数组开始。
我使用malloc()在堆内存中分配了矩阵,然后尝试创建一个使用scanf()s的for循环初始化矩阵的函数,但是在输入了3次之后,程序崩溃了。
这是我编写的代码
void initMatrix(int **mat,int row,int col)
{
for(int i=0;i<row;i++){
printf("\n");
for(int j=0;j<col;i++){
printf("Cell (%d,%d): ",i,j);
scanf("%d",&mat[i][j]);
}
}
}
int main()
{
int r,c;
printf("Number of rows: ");
scanf("%d",&r);
printf("Number of columns: ");
scanf("%d",&c);
int **arr = (int **)malloc(sizeof(int*) * r);
for(int i=0;i<r;i++)
arr[i]=(int*)malloc(sizeof(int) * c);
// int count=0;
// for (int i = 0; i < r; i++)
// for (int j = 0; j < c; j++)
// arr[i][j] = ++count;
for (int i = 0; i < r; i++){
printf("\n");
for (int j = 0; j < c; j++)
printf("%d ", arr[i][j]);
}
initMatrix(arr,r,c);
printf("\n");
free(arr);
}
如果我手动插入矩阵的内容,则程序可以正常工作(没有initmatrix()函数),我不知道为什么……我可能在某个地方犯了错误。