完成内存之间的拷贝

考虑问题是否全面,是否考虑内存重叠问题返回void *支持链式操作,参数类型是void *以支持任意类型的指针,输入参数加上const修饰,最好加上assert对输入输出指针进行非NULL判断。

void*memmove(void*dest, const void*src, size_t count)

  {      

     assert((src != NULL)&&(dest !=NULL));        

char*tmp, *s;   

 if(dest <=src)      

 {         

tmp = (char*) dest;        

 s = (char*) src;          

while(count--)        

 *tmp++ = *s++;       

}       

else 

{            

 tmp = (char*) dest +count;             

s = (char*) src +count;           

 while(count--)             

*--tmp = *--s;            

 }    

returndest; 

 } 

 dest比src低,则可以从s头开始拷贝; dest比src高,则为了保证s的数据不会被覆盖,所以要从s的末尾开始拷贝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值