2012-11-02 28 views
1

我想創建一個我的結構類型的數組,但它並沒有按順序定義,例如,我可以做array[3] = mystruct_t;array[5] = mystruct_t35在運行時由用戶輸入定義)。我曾嘗試:結構類型的二維數組是否可以像NULL指針一樣?

它的 「理想」,但不能持有空指針:

static struct mystruct_t foo_inputs[SIZE]; 

所以,我想:

static struct mystruct_t *foo_inputs; 

然後:

foo_inputs[x] = NULL; 

但我收到警告:

error: incompatible types when assigning to type ‘struct mystruct_t’ from type ‘void *’ 

實現它的想法?

回答

5

結合這兩者。在第一個中,你不能(不應該)將NULL分配給非指針。第二,你有一個未初始化的指針。你需要的是一個指針數組:

static struct mystruct_t *foo_inputs[SIZE]; 
foo_inputs[x] = NULL; 
1
static struct mystruct_t *foo_inputs; 

聲明一個指針mystruct_ts。指向數組的每個元素必須是單個結構,因此試圖分配一個指針會導致編譯器錯誤。 (你也會在運行時得到未定義的行爲,因爲你沒有分配任何內存)。你想要的是一個雙指針(記得要適當地分配內存!)

static struct mystruct_t** foo_inputs; 
+0

我會用正常的數組棒,因爲它似乎在OP知道他們想要什麼尺寸的蝙蝠,所以沒有多大意義在額外的工作中動態分配內存,解放它的負擔。 – chris