- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机]Sizeof与Strlen的区别与联系
Sizeof与Strlen的区别与联系
sizeof??? sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。??? 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。??? 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。??? 具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:??? 数组——编译时分配的数组空间大小;??? 指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);??? 类型——该类型所占的空间大小;??? 对象——对象的实际占用空间大小;??? 函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。**************二、strlen??? strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。??? 它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。*****************三、举例:??? eg1、char arr[10] = What?;??? ?? ?? ??? int len_one = strlen(arr);??? ?? ?? ??? int len_two = sizeof(arr); ??? ?? ?? ??? cout len_one and len_two endl; ??? 输出结果为:5 and 10??? 点评:sizeof返回定义arr数组时,编译器为其分配的数组空间大小,不关心里面存了多少数据。strlen只关心存储的数据内容,不关心空间的大小和类型。??? eg2、char * parr = new char[10];??? ?? ?? ??? int len_one = strlen(parr);??? ?? ?? ??? int len_two = sizeof(parr);??? ?? ?? ??? int len_three = sizeof(*parr);??? ?? ?? ??? cout len_one and len_two and len_three endl;??? 输出结果:23 and 4 and 1??? 点评:第一个输出结果23实际上每次运行可能不一样,这取决于parr里面存了什么(从parr[0]开始知道遇到第一个NULL结束);第二个结果实际上本意是想计算parr所指向的动态内存空间的大小,但是事与愿违,sizeof认为parr是个字符指针,因此返回的是该指针所占的空间(指针的存储用的是长整型,所以为4);第三个结果,由于*parr所代表的是parr所指的地址空间存放的字符,所以长度为1。************四、参考资料:Sizeof与Strlen的区别与联系(转) 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以\0结尾的。 sizeof还可以用函数做参数,比如: short f(); printf(%d\n, sizeof(f())); 输出的结果是sizeof(short),即2。 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。 5.大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 char str[20]=0123456789; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20; 6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。 7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。 8.当适用了于一个结构类型时或变量, sizeof 返回实际的大小, 当适用
您可能关注的文档
- [计算机]15 虚拟仪器技术.doc
- [计算机]17ArcObjects 在地理数据建库中的若干应用.pdf
- [计算机]1988年至2005年不同州的年平均工资Average Annual Pay_ by State 1988 to 2005 _数据挖掘_科研数据集.pdf
- [英语考试]高三英语书面表达.ppt
- [计算机]1Linux教程实验指导书.doc
- [计算机]2008R2 Windows 7管理系列07_WDS客户端启动安装.doc
- [计算机]2009年第3季度中国网民电子商务行为研究报告.doc
- [计算机]2010-11-10从高新技术企业对人才需求谈职业.ppt
- [计算机]2010年汇编语言程序设计半期试题堂下开卷.doc
- [计算机]2003Excel技巧之自定义数字格式.doc
- 2024年山东省公务员录用考试《行测》答案+解析.pdf
- 2024年青海省公务员录用考试《行测》答案+解析.pdf
- 2024年湖北申论真题(县乡卷)及参考答案.pdf
- 2023年山东省公考《申论》真题(B类)及参考答案.pdf
- 2024年重庆市公务员录用考试《行测》答案+解析.pdf
- 2024年云南公务员录用考试《行测》题(网友回忆版).pdf
- 2024年吉林省公务员录用考试《行测》答案+解析.pdf
- 2024年国家公务员录用考试《行测》题(行政执法卷).pdf
- 2024年上海市公考《申论》(B卷)题及参考答案_20241205_110305.pdf
- 2023年吉林省公务员录用考试《行测》题....pdf
最近下载
- JTS 133-2013水运工程岩土勘察规范.docx VIP
- 工程设计方案科学合理(3篇).docx
- 电子元器件选型要求规范实用经典要点.docx
- 慢性病综合防控示范区建设培训PPT课件.ppt
- 医疗器械独立软件(符合ISO 13485、MDR、FDA 21 CFR Part 820)软件配置控制程序2025年.docx
- sg500mx sg630mx sgxxhv光伏并网逆变器通信协议.pdf
- 湖北省荆门市2022年中考[生物]考试真题与答案解析.pdf VIP
- 国际贸易公司办公室主任职责.docx VIP
- 2025年高考数学模拟试卷01(九省新高考新结构卷)及答案.docx VIP
- 码垛机机械手的整体设计论文大学毕设论文.doc
文档评论(0)