目录
memcpy函数是内存拷贝函数,用于把任意类型的数据的内存拷贝到另一个同类型的数据上
函数的参数:
void* destination:
目的地数据,需要被拷贝的数据,因为是任意类型,所以使用void*指针接收
const void* source:
源头数据,源头数据不用改变,使用加上const修饰,且同样不知道是什么类型的数据,所以使用void*指针接收
size_t sum:
需要从源头数据拷贝到目的地数据多少个字节
函数的返回值:
拷贝结束后,会返回目标空间的起始地址,因为并不知道目标空间的类型,所以是返回void*的指针
拷贝整型数组:
拷贝字符串数组:
………………
代码演示:
- void* my_memcpy(void* destination, const void* source, size_t num)
- {
- // 断言
- assert(destination != NULL);
- assert(source != NULL);
-
- // 存放目的地数据的起始位置
- void* ret = destination;
-
- // 将目的地数据的指针和源头数据的指针强制类型转换为char*
- // 再配合 num 每一字节每一字节的拷贝
- char* dest = (char*)destination;
- char* sour = (char*)source;
-
- while (num--)
- {
- *dest = *sour;
- dest++;
- sour++;
- }
-
- return ret;
- }
代码验证:
不接受返回值时:
接收返回值时: