In C habe ich die unten gezeigte Struktur definiert und möchte sie inline initialisieren. (Weder die Felder innerhalb der Struktur, noch das Array foos wird nach der Initialisierung ändern). Der Code im ersten Block funktioniert einwandfrei.C - deklariert int array innerhalb der Struktur
struct Foo {
int bar;
int *some_array;
};
typedef struct Foo Foo;
int tmp[] = {11, 22, 33};
struct Foo foos[] = { {123, tmp} };
Allerdings brauche ich nicht wirklich das tmp-Feld. In der Tat, es wird nur meinen Code überfluten (dieses Beispiel ist etwas vereinfacht). Stattdessen möchte ich stattdessen die Werte some-array in der Deklaration für foos deklarieren. Ich kann jedoch nicht die richtige Syntax bekommen. Vielleicht sollte das Feld Some-Array anders definiert werden? Hier
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
};
Sie müssen Speicherplatz für * some_array reservieren, indem Sie malloc- oder calloc-Funktionen verwenden. – user1929959