C++ 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 <cstring> #include <iostream> 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 <cstring> #include <iostream> 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 5 */
- strlen 本身是库函数,因此在程序运行过程中,计算长度;而 sizeof 在编译时,计算长度;
- sizeof 的参数可以是类型,也可以是变量;strlen 的参数必须是 char* 类型的变量。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: C++ 重载、重写、隐藏的区别
下一篇: 谈谈自己对于 AOP 的了解
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论