网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

模拟实现memmove函数-创新互联

完成这道题目之前首先要明确memmove是对内存进行操作,所以函数的参数是void *,即可以操作任意类型的数据。

目前创新互联已为上1000+的企业提供了网站建设、域名、网络空间、网站托管、企业网站设计、江安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

其次要明白两个待处理数据的关系,于是我画了一张图帮助大家理解
模拟实现memmove函数
上面的是特殊情况,发生内存重叠时只有这种情况是需要从右向左进行操作的,如果这种情况还是按照从左往右操作的话就会把想要拷贝的东西一直重复的拷贝下去,除这种情况之外都只需从左往右拷贝

再然后就是如何实现代码的过程了,其方法和之前说过的拷贝函数类似,进行值的交换,在这里就不详细赘述了。

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
void my_memmove(voiddst,const void src, int num)
{
void
ret = dst;
if (dst > src&&(char )dst <((char) src + num))//dst包含于src的情况,从后往前进行操作
{
dst = (char )dst + num - 1;//将dst指向最后一个元素
src = (char
)src + num - 1;
while (num--)
{
(char)dst = (char)src;
dst=(char )dst-1;
src=(char
)src-1;
}
}
else
{
while (num--)
{
(char)dst = (char)src;
dst = (char )dst + 1;
src = (char
)src + 1;
}
}
return (ret);
}
int main()
{
char dst[100] = "hello world";

my_memmove(dst + 1, dst, strlen(dst) + 1);
printf("%s",dst);
system("pause");
return 0;

}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:模拟实现memmove函数-创新互联
网站路径:http://bjjierui.cn/article/ddddpj.html

其他资讯