人工精选《C语言程序设计(慕课版)》--10.编译预处理和动态存储
这一节属于 C 语言程序设计里的「编译预处理」和「动态存储」两块内容,处在语言基础语法之后、真正写工程之前。网上很多 C 教程在讲完变量、函数之后就直接跳到指针和结构体,中间这块经常被一带而过,但实际上预处理宏和动态内存分配是阅读开源代码、写稍大一点程序绕不开的环节,值得专门花时间弄清楚。 先说这门
会员 · 按档位
游客按标价购买,不享受上表折扣。
支付成功后自动发放网盘链接,链接失效可找客服免费补
这一节属于 C 语言程序设计里的「编译预处理」和「动态存储」两块内容,处在语言基础语法之后、真正写工程之前。网上很多 C 教程在讲完变量、函数之后就直接跳到指针和结构体,中间这块经常被一带而过,但实际上预处理宏和动态内存分配是阅读开源代码、写稍大一点程序绕不开的环节,值得专门花时间弄清楚。
先说这门课解决什么问题
它主要回答三件事:一是 C 语言在真正编译之前,预处理器会对源码做哪些替换和拼装,为什么要这么设计;二是宏定义到底怎么写、什么时候用比函数更合适,什么时候又会埋坑;三是程序运行起来之后,内存从哪里来、用完怎么还,也就是 malloc、calloc、free 一类干活的接口,以及和栈上局部变量的区别。对于「看得懂代码」和「写得出能跑的代码」之间的鸿沟,这一节正是要补上的那一块。
适合什么基础、建议怎么用
前置要求不算高:已经学过变量、函数、指针的基本用法,知道数组、结构体是什么,能看懂简单的指针取址和解引用。如果连「指针就是地址」都还模糊,这一节会显得跳跃,建议先把前面章节看完再回来。这一节本身只占两到三个小节,体量轻,但概念密度不低,适合用「先看视频、再敲代码」的节奏:每看完一段宏的定义或一段动态分配的写法,就自己在编辑器里照着写一遍,改一改参数,观察预处理后的结果。
重点看哪几块
如果时间有限,建议把重心放在三处。第一是「不带参数的宏定义」,理解符号常量的意义,以及和 const 常量在编译时机上的差别,这会直接影响你后面读到的代码风格。第二是「带参数的宏定义」,包括参数加括号、整体加括号、多行用反斜杠续行这些细节,这是宏容易出 bug 的高发区,也是面试和读源码时常见的考点。第三是「#include 命令」,搞清楚尖括号和双引号搜索路径的区别、为什么要把头文件写成「声明」而不是「定义」,这关系到后续多文件编译能不能跑通。
至于动态存储部分,重点放在理解 malloc 拿到的是什么、为什么返回值要判空、free 之后为什么要把指针置 NULL,以及和栈上变量生命周期做对比。这些不是死记 API,而是理解「程序运行起来内存到底归谁管」。
学完能独立做什么
学完之后,你应该能独立看懂一份中等规模 C 项目的预处理部分——比如它定义了哪些宏、用 include 引了哪些依赖;能自己写一组头文件和源文件,把声明和实现分开;能在需要变长数据(运行时才知道要存多少)时,正确申请和释放内存,避免最常见的几种崩溃。这套能力不仅服务这门课后续的链表、文件、模块化内容,也是后面读操作系统、嵌入式、网络编程代码的基础底子。建议把练习重点放在「自己改宏」的环节,而不是只跟着视频敲一遍。
课程目录
1 不带参数的宏定义 (07:32).mp4 2 带参数的宏定义 (06:34).mp4 3 #include命令 (12:47).mp4





