c - 在C中的结构中存储多个数组

标签 c arrays pointers struct

我正在尝试用 C 语言设计一个数据结构,我可以在其中将多个数组存储在一个结构中,其中每个数组的大小都不同。例如:

typedef struct task_list
{
  int total_tasks;
  unsigned int *task_array
 }task_list;

typedef struct node_list
{
  int total_nodes;
  task_list *array_node
 }node_list;

因此,如果我有 5 个节点,那么 total_nodes 将为 5,我希望有 5 个后续数组,即 array_node[0]array_node[1] ... array_node[4]。每个数组都包含无符号整数(任务)。问题是这些数组中的每一个都包含不同数量的任务(total_tasks in struct task_list),因此每个数组的大小都会不同。

如何为这些任务数组中的每一个创建和分配内存?以后访问它们的最佳方式是什么?

最佳答案

如果它们是一维数组,分配内存的最佳方法是通过 malloc。同样,由于它们是一维的,您可以通过数组表示法访问它们,注意不要超过 total_nodes 和 total_tasks 给定的界限。删除节点时使用 free 释放数组。如果数组节点变大,使用 realloc 使数组变大并保留旧指针。

关于c - 在C中的结构中存储多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18194790/

相关文章:

c - 为什么我不能将动态函数指针传递给 atexit()?

c# - 将字节引用从 c# 传递到非托管 cpp COM dll

java - 实现移植到 Java 的指针和数组

c++ - 在 C++ 中,对象和指向对象的指针有什么区别?

c - 另一个结构中的嵌套结构数组

c - 当整数存在时 C 中字符数组的行为

c - 复制一个指针,然后返回第一个有什么用

c++ - 输入字符数组并将其输出为整数数组

Java 数组 String[] name 或 String name[]

c - 在函数中将数组声明为静态的目的是什么?