新闻中心

EEPW首页>嵌入式系统>设计应用> strlen与sizeof的区别

strlen与sizeof的区别

作者: 时间:2016-11-27 来源:网络 收藏
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。

3.sizeof可以用类型做参数,

本文引用地址://m.amcfsurvey.com/article/201611/322230.htm

4.数组做

5.大部分编译程序在编译的时候就把
charstr[20]="0123456789";//str是编译期大小已经固定的数组
inta=strlen(str);//a=10;//strlen()在运行起确定
intb=sizeof(str);//而

6.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的实际长度,不是类型占内存的大小。

7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为

sizeofc;//变量名可以不加括弧

8.当适用了于一个结构类型时或变量,
当适用一静态地空间数组,sizeof
sizeof操作符不能返回动态地被分派了的数组或外部的数组的尺寸

9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,
如:
fun(char[8])
fun(char[])
都等价于fun(char*)
在C++
如果想在函数内知道数组的大小,需要这样做:
进入函数后用memcpy
fun(unsigedchar*p1,intlen)
{
unsignedchar*buf=newunsignedchar[len+1]
memcpy(buf,p1,len);
}

我们能常在用到sizeof
看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚:

harstr[11]="0123456789";//注意这里
inta=strlen(str);//a=10;>>>>strlen计算字符串的长度,以结束符
i

上面是对静态数组处理的结果,如果是对指针,结果就不一样了

char*ss="0123456789";
sizeof(ss)结果
sizeof(*ss)结果

另外,
inta[3]={1,2,3};
cout<<sizeofa/sizeof(typeid(a[0]).name());



关键词:strlensizeo

评论


技术专区

关闭