void * memcpy(void *dst, const void *src, size_t size)
{
assert(src != NULL && dst != NULL);
//内存拷贝函数是以字节为单位处理数据的,与指针类型无关。
//声明为“char *”是为了后面进行指针操作时同样以1字节为单位。
char *psrc, *pdst;
if (src == dst)
return dst;
//内存重叠,从高地址开始拷贝。
else if (src < dst && (char *)src + size >(char *)dst)
{
psrc = (char *)src + size - 1;
pdst = (char *)dst + size - 1;
while (size--)
*pdst-- = *psrc--;
}
else
{
psrc = (char *)src;
pdst = (char *)dst;
while (size--)
*pdst++ = *psrc++;
}
return dst;
}
char * strcpy(char *dst, const char *src)
{
assert(src != NULL && dst != NULL);
char *ret = dst;
while ((*dst++ = *src++) != '\0')
;
return ret;
}