C语言字符串与指针易错点复盘
前言在C语言学习过程中 sizeof 、 strlen 、数组名、指针的区分是高频易错点也是看懂内存布局的关键基础。本篇整理学习笔记厘清字符串数组、字符指针、标准库字符串函数的坑点。一、 sizeof 和 strlen 核心区别1. sizeof 运算符计算占用内存字节数- 数组名传给 sizeof sizeof(arr) 得到整个数组总字节大小- arr0 、 arr 单独参与表达式退化为首元素地址- arr 是整个数组的地址地址数值和数组首地址一样但类型是数组指针重点只要不是直接写 sizeof(数组名) 数组名都会退化为首元素指针。2. strlen() 库函数统计有效字符长度遇到 \0 停止计数不包含末尾结束符 \0 **致命坑strlen(*arr) 直接传字符值不是字符串起始地址程序直接崩溃。strlen只接收字符串首地址作为参数。示例对比cchar arr[] abcdef;// sizeofsizeof(arr); //76个字符 \0sizeof(arr0); //指针大小64位系统8字节sizeof(*arr); //*arr等价arr[0]单个char占1字节sizeof(arr); //数组地址指针大小8字节// strlenstrlen(arr); //6strlen(arr); //可以运行地址数值一致长度6strlen(arr1); //跳到数组后面的内存随机值野内存strlen(arr[0]1);//从下标1开始结果5char指针形式字符串cchar *p abcdef;strlen(p); //6strlen(p1); //5// strlen(*p); //崩溃*p是字符a不是地址sizeof(p); //指针大小8字节不是字符串长度sizeof(*p); //1小结数组内存连续存着 a b c d e f \0 指针pp变量保存字符串常量的首地址字符串常量放在只读内存。二、二维数组 sizeof 快速计算cint arr[3][4] {0};sizeof(arr); //3*4*4 48sizeof(arr[0][0]); //单个int占4sizeof(arr[0]1); //arr[0]退化成指针8字节sizeof(*(arr1)); //arr1是第二行数组地址解引用一行数组4*416sizeof(arr[0]1); //地址8字节sizeof(*(*(arr1)));//取到int值4字节三、字符串处理函数string.h1. strcmp(str1,str2)按ASCII逐字符比较- str1 str2 返回 -1- 相等返回 0- str1 str2 返回 12. strncpy(dst, src, n)拷贝n个字符不会自动补 \0 容易出现字符串没有结束符后续访问乱码。工程规范尽量少用不安全的 strcpy 优先带长度限制版本。3. strncat追加字符串最多追加n个字符追加结束后自动补上 \0 终止符。4. strncmp 指定比较前n个字符。5. strstr(str1,str2) 在str1查找str2第一次出现的位置返回对应指针。6. strtok 字符串分割函数会直接修改原字符串内部保存静态指针多次分割传 NULL 不能用于字符串常量。7. strerror(errno) 根据错误码打印错误描述。四、踩坑总结1. 分清**数组本身、数组首元素地址、数组指针 arr **三者类型差异2. strlen 参数必须是字符串起始地址不能传入单个字符3. 字符串常量 char *pxxx 存放在只读段不要尝试修改4. strcpy 无长度检查容易缓冲区溢出工程代码优先使用带长度限制函数5. strtok 有静态变量记忆位置多线程不安全不要在循环嵌套分割。https://gitcode.com/gcw_RyL6LF93/study‑c‑languague.git

相关新闻

PXRD疑难解析:MicroED技术如何精准鉴别药物混合晶型

PXRD疑难解析:MicroED技术如何精准鉴别药物混合晶型

1. 项目概述:当PXRD遇到“疑难杂症”在仿制药研发与质量控制领域,粉末X射线衍射(PXRD)是鉴定药物晶型的“金标准”工具,几乎每个实验室的研发人员都对其又爱又恨。爱的是它的普适性和标准化,恨的是它有时会…

2026/10/18 3:43:16 阅读更多 →
好股票,藏在你心底的那份踏实

好股票,藏在你心底的那份踏实

人机协作,仅供参考买股票,买的不只是数字跳动,更是一份托付。每当股价起伏,我们真正渴望的,无非是夜里能安睡、清晨敢加仓的底气。那份底气,就藏在三个朴素的标准里。第一,它常年做有利股东的事…

2026/10/18 3:45:13 阅读更多 →
Python 科学计算与高性能编程:基于 NumPy 矢量化与 Numba JIT 的算子加速实战

Python 科学计算与高性能编程:基于 NumPy 矢量化与 Numba JIT 的算子加速实战

Python 科学计算与高性能编程:基于 NumPy 矢量化与 Numba JIT 的算子加速实战 在 AI 实验室进行算法原型开发、数据清洗或编写自定义损失函数(Custom Loss)时,我们经常听到同行吐槽:“Python 这门语言太慢了&#xff…

2026/10/17 18:04:16 阅读更多 →

最新新闻

AI辅助公文写作:从范文文风规律到定制仿写智能体

AI辅助公文写作:从范文文风规律到定制仿写智能体

办公室的老同事问我最近写材料怎么又快又稳,我说靠一套自己搭起来的AI辅助流程。他半信半疑,等我打开智能体对话界面,现场让他报了个标题,两分钟生成一版初稿,他盯着屏幕看了半天,只说了一句“这路子对”。…

2026/10/18 12:38:31 阅读更多 →
Heidelberg-Prinect工程化文档数字化:从图像预处理到版面还原的批量OCR流水线

Heidelberg-Prinect工程化文档数字化:从图像预处理到版面还原的批量OCR流水线

简介:这份资源面向印刷排版与印前处理从业者,提供海德堡Prinect系列插件的安装包,用于在Adobe InDesign、Illustrator等软件中实现尺寸控制与分色处理。Prinect插件可对PDF文件进行严格的页面尺寸、裁切线位置检查,并将CMYK等色彩…

2026/10/18 12:38:31 阅读更多 →
Node.js WebSocket长连接实战:心跳保活与断线重连源码解析

Node.js WebSocket长连接实战:心跳保活与断线重连源码解析

简介:一份面向WebSocket初学者的客户端与服务端实例源码包,由Java实现服务端,客户端基于HTML5 WebSocket。WebSocket可建立客户端与服务端之间的全双工长连接,这份实例展示了这一机制。资源支持客户端测试任意语言服务端&#xff…

2026/10/18 12:38:31 阅读更多 →
Git 命令实战手册:从版本控制基础到分支管理、远程协作与错误恢复

Git 命令实战手册:从版本控制基础到分支管理、远程协作与错误恢复

1. 关于 Git 命令这件事,先聊几句实在话作为一个每天跟代码打交道的开发者,Git 大概是我用得最多的工具之一。很多人觉得 Git 命令又多又杂,记不住、用不好,甚至有人跟我说"能跑就行,能提交就行"。但实际上&…

2026/10/18 12:38:31 阅读更多 →
多通道残差连接:深层网络训练更稳定的工程化方案

多通道残差连接:深层网络训练更稳定的工程化方案

元旦刚过,技术社区里最热的一条讨论,就是新的多通道残差连接方案。大家关心的倒不是某个Block的命名有多酷,而是这套结构真的把“更稳定”这三个字落到了实处:深层网络的梯度不容易断,训练曲线的波动变小,同等参数量下可以更安全地堆更多层。说白了,咱们平时堆ResNet、堆Transf…

2026/10/18 12:38:31 阅读更多 →
高德交通态势爬取实战:Python采集道路级速度与拥堵等级数据

高德交通态势爬取实战:Python采集道路级速度与拥堵等级数据

简介:面向交通数据分析、城市规划与GIS应用开发者,这份高德交通态势爬取资源使用脚本调用高德地图接口,获取实时路况、拥堵指数等态势信息,并兼顾请求限速与反爬策略,可直接用于后续交通流分析及ArcGIS空间数据预处理。…

2026/10/18 12:37:31 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →