В C я определил структуру, показанную ниже, и хотел бы инициализировать ее в строке. (Ни поля внутри структуры, ни массив foos не изменится после инициализации). Код в первом блоке работает отлично.C - объявление int array внутри struct
struct Foo {
int bar;
int *some_array;
};
typedef struct Foo Foo;
int tmp[] = {11, 22, 33};
struct Foo foos[] = { {123, tmp} };
Однако, мне действительно не нужно поле tmp. Фактически, это просто загромождает мой код (этот пример несколько упрощен). Итак, вместо этого я хотел бы объявить значения some-array внутри декларации для foos. Однако я не могу получить правильный синтаксис. Может быть, поле некоторая часть должна быть определена по-разному?
int tmp[] = {11, 22, 33};
struct Foo foos[] = {
{123, tmp}, // works
{222, {11, 22, 33}}, // doesn't compile
{222, new int[]{11, 22, 33}}, // doesn't compile
{222, (int*){11, 22, 33}}, // doesn't compile
{222, (int[]){11, 22, 33}}, // compiles, wrong values in array
};
Вы должны выделить пространство памяти для * some_array, используя функции malloc или calloc. – user1929959