我不認爲你的第一個代碼是正確的。這是「不完整的元素類型」
typedef struct hack Hack;
struct hack {
char* value;
Hack arr[1];
};
等於:
struct hack {
char* value;
struct hack arr[1]; /* Here wrong */
};
在錯的時候,你嘗試定義的struct hack
,但數組:的struct hack
的定義是不完整然而。哦,你修改它。
爲了您的新代碼,它應該是:
typedef struct hack *Hack;
struct hack {
char* value;
Hack arr;
};
Hack node = malloc(sizeof(struct hack));
node->arr = malloc(sizeof(struct hack) * numElems);
在這種情況下,「節點」是指向單一結構的黑客。而這個實體的成員「arr」是另一個結構hack陣列。否則,您可以將您的數據構建爲典型的鏈接列表。
更新:關注,節點中的所有值和(node->arr)[i]
都未初始化!在malloc()
之後,您應該將memset()
全部設爲零。或者確保在使用前分配一個有效的值。如果您在分配有效值之前使用它,那麼滿足分段錯誤是最好的。在更糟糕的情況下,花費你的時間來找出哪裏出錯。
無法工作,'struct'不能包含相同類型的成員或其數組。 – 2013-04-03 20:51:29
你的struct [不會編譯](http://liveworkspace.org/code/3kyOil$0) – 2013-04-03 20:51:51
我已經用typedef struct hack * Hack測試過它,但不是隻用typedef struct hack Hack,你指出的幾個正確的不編譯。但是,我的問題仍然代表* Hack。 – Kvass 2013-04-03 20:55:26