代码拉取完成,页面将自动刷新
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
void* my_memmove(void* dest, const void* sou, size_t num)
{
assert(dest && sou);
void* set = dest;
//当(char*)dest小于(char*)sou时,应该让sou中的字节从前向后依次拷贝
//当(char*)dest大于(char*)sou然后小于(char*)dest+num时,应该从后向前复制
//当(char*)dest大于(char*)dest+num时,无论从哪边开始复制都是一样的
if ((char*)dest < (char*)sou)
{
while (num--)
{
*(char*)dest = *(char*)sou;
dest = (char*)dest + 1;
sou = (char*)sou + 1;
}
}
else//为了计算方便,所以剩下两种情况都用从后向前的方式拷贝
{
while (num--)
{
*((char*)dest + num) = *((char*)sou + num);
}
}
return set;
}
int main()
{
int arr1[20] = {1,2,3,4,5,6,7,8,9,10};
my_memmove(arr1 + 2, arr1, 20);
for (int i = 0;i < 10;i++)
{
printf("%d ", arr1[i]);
}
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。