首页 > 编程笔记
C语言memcpy():实现内存拷贝(内存不能重叠)
memcpy() 是 C语言的一个标准库函数,定义在
memcpy() 的功能是将某块内存中的 n 的字节拷贝到另一块内存里。 memcpy() 函数的原型如下:
也就是说,memcpy() 函数是将 src 所指内存块的前 n 个字节复制到 dest 指向的内存块里。
注意,如果源内存其余和目标区域重叠,memcpy() 的行为是未定义的,在这种情况下应使用 memmove() 函数。
【实例】下面的 C语言代码演示了如何用 memcpy() 函数复制一个字符串。
<string.h>
头文件中。memcpy() 的功能是将某块内存中的 n 的字节拷贝到另一块内存里。 memcpy() 函数的原型如下:
void *memcpy(void *dest, const void *src, size_t n);
参数
- dest:指向目标内存区域的指针。
- src:指向源内存区域的指针。
- 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() 函数不会在复制的字符串后自动添加空字符,因此源和目标不一定要是以空字符结尾的字符串。