C语言memmove():实现内存拷贝(内存可重叠)
memmove() 是 C语言的一个标准库函数,定义在
memmove() 函数的功能是将源内存中的 n 个字节拷贝到目标内存里,即使源和目标内存区域重叠,memmove() 也能正确工作。
也就是说,memmove() 函数是将 src 指向的内存块的前 n 个字节拷贝到 dest 指向的内存块。
【实例】以下 C语言代码演示了如何使用 memmove() 在同一个数组内移动数据:
<string.h>
头文件中。memmove() 函数的功能是将源内存中的 n 个字节拷贝到目标内存里,即使源和目标内存区域重叠,memmove() 也能正确工作。
memmove() 函数的原型如下:虽然 "move" 本意是移动的意思,但 memmove() 函数的功能是拷贝指定的字节数,而不是将其转移到其它的内存区域。
void *memmove(void *dest, const void *src, size_t n);
参数
- dest:指向目标内存区域的指针。
- src:指向源内存区域的指针。
- n:要复制的字节数。
也就是说,memmove() 函数是将 src 指向的内存块的前 n 个字节拷贝到 dest 指向的内存块。
返回值
返回参数 dest 的值,即返回一个指向目标内存区域的指针。【实例】以下 C语言代码演示了如何使用 memmove() 在同一个数组内移动数据:
#include <stdio.h> #include <string.h> int main() { char str[] = "Hello, World!"; printf("Original string: %s\n", str); // 将字符串前6个字符移动到字符串的末尾 memmove(str, str + 7, 6); memmove(str + 6, "!", 2); printf("Modified string: %s\n", str); return 0; }输出结果为:
Original string: Hello, World!
Modified string: World!!