【发布时间】:2015-09-01 18:26:50
【问题描述】:
我要从用户那里读取几个值并将它们存储在一个数组中。然后我需要创建一个足够大的数组来存储所有这些值。使用我编写的一些函数,我通过数组对给定值进行排序/lsearch/bsearch。
我已经编写好了程序和所有内容,但对于静态数组实现。我对在哪里实际使用动态数组感到困惑。
当用户开始输入值时使用它是有意义的,因为我无法假设他输入了多少值,因此数组需要足够大以容纳它。当我创建一个足够大的数组来保存所有值(作为第一个数组的副本)时,使用它也是有意义的(有点)。
我不要求任何代码,一切都已完成,只是采用静态方法。我只是想在这里想象一下我需要在哪里使用 darrays。我的想法是:
- 当用户第一次输入值时
- 当我将 arr1 复制到一个新的 arr2 中时,该 arr2 需要足够大以容纳 arr1 的所有值。
我在这方面是对还是错?
【问题讨论】:
-
展示你所拥有的。目前还不太清楚你想要完成什么。
-
你需要 calloc 和 realloc
-
由于您需要容纳在编译时无法可靠预测(限制)的大小的输入,因此您需要使用动态数据结构来存储初始输入。您需要在阅读输入时根据需要扩展它。如果您需要制作输入数据的副本,那么您需要第二个动态数据结构来保存它,但您可能永远不需要调整该数据结构的大小。动态分配的数组是一种可能适合的数据结构;还有其他的。
标签: c arrays dynamic dynamic-arrays