中易网

C++中sizeof和strlen的区别是什么?

答案:3  悬赏:40  
解决时间 2021-01-06 04:30
C++中sizeof和strlen的区别是什么?
最佳答案
strlen:是C标准库中的字符串函数,用于统计字符的个数。
  sizeof:是c语言中的运算符,确切的说是一个编译时运算符,用于统计类型或者变量所占的内存字节数。示例,以32位系统为例。
char *str = "hello";
strlen(str); //它的值是5,因为hello这个字符串有5个字符
sizeof(str); //它的值是4,因为char *是一个指针类型,它占4个字节。
sizeof("hello"); //它的值是5,是因为hello有5个字符,每一个字符占1个字节。
int a[2] = {0};
sizeof(a); //它的值是8,因为a中有2个int型变量,每个int型占4个字节,所以8字节
全部回答
我们能常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度
从这个例子可以看得很清楚:har str[11]="0123456789";//注意这里str大小因该大于等于11,应考虑'\0'在内,否则编译器会报错
int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。
int b=sizeof(str); //而b=11; >>>> sizeof 计算的则是分配的数组 str[11] 所占的内存空间的大小,不受里面存储的内容改变。
1. sizeof 操作符的结果类型size_t,它在头文件中typedef为unsigned int类型: typedef unsigned int size_t. 2. sizeof是是长度运算符, 获得数据类型或是变量的长度,如果是数据类型,则返回数据类型大小,如果是用数组,则返回数组所占空间大小,strlen是计算字符串长度的函数,返回的是实际串长度,以char* 作参数 ,且必须是以'\0'结尾。3. sizeof在编译的时候就把计算过,strlen的结果要在运行的时候才能计算出来。4. 数组做长度运算符sizeof的参数不退化。数组做函数strlen的参数就退化为指针了,因为数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
烟台32路改路线到烟台山吗
今日头条官方认证怎么搞?没工作可以吗
我发现现在各大视频网站的视频,移动播放量总
堪欢鸳鸯池内戏,秋来独自立沙汀,唯有鸟鹊伴
20#钢的硬度是多少?
朝韩矛盾的根源是什么?
有没有友友知道《寂寞才说爱》这首歌是哪部电
瑞典的 saab 37 跟美国的 F35 谁强?
祖国儿女为国争光资料
员工给公司造成经济损失怎么赔偿
Lumion 6能竖向剖切吗?
3900×4相乘39个百×4得几个百是几
多么棒的餐馆用英语
春天的雨把绿色给了小草绿绿的小草像一块块绿
问个交规关于掉头的问题
推荐资讯
如何配制氯化钠溶液
莆田第八中学地址在什么地方,想过去办事
求YOYO超人资料,写给玩家的话歌词
跪求禁恋完结小说,兄妹,师生的都可以。类似
27 . 调任与录用同为公务员队伍的“入口”方
高中化学为什么啊啊2
CAD临时文件在哪?
弱电维修需要的工具都有哪些?
良民加油站地址有知道的么?有点事想过去
建筑图纸上空心板是什么意思
小孩吃生蜗牛好不好宝宝不小心吃了生蜗牛
全一快递(建设大街121号全一快递)地址在哪,
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?