📅  最后修改于: 2023-12-03 14:56:57.757000             🧑  作者: Mango
在C语言中,memcpy()和memmove()是常用的内存拷贝函数。memcpy()函数是将一段内存块中的数据复制到另一个内存块中,而memmove()函数则是将一段内存块中的数据移动到另一个内存块中。本文将详细介绍如何编写自己的memcpy()和memmove()函数。
memcpy()函数的定义如下:
void *memcpy(void *dest, const void *src, size_t n);
其中,dest表示目标内存块的地址,src表示源内存块的地址,n表示要复制的字节数。
要编写自己的memcpy()函数,可以按照以下步骤:
代码实现如下:
void *my_memcpy(void *dest, const void *src, size_t n) {
if (dest == NULL) {
return NULL;
}
unsigned char *s = (unsigned char *)src;
unsigned char *d = (unsigned char *)dest;
for (size_t i = 0; i < n; i++) {
d[i] = s[i];
}
return dest;
}
memmove()函数的定义如下:
void *memmove(void *dest, const void *src, size_t n);
其中,dest表示目标内存块的地址,src表示源内存块的地址,n表示要移动的字节数。
要编写自己的memmove()函数,可以按照以下步骤:
代码实现如下:
void *my_memmove(void *dest, const void *src, size_t n) {
if (dest == NULL) {
return NULL;
}
unsigned char *s = (unsigned char *)src;
unsigned char *d = (unsigned char *)dest;
if (d <= s || d >= s + n) {
for (size_t i = 0; i < n; i++) {
d[i] = s[i];
}
} else {
for (size_t i = n; i != 0; i--) {
d[i - 1] = s[i - 1];
}
}
return dest;
}
以上就是自己编写memcpy()和memmove()函数的详细介绍,欢迎参考。