这篇文章主要讲解了“C++中memcpy函数如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中memcpy函数如何使用”吧!
memcpy是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2.复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3.用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
int main() { char arr1[] = "abcdef"; char arr2[20] = { 0 }; strcpy(arr2, arr1); printf("%s", arr2); return 0; }
我们再看一下下面的代码
int main() { int arr1[] = { 1,2,3,4,5 }; int arr2[5] = { 0 }; printf("%s", arr2); return 0; }
这时我们发现arr2就不能正常的拷贝了,因为strcpy只能拷贝字符串,int类型的数组或者结构体都是不能拷贝的,因为strcpy比较依赖’\0’通过检测‘\0’来实现函数的,这时就需要我们的memcpy函数了。
我们这里简单介绍一下函数的使用,函数的三个参数分别是dest(要复制的目的地),str(原目标),count(要复制内容的大小)。
struct S { char name[10]; int age; }; int main() { struct S arr1[] = {{"ajd",20},{"qwe",18}}; struct S arr2[3] = { 0 }; memcpy(arr2, arr1, sizeof(arr1)); return 0; }
这里我们通过memcpy函数成功复制了结构体arr1。
void* my_memcpy(void* dest, const void* src, size_t num) { assert(dest && src); void* ret = dest; while (num--) { *(char*)dest = *(char*)src; ++(char*)dest; ++(char*)src; } return ret; } struct S { char name[10]; int age; }; int main() { struct S arr1[] = {{"ajd",20},{"qwe",18}}; struct S arr2[3] = { 0 }; my_memcpy(arr2, arr1, sizeof(arr1)); return 0; }
这里我们模拟实现了memcpy函数。
感谢各位的阅读,以上就是“C++中memcpy函数如何使用”的内容了,经过本文的学习后,相信大家对C++中memcpy函数如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。