title: How do i create a 2D array in c and display it using pointer and function?
body: <p>I am trying to write 2 functions, one to read the matrix (2D array) and other one to print it out. So far I have:</p>
  
  <pre><code>    /* 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&lt;rows; i++){
          /* Allocate array, store pointer  */
          mat[i] = (double *) malloc(sizeof(double)*cols); 
         //what to do after??
  
           return mat;
      }
  </code></pre>
  
  <p>then the print matrix function, not sure if it is correct</p>
  
  <pre><code>void print_matrix(int rows, int cols, double **mat){
      for(i=0; i&lt;rows; i++){    /* Iterate of each row */
        for(j=0; j&lt;cols; j++){  /* In each row, go over each col element  */
        printf("%f ",mat[i][j]); /* Print each row element */
    }
  }
  }
  </code></pre>
  
  <p>and here is the main function I am using to run:</p>
  
  <pre><code>    #include &lt;stdlib.h&gt;
  
  
      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",&amp;rows,&amp;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;
  }
  </code></pre>