我们说我在内存中分配了一个数组。如何直接附加到列表的末尾?通过这个,我的意思是直接在数组中的最后一个条目之后。
我的for循环(i = 0; i <100; i ++)在某些情况下只向数组添加元素,因此无法使用i追加到数组。
我的主要问题是:是否有任何方法可以直接附加到C中数组的末尾?
谢谢
答案 0 :(得分:2)
没有用于在C中附加数组的内置函数(C ++&amp; C#是另一回事)。 只需在数组中保留指向最后插入索引的指针,然后将其向前移动直到到达数组末尾,这是一个基本解决方案。
答案 1 :(得分:0)
在评论中,您说数组中有未使用的空间,并且该数组已经是合适的大小。在这种情况下,您只需要第二个变量来跟踪哪个元素是“下一个”。每次向数组“添加”一个值时,只需将该值复制到第二个变量指定的索引处的元素,然后只需将第二个变量递增一个。
int i;
int index = 0;
for (i = 0; i < 100; i++)
{
if (someCondition)
{
someArray[index++] = someValue;
}
}
通过说index++
而不是++index
,index
的值实际上不会增加,直到将someValue
分配给数组中的元素为止。
int i;
int index = 0;
for (i = 0; i < 100; i++)
{
if (i >= 90)
{
// if index == 0, for instance, someValue will be assigned to
// someArray[0], and THEN index will be incremented to 1.
someArray[index++] = someValue;
}
}
// the first ten elements of someArray will be as follows:
//
// someArray[0] == 90
// someArray[1] == 91
// someArray[2] == 92
// someArray[3] == 93
// someArray[4] == 94
// someArray[5] == 95
// someArray[6] == 96
// someArray[7] == 97
// someArray[8] == 98
// someArray[9] == 99