概述
C语言模拟实现memcpy和memmove
memcpy函数定义:
memcpy函数属于内存操作函数,不关心参数类型。
函数体如下:
void* memcpy(void * destionation,const void * source,size_t num);
特点:
1.函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。
2.这个函数在遇到’ ’的位置的时候并不会停下来。
3.如果source和destination有任何的重叠,复制的结果都是未定义的。
#include<stdio.h>
#include<assert.h>
#include<string.h>
void * my_memcpy(void * dst, const void * src, size_t count)
{
//但凡函数参数为字符串时,必有以下两点
//1.检查合法性 assert
assert(dst);
assert(src);
//2.对指针进行参数保护
char *pdst = (char *)dst;
const char *pstr = (const char *)src;
while (count-->0)
{
*pdst++ = *pstr++;
}
return dst;
}
int main()
{
char str[30];
printf("%dn", strlen(str));
//为什么不是30,因为strlen是以'