C语言知识总结
把指针、内存管理与预处理这些C语言最硬的地方彻底讲透
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
C语言知识总结
把指针、内存管理与预处理这些C语言最硬的地方彻底讲透
程序调试概念
写完程序跑起来崩了,或者结果不对,但代码看起来没问题——这时候就需要「程序调试」。它不是碰运气改代码,而是一套系统地找问题、定位问题、解决问题的工程方法。
现场对应运行现象,线索对应变量轨迹,推理对应定位分析
软件测试方法
上页讲的调试,是「发现 bug 后追根因」。但更上游的问题是:怎么系统性地在大片代码里把 bug 找出来?这就需要测试方法的分类——从「看不看代码」「跑不跑程序」两个维度区分。
内科、外科、影像、验血——多角度才能发现不同病灶,测试也是多方法并用才能覆盖各类 bug
程序跟踪调试
前面讲了软件测试方法的多重层次。但测试一旦发现 bug,怎么精确定位到出错的那一行、那一个变量?这就要靠程序跟踪调试——调试员手边最趁手的「放大镜」。
侦探盯嫌疑人行踪,调试员盯程序路径——逐步跟踪、关键处留证
C语言语法要点
前几页讲的是调试和测试——怎么找 bug、怎么验证程序。但想写出少 bug 的代码,得先回头看 C 语言本身的语法规则:它决定了编译器怎么理解你写的每一行。
主语=变量声明,谓语=表达式,句号=分号,语序和规则错一点就读不通
标识符及运算符
写 hello world 时,`int main()` 里每个名字都得合法,`+` 两边得有数。今天专门拆这两块砖。
口诀是简化版;C靠括号强制、结合性默认,二者都改求值顺序
程序设计流程
上一页讲了调试——那是程序出问题之后的事。但在敲下第一行代码之前,其实还有一整套流程要走,就像盖房子不能直接搬砖。
需求=设计图,算法=施工方案,编码=搬砖砌墙,调试=验收修补,维护=入住后装修
数组、函数及指针
前面我们把C语言的语法骨架搭好了——标识符、运算符、流程控制。这页要聊C真正的灵魂三件套:数组、函数、指针。它们看似独立,但在C语言里通过「地址」这条暗线被死死绑在一起。
数组=同一层连续房间;函数=酒店前台固定柜台;指针=写着房号或柜台位置的卡片
结构和文件
前面用指针操作同类数据。但学生有姓名、年龄、成绩,怎么打包成一组?这就要靠结构和文件。
档案袋装所有字段,整袋存进文件柜对应二进制写结构体
本节要点
- ✓调试看运行时轨迹,测试看预期结果,两者互为佐证
- ✓运算符优先级和结合性是表达式求值的隐形规则
- ✓顺序、选择、循环三种结构足以描述一切算法
- ✓数组名退化为指针常量,函数传参本质是值复制
- ✓结构体聚合内存数据,文件桥接外存持久化
课后思考
先独立思考,再看参考答案。三题从理解递进到迁移。
参考答案因为只有运行时才能观察到真实的数据流与隐藏状态——未初始化内存、越界访问、递归深度等都是纸面上不可见的。调试本质是用可控执行去窥测不可见的状态。
参考答案先用跟踪调试(断点或单步),重点核对结构体成员赋值与数组下标。这类问题常源于指针偏移或内存对齐假设错误,跟踪比 printf 更直观。
参考答案用灵活性换安全性——避免野指针与未定义行为,代价是失去对内存的精细控制和零开销抽象。语言设计始终在表达力、安全、性能之间做权衡。