int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10};
memmove(arr + 3, arr, 20);//20是内存大小,20字节,五个数字
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
模拟实现memmove函数:
void* my_memmove(void* p1, const void* p2, size_t count)
{ //p1是目的地址 p2是要拷贝的地址 size_t count是字节数
void* ret = p1; //定临时变量
assert(p1 && p2);
if (p1 < p2)
{
while (count--)
{
*(char*)p1 = *(char*)p2;
++(char*)p1;
++(char*)p2;
}
}
else
{
while (count--)
{
*((char*)p1 + count) = *((char*)p2 + count);
}
}
return (ret);
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10};
my_memmove(arr + 3, arr, 20);//20是内存大小,20字节,五个数字
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}