c中sizeof和strlen之间的差异

时间:2011-12-21 13:11:39

标签: c

  

可能重复:
  Different answers from strlen and sizeof for Pointer & Array based init of String

有人能帮助我理解c编程中 sizeof 方法和 strlen 方法之间的区别吗?

2 个答案:

答案 0 :(得分:23)

strlen()用于获取字符数组/字符串的长度。

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

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

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

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

答案 1 :(得分:10)

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