自行编写内存复制函数MyMemcpy()函数

本文介绍了一个名为MyMemcpy的手写内存复制函数。该函数能够根据源指针和目标指针的位置关系选择不同的复制方式,确保数据正确高效地从源位置复制到目标位置。通过具体的实现细节,展示了如何避免数据覆盖和提高复制效率。
摘要由CSDN通过智能技术生成




/* 
自行编写内存复制函数MyMemcpy()函数 
*/
#include <iostream>


using namespace std;

//-------------------------------------

void* MyMemcpy(void* dest,const void* src,size_t count)
{
//	if(dest == NULL) return NULL;
//	if( src == NULL) return NULL;
//	if(count <= 0) return NULL;
	char* pdest = static_cast<char*>(dest);
	const char* psrc  = static_cast<const char*>(src);
	
	if((pdest > psrc)&&(pdest < (psrc + count))) //这一部分没想明白 
	{
		for(size_t i=count-1;i>=0;--i)
		{
			pdest[i] = psrc[i];	
		}
		pdest[count] = '\0';	
	}
	else
	{
		for(size_t i=0;i<count;++i)
		{
			pdest[i] = psrc[i];	
		}
		pdest[count] = '\0';	
	}
	return pdest;
} 
int main(int argc, char *argv[]) 
{		
	//cout << Myatoi("-12367") << endl;
	char str1[] = "-1234";
	char* str2;
	MyMemcpy(str2,str1,3);
	cout << str2 << endl;
	return 0;
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值