聲明int數組在C中,我定義如下所示的結構,並希望直列初始化。 (結構中的字段,以及初始化後都不會改變數組foos)。第一個代碼塊中的代碼正常工作。Ç - 內部結構
struct Foo {
int bar;
int *some_array;
};
typedef struct Foo Foo;
int tmp[] = {11, 22, 33};
struct Foo foos[] = { {123, tmp} };
但是,我並不真的需要tmp字段。實際上,它只會混淆我的代碼(這個例子有點簡單)。所以,相反我想聲明的的聲明中的一些陣列的值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
};
您必須使用malloc或calloc函數爲* some_array分配內存空間。 – user1929959