首页 > 编程笔记

C语言memcpy():实现内存拷贝(内存不能重叠)

memcpy() 是 C语言的一个标准库函数,定义在<string.h>头文件中。

memcpy() 的功能是将某块内存中的 n 的字节拷贝到另一块内存里。 memcpy() 函数的原型如下:
void *memcpy(void *dest, const void *src, size_t n);

参数


也就是说,memcpy() 函数是将 src 所指内存块的前 n 个字节复制到 dest 指向的内存块里。

返回值

返回参数 dest 的值,即返回一个指向目标内存区域的指针。

注意,如果源内存其余和目标区域重叠,memcpy() 的行为是未定义的,在这种情况下应使用 memmove() 函数。

【实例】下面的 C语言代码演示了如何用 memcpy() 函数复制一个字符串。
#include <stdio.h>
#include <string.h>

int main() {
    const char *src = "http://c.biancheng.net";
    char dest[50];

    memcpy(dest, src, strlen(src) + 1); // 需要复制的字节数为strlen(src) + 1,以确保空字符也被复制

    printf("Copied string: %s\n", dest);
    return 0;
}
输出结果为:

Copied string: http://c.biancheng.net

此示例显示了如何使用 memcpy() 从一个字符串复制到另一个字符串,包括最后的空字符。memcpy() 函数不会在复制的字符串后自动添加空字符,因此源和目标不一定要是以空字符结尾的字符串。

推荐阅读