这个源代码有些不完整,但似乎 objs 是指向与 set->objs 中相同类型的指针。您正在做的是通过使用指针算法而不是使用数组语法索引来迭代这些 objs 的列表或数组。但是,obj 列表存储在顺序内存中,否则指针增量将无法为您提供顺序列表中的下一个 obj。
问题实际上是就维护和更改列表而言,您想要执行什么样的操作。例如,如果列表基本上是一个很少更改的静态列表,那么顺序列表应该可以正常工作。如果唯一的主要操作是将某些内容添加到列表中,那么如果您知道最大数量并且可以分配那么多顺序内存,那么顺序列表可能会很好。
链表的亮点在于以下领域:(1)从列表中插入和/或删除元素,尤其是不在前面或后面的元素,(2)能够增长并且不必依赖于特定的数字列表中的元素。
为了增加一个固定大小的顺序列表,您通常必须分配一个新的内存区域并将列表复制到新的内存区域。
另一种选择是拥有一个基本上是一组链接顺序列表的数据结构。随着顺序列表填满并且您需要更多空间,您只需分配另一个顺序列表区域,然后将两者链接起来。但是,使用这种方法,您可能需要额外的代码来管理空白空间,这取决于您是需要删除项目还是在插入新项目时将它们按某种排序顺序排列。
这是关于链接列表的维基百科文章。