У меня есть структура, скажем, foo
, которая выглядит следующим образом:
struct foo {
size_t n;
size_t **point;
};
В структуре есть другие члены, которые не важны для вопроса.Теперь я хочу статически инициализировать структуру.
int main(void)
{
struct foo *bar = &(struct foo){
.n=4,
/* ERROR HERE */ .point=(size_t[][n]){ {1, 2, 3, 4}, {5, 6, 7, 8}}
};
return 0;
}
В указанной строке есть две проблемы.Во-первых, понятно, что компилятор не распознает n
и есть ли способ сделать что-то подобное, не создавая переменную раньше?Во-вторых, и самое главное, я понял, что понятия не имею, как создать двумерный массив и назначить ему указатель на указатели статически.Пожалуйста помоги.Я попробовал следующие варианты, но ничего не помогло.
/* Variation 1 */ .point=(size_t[][4]){ {1, 2, 3, 4}, {5, 6, 7, 8}}
/* Variation 2 */ .point=(size_t**)(size_t[][4]){ {1, 2, 3, 4}, {5, 6, 7, 8}}
/* Variation 3 */ .point=&(size_t[][4]){ {1, 2, 3, 4}, {5, 6, 7, 8}}