memcpy实现
#include<bits/stdc++.h>
using namespace std;
void *memcpy(void *dst,const void *src ,size_t size)
{
if(dst==NULL||src==NULL) return NULL;
char *pdst,*psrc;
if(src<dst||(char*)dst<(char *)src+size)//src的地址在dst的前面 并且 dst 的起始地址要小于src+需要赋值的长度size
{//发生内存覆盖问题,从后往前进行赋值
pdst=(char *)dst+size-1;
psrc=(char *)src+size-1;
while(size--)
{
*pdst-- = *psrc--;
}
}
else//正常从前往后进行赋值
{
pdst=(char * )dst;
psrc=(char * )src;
while(size--)
{
*pdst++ = *psrc++;
}
}
return dst;
}
int main()
{
char buf[100] = "abcdefghijk";
char ans[100];
int m = 5;
memcpy(ans, buf+2, m);//从buf+2的地址上开始 赋予ans的前m个长度
printf("%s\n", ans);
return 0;
}