void* memmove(void* dest, const void* src, size_t num)
*函数memmove从source的位置开始向后复制num个字节的数据到destination的内存位置
*这个函数在遇到\0的时候并不会停下来
*可以进行重叠拷贝
void* my_memmove(void* dest, const void* src, size_t num)
{
char* ret = (char*)dest;
if (dest < src)
{
//从前向后拷贝
while (num--)
{
*(char*)dest = *(char*)src;
++(char*)dest;
++(char*)src;
}
}
else
{
//从后向前拷贝
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
return ret;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
my_memmove(arr + 2, arr, sizeof(arr));
return 0;
}