Переменная ptr
внутри функции имеет тип int *
. Таким образом, применяя оператор индексации один раз, например ptr[i]
, вы получите скалярный объект типа int
, для которого вы не можете применять оператор индекса во второй раз.
Если ваш компилятор поддерживает массивы переменной длины, тогда вы можете написать
int ( *matrix )[a] = create_matrix_fill_random(a,a);
, и функция будет выглядеть как
int ( * create_matrix_fill_random (int row, int col) )[]
{
int ( *ptr )[col];
ptr = malloc( sizeof( int[row][col] ) );
int i,j;
for (i=0;i<row;i++){
for (j=0;j<col;j++){
ptr[i][j]= rand() % 40000 +5;
}
}
return ptr;
}
В противном случае вам нужно написать
int **matrix = create_matrix_fill_random(a,a);
, и функция будет выглядеть как
int ** create_matrix_fill_random (int row, int col)
{
int **ptr;
ptr = malloc( sizeof( row * sizeof( int * ) );
int i,j;
for ( i = 0; i < row; i++ )
{
ptr[i] = malloc( col * sizeof( int ) );
}
for (i=0;i<row;i++){
for (j=0;j<col;j++){
ptr[i][j]= rand() % 40000 +5;
}
}
return ptr;
}