当前位置: 首页 > news >正文

C语言中的sizeof和strlen

在C语言中,sizeof一般用来计算数组的长度,或者数据类型的长度。

strlen:运行期从起始地址开始逐字节扫描,遇到第一个 '\0' 就停止,返回的是“首个终止符之前的字节数”,不包含 '\0'。
sizeof:编译期(对类型/对象)或运行期常量表达式求对象“所占总大小(字节数)”,不做扫描;对字符串字面量或真实数组得到的是“数组全部容量”,包含结尾自动添加的那个 '\0';对指针得到的是指针本身大小(4 或 8 字节),与指向内容无关。
所以,只有 strlen 具有“遇到 '\0' 结束”的扫描语义;sizeof 没有这一过程。两者的结果常常不同。

strlen("ABC") == 3 strlen("A\0B") == 1 // 中间 '\0' 截断 strlen("") == 0 sizeof("ABC") == 4 // 'A','B','C','\0' sizeof("A\0B") == 4 // 字面量里包含 'A','\0','B' + 末尾自动再加 '\0'

对于已定义的数组

char a[] = "ABC"; sizeof(a) == 4 strlen(a) == 3

对指针变量:

char *p = "ABC"; sizeof(p) // 指针大小:4(32位)/8(64位) strlen(p) == 3 // 运行期扫描 p 指向的那段

20260521补充,

char data[50]; 定义了一个数组,很多时候数组名data会退化为指针,也就是在数值上等于&data[0] 但是在sizeof中不会退化,sizeof(data) = 50, 如果将data作为形参传入函数,在函数中,sizeof(data) = 4 (32bit主机)
http://www.jsqmd.com/news/862087/

相关文章:

  • 2026年评价高的榨菜芯/去皮榨菜优质厂家推荐榜 - 品牌宣传支持者
  • 【docker镜像加速器配置】
  • Spring AI Alibaba 1.x 系列【55】Interrupts 中断机制:静态中断源码分析
  • 升学赠礼推荐开封汴绣绣品
  • 2026年局域网考试系统选型对比:优考试助力政企信创与内网安全
  • 【RK3588-AI-004】RK3588 AI专属依赖环境预装(Python、OpenCV、基础编译工具)
  • 3分钟掌握gmpublisher:Garry‘s Mod工坊发布的终极解决方案
  • 数分-MySQL基础01
  • Allen-Bradley 280D-F12Z-10B-CR启动控制模块
  • Go语言并发编程:sync包深度解析与实践
  • 升官发财送开封汴绣礼品推荐
  • 【Linux驱动开发】第10天:设备树零基础入门——DTS/DTB/DTC全解+编译流程
  • AI论文软件的实战手册:什么程度算学术不端?
  • Aeneas终极指南:3步搞定音频文本自动对齐,准确率超95%
  • 【Linux驱动开发】第11天:设备树(Device Tree)超详细全解:从诞生背景到工作原理
  • 如何构建更接近真实交通的自动驾驶仿真世界:数字孪生、风险重构与物理感知全栈实践
  • 编译和链接+预处理
  • 从塑料感→博物馆级质感,Midjourney材质进阶全路径:Chaos=0.3+Texture Boost+--style raw三重锁频技术,限时公开
  • ElevenLabs高棉文语音私有化部署终极方案(含Docker+Khmer IPA音素映射表),仅限前200位技术负责人获取
  • 为什么这款文档转换工具能同时实现高效与精准?揭秘Marker的核心优势
  • 2026.5.12【芯片设计面试经验分享】上海车载芯片设计公司
  • 079.自监督学习预训练:在无标签数据上预训练YOLO骨干网络
  • ElevenLabs挪威文语音API调用全链路拆解,从HTTP头配置到SSML韵律标记实战,零基础30分钟上线商用级语音
  • rk3588/rk3576使用rkllm推理大模型,提供OpenAI服务
  • VCG Mesh平滑整形
  • AI赋能光伏电站智能运维:边缘计算网关如何成为运维中枢?
  • AI 的持续学习:从会话中提取可复用知识
  • 一文搞懂 Linux 驱动并发与竞争(学习笔记)
  • 2026年工业胶粘材料国产化趋势白皮书:PI 金手指胶带的高温性能与应用突破
  • 深入拆解 MySQL InnoDB 隔离级别:从 MVCC 到临键锁