sizeof和strlen的区别
sizeof 和 strlen 的区别
-
strlen 是头文件
中的函数,sizeof 是 C++ 中的运算符。 -
strlen 测量的是字符串的实际长度(其源代码如下),以 \0 结束。而 sizeof 测量的是字符数组的分配大小。
strlen 源代码:
size_t strlen(const char *str) {
size_t length = 0;
while (*str++)
++length;
return length;
}
例如:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char arr[10] = "hello";
cout << strlen(arr) << endl; // 5
cout << sizeof(arr) << endl; // 10
return 0;
}
-
若字符数组 arr 作为函数的形参,sizeof(arr) 中 arr 被当作字符指针来处理,strlen(arr) 中 arr 依然是字符数组,从下述程序的运行结果中就可以看出。
#include <iostream> #include <cstring> using namespace std; void size_of(char arr[]) { cout << sizeof(arr) << endl; // warning: 'sizeof' on array function parameter 'arr' will return size of 'char*' . cout << strlen(arr) << endl; } int main() { char arr[20] = "hello"; size_of(arr); return 0; } /* 输出结果: 8 64位中指针大小为8 5 */
strlen
本身是库函数,因此在程序运行过程中,计算长度;而sizeof
在编译时,计算长度;sizeof
的参数可以是类型,也可以是变量;strlen
的参数必须是char*
类型的变量。
参考书籍:力扣C++面试
本文来自博客园,作者:{BailanZ},转载请注明原文链接:https://www.cnblogs.com/BailanZ/p/16070556.html