Как исправить эти параметры в функции max_2d? преобразование из const int в int является ошибкой - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь найти наибольшее число в многомерном массиве, но Visual Studio не может успешно скомпилировать код.

Проблема с преобразованием из int в const int *, когда я использую параметр size в качестве ограничения цикла for. Невозможно сравнить int i из for цикла с параметром size. Кто-нибудь может помочь?

Вот список ошибок: https://imgur.com/a/HcNqgmx

int max_2d(const int size[], int array[][size]) {

    if (array == NULL) return -1;

    int max = array[0][0];

    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            if (max < array[i][j]) max = array[i][j];
        }
    }

    return max;
}

int main() {

    int array[2][2] = { {1,2},{0,-3} };
    printf("%d\n", max_2d(2, array));

    return 0;
}

В этом состоянии я ожидаю, что максимальный выходной результат (где max - наибольшее число) = 2.

1 Ответ

0 голосов
/ 22 января 2019

Первый параметр функции const int size должен быть числом, а не массивом, поэтому он должен быть объявлен как const int size. Кроме того, этот код будет работать, но он логически некорректен как второй индекс массива (arr[][]) должно быть известно, но здесь вы передаете его как arr[][size]. Это статическое распределение памяти. Компилятор должен знать размер всех переменных, объявленных во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...