新闻中心

C++如何获取数组的长度_C++数组长度计算的正确写法

2025-11-11
浏览次数:
返回列表
在C++中,获取数组长度需注意作用域与退化问题:1. 使用sizeof计算原始数组长度时,length = sizeof(arr) / sizeof(arr[0])仅在定义作用域内有效;2. 数组作为函数参数会退化为指针,此时sizeof无法正确获取长度,应额外传入长度参数;3. 推荐使用std::array或std::vector,调用其.size()成员函数安全获取长度。

c++如何获取数组的长度_c++数组长度计算的正确写法

在C++中,获取数组长度的关键在于理解数组作为参数传递时的退化问题。直接使用sizeof只能在数组是原始定义作用域内才有效。

一、使用 sizeof 计算原始数组长度

当数组在当前作用域定义时,可以通过sizeof(数组名) / sizeof(数组元素)来计算长度。

示例:

int arr[] = {1, 2, 3, 4, 5};
int length = sizeof(arr) / sizeof(arr[0]); // 结果为5

注意:这种方法只在数组未退化为指针时有效,也就是不能用于函数参数中的“伪数组”。

二、避免在函数参数中使用传统数组传参

一旦将数组作为参数传入函数,它会退化为指针,此时sizeof将返回指针大小,而非数组总大小。

错误示例:

void func(int arr[]) {
  int len = sizeof(arr) / sizeof(arr[0]); // 错误!结果通常是1(指针大小除以int大小)
}

解决方法:不要单独传数组,应同时传入长度,或改用现代C++容器。

千鹿Pr助手 千鹿Pr助手

智能Pr插件,融入众多AI功能和海量素材

千鹿Pr助手 128 查看详情 千鹿Pr助手

三、推荐使用 std::array 或 std::vector

现代C++提供更安全的方式管理数组长度。

  • std::array:固定大小,可在编译期知道长度,调用.size()获取
  • std::vector:动态大小,同样支持.size()
示例:

std::array arr = {1, 2, 3, 4, 5};
std::cout
std::vector vec = {1, 2, 3};
std::cout

四、模板技巧获取数组长度(高级用法)

通过函数模板推导保留数组尺寸信息。

template
int getLength(int (&arr)[N]) {
  return N;
}

此方法适用于必须使用原生数组且在编译期确定长度的场景。

基本上就这些。能用std::arraystd::vector就尽量用,.size()清晰又安全。原生数组只在特定场合使用,记得长度要在作用域内及时计算,别等传参后再算。不复杂但容易忽略。

以上就是C++如何获取数组的长度_C++数组长度计算的正确写法的详细内容,更多请关注其它相关文章!


# 要在  # 伊利网站推广管理  # 雅虎网站上怎么推广产品  # seo 教程seo基础课程  # 文创网站排版优化方案  # 天猫店百度推广营销  # 没有营销怎么推广商品呢  # 丹阳网络推广网站  # 好看网站建设步骤图纸  # 浠水seo推广公司电话  # 青龙微型网站建设  # 相关文章  # c++  # 适用于  # 文本文件  # 如何用  # 多线程  # 只在  # 推荐使用  # 如何实现  # c++数组  # 作用域  # 解决方法 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台  微信聊天记录怎么加密_微信聊天记录加密方法  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  J*a递归快速排序中静态变量的状态管理与陷阱  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明  印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】  在J*a中如何开发简易博客标签推荐系统_博客标签推荐项目实战解析  4399免费游戏网址入口 4399小游戏免费入口点开即玩  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率  微信群消息显示延迟如何解决 微信群消息刷新优化方法  不同用户不同价格! 索尼开启账户个性化定价测试  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法  C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  响应式容器内容自动缩放与宽高比维持教程  J*aScript中管理异步API调用:确保操作顺序与数据一致性  2026年CSGO开箱网站推荐 CSGO开箱平台精选  抓大鹅无需下载版 抓大鹅秒玩版入口  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  Go RPC HTTP服务正确实现与常见陷阱解析  小米Civi 4录制视频过暗_小米Civi 4亮度优化  格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施  sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统  Composer如何在生产环境安全地执行composer update  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  J*aScript设计模式实践_j*ascript代码优化  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰  解决Python单元测试中Mock异常方法调用计数为零的问题  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  韩剧圈正版入口页面_韩剧圈官网登录链接  消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  限制HTML日期输入框的日期选择范围  iCloud登录入口网页版 苹果iCloud官网登录  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  聚水潭ERP登录页面入口 聚水潭ERP官网登录界面  MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景  如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单  Win11网速慢怎么解决 Win11网络设置优化解除限速  如何将HTML表格多行数据保存到Google Sheet  2025-2030年全球乘用车销量预测:新能源成增长主力  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  Go语言中的*string:深入理解字符串指针 

搜索