memmove
是 C 语言标准库中的一个函数,用于将指定数量的字节从源内存块复制到目标内存块。与memcpy不同,memmove
可以安全地处理内存重叠的情况,避免数据损坏。
memmove函数头文件
memmove
函数的头文件是<string.h>
。在使用memmove
函数之前,确保在你的 C 代码中包含这个头文件:
#include <string.h>
memmove函数原型
void *memmove(void *s1,
const void *s2,
size_t n);
memmove
函数将s2
指向的对象中的n
个字符复制到s1
指向的对象中。
复制过程如下:
- 首先将
s2
指向的对象中的n
个字符复制到一个不与s1
和s2
指向的对象重叠的n
个字符的临时数组中; - 然后将临时数组中的
n
个字符复制到s1
指向的对象中。
参数说明
s1
:指向目标内存的指针,表示复制的目标位置;s2
:指向源内存的指针,表示要复制的数据来源;n
:要复制的字节数;
返回值
memmove
函数返回目标内存块的指针,也就是s1
的值。
memmove示例代码
以下是一个简单示例,展示了memmove
函数在重叠内存情况下的使用:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
//源地址内存和目标地址内存重叠
//使用memmove能安全的处理
memmove(str, str + 7, 5);
str[5] = '\0'; // 字符串末尾添加空字符
printf("%s\n", str);
return 0;
}
程序运行结果
World