memcpy
函数功能
将源内存区域的内容复制到目标内存区域。两块内存区域不允许重叠,否则会导致未定义行为。
函数定义
void *memcpy(void *dest, const void *src, size_t num);
参数说明
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
dest |
指向用于存储复制内容的目标内存指针。 |
非空指针,指向有效内存,至少有num字节可访问。 |
输入/输出 |
src |
指向要复制的数据源内存指针。 |
非空指针,指向有效内存,至少有num字节可访问。 |
输入 |
num |
被复制的字节数。 |
非负数,不超过实际可分配内存大小。 |
输入 |
返回值
- 成功:返回指向目标存储区内存的指针。
- 失败:对标开源Glibc,不返回特殊异常值。

如果源和目标内存区域有重叠,应该使用memmove,因为memcpy无法安全处理重叠内存。
示例
#include <stdio.h> #include <string.h> int main() { char source[] = "Hello, World!"; char destination[20]; memcpy(destination, source, strlen(source) + 1); printf("Source: %s\n", source); printf("Destination: %s\n", destination); return 0; }
运行结果:
Source: Hello, World! Destination: Hello, World!
父主题: 函数定义