#include<iostream>
#include<assert.h>
#include<cstring>
using namespace std;
void* my_memmove(void* dest0, const void* src0,size_t count){
assert(dest0!=NULL&&src0!=NULL);
char* dest=(char*)dest0;
char* src=(char*)src0;
if(dest<=src||dest>=src+count){//其实只需if(dest<=src)
while(count--){
*dest++=*src++;
}
}else{
src=src+count-1;
dest=dest+count-1;
while(count--){
*dest--=*src--;
}
}
return dest0;
}
int main(){
char a[6]="12345";
char b[6]="12345";
char c[6]="12345";
cout<<(char*)memcpy(a+1,a,3)<<endl;//"1135"
cout<<(char*)memmove(b+1,b,3)<<endl;//"1235"
cout<<(char*)my_memmove(c+1,c,3)<<endl;//"1235"
}
memmove函数的实现
最新推荐文章于 2023-10-28 02:15:21 发布