游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

深入了解strcpy和memcpy的区别

  voidmemcpy(voiddest,constvoidsrc,intn);
  从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中includestring。h
  函数返回一个指向dest的指针。
  1。source和destin所指内存区域不能重叠,函数返回指向destin的指针。
  2。与strcpy相比,memcpy并不是遇到就结束,而是一定会拷贝完n个字节。
  3。如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。
  注意,source和destin都不一定是数组,任意的可读写的空间均可。wk
  strcpy函数的实现:
  已知strcpy函数的原型是:charstrcpy(chardst,constcharsrc);实现strcpy函数解释为什么要返回char假如考虑dst和src内存重叠的情况,strcpy该怎么实现
  1。strcpy的实现代码charstrcpy(chardst,constcharsrc)〔1〕{assert(dst!NULLsrc!NULL);〔2〕charretdst;〔3〕while((dstsrc)!);〔4〕returnret;}或者voidmystrcpy(voidarr,voidbrr){intj0;intk0;while(brr〔j〕!0){arr〔j〕brr〔j〕;j;}arr〔j〕;returnarr;}
  〔1〕const修饰
  源字符串参数用const修饰,防止修改源字符串。
  〔2〕空指针检查
  (A)不检查指针的有效性,说明答题者不注重代码的健壮性。
  (B)检查指针的有效性时使用assert(!dst!src);
  char转换为bool即是类型隐式转换,这种功能虽然灵活,但更多的是导致出错概率增大和维护成本升高。
  (C)检查指针的有效性时使用assert(dst!0src!0);
  直接使用常量(如本例中的0)会减少程序的可维护性。而使用NULL代替0,如果出现拼写错误,编译器就会检查出来。
  〔3〕返回目标地址
  (A)忘记保存原始的strdstt值。
  〔4〕
  (A)循环写成while(dstsrc);明显是错误的。
  (B)循环写成while(src!)dstsrc;
  循环体结束后,dst字符串的末尾没有正确地加上。
  2。为什么要返回char?
  返回dst的原始值使函数能够支持链式表达式。
  链式表达式的形式如:intlstrlen(strcpy(strA,strB))
  又如:charstrAstrcpy(newchar〔10〕,strB);
  返回strSrc的原始值是错误的。
  其一,源字符串肯定是已知的,返回它没有意义。
  其二,不能支持形如第二例的表达式。
  其三,把constchar作为char返回,类型不符,编译报错。
  3。假如考虑dst和src内存重叠的情况,strcpy该怎么实现
  chars〔10〕hello;
  strcpy(s,s1);应返回ello,
  strcpy(s1,s);应返回hhello,但实际会报错,因为dst与src重叠了,把覆盖了
  所谓重叠,就是src未处理的部分已经被dst给覆盖了,只有一种情况:srcdstsrcstrlen(src)
  C函数memcpy自带内存重叠检测功能,下面给出memcpy的实现mymemcpy。charstrcpy(chardst,constcharsrc){assert(dst!NULLsrc!NULL);charretdst;mymemcpy(dst,src,strlen(src)1);returnret;}
  mymemcpy的实现如下charmymemcpy(chardst,constcharsrc,intcnt){assert(dst!NULLsrc!NULL);charretdst;if(dstsrcdstsrccnt1)内存重叠,从高地址开始复制{dstdstcnt1;srcsrccnt1;while(cnt)dstsrc;}else正常情况,从低地址开始复制{while(cnt)dstsrc;}returnret;}
  memcpy思想:大部分认为memcpy是一个char到char的拷贝循环,担心它的效率。
  实际上,memcpy是一个效率最高的内存拷贝函数,他不会那么傻来做一个一个字节的内存拷贝,
  在地址不对齐的情况下,他是一个字节一个字节的拷,地址对齐以后,就会使用CPU字长来拷,32bit或64bit,
  还会根据CPU的类型选择一些优化的指令来进行拷贝。总的来说,memcpy的实现是CPU类型、操作系统、cLib相关的。毫无疑问,它是内存拷贝里效率最高的,可以放心使用。voidmymemcpy(voiddst,constvoidsrc,sizetnum){assert((NULL!dst)(NULL!src));intwordnumnum4;计算有多少个32位,按4字节拷贝intslicenum4;剩余的按字节拷贝intpintsrc(int)src;强制转换类型,不同类型的不能进行拷贝intpintdst(int)dst;while(wordnum){pintsrcpintsrc;}while(slice){((char)pintdst)((char)pintsrc);}returndst;}
  strcpy和memcpy都是标准C库函数,它们有下面的特点。
  strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。
  已知strcpy函数的原型是:charstrcpy(chardest,constcharsrc);
  memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。voidmemcpy(voiddest,constvoidsrc,sizetcount);charstrcpy(chardest,constcharsrc)实现src到dest的复制{if((srcNULL)(destNULL))判断参数src和dest的有效性{returnNULL;}charstrdestdest;保存目标字符串的首地址while((strDeststrSrc)!);把src字符串的内容复制到dest下returnstrdest;}voidmemcpy(voidmemTo,constvoidmemFrom,sizetsize){if((memToNULL)(memFromNULL))memTo和memFrom必须有效returnNULL;chartempFrom(char)memFrom;保存memFrom首地址chartempTo(char)memTo;保存memTo首地址while(size0)循环size次,复制memFrom的值到memTo中tempTotempFrom;returnmemTo;}
  strcpy和memcpy主要有以下3方面的区别。
  1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
  2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
  3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
  简述strcpy与memcpy的相同点和区别点
  相同点:strcpy与memcpy都可以实现拷贝的功能
  不同点:
  (1)实现功能不同,strcpy主要实现字符串变量间的拷贝,memcpy主要是内存块间的拷贝。
  (2)操作对象不同,strcpy的操作对象是字符串,memcpy的操作对象是内存地址,并不限于何种数据类型。
  (3)执行效率不同,memcpy最高,strcpy次之。

从蒙眼狂奔到同城货运下半场,快狗打车以技术为驱动以服务赢口碑日前,同城货运科技平台快狗打车(GOGOX)(以下简称快狗打车)向港交所提交上市申请,中金、瑞银、交银国际、农银国际担任联席保荐人。快狗打车成立与2014年,是国内同城货……俞敏洪数据比人工智能更重要【TechWeb】11月1日,在出席鲸媒体举办的2018TEC教育创想大会时,新东方董事长俞敏洪就对现在教育培训领域的AI焦虑吐槽了一番。同时他也透露,腾讯阿里等都希望和新东方……混战之后,卡牌区块链挖矿游戏成了最大的赢家从目前区块链挖矿游戏的落地的发展趋势看来,链游好像会将手游的发展之路再次走一遍,而之前移动游戏在2013年后进到髙速成长期时,卡牌类游戏便是最开始暴发的品类。那么为何卡牌类型游……联想撤回科创板IPO申请市值蒸发19联想集团(HKEX:00992;OTC:LNVGY)在因政府科技行业的严监管而退出科创板上市计划后,过去五天的市值蒸发了19。这家全球最大的个人电脑制造商放弃了在内地筹资……熊工巧匠Boxes。py之小白也能学会的激光切割创意盒子玩法最近捣鼓车间对装备进行了全面升级。我们换上了高大上的雷宇激光切割机。图:雷宇激光切割机新机器切割过程中几乎没有烟熏痕迹,并且切割速度和切割质量也是国内一流!最重要的……高价低配?大家好,这里是搞不懂手机【原创】随着手机厂商之间的激烈竟争,有手机品牌的没落,也有手机品牌的掘起,我们就拿刚发布的reno4聊聊叭,这款手机针对线下市场,所以它没有采用高……揭秘半包的装修套路,别再傻傻的被坑啦半包装修指的是主材业主自家买,装修公司或施工队出辅料,这样在用材方面就更放心一些。其实,半包装修陷阱也很多,防不胜防!今天小蓝就来和大家分享关于半包装修的防坑指南,准备装修的小……丰田推出ampampquot老头乐ampampquot续航1日前,丰田宣布将在日本推出纯电动微型车Cpod,这款两座的小车被定义为城市内的代步工具,新车搭载容量为9。06kWh的电池组,WLTC测试标准下续航里程为150km。目前该车已……狂揽2500万,Jk制服被疯炒,畸形的圈子是怎么形成的?新时代女性个性化服装有三大类:汉服、JK制服(日本女子高中生校服)和Lolita裙,其中JK制服最疯狂。JK圈子有一个广为人知的例子:一位在日本读高中的女生,由于赶着回国……重锤出击国家金融委部署打击比特币挖矿及交易刚刚中央政府官网发布了《刘鹤主持召开国务院金融稳定发展委员会第五十一次会议》的新闻,其中提及打击比特币挖矿和交易行为,坚决防范个体风险向社会领域传递。比特币交易行为其实在……二十人持枪抢银行!身为金砖国家,为何巴西得天独厚没能成为霸主虽然巴西和我国并列为金砖国家,人均GDP也与我国相仿,但是其社会治安水平却和我国有着云泥之别。以2016年为例,巴西全国每十万人就发生三十起谋杀案,位居世界前列。2019……特斯拉事故丢失重要10秒?车主们需要4K分辨率360行车记录前有特斯拉开车撞树事故,后有特斯拉女车主在上海车展因特斯拉刹车失灵进行维权。原本作为最能提供证据的行车记录仪和行车数据,却也有莫名消失的事故出现。车辆自带的行车记录仪总让人感觉……
农业舆情信息去哪些网站查找呢?农业舆情信息查询网站网站一:三农舆情网该网站是一个专门提供农业和农村方面信息的资讯网站,其中也有专门的农业聚焦栏目,集合了有关三农的网络舆情信息,可供参考。因此,我……全新一代旗舰苹果手机iPhone13配置出来了本月发布苹果公司的旗舰手机,一年一度的定月发布时间,也就是本月,九月一直是苹果手机的发布月,也是果粉们都比较关注的月份啦,今年的苹果手机是iPhone13,苹果手机的发布可以说是……专访时隔30年,元宇宙之父如何解读元宇宙?元宇宙的概念大火,已从2021年跨越至2022年,许多科技巨头相继进军元宇宙。稍早前,微软以所谓的元宇宙为由,以687亿美元收购游戏开发商动视暴雪,称该交易将为元宇宙提供……阿里巴巴拍卖上线版权交易NFT市场实现数字作品版权上链交易这个名为区块链数字版权和资产交易的新NFT市场,已可通过阿里巴巴旗下拍卖平台阿里拍卖访问。通过该平台推出的NFT将在新版链上发布,新版链是由四川省区块链协会版权专委会集中运营的……为什么运营商的iptv盒子一点不卡,但市场上有些网络盒子却卡IPTV最开始的时候做过几年的IPTV,也对这块有所了解。说一说我的认识,不过也可能这10几年又有新的技术出现了说不定。我尽量用比较简单的语音来描述。运营商的IPTV盒子……StackBlitz目前最好用的在线开发工具前几天GitHub宣布内部开发环境从MacOS迁移至云开发环境CodeSpaces,同时对外提供云开发服务。用户最高可选择32核心,64GB内存的的服务器。在线云开发一直……中国无论大人懂事小孩人手一部手机,如果没有手机,结果会怎样?手机的出现和普及也不过几十年时间,现代科学技术在通讯技术领域的发展,出乎人们的预料之外,为人们的工作、生活和学习带来了极大改观和便利。中国人由开始的跟踪、仿制学习到自主开发、提……618旗舰手机只推荐iQOO7,这是你体验百瓦闪充最近的一次旗舰手机代表着当季最强的硬件配置,为用户带来最顶级的使用体验。在这方面,iQOO7受到用户的关注。在配置上,iQOO7有许多亮眼的地方,如120W超快闪充、骁龙888等硬件配置……折腾黑裙晖NAS前几天不知怎么就入手了咸鱼友友退烧的蜗牛壳DIY的黑群晖,断断续续折腾了几天,趋于稳定,现在想想,这是我的刚需吗?手机相册和重要文档基本每隔一段时间我都会备份到移动硬盘和……闽企参与制定首个自动驾驶公交车系列标准来源:台海网台海网1月12日讯据福建日报报道近日,在中国智能交通产业联盟的指导下,由百度牵头,联合我省的金龙汽车以及信通院、深智联创新中心、同济大学、赛目科技、湖南湘江智……苹果PC市场排名一起来看看Canalys最新的研究报告显示,苹果是唯一一家2021年第二季度出现负增长的主要PC供应商,主要是由于iPad需求的下降。如果只看笔记本电脑出货量的话,苹果在这一细分市……FitbitCharge5正式发布支持心电图监测,自带GPS8月25日,Fitbit正式推出全新的智能手环产品FitbitCharge5。新一代的FitbitCharge5相比上代在外观设计上又了较大的改变,屏幕部分采用了圆角矩形……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网