C/C++中的memcpy

来源:互联网 发布:微分销 源码 编辑:程序博客网 时间:2024/06/05 04:48

这个函数的用法还是比较简单的,只是经常忘记,所以就记下来吧。

1. 所需头文件

    <string.h>


2. 函数原型

void * memcpy ( void * destination, const void * source, size_t num );

(1) 复制指向source位置的num个字节的值直接到指向destination的内存区域中。

(2) source和destination指向的数据类型不用相关,这是二进制复制。

(3) source指向的区域和destination指向的区域不要重叠。

(4) 函数返回destination。

下面是摘自的C/C++ Reference的解释:

Copies the values of num bytes from the location pointed by source directly to the memory block pointed bydestination.
The underlying type of the objects pointed by both the source and destination pointers are irrelevant for this function; The result is a binary copy of the data.
The function does not check for any terminating null character in source - it always copies exactly num bytes.
To avoid overflows, the size of the arrays pointed by both the destination and source parameters, shall be at leastnum bytes, and should not overlap (for overlapping memory blocks, memmove is a safer approach).

3. 例子

/* memcpy example */#include <stdio.h>#include <string.h>int main (void){  char str1[]="Sample string";  char str2[40];  char str3[40];  memcpy (str2,str1,strlen(str1)+1);  memcpy (str3,"copy successful",16);  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);  return 0;}

输出:

str1: Sample stringstr2: Sample stringstr3: copy successful

原创粉丝点击