memmove 用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。
void *my_memmove(void *dest,const void *src,int count)
{
assert(dest != NULL);
assert(src != NULL);
if (dest < src)
{
while (count--)//从左向右拷贝
{
*(char *)dest = *(char *)src;
++(char *)dest;
++(char *)src;
}
}
else//从右向左拷贝
{
while (count--)
{
*((char *)dest + count) = *((char *)src + count);
}
}
}
int main()
{
int arr3[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
my_memmove(arr3 + 2, arr3, 16);
system("pause");
return 0;
}