C++ sizeof和strlen的区别_C++内存占用与字符串长度计算

sizeof是编译时运算符,计算变量或类型所占字节数,对数组返回总大小,对指针返回指针本身大小(如8字节),包含’’;strlen是运行时函数,计算字符串实际字符数,不包含’’,需以’’结尾,仅适用于C风格字符串。

c++ sizeof和strlen的区别_c++内存占用与字符串长度计算

sizeofstrlen 在 C++ 中都与“大小”有关,但它们的作用完全不同。理解它们的区别对正确处理内存和字符串至关重要。

sizeof 是编译时运算符,计算的是内存占用

sizeof 用于获取数据类型或变量在内存中所占的字节数,结果在编译时确定。它不关心内容,只关心类型或对象的存储空间大小。

对数组使用 sizeof,返回整个数组的字节长度对指针使用 sizeof,返回指针本身的大小(如 8 字节在 64 位系统)对字符串字面量使用 sizeof,包含末尾的 ‘’ 空字符例如:
char str[] = “hello”;
sizeof(str); // 结果是 6(5 个字符 + 1 个 )

strlen 是函数,计算字符串实际长度

strlen 定义在 头文件中,用于计算以 ‘’ 结尾的字符串中字符的个数。它从起始地址开始遍历,直到遇到 ‘’ 停止,不包含 ‘’ 本身。

只能用于以 ‘’ 结尾的字符数组或字符串指针运行时计算,依赖字符串内容对指针指向的字符串有效,但无法检测数组越界例如:
char* ptr = “hello”;
strlen(ptr); // 结果是 5

常见误区对比

当使用指针指向字符串时,sizeof 和 strlen 表现差异明显:

立即学习“C++免费学习笔记(深入)”;

char* s = “hello”; sizeof(s) 返回指针大小(通常是 8),而 strlen(s) 返回 5sizeof 不区分字符串内容,int、double 类型照样能用strlen 只适用于 C 风格字符串,对普通数组或非字符串指针调用可能导致未定义行为

基本上就这些。记住:sizeof 看的是“占了多少空间”,strlen 数的是“有多少字符”。用错地方容易引发内存相关 bug。

以上就是C++ sizeof和strlen的区别_C++内存占用与字符串长度计算的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1486329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 09:43:51
下一篇 2025年12月19日 09:44:06

相关推荐

发表回复

登录后才能评论
关注微信