1 Star 0 Fork 0

zyzyzy_mhmhmh/c语言学习

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
模拟实现mommove函数 953 Bytes
一键复制 编辑 原始数据 按行查看 历史
zyzyzy_mhmhmh 提交于 2025-02-07 18:16 +08:00 . add 模拟实现mommove函数.
#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;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zyzyzymhmhmh/c-language-learning.git
git@gitee.com:zyzyzymhmhmh/c-language-learning.git
zyzyzymhmhmh
c-language-learning
c语言学习
master

搜索帮助