#include <stdio.h>
#include <stdlib.h>
#define ROWS 4
#define COLS 5
void setData(int **array) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
array[i][j] = (i + 1) * (j + 1);
}
}
}
void print(int **array) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%3d", array[i][j]);
}
printf("\n");
}
}
void freeArrays(int **array) {
for (int i = 0; i < ROWS; i++) {
free(array[i]);
}
free(array);
}
void allocateArrays(int **array) {
for (int i = 0; i < ROWS; i++) {
array[i] = malloc(COLS * sizeof(int));
if (array[i] == NULL) {
printf("out of memory\n");
exit(1);
}
}
}
int main(void) {
int **array = NULL;
array = malloc(ROWS * sizeof(int *));
if (array == NULL) {
printf("out of memory\n");
exit(1);
}
allocateArrays(array);
setData(array);
print(array);
freeArrays(array);
}
/*
run:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
*/