这篇文章主要讲解了“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函数如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。