memmove函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )
·
memmove()函数用于:移动内存块
函数介绍
函数声明:void * memmove ( void * destination, const void * source, size_t num );
参数:
目的地:指向要在其中复制内容的目标数组的指针,类型转换为 void* 类型的指针。
源:指向要复制的数据源的指针,类型转换为 const void* 类型的指针。
数字:要复制的字节数。(size_t 是无符号整数类型)
返回值: 返回目的地。
头 文 件:#include <string.h>
用法示例
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "memmove can be very useful......";
memmove(str + 20, str + 15, 11);
puts(str);
return 0;
}
函数解释
将 num 字节值从源指向的位置复制到目标指向的内存块。复制就像使用中间缓冲区一样进行,从而允许目标和源重叠。
源指针和目标指针所指向的对象的基础类型与此函数无关;结果是数据的二进制副本。
该函数不检查源中是否有任何终止空字符 - 它始终精确地复制数字字节。
为避免溢出,目标参数和源参数所指向的数组的大小应至少为 num 个字节。
和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。
如果源空间和目标空间出现重叠,就得使用memmove函数处理。
实现函数
void* My_memmove(void* dest , const void* src, size_t num)
{
assert(dest && src);
void* ret=dest;
if (dest < src)
{
while (num--)//前->后
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while (num--)//后->前
{
*((char*)dest+num) = *((char*)src + num);
}
}
return ret;
}
事例展示
#include <stdio.h>
#include <string.h>
#include <assert.h>
void* My_memmove(void* dest , const void* src, size_t num)
{
assert(dest && src);
if (dest < src)
{
while (num--)//前->后
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while (num--)//后->前
{
*((char*)dest+num) = *((char*)src + num);
}
}
return;
}
int main()
{
char str[] = "memmove can be very useful......";
My_memmove(str + 20, str + 15, 11);
puts(str);
return 0;
}
阅读全文
AI总结
更多推荐
相关推荐
查看更多
鸿蒙开发工具大赶集

本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。
OpenManus

No fortress, purely open ground. OpenManus is Coming.
G-Star公益行

G-Star 公益行 是 GitCode G-Star 计划旗下专为公益机构打造的技术赋能计划,依托 GitCode 开源平台、生态流量、云计算与 AI 支持,旨在连接开源技术与公益组织,通过技术赋能帮助公益组织实现数字化转型,以提升运营效率、优化资源配置、拓展公益影响力。
热门开源项目
活动日历
查看更多
直播时间 2025-03-13 18:32:35

全栈自研企业级AI平台:Java核心技术×私有化部署实战
直播时间 2025-03-11 18:35:18

从0到1:Go IoT 开发平台的架构演进与生态蓝图
直播时间 2025-03-05 14:35:37

国产工作流引擎 终结「996」开发困局!
直播时间 2025-02-25 14:38:13

免费开源宝藏 ShopXO,电商系统搭建秘籍大公开!
直播时间 2025-02-18 14:31:04

从数据孤岛到数据智能 - 企业级数据管理利器深度解析
目录
所有评论(0)