注意:void* 任意类型,可以接受任意类型的指针,但不能进行解引用操作!
因为传过来的值arr2是不能被改变的,所以加const修饰一下
因为接收的是指针 所以用assert 断言一下指针是否为空
在c库里面size_t 类型 其实就是 unsigned int (无符号整型)
dest 接收arr2的首元素地址 src接收arr1的地址,count 接收的是要拷贝的字节数
#include <stdio.h>
#include <assert.h>
//模拟实现函数功能
void* my_memcpy(void* dest,const void* src,size_t count)
{
char* ret=dest;
assert(dest!=NULL);
assert(src!=NULL);
whlie(count--)
{
*(char*)dest=*(char*)src;
++(char*)dest;
++(char*)src;
}
return ret;
}
int main()
{
int arr1[]={1,2,3,4,5,6};
int arr2[10]={0};
//将arr1中的数字拷贝到arr2中
my_memcpy(arr2,arr1,sizeof(arr1));
//拷贝完之后将arr2打印出来
int i=0;
int sz=sizeof(arr2)/sizeof(arr0);
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
return 0;
}