C:结构:在创建结构实例时如何分配数组的大小?

时间:2014-12-15 01:19:23

标签: c arrays struct

说我有这个结构

typedef struct list
{
 int index
 node *arr[]
}

在创建类型列表的结构时,有没有办法分配节点数组的大小?

1 个答案:

答案 0 :(得分:5)

如果要动态分配对象,则可以使用灵活数组,它们是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);