1、函数原型
void *memcpy(void *destin,void *source,unsigned n);
其中,
- destin代表用于存储复制内容的目标数组,类型强制转换为void*指针。
- source表示指向要复制的数据源,类型`强制转换为void*指针。
- n表示要被复制的字节数
该函数返回一个指向目标存储区destin的指针。如果destin存在数据,将会被覆盖。该函数存在与头文件string.h中。
2、实现的功能
从source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中。
3、memcpy与strcpy区别:
- strcpy只能复制字符串,而memcpy可以复制任意内容,如:字符数组、整形、结构体、类等
- strcpy不需要指定长度,它遇到被复制字符的串结束符“ ”才结束,所以容易溢出。memcpy则根据第三个参数决定复制的长度。
- 通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。
4、程序案例:
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 9 int main() { char* a=(char*)malloc(sizeof(char)*N); char* b="Who are you?"; memcpy(a,b,N); printf("%s ",a); return 0; }
运行结果:
Who are y