函数原型
void *memcpy(void *dest, const void *src, size_t n);编辑本段功能
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中编辑本段所需头文件
#include <memory.h>编辑本段返回值
函数返回dest的值。编辑本段说明
1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
void* _memcpy(void* pvTo, const void* pvFrom, size_t size)
{
char * pbTo = (char*)pvTo;
const char * pbFrom = (char*)pvFrom;
assert(pvTo != NULL && pvFrom != NULL);
/* 内存块重叠吗?如果重叠,就使用memmove */
assert(pbTo>=pbFrom+size || pbFrom>=pbTo+size);
while(size-->0)
*pbTo++ = *pbFrom++;
return(pvTo);
}
void main()
{
char a[10]={"abcdefg"};
char b[10];
_memcpy(a,a,10);
puts(b);
}