可能重复:
Different answers from strlen and sizeof for Pointer & Array based init of String
有人能帮助我理解c编程中 sizeof 方法和 strlen 方法之间的区别吗?
答案 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字符串的长度。)