由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-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门