一个关于二维数组动态分配的问题
正在学习Programming in c这本书,书中的8.13这个程序。直接用变量定义数组大小,编译通不过。我在网上查了资料之后,试着用动态分配解决这个问题。但是编译仍然出现了不少问题。向大家请教一下,问题出在哪里。怎么解决。小白一枚,麻烦大家了。程序代码:
#include<stdio.h> #include<stdlib.h> int main(void) { void scalarMultiply(int nRows,int nCols,int matrix[nRows][nCols],int scalar); void displayMatrix(int nRows,int nCols,int matrix[nRows][nCols]); int sampleMatrix[3][5]={{1,2,3,4,0}, {5,6,7,8,9}, {10,11,12,13,14} } printf("Original matrix:\n"); displayMatrix(3,5,sampleMatrix); printf("Multiplied by 2:\n"); scalarMultiply(3,5,sampleMarix,2); displayMatrix(3,5,sampleMatrix); printf("Multipled by -1:\n"); scalarMultiply(3,5,sampleMatrix,-1); displayMatrix(3,5,sampleMtrix); return 0; } void scalarMatrix(int nRows,int nCols,int matrix[nRows][nCols],scalar) { int **matrix=NULL; int i,j; matrix=(int **)malloc(nRows*sizeof(int *)); if(!matrix) return NULL; for(i=0;i<nCols;i++) { matrix[i]=(int *)malloc(nCols*sizeof(int)); if (!matrix[i]) return NULL; } for(i=0;i<nRows;i++) for(j=0;j<nCols;j++) matrix[i][j]*=scalar; for(i=0;i<nRows;i++){ free(matrix[i]); matrix[i]=NULL; } free(matrix); matrix=NULL; } void dispalyMatrix(int nRows,int nCols,int matrix[nRows][nCols]) { int **matrix=NULL; int i,j; matrix=(int **)malloc(nRows*sizeof(int *)); if(!matrix) return NULL; for(i=0;i<nCols;i++) {if (!matrix[i]) return NULL; matrix[i]=(int *)malloc(nCols*sizeof(int));} for(i=0;i<nRows;i++){ for(j=0;j<nCols;j++) printf("%d ",matrix[i][j]); printf("\n");} for(i=0;i<nRows;i++){ free(matrix[i]); matrix[i]=NULL; } free(matrix); matrix=NULL; }
[ 本帖最后由 donydex 于 2015-7-14 17:43 编辑 ]