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

C语言My

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

C语言My

↵一、memove函数

void *memmove(void *dest, const void *src, size_t count);

使用memove进行重叠字符串的拷贝大致可分为两种情况:

1.从前向后拷贝:当src内存位置高于dest

 

 

2.从后向前拷贝:当src内存位置低于dest

二、实现代码如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include 
#include 

//实现my_memmove重叠内存的拷贝
void* my_memmove(void* dest, const void* src, size_t count)
{
	void* ret = dest;
	assert(dest&&src);
	//从前向后拷贝
	if ((dest < src) || ((char*)dest >= ((char*)src + count)))
	{
		while (count--)
		{
			*(char*)dest = *(char*)src;
			++(char*)dest;
			++(char*)src;
		}
	}
	else//从后向前拷贝
	{
		while (count--)
		{
			*((char*)dest + count) = *((char*)src + count);
		}	
	}
	return ret;
}
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	my_memmove(arr, arr+3, 20);//从下标为2的元素开始拷贝5个元素覆盖1 2 3 4 5
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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