void * memcpy(void * dst, const void * src, size_t count)
{
void *res=dst;
while (count--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst + 1;
src = (char*)src + 1;
}
return res;
}
void * memmove(void * dst, const void * src, size_t count)
{
void *res = dst;
//重叠部分不影响或者不存在重叠
if (dst <= src || (char*)src + count <= (char*)dst)
{
while (count--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst + 1;
src = (char*)src + 1;
}
}
else
{
dst = (char*)dst + count - 1;
src = (char*)src + count - 1;
while (count--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst - 1;
src = (char*)src - 1;
}
}
return res;
}
void* memset(void* dst, int val, size_t count)
{
void* res = dst;
while (count--)
{
*(char*)dst = (char)val;
dst = (char*dst) + 1;
}
return res;
}