Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

零基础 C 语言入门到进阶

一套面向零基础学习者的中文 C 语言教程,从计算机与编译基础讲起,逐步延伸到内存管理、工程组织和基础数据结构。仓库同时提供课程正文与配套源码,方便边学、边写、边验证。

在线阅读完整教程

课程特点

  • 循序渐进:从开发环境和基础语法开始,逐步进入指针、动态内存、多文件项目与数据结构。
  • 文档与源码配套:课程中的完整示例均可在 src/ 目录找到对应代码,第一至第十六章提供逐章构建脚本。
  • 重视内存安全:围绕数组边界、指针有效性、对象生命周期和动态内存释放建立清晰的分析习惯。
  • 兼顾工程实践:除单文件程序外,还包含头文件组织、编译链接和 CMake 项目示例。

课程大纲

阶段 章节 核心内容
基础入门 第 0~2 章 计算机基础、开发环境搭建、变量、类型、表达式、分支、循环、函数
组织数据 第 3~5 章、第 13 章 数组、字符串、结构体、共用体、枚举
理解内存 第 6~12 章 内存模型、指针、结构体指针、函数指针、动态分配、生命周期
语法扩展 第 14~15 章 宏、文件 I/O
工程基础 第 16~17 章 头文件组织、编译链接、CMake 构建
数据结构 总览篇、第 18~19 章 数组增删改查、单链表、双链表、顺序栈、链式队列、环形队列
查漏补缺 第 20 章 C 语言常见语法与概念辨析

进阶篇(规划中)

入门篇已经覆盖核心语法、内存模型、基础数据结构和工程构建。后续计划继续补充以下内容:

  • CMake 进阶:创建与导入库、编译参数配置、构建优化
  • 函数接口设计:使用 void * 设计通用接口,通过 const 和清晰的所有权约定减少误用
  • goto 的使用:理解 goto 的语法、陷阱与合理场景,例如错误集中处理、跳出嵌套循环和状态机
  • 宏魔法:字符串化(#)、记号粘贴(##)、可变参数宏、X Macro 等高级用法
  • 内存对齐及其应用:分析 structunion 的成员布局,理解填充、对齐、alignof/alignas 和性能影响
  • 柔性数组:掌握 C99 柔性数组成员的语法、内存布局与实战场景
  • 非线性数据结构——树:二叉树、二叉搜索树、AVL、红黑树、二叉堆与优先队列
  • 非线性数据结构——图:邻接矩阵、邻接表、DFS、BFS 与常见图算法
  • C 语言面向对象编程:结合结构体、函数指针与虚表,探索封装、继承和运行时多态
  • initcall 风格机制:学习程序启动期自动注册思路,理解链接器或编译器扩展在其中的作用
  • 实战项目:待定

仓库结构

.
├─ book/
│  ├─ book.toml             # mdBook 配置
│  └─ src/                  # 课程正文、目录与图片
└─ src/
   ├─ README.md             # 配套源码说明
   ├─ build_chapter.sh      # Linux/macOS/Git Bash 逐章构建脚本
   ├─ build_chapter.ps1     # Windows PowerShell 逐章构建脚本
   ├─ ch01-basics/          # 基础章节的独立示例
   ├─ ...
   ├─ ch16-headers/         # 多文件与头文件示例
   ├─ ch17-cmake/           # CMake 入门项目
   └─ ch18-data-structures/ # 六个独立的数据结构项目

课程正文位于 book/src/,配套代码位于仓库根目录下的 src/。第一至第十六章以独立 .c 文件和手动构建脚本为主;第十七章开始使用 CMake;第十八、十九章的数据结构项目采用 include/src/CMakeLists.txt 的常见布局,便于观察公开接口、内部实现与演示入口之间的关系。

本地构建与阅读

安装 mdBook 后,在仓库根目录运行:

mdbook serve book --open

如果 mdBook 是通过 Rust/Cargo 安装但还没有加入 PATH,可以直接使用:

~/.cargo/bin/mdbook serve book --open

只生成静态站点时运行:

mdbook build book

生成的静态文件位于 book/book/。提交 book/ 目录中的改动后,GitHub Actions 会自动重新构建并发布在线教程。

编译配套源码

第一至第十六章提供逐章构建脚本,会自动编译该章所有 .c 文件,并把可执行程序输出到章节目录的 bin/ 中。

Linux/macOS/Git Bash:

cd src/ch03-arrays
./build.sh

或从 src/ 目录调用统一脚本:

cd src
./build_chapter.sh ch03-arrays

Windows PowerShell:

cd src/ch03-arrays
.\build.ps1

包含 main 函数的单文件完整示例也可以直接使用 Clang 编译:

clang -std=c11 -Wall -Wextra path/to/example.c -o example

第十六章讲解多文件项目,编译时需要同时指定相关源文件和头文件搜索路径:

clang -std=c11 src/ch16-headers/src/main.c src/ch16-headers/src/mathutils.c \
  -Isrc/ch16-headers/include -o mathutils_demo

第十七章及数据结构部分提供了 CMake 项目,可以使用统一流程构建:

cmake -S src/ch17-cmake -B build/ch17
cmake --build build/ch17

src/ch18-data-structures/ 下的每个子目录都是独立的 CMake 项目;构建其他示例时,将 -S 后的路径替换为相应目录即可。

当前验证方式

维护文档和源码时,建议至少运行:

~/.cargo/bin/mdbook build book
bash src/build_chapter.sh src/ch03-arrays
cmake -S src/ch18-data-structures/singly-linked-list -B src/ch18-data-structures/singly-linked-list/build
cmake --build src/ch18-data-structures/singly-linked-list/build

需要全量检查时,可按 src/README.md 中的说明逐章构建,并分别构建 src/ch17-cmakesrc/ch18-data-structures/ 下的各个 CMake 项目。

About

零基础C语言从入门到进阶,配有在线教程。

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages