Динамический массив рандомными числами на СИ
Не получается заполнить рандомно динамический массив.
//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);
}