我认为您的第一个代码不正确。它是“不完整的元素类型”
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);
在这种情况下,“节点”是指向单个结构 hack 的指针。该实体的成员“arr”是结构hack数组的另一个点。否则,您可以将数据构建为典型的链表。
更新:注意,节点中的所有值并(node->arr)[i]
没有初始化!你应该memset()
在它们全部归零之后立即malloc()
。或者确保在任何使用之前分配一个有效值。如果您在分配有效值之前使用它,最好是遇到分段错误。在更糟糕的情况下,您需要花费数天时间才能找出问题所在。