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

相关新闻

INA226功率计Arduino库使用指南:解决测量不准问题

INA226功率计Arduino库使用指南:解决测量不准问题

你是否曾经满怀期待地焊接好INA226功率计模块,结果测量数据却偏差得离谱?电压读数飘忽不定,电流计算完全不对,甚至怀疑自己买到了假芯片?别急着责怪硬件,问题很可能出在你对INA226 Arduino库的理解和使用上…

2026/8/2 1:37:15阅读更多 →
UE5顶点绘制无效?从原理到排查的完整解决方案

UE5顶点绘制无效?从原理到排查的完整解决方案

1. 项目概述:从“无效”到“有效”的顶点绘制之路刚接触UE5材质系统的朋友,尤其是从其他3D软件转过来的,大概率都踩过“顶点绘制没效果”这个坑。你满怀期待地在模型上刷了几笔,视图里却一片死寂,颜色纹丝不动&#xf…

2026/8/2 1:37:15阅读更多 →
PyTorch、CUDA与显卡驱动版本匹配:从原理到实战的完整指南

PyTorch、CUDA与显卡驱动版本匹配:从原理到实战的完整指南

1. 从一次典型的“版本地狱”说起 如果你在部署一个基于PyTorch的深度学习项目,特别是那些需要GPU加速的模型时,大概率会遇到下面这个让人血压升高的错误: RuntimeError: CUDA error: no kernel image is available for execution on the …

2026/8/2 1:37:15阅读更多 →
Seq2Seq + Attention 与纯 Transformer 在结构上有何本质区别?

Seq2Seq + Attention 与纯 Transformer 在结构上有何本质区别?

Seq2Seq Attention 与纯 Transformer 的本质区别 一、架构全景对比 Seq2Seq Attention: ┌─────────────────────────────────────────────────────┐ │ 编码器: RNN/LSTM (双向) │ │…

2026/8/2 2:45:40阅读更多 →
2026 私域引流新姿势:一张“隐形码“,告别违规封号

2026 私域引流新姿势:一张“隐形码“,告别违规封号

摘要:本文介绍了一种2026年私域引流的新技术——“隐形码”。通过视觉混淆处理(如彩色渐变、噪点叠加、艺术变形等),使二维码在人眼看来是普通图案,但机器仍可识别扫码,从而有效规避抖音、小红书、快手等平…

2026/8/2 2:45:40阅读更多 →
[具身智能-707]:ROS2 默认内置话题(不需要自己启动任何业务节点)

[具身智能-707]:ROS2 默认内置话题(不需要自己启动任何业务节点)

ROS2 默认内置话题(不需要自己启动任何业务节点)只启动 ROS2 环境,哪怕没有运行小车、手柄程序,底层 DDS/ROS 框架自带话题:plaintext/parameter_events /rosout也就是刚才看到的两条。1. /rosout消息类型:…

2026/8/2 2:45:40阅读更多 →
大数据技术核心原理与实战:HDFS、MapReduce、Spark、HBase深度解析

大数据技术核心原理与实战:HDFS、MapReduce、Spark、HBase深度解析

1. 项目概述:一份来自“过来人”的复习地图又到期末了,是不是感觉《大数据技术原理与应用》这本书厚得能防身,林子雨老师的课件多到让人眼花缭乱?面对Hadoop、MapReduce、Spark、HBase这些听起来就头大的名词,你是不是…

2026/8/2 2:45:40阅读更多 →
Pyecharts中文手册:从入门到实战的数据可视化指南

Pyecharts中文手册:从入门到实战的数据可视化指南

1. 项目概述:为什么你需要一份“活”的Pyecharts中文手册? 如果你正在用Python做数据分析,想把枯燥的数字变成直观的图表,那你大概率听说过或者用过Pyecharts。它基于百度开源的ECharts,让用Python画图变得像搭积木一…

2026/8/2 2:45:40阅读更多 →
2026 年 8 月北京别墅装修公司重磅推荐|甄选专业靠谱高端家装服务商

2026 年 8 月北京别墅装修公司重磅推荐|甄选专业靠谱高端家装服务商

在北京选购别墅之后,装修是至关重要的环节,独栋别墅、联排、叠拼产品空间构造复杂,包含地下室、挑空客厅、户外庭院等特殊空间,装修难度远远高于普通商品房。不少初次装修别墅的业主并不清楚其中的细节难点,简单按照平…

2026/8/2 2:43:39阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/2 1:29:34阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/2 2:32:55阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/2 2:09:20阅读更多 →