C++中计算数组长度常用sizeof运算符和std::size函数。1. 使用sizeof时,通过sizeof(arr)/sizeof(arr[0])计算元素个数,仅在数组未退化为指针时有效,如作为函数参数则失效。2. C++17引入的std::size语法简洁、安全,支持原生数组和STL容器,编译时求值,但需较新标准支持。3. 动态分配数组和传参后的数组不可用sizeof正确获取长度,应优先使用std::size或手动记录长度。

在C++中,计算数组长度有多种方法,常用的包括sizeof运算符和std::size函数。它们各有适用场景,理解其原理有助于写出更安全、清晰的代码。
使用 sizeof 计算数组长度
sizeof是C++内置的编译时运算符,用于获取数据类型或变量所占的字节数。对数组使用sizeof时,可以结合元素大小来计算元素个数。
基本公式为:
数组长度 = sizeof(数组) / sizeof(数组第一个元素)
立即学习“C++免费学习笔记(深入)”;
示例:
int arr[] = {1, 2, 3, 4, 5};int length = sizeof(arr) / sizeof(arr[0]);// sizeof(arr) 返回 20(假设int为4字节)// sizeof(arr[0]) 返回 4// length = 20 / 4 = 5
注意:这种方法只在数组未退化为指针时有效。一旦数组作为参数传入函数,它会退化为指针,此时sizeof(arr)返回的是指针大小(如8字节),而非整个数组大小,结果将错误。
使用 std::size 获取数组长度
C++17起引入了std::size函数,定义在头文件中,用于安全地获取数组或标准容器的元素数量。
示例:
#include int arr[] = {10, 20, 30};auto length = std::size(arr); // 返回 3
优点:
语法简洁,语义明确 支持原生数组和STL容器(如vector、array) 在编译时求值,无运行时开销 避免手动计算出错
限制:需要C++17及以上标准支持。若项目使用较老版本编译器,可能无法使用。
常见误区与注意事项
以下情况容易导致数组长度计算错误:
数组传参后使用sizeof:函数形参中的数组实际是指针,sizeof不再有效 动态分配的数组:new[]或malloc创建的数组无法用sizeof获取长度,需自行记录 字符数组与字符串:含空字符的字符串长度比sizeof计算值小1,注意区分字符数与有效内容长度
推荐做法:优先使用std::size;若不支持C++17,可在作用域内用sizeof(arr)/sizeof(arr[0]),并避免在函数参数中使用原生数组。
基本上就这些。掌握这两种方法的区别和适用范围,能帮助你在不同场景下正确获取数组长度。
以上就是C++如何计算数组长度_C++ sizeof运算符与std::size用法详解的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1487002.html
微信扫一扫
支付宝扫一扫