In C, ho definito la struttura vista di seguito e vorrei inizializzarla in linea. (Né i campi all'interno della struttura né l'array foos cambieranno dopo l'inizializzazione). Il codice nel primo blocco funziona correttamente.C - dichiarazione int array all'interno struct
struct Foo {
int bar;
int *some_array;
};
typedef struct Foo Foo;
int tmp[] = {11, 22, 33};
struct Foo foos[] = { {123, tmp} };
Tuttavia, non ho davvero bisogno del campo tmp. In effetti, ingombra solo il mio codice (questo esempio è in qualche modo semplificato). Quindi, invece, vorrei dichiarare i valori di some-array all'interno della dichiarazione per foos. Non riesco a ottenere la sintassi corretta, però. Forse il campo some-array dovrebbe essere definito in modo diverso?
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
};
È necessario allocare spazio di memoria per * some_array utilizzando le funzioni malloc o calloc. – user1929959