基本上,我有三个数组,CQueue(2D数组),PQueue(2D数组,与CQueue相同数量的数组,但每个数组包含两倍的值)和CC(标准数组,如只要CQueue中的数组)。我想要实现的是在CQueue中获取特定数组,复制它以使CC读取与CQueue完全相同,并且PQueue中等效数组的前半部分也读取相同的数组
我被建议朋友使用memcpy,这似乎很好,但没有解决问题。我不知道问题是否在于我可能使用memcpy错误或者是否还有其他问题。以下是代码相关部分的简化版本。
int (main)
{
int CQueue[numberOfArrays][halfSize]
int PQueue[numberOfArrays][size]
int CC[halfSize]
for (i = 0; i < numberOfArrays]; i++)
{
memcpy (CC, CQueue[i], halfSize)
memcpy (PQueue[i], CQueue[i], size)
}
}
非常感谢所提供的任何帮助,谢谢!
答案 0 :(得分:1)
memcpy
的第三个参数是以字符复制的数量(即大多数平台上的字节数)。所以你需要做一些事情:
memcpy(CC, CQueue[i], halfSize*sizeof(*CC));
答案 1 :(得分:0)
memcpy
复制字节,而不是整数。您需要将要复制的元素数乘以每个此类元素的大小
memcpy(dst, src, elems * sizeof elem);
代码
memcpy (CC, CQueue[i], halfSize * sizeof *CC);
memcpy (PQueue[i], CQueue[i], size * sizeof *PQueue[i]);