简单c之模拟实现mem类函数

本文介绍了如何使用C语言模拟实现内存复制函数`memcpy`和内存移动函数`memmove`。通过示例代码展示了这两个函数的工作原理,`memcpy`用于不重叠的内存区域复制,`memmove`则能处理可能重叠的内存区域,确保数据正确迁移。
摘要由CSDN通过智能技术生成
1.模拟实现memcpy


#include<stdio.h>
#include<assert.h>
void* my_memcpy(void* dest,void* src,int count)
{
char* pdest=(char*) dest;//必须要把目标数组跟原数组强制转化为char*指针,因为count需要一个一个字节拷贝。
char* psrc =(char*) src;
        assert(dest!=NULL);
assert(src!=NULL);
while(count)
{
* pdest++=* psrc++;
count--;
}
return dest;
}
int main()
{
int arr[10];
int str[]={1,2,3,4,5,6,7,8,9,0};
my_memcpy(arr,str,8*sizeof(int));
system("pause");
return 0;
}
2.模拟实现memmove


#include<stdio.h>
#include<assert.h>
void* my_memmove(void* dest,void* src,int count)
{
char* pdest=(char*) dest;
char* psrc =(char*) src;
assert(dest!=NULL);
assert(src!=NULL);
if((pdest>=psrc)&&(pdest<=psrc+count))
{
while(count)//从后向前拷贝
{
*(pdest+count-1)=*(psrc+count-1);
count--;
}
}
else
{
while(count)//从前向后拷贝
{
 * pdest++=* psrc++;
 count--;
}
}
}
int main()
{
int str[]={1,2,3,4,5,6,7,8,9,0};
my_memmove(str+2,str,2*sizeof(int));
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值