#include<stdio.h>
#include<string.h>
#include<assert.h>
void *my_memmove(void *dest, const void*src, int count)
{
int i = 0;
char *pdest = (char*)dest;
void *pret = dest;
const char*psrc = (const char*)src;//强制转换
assert(src);
assert(dest);
if ((pdest > psrc) && (pdest < psrc + count)) //重叠
{
while (count--)
{
*(pdest + count) = *(psrc + count);
}
}
else //不重叠
{
while (count--)
{
*pdest++ = *psrc++;
}
}
return pret;
}
int main()
{
int i = 0;
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
my_memmove(arr+4, arr, 3 * sizeof(int));
for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
模拟实现memmove
最新推荐文章于 2023-12-27 15:47:54 发布