sizeof()与strlen()的区别

xiaoxiao2021-02-28  88

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

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

转载请注明原文地址: https://www.6miu.com/read-96740.html

最新回复(0)