【发布时间】:2018-09-10 08:53:13
【问题描述】:
这个函数的输入应该是一对整数——矩阵的size——后跟col*row整数。它看起来像这样
2 3
76 98 -31
30 30 32
这是我到目前为止编写的代码。它适用于行和列大小,但是当我尝试将指针传递给读取矩阵时,它会崩溃。我对应该如何将 int** matrix 参数传递给函数感到困惑。 (我在讲座上看到过类似功能的示例,所以我更喜欢使用双指针的解决方案。
#include <stdio.h>
#include <stdlib.h>
int load_matrix(int *ro,int *co, int **matrix);
int main(int argc, char* argv[]) {
int row = 3;
int col = 3;
int *ro = &row;
int *co = &col;
//int matx[1];
int **matrix; //= matx[0];
load_matrix(ro,co,matrix);
}
int load_matrix(int* ro,int* co, int** matrix) {
int rows, cols;
if(scanf("%d %d",&rows,&cols)==2) {
int *mat = malloc(sizeof(int)*rows*cols);
int read=0;
for(int i = 0; i<rows &&read>=0; i++) {
for(int j = 0; j<cols && read >=0; j++) {
if(scanf("%d", &(mat[i*cols+j]))!=1) {
read = -1;
} else {
read++;
}
}
}
if(read == (rows*cols)) {
*ro = rows;
*co = cols;
**matrix = mat; --- this crashes the program
} else {
free(mat);
*matrix = 0;
}
} else {
return 100;
}
return 0;
}
正如代码中所标记的,它崩溃的部分是当我尝试为指针int** matrix 分配一个新值到分配读取矩阵的地址时。我应该如何使用这里的指针?
【问题讨论】:
-
This answer 与您的问题非常相关