c 中sizeof和strlen之间的差异

可能重复:
strlen和sizeof对于基于Pointer和Array的init的不同答案

任何人都可以帮助我理解c语言编程中sizeof方法和strlen方法之间的区别吗?

strlen()用于获取chars / string数组的长度。

sizeof()用于获取任何类型数据的实际大小(以字节为单位)。

此外, sizeof()是一个编译时表达式,它给出了类型或变量类型的大小。 它并不关心变量的值。

strlen()是一个函数,它接收一个指向一个字符的指针,并从该字符开始遍历内存,寻找一个NULL字符。 它会在找到NULL字符之前计算字符数。 换句话说,它为您提供了C样式的以NULL结尾的字符串的长度。

两者几乎不同。 在C ++中,你不需要太多,strlen()用于C风格的字符串,应该用C ++样式的std::strings代替,而C语言中sizeof()的主要应用程序作为函数的参数比如malloc()memcpy()memset() ,所有这些都不应该在C ++中使用(使用new, std::copy()std::fill()或者constructors )。

sizeof不是一种方法 。 它是一个编译时构造,用于确定特定类型或变量占用的内存量。 另一方面, strlen是一个函数 ,它计算从内存中指定位置开始的连续非零char值的数量(这恰好与确定零终止C字符串的长度相同)。