我正在阅读有关memcpy和memmove的一些信息,如果我没有错,你可以将它们用于不同阵列之间的移动内存。
所以这是我的问题:如果我想用这个方法连接这个对象。
for(int i=n; i>0; i--) {
integerArray[n-i-1] = i;
}
因此,从class List
{
// Pointer to the beginning.
int* vector;
// Number of elements, n >= 0
int n;
// Capacity for new elements.
int capacity;
}
void concatenateList(List* listToConcatenate)
{
memmove(this->vector + n, listToConcatenate->vector, (listToConcatenate->n)*sizeof(int));
}
开始,我们将使用"listToConcatenate->vector"
复制其中的所有元素,并将其放在另一个数组"(listToConcatenate->n)*sizeof(int))"
的末尾。
这不应该是正确的"this->vector + n"
吗?当然,假设我们有足够的空间。
如果不是,那么正确的做法是什么?可以用memcpy完成吗?
谢谢。
编辑:我想我需要补充一点,这对我的程序无效。它并没有崩溃,但似乎什么也没做。
答案 0 :(得分:2)
好的,我发现了我的错误。
是的,你可以用memmove做到这一点,但我错过了一些东西:
void concatenateList(List* listToConcatenate)
{
memmove(this->vector + n, listToConcatenate->vector, (listToConcatenate->n)*sizeof(int));
this->n += listToConcatenate->n; //Mistake here.
};
这就是为什么它不打印任何东西。但是,是的,我现在已经记得更清楚了。谢谢大家的答案。