TL; DR : ваш код неверен.Ваш компилятор принимает некоторые плохо сформированные части вашего кода как расширение, но это, в свою очередь, запускает другие неправильно сформированные конструкции.
Ваш код содержал следующую строку:
const int g = 20;
Позже, в функции main
, ваш код включал следующую строку:
int g;
Последняя shadows первая.Затем вы попытались объявить массив:
bool MatriceA[g][g];
В C ++ размерность массива должна быть константным выражением.Здесь g
- это переменная, которая не является константным выражением.Массивы переменной длины не разрешены в C ++.Следовательно, ваш код некорректен.
Поскольку вы используете Dev-C ++ IDE , вы, вероятно, используете компилятор GCC .GCC принимает массивы переменной длины в качестве расширения.Но тогда ваш код тоже не компилируется.
Ваши функции принимают bool MatriceA[g][g]
в качестве параметра функции.В это время действует const int g = 20;
.Следовательно, ваш параметр функции действительно bool MatriceA[20][20]
, что действительно bool (*MatriceA)[20]
из-за затухания параметра функции (см. Вопрос переполнения стека Что такое распад массива? ).
Тогда вывызов функции с массивом переменной длины.Это не разрешеноПоэтому ваш код отклонен.