您的位置 首页 技术

strlen与sizeof的差异

1sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型。该类型保证能容纳实现所建立的最大对象的字节大小。2sizeof

1.sizeof操作符的成果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型确保能包容完成所树立的最大目标的字节巨细。2.sizeof是算符,strlen是函数。

3.sizeof能够用类型做参数,

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());

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/319479.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部