memcpy
函数原型:
函数功能:memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。函数返回值指向dest的指针。不考虑内存重叠
#include<stdio.h>
#include<assert.h>
#include<string.h>
void* Memcpy(void* dst, const void* src, size_t size)
{
assert(dst);
assert(src);
char* pdst = (char*)dst;
const char* psrc = (const char*)src;
while (size--)
{
*pdst++ = *psrc++;
}
return dst;
}
int main()
{
char dst[20];
memset(dst, '\0', sizeof(dst));
char src[] = "hello";
printf("%s\n", Memcpy(dst, src, strlen(src)));
return 0;
}
memcpy函数的优化
#include<stdio.h>
#include<assert.h>
#include<string.h>
void* Memcpy(void* dst, const void* src, size_t size)
{
int len = size / 4; //计算size要拷的次数
int mod = size % 4;//计算余下的字符要拷的次数
int* pdst = (int *)dst;//强转为int,这样一次性可以拷4个字节
const int* psrc = (const int*)src;
//没有余下字符就返回dst,结束拷贝
if (mod == 0)
{
return dst;
}
while (len--)
{
*pdst++ = *psrc++;
}
char* p = (char*)dst;
p += len*sizeof(int)