0

我正在阅读有关 memcpy 和 memmove 的一些信息,如果我没记错的话,您可以将两者用于在不同数组之间移动内存。

所以这是我的问题:如果我想用这种方法连接这些对象。

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"

这不应该是正确的list2.listToConcatenate(&list1);吗?当然,假设我们有足够的空间。

如果不是,那么正确的方法是什么?这可以用 memcpy 完成吗?

谢谢你。

编辑:我想我需要补充一点,这不适用于我的程序。它不会崩溃,但似乎什么也没做。

4

1 回答 1

2

好的,我发现了我的错误。

是的,你可以用 memmove 做到这一点,但我错过了一些东西:

void concatenateList(List* listToConcatenate)
{    
    memmove(this->vector + n, listToConcatenate->vector, (listToConcatenate->n)*sizeof(int));
    this->n += listToConcatenate->n; //Mistake here.
};

这就是为什么它没有打印任何东西。但是,是的,我现在对 memmove 有了更清晰的了解。谢谢大家的答案。

于 2016-03-09T17:16:02.340 回答