Как создать глобальный двумерный массив, размер которого определяется только во время выполнения в c (или как передать аргументы функциям рисования в opengl)? - PullRequest
2 голосов
/ 16 ноября 2010

Я хочу создать двумерный массив, который представляет позиции настольной игры. Я определил, что каждая позиция имеет тип «struct position», который является перечислением, которое может быть «empty», «piece1» или «piece2». Проблема в том, что пользователь решает, какой размер таблицы, то есть, сколько позиций будет иметь двумерный массив. Поскольку я вызываю графические функции opengl, которые не могут принимать аргументы (или есть ли способ сделать это?), Возможно ли определить размер двумерного массива во время выполнения?

1 Ответ

2 голосов
/ 16 ноября 2010

Нет, вы не можете определить размер массива во время выполнения в C. Но одномерные массивы имеют ту же семантику, что и указатели, так что вы можете "эмулировать" многомерный, используя вместо этого указатели. Нечто подобное должно сработать:

int w = 16, h = 16;
int *array = malloc(sizeof(int) * w * h);

int x = 4, y = 2;
array[y * w + x] = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...