【发布时间】:2010-12-27 10:47:00
【问题描述】:
我需要一个函数来修改给定的指向二维矩阵的指针,如下所示:
void intMatrixAll(int row, int col, int **matrix);
现在,函数应该分配内存并且可以使用矩阵。行和列在运行时给出。
#include <stdio.h>
#include <stdlib.h>
#define PRINTINT(X) printf("%d\n", X);
void intMatrixAll(int row, int col, int **matrix);
int main(void) {
int testArrRow = 4;
int testArrCol = 6;
int **testMatrix = NULL;
intMatrixAll(testArrRow, testArrCol, testMatrix);
testMatrix[2][2] = 112; //sementation fault here :(
PRINTINT(testMatrix[2][2]);
system("PAUSE");
return 0;
}
void intMatrixAll(int row, int col, int **matrix) {
printf("intMatrixAll\n");
//allocate pointers:
matrix = malloc(row * sizeof(int *));
if(matrix == NULL) printf("Failed to allocate memmory.\n");
for(int i=0; i<row; i++) {
//allocate space for cols:
matrix[i] = malloc(col * sizeof(int));
if(matrix[i] == NULL) {
printf("Failed to allocate memmory for arr[%d].\n", i);
exit(0);
}
}
}
为什么会出错?
【问题讨论】:
-
我很确定您需要返回指向数组的指针,或者接收指向数组的指针(***int 矩阵,或者更易读的 *matrix[][] )