#include <stdio.h>
#include <string.h>
#include <stdlib.h>

    size_t rows, cols;
    double **arr;
    
    void init_array(size_t r, size_t c) {
        rows = r;
        cols = c;
        double (*a)[cols] = malloc(sizeof(double[cols][rows]));
        arr = malloc(rows*sizeof(double*));
        for (size_t i = 0 ; i != rows ; i++) {
            arr[i] = a[i];
            for (size_t j = 0 ; j != cols ; j++) {
                a[i][j] = cols*i+j;
            }
        }
    }
    
    void free_array() {
        free(arr[0]);
        free(arr);
    }

int main(void) {
    init_array(10, 12);
    for (size_t i = 0 ; i != rows ; i++) {
        for (size_t j = 0 ; j != cols ; j++) {
            printf("%3.0f ", arr[i][j]);
        }
        printf("\n");
    }
    free_array();
    return 0;
}
