目录
我们知道在学字符串的时候有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);
}