Я написал небольшую игру на C, которая имеет игровую структуру в виде доски. Итак, я использовал 2d массив структур, которые содержат много элементов данных, таких как целое число, bools, chars и т. Д. c. (давайте назовем эту структуру cell
). Размер массива - MxN, оба из которых переменные , значения которых могут быть изменены пользователем (по умолчанию они равны 10). Этот массив с именем grid
существует главным образом в функции с именем play()
, которая обрабатывает ход игры, а main
используется только в качестве меню для вызова play()
или settings()
, et c. Таким образом, когда я изменяю значения M и N в settings()
, go обратно на main
и выбираю 'play', в функции создается новый двумерный массив (grid
) необходимого размера, и уничтожается, когда я прекращаю играть (когда управление выходит play()
). Все это делается без вызова malloc()
или free()
.
Теперь мой вопрос: как это работает? M и N являются (глобальными) переменными - их значения не известны компилятору во время компиляции. Так не должен ли компилятор выдавать ошибку?
Бонусный вопрос: как мне go преобразовать этот код для использования правильных методов динамического выделения c, используя mallo c?