memcpy的实现
简单版本
/**
* @description:
* @param {void*} src 原串指针
* @param {void*} dest 目的串指针
* @param {int} len 长度
* @return {*}
*/
void* memcpy(void* src, void* dest, int len)
{
// 不在函数内申请空间,所以需要进行判断
if(dest == NULL || src == NULL )
{
return dest;
}
char* d = (char*)dest;
char* s = (char*)src;
// 考虑 src + len > dest,即dest地址在src + len的里面,那么如果按顺序拷贝,src后部分数据将会丢失,所以需要变更下拷贝方式
if(dest > src && src + len > dest)
{
while(len-- > 0)
{
*(d+len) = *(s + len);
}
}
while(len-->0)
{
*(d++) = *(s++);
}
return dest;
}