栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言--内存操作函数memmove

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言--内存操作函数memmove

文章目录
  • 一、C语言--内存操作函数memmove
    • 1.1 memmove函数介绍
    • 1.2 memmove使用示例
  • 二、模拟实现memmove函数

一、C语言–内存操作函数memmove 1.1 memmove函数介绍

从source指针指向的位置开始,拷贝num个字节的内存块到destination中。

  • memmove函数和memcpy函数十分相似:都可以实现内存的拷贝。
  • 区别是,memmove可以用来destination和source有内存重叠时的拷贝
1.2 memmove使用示例
'//memmove  看名字是memory move其实他也是拷贝,但是可以应对内存重叠的情况。'
int main()
{
	int a[] = { 1,2,3,4,5,6,7,8,9,10 };
	memmove(a + 4, a + 2, 20);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);                 '//结果是:1 2 3 4 3 4 5 6 7 10  '
	}
	return 0;
}
二、模拟实现memmove函数
'//模拟实现memmove函数'
'//当source大于destination时,从左到右复制;否则就从右到左复制'
void* my_memmove(void* destination, void* source, size_t num)
{
	void* result = destination;
	while (num--)
	{
		if (source > destination)
		{
			*(char*)destination = *(char*)source;
			source = (char*)source + 1;
			destination = (char*)destination + 1;
		}
		else
		{
			*((char*)destination + num) = *((char*)source + num);
		}
	}
	return result;
}
int main()
{
	int a[] = { 1,2,3,4,5,6,7,8,9,10 };
	my_memmove(a + 4, a + 2, 20);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656052.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号