C语言 ——— 学习、使用memmove函数 并模拟实现

目录

memmvoe函数的功能

学习memmove函数​编辑

模拟实现memmove函数


memmvoe函数的功能

memmvoe函数的功能类似于memcpy函数,都是内存拷贝,唯一的区别是memcpy函数不能成功拷贝原数据,而memmvoe函数可以

举例来说:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

将以上数据的 [1, 2, 3, 4, 5] 拷贝到 [3, 4, 5, 6, 7] 的位置

使用memcpy函数拷贝出来为:[1, 2, 1, 2, 1, 2, 1, 8, 9, 10] ,出现这一结果是因为覆盖了拷贝的值

使用memmove函数拷贝出来为:[1, 2, 1, 2, 3, 4, 5, 8, 9, 10]


学习memmove函数

memmove函数的功能类似等同于memcpy函数

C语言 --------- 学习、使用memcpy函数 并模拟实现-CSDN博客


模拟实现memmove函数

复制代码
void* my_memmove(void* destination, const void* source, size_t num)
{
	// 断言
	assert(destination && source);
	
	// 分情况判断
	if (destination < source)
	{
		// 从前向后拷贝
		while (num--)
		{
			*((char*)destination) = *((char*)source);
			destination = (char*)destination + 1;
			source = (char*)source + 1;
		}
	}
	else
	{
		// 从后向前拷贝
		while (num--)
		{
			*((char*)destination + num) = *((char*)source + num);
		}
	}
}

代码验证:

相关推荐
前端不太难6 分钟前
OpenClaw 代码里最值得学习的 10 个设计
学习·状态模式
小龙报13 分钟前
【数据结构与算法】环与相遇:链表带环问题的底层逻辑与工程实现
c语言·数据结构·c++·物联网·算法·链表·visualstudio
点PY13 分钟前
OpenGL学习(2)——你好,三角形
学习
困死,根本不会21 分钟前
Git 远程连接仓库学习笔记(本地→GitHub)
笔记·git·学习
一叶落43823 分钟前
LeetCode 67. 二进制求和(C语言详解 | 双指针模拟加法)
c语言·数据结构·算法·leetcode
青稞社区.29 分钟前
ROLL 团队分享:面向多轮交互 Agentic 场景的 Rollback 课程学习机制探索与实践
人工智能·经验分享·学习·交互
深耕半夜37 分钟前
linux内存学习记录
linux·服务器·学习
ADHD多动联盟1 小时前
如何通过行为矫正方案改善孩子的情绪问题和学习能力?
学习·学习方法·玩游戏
Shining05961 小时前
前沿模型系列(二)《科学多模态大模型》
人工智能·学习·其他·性能优化·infinitensor