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);
		}
	}
}

代码验证:

相关推荐
Escalating_xu7 小时前
【C 语言项目】数组和函数综合实践:从零实现控制台扫雷游戏
c语言
AI职业加油站8 小时前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
啄缘之间8 小时前
1.【SVA】什么是SVA?
经验分享·学习·测试用例·verilog·sva
sunoo-2299 小时前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
Purple Coder9 小时前
stm32
学习
边境悍匪9 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
爱吃苹果的日记本10 小时前
离散数学第五课
学习·离散数学
Navigator_Z11 小时前
LeetCode //C - 1254. Number of Closed Islands
c语言·算法·leetcode
外收内放11 小时前
Python与AI应用(json模块)
python·学习
既然如此,那就开摆11 小时前
2023_Kirillov_SAM_总结
笔记·学习·遥感