#include<stdio.h>
#include<stddef.h>
#include<assert.h>
void * my_memcpy(void *x,const void *y,size_t num) //定义函数为void * ,返回拷贝之后内存的地址
{
void *z=x; // 存储下x的地址,返回时用到
assert(x && y); // 断言 检测合法性(是否为空指针)
while(num--)
{
*((char *)x)++=*((char *)y)++; //强制转换成char *型,单个字节拷贝
}
return z;
}
int main()
{
int i=0;
void *p=NULL;
int a[]={1,2,3,4,5,6,7,8,9};
int b[]={0};
p=my_memcpy(b,a,20);//将a的前五个数拷贝进b,返回地址用p接收
for(i=0;i<5;i++)
{
printf("%5d",*(((int *)p)++)); //将p强制转换成int * 再 ++
}
printf("\n");
return 0;
}