memmove函数实现2

#include<stdio.h>
#include<stdlib.h>
typedef unsigned int uint;
void* my_memmove(void* p,const void* q,uint len)
{
 void*ret=p;
 char* p1=(char*)p;
 char* q2=(char*)q;
 if((p1>q2)&&(p1<q2+len))
 {
  while(len--)
  {
   *(p1+len-1)=*(q2+len-1);
  }
 }
 else
 {
  while(len--)
  {
   *p1=*q2;
   p1++;
   q2++;
  }
 }
 return ret;
}
int main()
{
 int s[]={1,2,3,4,5,6};
 int i=0;
 my_memmove(s+3,s+2,3*sizeof(int));
 for(i=0;i<sizeof(s)/sizeof(s[0]);i++)
 {
  printf("%d ",s[i]);
 }
 system("pause");
 return 0;
}

本文出自 “liveyoung” 博客,转载请与作者联系!

你可能感兴趣的:(memmove)