C++获取数组长度的正确方法
作者:WeekendLife
时间:2026-01-28
浏览:0
答案:C++中获取静态数组长度用sizeof(arr)/sizeof(arr[0]),但传参时数组会退化为指针,此时需额外传长度或使用std::array、std::vector等现代C++容器以安全获取长度。
答案:C++中获取静态数组长度用sizeof(arr)/sizeof(arr[0]),但传参时数组会退化为指针,此时需额外传长度或使用std::array、std::vector等现代C++容器以安全获取长度。

在C++中,获取数组长度(即元素数量)的方法取决于数组的类型和使用场景。对于普通静态数组,最常用且正确的方式是使用sizeof运算符结合数组类型特性来计算。
使用 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 等基本类型数组。
注意函数传参时的退化问题
当数组作为参数传递给函数时,会退化为指针,此时 sizeof 不再有效:
void func(int arr[]) {
// 错误!arr 是指针,不是数组
int len = sizeof(arr) / sizeof(arr[0]); // 结果错误(通常是 1 或 8/4)
}
解决方法:
- 额外传入长度参数:void func(int arr[], int len)
- 使用引用传递数组:void func(int (&arr)[N])
- 改用 std::array 或 std::vector 更安全
现代C++推荐:使用 std::array 或容器
为了更安全和清晰地管理数组长度,建议使用标准库容器:
#includestd::array arr = {1, 2, 3, 4, 5}; size_t length = arr.size(); // 直接获取长度
或使用 vector:
#includestd::vector vec = {1, 2, 3, 4, 5}; size_t length = vec.size();
这些方式不会发生退化,支持范围遍历,且提供边界检查等安全保障。
基本上就这些。记住:对原生数组用 sizeof 求长度仅在作用域内有效,一旦传参就要换思路。优先考虑 std::array 和 std::vector 可避免多数陷阱。不复杂但容易忽略细节。
作者最新文章
打印机暂停打印的解决方法及恢复正常打印步骤
2026-09-22 14:32
华强北手机全线涨价:涨幅400-1500元,存储成本推高售价
2026-09-08 19:22
PDF转XML操作步骤与在线工具使用指南
2026-09-03 10:06
如何把多个PPT转成PDF?批量转换PDF的方法有哪些?
2026-09-02 19:32
CorelDRAW 2021图片虚化与边缘处理教程
2026-09-02 15:44
上一篇:
伊莫沙堡蚁巢怎么样-沙堡蚁巢介绍
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































