为什么 strlen() 和 sizeof() 差这么多?一道题测出 90% 的人
为什么 strlen() 和 sizeof() 差这么多一道题测出 90% 的人来看一道经典面试题#includestdio.h#includestring.hintmain(){charstr[]hello;printf(strlen(str) %zu\n,strlen(str));// 输出 5printf(sizeof(str) %zu\n,sizeof(str));// 输出 6return0;}字符串明明是hello五个字母为什么一个是 5、一个是 6更坑的是这道变体char*strhello;printf(sizeof(str) %zu\n,sizeof(str));// 输出 864位不是 6同一个字符串sizeof 结果竟然不一样今天 5 分钟把这个面试必考题彻底吃透。一句话结论strlen 数字符sizeof 算字节函数算什么算不算\0什么时候算strlen(str)字符串里有多少个字符❌ 不算运行时sizeof(str)变量占多少字节内存✅ 算编译时hello在内存里实际存的是h e l l o \0 0 1 2 3 4 5strlen从开头数到\0之前 →5 个字符sizeof看的是char str[]这个变量总共占多大 →hello\0共6 个字节为什么会差一个字符串字面量hello在 C 语言里自动带一个结尾的\0空字符用来标记字符串结束。strlen的工作方式就是从头扫描遇到\0就停strlen(hello\0) ↑↑↑↑↑│ 1 2 3 4 5 → 停\0 不算而sizeof不管里面是什么它只看这个变量类型占多少字节——编译时就确定了不会去扫描内容。为什么换成指针就变了charstr[]hello;sizeof(str)// → 6整个数组的大小char*strhello;sizeof(str)// → 8指针变量的大小64位系统数组名str在sizeof眼里是整个数组。但char *str是一个指针变量存的是地址。指针本身的大小在 64 位系统是 8 字节跟指向的内容毫无关系。这是面试最爱考的点——同一个hello数组和指针的 sizeof 结果完全不同。再来看几道题charstr[20]hello;printf(%zu\n,strlen(str));// 5printf(%zu\n,sizeof(str));// 20 ← 数组长度str[20]开了 20 个字节的空间不管里面放了什么sizeof就是 20。char*pNULL;printf(%zu\n,sizeof(*p));// 1 ← char 的大小sizeof(*p)不看 p 指向哪里只看*p的类型——char就是 1 字节。sizeof是编译时运算符不会真的去访问 p 指向的内存所以传 NULL 也不会崩。一张表记住场景strlensizeofchar s[]hello56char s[20]hello520char *phello58(64位)char *pNULL; sizeof(*p)—1计算时机运行时编译时记住一句话strlen 在运行时数到 \0 就停sizeof 在编译时看类型大小。一个不算 \0一个算 \0这就是它们永远差 1 的原因。面试被问到这道题把这张表甩出来就稳了。你还被哪些 C 语言基础题坑过评论区聊聊。#c语言 #算法 #数据结构

相关新闻

P16233 [蓝桥杯 2026 省 B] 双碳战略

P16233 [蓝桥杯 2026 省 B] 双碳战略

初始状态下,这 2026 盏路灯均处于高能耗的“全亮模式”。为了评估系统在极端工况下的响应能力,该局的主控系统需要针对理论上存在的所有开关组合进行全状态遍历推演。只是,受限于底层硬件的物理特性,主控系统必须严格按照“双向交…

2026/7/7 4:53:05阅读更多 →
3步解锁网易云音乐:ncmdump终极解密指南

3步解锁网易云音乐:ncmdump终极解密指南

3步解锁网易云音乐:ncmdump终极解密指南 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 你是否曾被网易云音乐的NCM格式文件困扰?这些加密的音乐文件只能在官方客户端播放&#…

2026/7/7 4:53:05阅读更多 →
用 Alembic 管理数据库迁移,别再手动改表结构了!

用 Alembic 管理数据库迁移,别再手动改表结构了!

第一幕:那些年,我们一起手动执行的 SQL我相信很多朋友在项目初期或者一些小项目里,都干过这样的事儿:本地开发改了 Model,然后把改表的 SQL 语句保存到一个 txt 或者 sql 文件里。上线的时候,战战兢兢地连上…

2026/7/7 4:53:05阅读更多 →
OpenCV cv2.cvtColor 与 NumPy 切片转换:3 种方法性能与内存实测对比

OpenCV cv2.cvtColor 与 NumPy 切片转换:3 种方法性能与内存实测对比

OpenCV BGR/RGB转换性能对决:3种方法实测与工程选型指南当你第一次用OpenCV读取图像后直接调用matplotlib显示时,那种诡异的蓝色调画面至今让我记忆犹新——这大概是每个计算机视觉开发者都会经历的"成人礼"。BGR与RGB的通道顺序差异&#xff…

2026/7/7 5:48:12阅读更多 →
PyTorch 1.13 CIFAR-10 图像分类实战:5层CNN网络实现85%+准确率

PyTorch 1.13 CIFAR-10 图像分类实战:5层CNN网络实现85%+准确率

PyTorch 1.13 CIFAR-10 图像分类实战:5层CNN网络实现85%准确率 1. 项目概述与数据准备 CIFAR-10数据集作为计算机视觉领域的经典基准,包含60,000张32x32像素的彩色图像,涵盖10个常见物体类别。每类包含6,000张图像,其中50,000张用…

2026/7/7 5:48:12阅读更多 →
Redis集群创建时出现“Node xxx.xxx is not empty”问题处理

Redis集群创建时出现“Node xxx.xxx is not empty”问题处理

事件回顾 今日重启服务器的Redis集群,登录Redis节点,通过cluster info发现Docker重启后,集群的Redis服务器IP地址发生变化, 导致Redis集群节点未连接,因此需要重新创建Redis集群,但在重新创建Redis集群时出…

2026/7/7 5:48:12阅读更多 →
AI数据中心液冷焊接设备怎么选?5家品牌横评

AI数据中心液冷焊接设备怎么选?5家品牌横评

NVIDIA Vera Rubin平台官宣100%全液冷——单GPU 2300W、单机柜200kW,风冷极限被彻底击穿。根据NVIDIA路线图,Rubin将于2026年Q3启动批量出货,全球AI数据中心散热方案将不可逆地从"风冷为主"切换至"液冷为王"。而对液冷系…

2026/7/7 5:48:12阅读更多 →
Agent 的经验飞轮:当 AI Agent 学会从执行中沉淀可复用知识

Agent 的经验飞轮:当 AI Agent 学会从执行中沉淀可复用知识

每次打开一个新的 Agent 会话,都是一次从零开始的冒险。你知道目标是什么,Agent 也知道目标是什么。但接下来发生的事情就像一场没有地图的探索:它会尝试几种工具调用,碰壁几次,调整参数,重新尝试&#xff…

2026/7/7 5:48:12阅读更多 →
人工智能训练师-理论知识考点速记(下):模型训练+测试+运维

人工智能训练师-理论知识考点速记(下):模型训练+测试+运维

一、模型训练核心考点速记 1.1 训练全流程结构图 ┌──────────────────────────────────────────────────────────────┐ │ 模型训练全流程 │ │ …

2026/7/7 5:43:12阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/7 4:43:43阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/7 2:56:31阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/7 1:03:28阅读更多 →
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8…

2026/7/7 0:02:41阅读更多 →
国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot) 🌐 演示地址:http://ruoyioffice.com | 📦 源码1GitHub:ruoyi-office | 📦 源码2GitCode:ruoyi-o…

2026/7/7 0:02:41阅读更多 →
CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS SSH连接故障排查:从基础检查到深度修复的完整指南引言当你尝试通过Xshell或其他SSH客户端连接CentOS服务器时,突然遭遇"Connection refused"或"Connection timed out"的错误提示,这种经历对任何运维人员或开发者来…

2026/7/7 0:02:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/7 5:11:21阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/7 5:11:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/7 5:11:21阅读更多 →