С учетом объявления
int matrix[rows][cols];
Этот код неверен:
fillMatrix(&matrix[rows][cols], rows, cols);
Адрес &matrix[rows][cols]
находится за концом матрицы.
первый элемент матрицы - &matrix[0][0]
, а последний элемент матрицы - &matrix[rows-1][cols-1]
.
Кроме того, это объявление
void fillMatrix();
вызовет проблемы с этим определением:
void fillMatrix( int *matrix, int rows, int cols ){
...
Они должны совпадать.Прямо сейчас, из-за объявления void fillMatrix()
вверху, аргументы передаются функции через продвижение аргументов по умолчанию , но, поскольку определение имеет явные аргументы, сама функция ожидает аргументыдолжен быть передан как int *
или int
.У вас, вероятно, нет проблем с этим, так как значения по умолчанию для этих аргументов, вероятно, совпадают с этими аргументами, но определения и объявления функций обычно должны точно соответствовать.
Я не исследовалВаш код для других вопросов.