使用指针/ malloc创建2D数组,然后将其打印出来

我正在尝试编写2个函数,一个用于读取矩阵(二维数组),另一个用于打印出来。 到目前为止我有:

/* Read a matrix: allocate space, read elements, return pointer. The number of rows and columns are given by the two arguments. */ double **read_matrix(int rows, int cols){ double **mat = (double **) malloc(sizeof(double *)*rows); int i=0; for(i=0; i<rows; i++){ /* Allocate array, store pointer */ mat[i] = (double *) malloc(sizeof(double)*cols); //what to do after?? return mat; } 

那么打印矩阵function,不确定它是否正确

  void print_matrix(int rows, int cols, double **mat){ for(i=0; i<rows; i++){ /* Iterate of each row */ for(j=0; j<cols; j++){ /* In each row, go over each col element */ printf("%f ",mat[i][j]); /* Print each row element */ } }} 

这是我用来运行的主要function:

 #include  #include  double **read_matrix(int rows, int cols); void print_matrix(int rows, int cols, double **mat); void free_matrix(int rows, double **mat); int main(){ double **matrix; int rows, cols; /* First matrix */ printf("Matrix 1\n"); printf("Enter # of rows and cols: "); scanf("%d %d",&rows,&cols); printf("Matrix, enter %d reals: ",rows*cols); matrix = read_matrix(rows,cols); printf("Your Matrix\n"); /* Print the entered data */ print_matrix(rows,cols,matrix); free_matrix(rows, matrix); /* Free the matrix */ return 0;} 

试试这个。 可能对你有所帮助。

 #include  #include  double **read_matrix(int rows, int cols); void print_matrix(int rows, int cols, double **mat); void free_matrix(int rows, double **mat); double **read_matrix(int rows, int cols){ double **mat = (double **) malloc(sizeof(double *)*rows); int i=0,j=0; for(i=0; i 

执行:

 :~$ gcc exam.c :~$ ./a.out Matrix 1 Enter # of rows and cols: 3 4 Matrix, enter 12 reals: 1 2 3 4 5 6 7 8 9 9 0 1 Your Matrix 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 9.000000 0.000000 1.000000