函数原型:void *memcpy(void *dest, const void *src, size_t n)
功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
注:src和dst都不一定是数组,任意的可读写的空间均可拷贝,在实现时一定要考虑内存重叠问题。
#include<stdio.h>
void*my_memcpy(void* dst,const void*src,size_t count)
{
char *pdst=(char*)dst;
char *psrc=(char*)src;
size_t i;
if((dst>src)&&(dst<src+count))//内存重叠,从高地址拷贝
{
for(i=count-1;i!=-1;--i)
{
pdst[i]=psrc[i];
}
}
else//内存不重叠
{
for(i=0;i<count;i++)
{
pdst[i]=psrc[i];
}
return dst;
}
}
int main()
{
char arr[] = "1234567";
my_memcpy(arr+2, arr, 5);
printf("%s", arr+2);
system("pause");
return 0;
}