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是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字节),而非整个数组大小,结果将错误。
C++17起引入了std::size函数,定义在<iterator>头文件中,用于安全地获取数组或标准容器的元素数量。
#include <iterator>
int arr[] = {10, 20, 30};
auto length = std::size(arr); // 返回 3
优点:
限制:需要C++17及以上标准支持。若项目使用较老版本编译器,可能无法使用。
以下情况容易导致数组长度计算错误:
sizeof不再有效new[]或malloc创建的数组无法用sizeof获取长度,需自行记录sizeof计算值小1,注意区分字符数与有效内容长度推荐做法:优先使用std::size;若不支持C++17,可在作用域内用sizeof(arr)/sizeof(arr[0]),并避免在函数参数中使用原生数组。
基本上就这些。掌握这两种方法的区别和适用范围,能帮助你在不同场景下正确获取数组长度。
以上就是C++如何计算数组长度_C++ sizeof运算符与std::size用法详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号