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

代码验证:

相关推荐
Red Red22 分钟前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
Natural_yz2 小时前
大数据学习17之Spark-Core
大数据·学习·spark
qq_172805592 小时前
RUST学习教程-安装教程
开发语言·学习·rust·安装
一只小小汤圆2 小时前
opencascade源码学习之BRepOffsetAPI包 -BRepOffsetAPI_DraftAngle
c++·学习·opencascade
虾球xz2 小时前
游戏引擎学习第20天
前端·学习·游戏引擎
LateBloomer7773 小时前
FreeRTOS——信号量
笔记·stm32·学习·freertos
legend_jz3 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
Komorebi.py3 小时前
【Linux】-学习笔记04
linux·笔记·学习
weiabc3 小时前
学习electron
javascript·学习·electron
茶猫_4 小时前
力扣面试题 - 25 二进制数转字符串
c语言·算法·leetcode·职场和发展