假设我有这个结构
typedef struct list
{
int index
node *arr[]
}
有什么方法可以在创建列表类型的结构时分配节点数组的大小?
最佳答案
如果您正在动态分配对象,那么您可以使用灵活数组,它是 C99 及更高版本的一部分:
struct list
{
int index;
size_t num_elements;
node * arr[]; // note the empty "[]"
};
用法:
struct list * p = malloc(sizeof(struct list) + n * sizeof(node *));
p->index = 101;
p->num_elements = n;
for (size_t i = 0; i != p->num_elements; ++i)
{
p->arr[i] = create_random_pointer();
}
// ...
free(p);
关于C: 结构:创建结构实例时如何分配数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476131/