memcpy函数
首先介绍memcpy函数的作用和参数
比如有两个字符串s1,s2,我们想用字符串s2覆盖s1,这时就可以使用memcpy函数啦。
int main() {
char s1[25] = "hello";
char s2[] = "world";
memcpy(s1, s2, sizeof(char) * 4);//s1是开始被覆盖的字母的地址,s2是覆盖内容的地址
//sizeof(char) * 4是s2覆盖s1的字节数,char类型是1字节,sizeof(char) * 4是4字节
printf("%s\n", s1);
return 0;
}
改变参数,看看有何效果
让我们开始实现一个简单的模拟实现
char* my_memcpy(void* p1, const void* p2, size_t m) {
void* ret = (char*)p1;
assert(p1 && p2);
while (m) {
*(char*)p1 = *(char*)p2;
p1 = (char*)p1 + 1;
p2 = (char*)p2 + 1;
m--;
}
return ret;
}
当然,我们模拟实现的memcpy函数也可以是void类型,无需传参,因为我们用的是指针,直接对内存下手了。