typedef struct {
int num_rows;
int num_cols;
int** data;
} BinaryMatrix;
BinaryMatrix *ConstructBinaryMatrix(int num_rows, int num_cols) {
BinaryMatrix matrix = {
.num_rows = num_rows,
.num_cols = num_cols,
.data = (int **) malloc((num_rows) * sizeof(int *)),
};
int i;
for (i = 0; i < num_cols; i++) {
matrix.data[i] = (int *) malloc(num_cols * sizeof(int));
}
return &matrix;
}
这是定义BinaryMatrix以及初始化它的正确方法吗?
谢谢你的帮助。
我收到以下错误。
BinaryMatrix* M;
M = ConstructBinaryMatrix(2, 2);
printf("%d:%d", M->num_rows, M->num_cols);
输出为:4198012:0
您正在返回一个指向本地数据的指针,这是错误的形式,不起作用。
您可能应该调用malloc
为BinaryMatrix结构分配空间,如下所示:
BinaryMatrix *ConstructBinaryMatrix(int num_rows, int num_cols) {
BinaryMatrix *matrix = malloc(sizeof(BinaryMatrix));
matrix->num_rows = num_rows;
matrix->num_cols = num_cols,
matrix->data = malloc(num_rows * sizeof(int *));
int i;
for (i = 0; i < num_rows; i++) {
matrix->data[i] = malloc(num_cols * sizeof(int));
}
return matrix;
}
(正如MM所指出的,我还修复了循环边界。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句