sizeof()与strlen()的区别

1、本质区别
sizeof()是一个运算符,给出操作数所占空间的大小,在此操作数可以是变量,数据类型或者函数等等。(其实就是计算操作数的数据类型所占空间的大小,不管操作数是什么(数组也是一样的,只不过是数组中存放有数组大小个相同的数据,数据类型都是一样的),只需要看其数据类型,然后计算sizeof(该数据类型)的大小就可以)。
strlen()本质上是一个函数,并且参数必须是char * ,该函数的计算必须依赖‘\0’作为结束标志。
对于数组类型:数组名传递给sizeof,则给出数组所占空间的大小;传递给strlen()函数,数组名则退化为一个指针类型。

2、其他区别
其实只要理解了上述的本质区别其他的区别都可以理解了。
1、strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存的大小。
2、当使用一个结构类型或变量时,sizeof返回实际的大小。当使用一静态的空间数组时,sizeof返回全部数组的尺寸。Sizeof操作符不能返回被动态分配的数组或外部的数组的尺寸。
3、计算结构变量的大小就必须讨论数据对其问题。
4、大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度。这就是sizeof(x)可以用来定义数组位数的原因。
5、strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值