2-мерное поле и его объявление в функции, когда вы не знаете его размер - PullRequest
0 голосов
/ 01 марта 2020

Есть ли способ, как я могу объявить 2d поле в функции, но размер этого поля меняется каждый раз, когда я включаю и выключаю свою программу ...:)

void 2d_field(char field[what type here][what type here], ...) //let say that size of 2d field isnt constant
{
...
}

1 Ответ

1 голос
/ 01 марта 2020

Как правило, предпочтительный способ для функции получать двумерные массивы с измерениями, неизвестными во время компиляции, - передавать размеры и использовать их для определения массива:

void 2d_field(size_t Rows, size_t Columns, char field[Rows][Columns])

Если вы должны поддерживать C реализация, которая не поддерживает массивы переменной длины, тогда альтернативой является передача указателя на первый элемент массива:

void 2d_field(size_t Rows, size_t Columns, char *field)

, а затем использование ручных вычислений для ссылки на элементы массива. Элемент в строке r и столбце c равен field[r*Columns+c].

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