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

标签 c arrays struct

假设我有这个结构

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/

相关文章:

c - 如何在数组中的某个位置插入

php - 变量变量未按预期工作并正在创建数组

Javascript - 带有 boolean 键的数组?

java - 从整数数组中得到奇怪的结果

c - 分配内存以保存 C 中的结构数组

c - 在结构定义中分配下一个指针 = NULL,会引发错误

无法理解结构初始化

c - 使用c检索linux中的分区信息

c - Stack的链表实现

c++ - 没有父结构重复的结构继承