memcpy函数 头文件string.h
如果除了字符串类型要复制
void* memcpy(void* destination,const void* source,size_t num)
指针指向的目标数组,指针指向的元素组,字节
目的地
int arr1[]={1,2,3,4,5,6,7,8,9,10}
int arr2[10]={0}
memcpy(arr2,arr1,20)
arr2就变成1234500000了
如果要拷贝34567
memcpy(arr2,arr1+2,20)
memcpy(arr2,arr1+2,17)
也会是3456700000
因为只取2个字节
07 00 00 00 取到了07 后面补0,结果还是7
void* my_memcpy(void* dest,const void* src,size_t)
{
void* ret=dest
assert(dest && src)
while(num--)
{
*(char*)dest=*(char*)src
dest=(char*)dest+1
src=(char*)src+1
}
return ret
}
memove函数 头文件string.h
用来实现重叠内存的拷贝
参数和memcpy一样
void* my_memmove(void* dest,const void* src,size_t num)
{
void* ret=dest
assert(dest && src)
if(dest<src)
{
while(num--)
{
*(char*)dest=*(char*)src
dest=(char*)dest+1
src=(char*)src+1
}
}
else
{
while(num--)
{
*((char*)dest+num)=*((char*)src+num)
}
return ret
}