一.函数简介
strcpy用于拷贝字符串,而memcpy用于拷贝内存,这样既可以拷贝整形,浮点型,字符型,
引用头文件#include<string.h>
函数声明:
void * memcpy ( void * destination, const void * source, size_t num );
destination:目标空间
source:拷贝空间
num :字节数
返回值:无符号指针类型
事例:
#include<stdio.h>
#include<string.h>
int main()
{
int arr1[20]={1,2,3,4,5,6,7,8,9};
int arr2[20]={0};
memcpy(arr2,arr1,36);
for(int i=0;i<9;i++)
{
printf("%d ",arr2[i]);
}
return 0;
}
二.模拟实现memcpy
#include<stdio.h>
#include<assert.h>
void my_memcpy(void* dest,void* src,size_t num)
{
assert(dest&&src);//断言,避免dest&&src为空指针
while(num--)
{
*(char*)dest=*(char*)src;
dest=(char*)dest+1;
src=(char*)src+1;
}
}
int main()
{
int arr1[20]={1,2,3,4,5,6,7,8,9,10};
int arr2[20]={0};
my_memcpy(arr2,arr1,36);
for(int i=0;i<9;i++)
{
printf("%d ",arr1[i]);
}
return 0;
}
由于这里拷贝的类型不是单一的,所以我们设计的时候,就不能只设计一种拷贝的算法,
整形,浮点型,字符型他们的空间大小不一样,但是它们基本的大小空间是一个字节,所以我们把搜需要拷贝的变量强制转化为(char*)字符指针类型,然后一个字节一个字节拷贝,如*(char*)dest=*(char*)src;,这样就可以满足拷贝变量的多样化