// dest 目标地址 src 来源地址 num 拷贝的字节数
// 可以用来拷贝任意的类型数据 只要告诉函数要拷贝多少字节
void* my_memmoveplus(void* dest, void* src, const int num)
{
// 用来断言 dest 和 src 不为空
// 要引头文件 <assert.h>
assert(dest && src);
char* prev = (char*)dest;
char* cur = (char*)src;
int i = 0;
// 当目标地址 dest 和 src 在同一数组中
// 且dest 的地址小于 src 时从后向前拷贝
if (prev > cur)
{
i = num;
for(; i >= 0; i--)
*(prev + i) = *(cur + i);
return src;
}
// 从前向后拷贝
else
{
for (; i < num; i++)
*(prev + i) = *(cur + i);
return dest;
}
}
上面的是 menmove 函数的实现
下面是 memcpy 函数的实现
// dest 目标地址 src 来源地址 num 拷贝的字节数
// 可以用来拷贝任意的类型数据 只要告诉函数要拷贝多少字节
void* my_memcpyplus(void* dest, void* src, const int num)
{
// 用来断言 dest 和 src 不为空
// 要引头文件 <assert.h>
assert(dest && src);
char* prev = (char*)dest;
char* cur = (char*)src;
int i = 0;
for (; i < num; i++)
*(prev + i) = *(cur + i);
return dest;
}
有问题可以在评论区问哦,欢迎大家来进行提问,谢谢观看。