Copy block of memory
# include <string.h> void * memcpy(void * dest, const void * src, int count);
Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
上述内容是C++官网对memcpy函数的介绍,可以看出memcpy函数从源src所指的内存地址的起始位置开始复制count个字节到目标dest所指的内存地址的起始位置中。
接下来给出实现memcpy函数的源代码:
#define _CRT_SECURE_NO_WARNINGS 1 /* * Copyright (c) 2018, code farmer from sust * All rights reserved. * * 文件名称:MyMemcpy.c * 功能:从源src所指的内存地址的起始位置开始复制count个字节到目标dest所指的内存地址的起始位置中 * * 当前版本:V1.0 * 作者:sustzc * 完成日期:2018年4月22日11:16:02 */ # include <stdio.h> # include <assert.h> /* * 函数名称:MyMemcpy * * 函数功能:从src所指向的位置开始复制count个字节到dest所指向的位置 * * 入口参数:dest, src, count * * 出口参数:ret * * 返回类型:void * */ void * MyMemcpy(void * dest, const void * src, int count) { void * ret = dest; assert((NULL != dest) && (NULL != src)); while(count--) { *(char *)dest = *(const char *)src; dest = (char *)dest + 1; src = (const char *)src + 1; } return ret; } int main(void) { char str1[10] = "abc"; char str2[10] = "def"; char * ret = NULL; printf("str1: %s\n", str1); printf("str2: %s\n", str2); ret = MyMemcpy(str1, str2, 2); printf("memory copy after, str1: %s\n", ret); return 0; }
输出结果