Если я правильно понимаю, вам нужен массив указателей на все значения room
в map
. Поскольку существует MAP_WIDTH*MAP_HEIGHT
таких значений, нам нужно столько указателей:
room *rooms[MAP_WIDTH*MAP_HEIGHT];
Выше объявляется rooms
как массив указателей.
Теперь, чтобы присвоить значения:
size_t i;
size_t j;
for (i=0; i < MAP_WIDTH; ++i)
for (j=0; j < MAP_HEIGHT; ++j)
rooms[i*MAP_HEIGHT+j] = &map[i][j];
Мы в основном находим адрес каждого элемента в map
и сохраняем его в правильной записи в rooms
.
Это то, что вы хотели?