在论述这个问题之前,我们先来自己实现 memcpy 和 memmove 函数,当然自己实现的大多数情况是没有库实现的那么严谨和完备的。...如何解释这一原因呢,我们从一个例子说起,下面是对应的代码:
int main(int argc, char **argv)
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10...};
int i = 0;
my_memcpy(arr + 2, arr, 20);
for (i = 0; i < 10; i++)
{
printf...("%d ", arr[i]);
}
return 0;
}
可以看到代码所实现的功能是,将arr数组中12345拷贝到 34567所在的地址中去,按照这样一个思路,因该输出的是:...1 2 1 2 3 4 5 8 9 10
但是程序运行后输出的是:
1 2 1 2 1 2 1 8 9 10
这是为什么呢?