在C中逐步填充数组的最佳方法是什么?

时间:2016-01-16 16:16:15

标签: c arrays

假设我有一个数组,定义为

int arr[10];

我希望逐步填充这个数组(假设没有用完为数组分配的内存),根据表格的循环

for(int i = 0; i < some_number; i++)
  if(some_condition)
    add_element_to_arr

最好的方法是什么? 我能想到的两种方法是:1)使用辅助变量来记住存储的值的数量,或2)使用指针来做同样的事情。

这样做的首选/标准/传统方式是什么?

此外,必须对多个数组执行此类操作,要记住已向每个数组添加了多少值,必须为每个数组使用辅助变量。 处理这个问题的首选方法是什么?

2 个答案:

答案 0 :(得分:5)

您可以使用pos这样的变量:

for(int i = 0, pos = 0; i < some_number && pos < 10; i++)
  if(some_condition)
    arr[pos++] = i;

在这种情况下无需使用指针。

<强>更新

使用多个数组(不同大小),您可以创建一个带有指向数组的指针和当前位置的结构,这样两个值始终保持在一起:

struct arr_data {
    int *arr;
    int current_pos;
}

也可以添加一个尺寸:

struct arr_data {
    int *arr;
    int size;         // or unsigned int or size_t
    int current_pos;  // or unsigned int or size_t
}

然后,您可以根据实现创建这些结构的数组。

答案 1 :(得分:1)

如果你想在你的程序中做一些标准,你可以使用类似的东西:

struct progressiveArr{
  int elements[10];
  int size;
} 

and then:

for(int i = 0; i < some_number  i++)
  if(some_condition)
{
    arr.elements[arr.size++]=i;   
}