当前位置: 首页 > news >正文

mencpy和strcpy的区别?

                今天刷题时遇到了这个问题,记录一下。

               strcpy比较简单,就是拷贝字符串,遇到'\0'时结束拷贝。

                memcpy用来做内存拷贝,可以拷贝任何数据类型的对象并指定拷贝数据的长度:char a[100],b[50]; memcpy(b, a, sizeof(b));

             总结一下:

             strcpy和memcpy主要有以下3方面的区别。
            复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
            复制的方法不同。strcpy不需要指定长度,它遇到字符串结束符"\0"便结束。memcpy则是根据其第3个参数决定复制的长度。
            用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。

                 //注意:如果用的是sizeof(a),则会造成内存泄露。  

              比较复杂点的是memset,用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’,比如:

              char a[100];memset(a, '\0', sizeof(a));

              另外比较方便的是对结构体的操作, memset可以方便的清空一个结构类型的变量或数组:

               比如有结构体struct sample_strcut  stTest,一般清空结构体的话得用如下方式:

struct sample_struct
{char   csName[16];int    iSeq;int    iType;
};stTest.csName[0]='\0';
stTest.iSeq=0;
stTest.iType=0;

  而如果用memset就非常方便了:

  memset(&stTest,0,sizeof(struct sample_struct));

  参考:http://www.cppblog.com/junfeng568/archive/2006/03/11/4022.html

           http://blog.chinaunix.net/uid-23922099-id-3555928.html

http://www.lryc.cn/news/180104.html

相关文章:

  • 机器人过程自动化(RPA)入门 8. 异常处理、调试和日志记录
  • tomcat总结笔记
  • 中断向量控制器(NVIC)
  • QT配置FFmpeg出现错误原因
  • 列出使用Typescript的一些优点?
  • 如何做好测试?(四)集成测试(Integration Testing, IT)
  • 二叉树前序、中序、后序遍历(递归法、迭代法)
  • npm ,yarn 更换使用国内镜像源,淘宝源
  • 真正理解浏览器渲染更新流程
  • 市场调研的步骤与技巧:助你了解市场需求
  • ansible的个人笔记使用记录-个人心得总结
  • 相机数据恢复!详细步骤解析(2023新版)
  • LNK2001: unresolved external symbol __imp___std_init_once_begin_initialize 问题解决
  • 修改switch Nand无线区码 以支持高频5G 信道
  • 基于SpringBoot的课程答疑系统
  • JAVA中的泛型
  • 日撸代码300行:第73天(固定激活函数的BP神经网络,训练与测试过程理解)
  • css中常用单位辨析
  • Unity 一些常用特性收集
  • select实现服务器并发
  • 【Spring底层原理】BeanFactory的实现
  • c++---I/o操作
  • UG\NX二次开发 用程序修改“用户默认设置”
  • 什么是信号处理?如何处理信号?
  • 谈谈 Redis 数据类型底层的数据结构?
  • 九、GC收集日志
  • SimpleCG动画示例--汉诺塔动画演示
  • 反弹shell脚本(php-reverse-shell)
  • XSS-labs
  • C++简单实现AVL树