他的函数定义如下的 my_memcpy()函数相同。
下面这个函数是我的模拟实现,现在让我们一起来学习一下这个函数的设计思想:
void * my_memcpy(void * des, const void* src, size_t size)
{
void * p = des;
while (size)
{
*((char* )des) = *((char *)src);
des++;
src++;
size--;
}
return p;
}
我们想象我们自己如果是函数的设计者,我们并不能知晓用户使用我们的函数复制什么类型的数据,所以我们不能知晓用什么形式参数和返回值类型,既然如此,我们就可以使用泛型指针,最后用户自己用来复制什么类型的数据由它自己选择,这样我们的函数就可以做到通用了。
当设计复制操作的时候我们遇到了同样的问题,那就是我们不知道用户使用它复制什么类型的数据,既然如此我们干脆加一个形式参数,让用户自己告诉我们需要拷贝多少字节的数据,我们不需要知道这是一些什么类型的数据我们只需要将这些数据一个字节一个字节的拷贝到另一个地方,所以要做到每次只操作一个字节我们自然想到了char*的指针。