[C语言]memcpy memmove的模拟实现 memcmp memset解析

目录

memcpy

解析

模拟实现

memmove

解析

模拟实现

memcmp

memset

我们知道在学字符串的时候有strcpy strcmp 等等的库函数,但这些都只能进行字符串的操作,如果我们要对一个整数的数组进行比较和复制呢?我们可以采用什么方法呢?以下就是对这些函数的解析以及对memcpy和memmove的模拟实现

memcpy

解析

memcpy函数就是对内存进行赋值,memcpy复制的是字节大小具体类型如下

void * memcpy ( void * destination, const void * source, size_t num );

需要传递需要复制的destination 复制的source以及赋值多少字节的num

返回的是destination的一个空指针,如果要模拟实现的话应该怎么样呢?我们来试一下

模拟实现

#include <stdio.h>
void* my_memcpy(void* mem1,const void* mem2, size_t n)
{
	void* ret = mem1;
	while (n--)
	{
		*((char*)mem1) = *((char*)mem2);
		mem1 = ((char*) mem1)++;
		mem2 = ((char*)mem2)++;
	}
	return ret;
}
print(int* arr,int num)
{
	int i;
	for(i=0;i<num;i++)
	{
		printf("%d", arr[i]);
	}
}
void main()
{
	int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int b[20] = { 0 };
	my_memcpy(b, a, 20);
	print(b, 20);
}

memmove

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值