假设我有一个数组,定义为
int arr[10];
Run Code Online (Sandbox Code Playgroud)
我希望逐步填充这个数组(假设不会耗尽为数组分配的内存),根据表单的循环
for(int i = 0; i < some_number; i++)
if(some_condition)
add_element_to_arr
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?我能想到的两种方法是:1)使用辅助变量来记住存储的值的数量,或2)使用指针来做同样的事情.
这样做的首选/标准/传统方式是什么?
此外,必须为多个数组执行此类操作,要记住已向每个数组添加了多少值,必须为每个数组使用辅助变量.处理这个问题的首选方法是什么?
你可以使用这样的pos变量:
for(int i = 0, pos = 0; i < some_number && pos < 10; i++)
if(some_condition)
arr[pos++] = i;
Run Code Online (Sandbox Code Playgroud)
在这种情况下无需使用指针.
更新:
使用多个数组(不同大小),您可以创建一个带有指向数组的指针和当前位置的结构,这样两个值始终保持在一起:
struct arr_data {
int *arr;
int current_pos;
}
Run Code Online (Sandbox Code Playgroud)
也可以添加一个尺寸:
struct arr_data {
int *arr;
int size; // or unsigned int or size_t
int current_pos; // or unsigned int or size_t
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据实现创建这些结构的数组.