Sizeof与Strlen的区别与联系

Sizeof与Strlen的区别与联系

ID:37896000

大小:47.50 KB

页数:8页

时间:2019-06-02

Sizeof与Strlen的区别与联系_第1页
Sizeof与Strlen的区别与联系_第2页
Sizeof与Strlen的区别与联系_第3页
Sizeof与Strlen的区别与联系_第4页
Sizeof与Strlen的区别与联系_第5页
资源描述:

《Sizeof与Strlen的区别与联系》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Sizeof与Strlen的区别与联系1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是运算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''''结尾的。sizeof还可以用函数做参数,比如:shortf();printf("%d",sizeof(f()));输出的结果是sizeof(short),即2。4.数组做sizeof

2、的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序在编译的时候就把sizeof计算过了,看它是类型或是变量的长度,这就是sizeof(x)可以用来定义数组维数的原因。charstr[20]="0123456789";inta=strlen(str);//a=10;intb=sizeof(str);//而b=20;6.strlen的结果要在运行的时候才能计算出来,主要用来计算字符串的长度,不是类型占内存的大小。7.sizeof后如果接类型参数必须加括弧,如果是变量名可以不加括弧。这是因为size

3、of是个操作符不是个函数。8.当适用了于一个结构类型时或变量,sizeof返回实际的大小,当适用一静态地址空间数组,sizeof归还全部数组的尺寸。sizeof操作符不能返回动态地被分派了的数组或外部的数组的尺寸。9.数组作为参数传给函数时,传递的是指针而不是数组,传递的是数组的首地址,如:fun(char[8])fun(char[])都等价于fun(char*)在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小。如果想在函数内知道数组的大小,需要这样做:进入函数后用memcpy拷

4、贝出来,长度由另一个形参传进去fun(unsigedchar*p1,intlen){unsignedchar*buf=newunsignedchar[len+1]memcpy(buf,p1,len);}我们能常在用到sizeof和strlen的时候,通常是计算字符串数组的长度。看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚:charstr[20]="0123456789";inta=strlen(str);//a=10;>>>>strlen计算字符串的长度,以结束符0x00为字符串结

5、束。intb=sizeof(str);//而b=20;>>>>sizeof计算的则是分配的数组str[20]所占的内存空间的大小,不受里面存储的内容改变。上面是对静态数组处理的结果,如果是对指针,结果就不一样了char*ss="0123456789";sizeof(ss)结果4===》ss是指向字符串常量的字符指针,sizeof获得的是一个指针的之所占的空间,应该是长整型的,所以是4。sizeof(*ss)结果1===》*ss是第一个字符其实就是获得了字符串的第一位'0'所占的内存空间,是char类型的,占了

6、1位strlen(ss)=10>>>>如果要获得这个字符串的长度,则一定要使用strlen。strlen计算长度时,计算“”结束符之前的字符个数,“”算一个字符。sizeof计算字符串长度时计算所有字符个数(结束符也算范围内),“”“”都算一个字符。一、sizeof的概念sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。其实可

7、以简单的理解sizeof是征对"类型"的。二、sizeof的使用方法 1、用于数据类型  sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int)。2、用于变量 sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的用法更普遍,大多数程序员采用这种形式。 注意:sizeof操作符不能用于函数类型,不完全类型或位字段。不完全

8、类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。 三、sizeof的结果sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型。该类型保证能容纳实现所建立的最大对象的字节大小。1、若操作数具有类型char、unsigned char或signed char,其结果等于1。因为 ANSI C正式规定字符类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。