由strlen和sizeof引起的思考
2022/6/1 23:23:11
本文主要是介绍由strlen和sizeof引起的思考,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
strlen 函数
std::size_t strlen( const char* str );
- 返回给定字符串的长度,即从
str
指向的首元素到以首个空字符\0
结尾的字符串的字符数,注意:不包含\0
。
sizeof 运算符
- 查询对象或类型的大小。即求数据类型所占的空间大小。
语法
- sizeof(
表达式(expression)或类型(type)
),获得表达式(expression)或类型(type)
的对象表示的字节数。 - sizeof
表达式(expression)
,获得表达式(expression)
的类型的对象表示的字节数。
sizeof a; //正确 sizeof int;//错误
思考
1
- strlen不计入
\0
const char str[] = "How"; std::cout << "without null character: " << std::strlen(str) << '\n' << "with null character: " << sizeof str << '\n'; /* without null character: 3 with null character: 4 */
2
- str与str2不同。str为维度为4的数组,只是初始化时未显式定义长度;
- str2为指针,所有
sizeof str2
实际是计算指针所占的空间大小,在64位系统下为8个字节。
const char str[] = "How"; const char* str2 = "How"; std::cout << "strlen of str: " << std::strlen(str) << '\n' << "strlen of str2: " << std::strlen(str2) << '\n'; std::cout << "sizeof of str: " << sizeof str << '\n' << "sizeof of str2: " << sizeof str2 << '\n'; /* strlen of str: 3 strlen of str2: 3 sizeof of str: 4 sizeof of str2: 8 */
3
- strlen统计字符串实际长度,sizeof查询分配空间大小。
char str3[10]="How";
只能加9个字符,因为还要留一个给\0
.
char str3[10]="How"; std::cout << "strlen of str3: " << std::strlen(str3) << '\n' << "sizeof of str3: " << sizeof(str3) << '\n'; /* strlen of str3: 3 sizeof of str3: 10 */
这篇关于由strlen和sizeof引起的思考的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?