首先我们来看下memcyy(()
memcpy():
函数原型:
void *memcpy(void *dest, const void *src, size_t n);
函数解释;
这个函数是把src所指的内存从起始的位置拷贝n个字节到des所指的内存中,这样以来我们就存在了一个问题就是n的大小如果够大,则会覆盖前面dest所指的内存,如果不大,则正常复制。
如上图是正常复制的现象,下图则给出不正常现象。
我们看到上图所示的两种情况,在第一种情况下可以正常拷贝,拷贝成功则会返回指向dest的指针,
在第二种情况下会出错,它把后面的内容覆盖了,这显然不是我们所期望的结果
strcpy();
函数原型
char *strcpy(char *s2, char *s1);
函数解释
strcpy把s1指向的由NULL结束的字符串(包括空字符)复制到s2指向的数组中(此处需要注意是数组)。
s1与s2所指向的空间和memcpy()一样不可重叠,并且s2一定要有足够的空间来存储s1里面的字符串,最后返回s2的指针。
两者的区别
memcpy():主要运用于C++原空间的数据拷贝到目的空间中。
strcpy():主要用于字符串的拷贝,遇到‘\0’结束。