Динамический массив рандомными числами на СИ

Не получается заполнить рандомно динамический массив.

//include library
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <ctime>

void createMatrix(int** array, int row, int col)
{
    int i;
    array = (int **) malloc(row * sizeof(int*));
    for (i = 0; i < row; i++)
        array[i] = (int*) malloc(col * sizeof(int));
}
void randomizeMatrix(int** array, int row, int col){
    int i, j;
    for (i=0; i< row; ++i)
        for (j=0; j<col; ++j)
            array[i][j]=rand()%100;
}
void printMatrix(int** array, int row, int col){
    int i, j;
    for (i=0; i< row; ++i)
    {
        for (j=0; j<col; ++j)
            printf("%i ",&array[i][j]);
        printf("\n");
    }
}
int main(){
    srand(time(NULL));
    int row, col;
    printf ("Enter count row: ");
    scanf("%i",&row);
    printf ("Enter count col: ");
    scanf("%i",&col);
    
    int** M1;
    
    createMatrix(M1, row, col);
    randomizeMatrix(M1, row, col);
    printMatrix(M1, row, col);
    
    return 0;
}```

Ответы (1 шт):

Автор решения: DmitryK

Правильно написал @Harry . Из функции createMatrix(int** array, ) значение указателя после выделения памяти не возвращается в main, т.к. Вы передали указатель по значению. В итоге в следующую функцию передается указатель, который указывает в никуда.
Предавайте или по ссылке, или по указателю, или возвращайте значение:

// передача по ссылке
void createMatrix(int** &array, int row, int col) {}

// передача по указателю
void createMatrix(int*** array, int row, int col) {}

// возврат значения 
int** createMatrix(int row, int col) {} 
main()
{
  int** A = createMatrix( 3, 3);
}
→ Ссылка