memcpy函数就是内存拷贝函数,“mem”就是内存“memory”的缩写,而“cpy”代表的是英文单词“copy”。
我们从cplusplus网站上找到这个函数,可以看出memcpy函数的作用就是“copy block of memory”,是将 num 个字节的数据从 source 指向的位置直接复制到 destination 指向的内存块中,所以memcpy函数中需要传入三个参数,分别是目标内存空间的首地址,被拷贝内存空间的首地址和拷贝字节数。
我们可以自己写一个my_memcpy函数来模拟实现memcpy函数的功能
首先定义函数my_memcpy
void* my_memcpy(void* dest, void* src, int size_num)
因为memcpy是拷贝内存的函数,对于内存中被拷贝的是什么数据类型,并没有限制,所以传入的参数数据类型用void*,返回值也是无类型的地址。
size_num是一个整数类型,表示想要拷贝的字节数,所以在my_memcpy函数内部,我们可以这样写
while (size_num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
return &((char*)dest)[0];
因为dest和src都是无类型的地址,所以不能直接对其解引用并执行操作,我们可以将其转换为单字节的char*类型,每次发生一个字节数据交换,最后返回dest首字节的地址,函数模拟实现完成。