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字符串的长度相同)。