memcpy函数:从源内存地址的起始位置开始拷贝n个字节到目标内存地址
void *memcpy(void *dest,const void *src,size_t n)
{
char *tmp = (char *)dest;
char *s = (char *)src;
while(n--)
{
*tmp++ = *s++;
}
return dest;
}
strcpy函数:是字符串拷贝函数,还复制\0结束符!【strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*】
memmove函数:同样用来拷贝字节,但如果目标区域与源区域有重叠时,memmove能保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中
void *memmove(void *dest,const void *src,size_t n)
{
char *tmp;
char *s;
if(dest <= src) //没有发生内存重叠,从低地址开始复制
{
tmp = (char *)dest;
s = (char *)src;
while(n--)
{
*tmp++ = *s++;
}
}
else //发生内存重叠,从高地址开始复制【倒序拷贝!】
{
tmp = (char *)dest + n;
s = (char *)src + n;
while(n--)
{
*--tmp = *--s; //倒序拷贝
}
}
return dest;
}