memmove函数
引入问题
int main()
{
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
my_memcpy(arr1+2, arr1, 20);
for (int i = 0; i < 10; i++)
{
printf("%d ", arr1[i]);
}
return 0;
}
上面一段代码我们的目的是想把到5的数字共20个字节拷贝到原来3到7的数字的位置上。
然后我们看到其打印的结果和我们所想到的并不一致我们想要的是1 2 1 2 3 4 5 8 9 10
这是为什么呢?
这里我们就看出来问题了,我们把1和2拷贝到了3和4的位置,但是当我们想拷贝3的时候发现3已经被原来的1给覆盖了所以才会出现12121这种情况,那么如何避免这种情况呢?
用 memmove
函数
成功解决。