C++中sizeof与strlen的区别_C++数组大小计算的常见误区


sizeof返回对象内存大小,strlen计算字符串有效长度。前者编译时确定,适用于所有类型;后者运行时计算,仅用于C风格字符串,遇'\0'终止。数组传参退化为指针,sizeof无法获取原数组大小,需在外部预先计算。

c++中sizeof与strlen的区别_c++数组大小计算的常见误区

在C++编程中,sizeof 和 strlen 都可以用来获取“长度”相关的值,但它们的用途和行为截然不同。很多初学者在处理字符串和数组时容易混淆两者,导致计算数组大小或字符串长度时出现错误。

1. sizeof:编译时运算符,返回占用内存字节数

sizeof 是一个编译时运算符,用于获取变量、类型或对象在内存中所占的字节数。它不关心内容,只关心数据类型的大小。

对于数组,sizeof 返回的是整个数组在内存中的总字节数:

  • 字符数组:char arr[10]; sizeof(arr) 返回 10(每个 char 占1字节)
  • 整型数组:int arr[5]; sizeof(arr) 返回 20(假设 int 为4字节)
  • 字符串字面量:sizeof("hello") 返回 6,包含末尾的 '\0'

关键点是:sizeof 在编译时确定结果,不会执行运行时计算,因此无法被函数参数改变。

2. strlen:运行时函数,仅适用于C风格字符串

strlen 是 头文件中的函数,用于计算C风格字符串的有效字符数,即从起始位置到第一个 '\0' 之间的字符个数。

  • strlen("hello") 返回 5
  • strlen("hello\0world") 也返回 5,遇到第一个 '\0' 就停止

strlen 只能用于以 '

strlen 只能用于以 '\0' 结尾的字符数组或指针,对非字符串数据使用会导致未定义行为。

' 结尾的字符数组或指针,对非字符串数据使用会导致未定义行为。

ListenLeap ListenLeap

AI辅助通过播客学英语

ListenLeap 217 查看详情 ListenLeap

3. 数组退化导致的常见误区

最常见的错误出现在将数组传入函数时:

void func(char arr[]) {
  // 此处 arr 已退化为指针
  cout }

char data[100];
func(data); // 实际传入的是地址

此时 sizeof(arr) 得到的是指针的大小,而不是原始数组的大小。正确做法是在函数外提前计算数组元素个数:

int size = sizeof(data) / sizeof(data[0]); // 100

4. 字符串与字符数组的陷阱

考虑以下代码:

char str[] = "Hello";
cout cout

若误用 strlen 计算非字符串数组,例如:

int nums[] = {1, 2, 3};
// strlen(nums); // 错误!nums 不是字符指针,行为未定义

基本上就这些。理解 sizeof 是编译时的内存大小测量工具,而 strlen 是运行时的字符串长度计数器,能有效避免数组大小计算中的常见错误。尤其注意数组传参时的退化问题,不要依赖函数内部的 sizeof 获取原始数组长度。

以上就是C++中sizeof与strlen的区别_C++数组大小计算的常见误区的详细内容,更多请关注其它相关文章!


# 工具  # 字节  # 适用于  # 时计  # 的是  # c++数组  # c++编程  # 字符串数组  # 区别  # c++  # 渭南市私域营销推广  # 北京矩阵seo合作方式  # 直通车seo指什么  # 丽江关键词网站优化公司  # 软文发布平台乐云seo  # 网站推广优化合作  # 襄阳网站关键词优化价格  # 江油物流网站建设  # 福清小企业网站建设  # 怎么做好电商网站优化  # 是一个  # 运算符  # 怎么处理  # 化与  # 如何实现  # 创建一个  # 整型 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: b站如何管理订阅_b站订阅标签分类管理  抖音号怎么解除企业认证改成个人?改成个人有影响吗?  Final Cut Pro视频加EQ教程  三星M34录音变声问题_Samsung M34麦克风调整  mysql如何管理数据库账户_mysql数据库账户管理技巧  J*a中导出MySQL表为SQL脚本的两种方法  三星A55应用闪退排查步骤_Samsung A55稳定性优化技巧  申通快件单号查询平台 申通包裹物流动态跟踪  《杖剑传说》食谱大全  原子笔记app误删找回教程  如何查找哪个composer包引入了特定的依赖?  金牛福袋获取攻略  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  构建可配置的J*aScript加权点击计数器与共享总计功能  Python项目中的条件导入:解决跨模块依赖问题  PySimpleGUI中实现键盘按键与按钮事件绑定教程  PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】  《咸鱼之王》新版孙坚技能解析  Python测试中模块导入路径解析的最佳实践  《360浏览器》设置摄像头权限方法  Mac怎么关闭按键声音_Mac键盘打字音效设置  重返未来:1999卡戎全方位攻略  FullCalendar自定义按钮样式定制指南  小米civi如何设置锁屏时间  汽水音乐在线听歌网页版 汽水音乐在线听歌网页版入口  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  《海底捞》点外卖方法  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  阿里云共享相册入口在哪  教资成绩怎么查询  以下哪一个是适应长期护理制度发展而设立的新职业  酷狗音乐多音轨设置教程  百度网盘如何设置上传限额  《虎扑》关闭社区内容推荐方法  c++如何链接Boost库_c++准标准库的集成与使用  c++中的const关键字用法大全_c++ const正确使用指南  《撕歌》会员开通方法  Yandex浏览器官方入口_Yandex搜索引擎中文版  word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法  mysql镜像配置如何恢复数据_mysql镜像配置数据恢复详细流程  顺丰官方查单号入口 顺丰快递单号查询官网入口  苹果官网国补入口在哪  C++二维数组动态分配方法_C++指针与数组内存布局  告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度  Windows 11怎么删除恢复分区_Windows 11使用Diskpart命令强行删除分区  J*aScript实现网页表单实时输入字段比较与验证教程  PHP多语言网站的实现:会话管理与翻译函数优化教程  不吃碳水化合物是健康减肥的好办法吗  附近酒吧怎么找?  51漫画网实时入口 51漫画网页版官方免费漫画入口 

 2025-12-09

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.