答案:C++中获取静态数组长度用sizeof(arr)/sizeof(arr[0]),但传参时数组会退化为指针,此时需额外传长度或使用std::array、std::vector等现代C++容器以安全获取长度。

在C++中,获取数组长度(即元素数量)的方法取决于数组的类型和使用场景。对于普通静态数组,最常用且正确的方式是使用sizeof运算符结合数组类型特性来计算。
当数组以静态方式定义时(如在栈上分配),可以通过以下方式获取元素个数:
int arr[] = {1, 2, 3, 4, 5};
int length = sizeof(arr) / sizeof(arr[0]);
说明:
sizeof(arr) 返回整个数组占用的字节数(例如 5 * 4 = 20 字节)sizeof(arr[0]) 返回单个元素的大小(int 通常为 4 字节)这种方法适用于所有固定大小的静态数组,包括 int、double、char 等基本类型数组。
立即学习“C++免费学习笔记(深入)”;
当数组作为参数传递给函数时,会退化为指针,此时 sizeof 不再有效:
void func(int arr[]) {
// 错误!arr 是指针,不是数组
int len = sizeof(arr) / sizeof(arr[0]); // 结果错误(通常是 1 或 8/4)
}
解决方法:
为了更安全和清晰地管理数组长度,建议使用标准库容器:
#include <array>
std::array<int, 5> arr = {1, 2, 3, 4, 5};
size_t length = arr.size(); // 直接获取长度
或使用 vector:
#include <vector>
std::vector<int> vec = {1, 2, 3, 4, 5};
size_t length = vec.size();
这些方式不会发生退化,支持范围遍历,且提供边界检查等安全保障。
基本上就这些。记住:对原生数组用 sizeof 求长度仅在作用域内有效,一旦传参就要换思路。优先考虑 std::array 和 std::vector 可避免多数陷阱。不复杂但容易忽略细节。
以上就是c++++如何获取数组的长度_C++计算数组元素数量的正确写法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号