一个关于二维数组动态分配的问题
正在学习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 编辑 ]

