C&C++ 教程总览:从第一行代码到系统级工程
这个方向面向完全没有 C/C++ 基础的读者。 入口不是 ABI、虚表和内存模型,而是先让你知道 C/C++ 是什么、代码写在哪里、如何编译运行、每个符号在程序里扮演什么角色。 但它也不会停在语法速查。 每个基础概念都会一路追到编译器、内存、生命周期、链接器和工程风险。
学习路线
01 从零开始
-> 02 C 语言基础语法
-> 03 C 语言数据与内存
-> 04 C 语言工程基础
-> 05 C++ 基础语法与对象
-> 06 现代 C++ 与标准库
-> 07 并发安全与工程化
第一阶段先解决“我怎么写、怎么运行、怎么看错误”。 第二阶段建立 C 的词法、变量、类型、表达式、控制流、函数和头文件。 第三阶段进入数组、字符串、结构体、枚举、指针、对象表示、存储期和所有权。 第四阶段把源文件、预处理、动态内存、文件 IO、编译链接和未定义行为连起来。 第五阶段进入 C++:命名空间、引用、重载、类、构造析构、继承、多态和虚函数。 第六阶段学习现代 C++:RAII、移动语义、标准库容器、ranges、模板、Concepts 和 constexpr。 第七阶段进入并发、安全、sanitizer、CMake、CI 和发布审计。
C 和 C++ 的关系
C 是一门直接接近机器模型的语言。 它让你明确控制对象表示、地址、存储期、函数调用和资源释放。 C++ 保留了这条低层路径,同时加入对象生命周期、RAII、泛型、标准库和更强的抽象机制。
C:字节、地址、函数、结构体、显式资源管理
C++:对象、生命周期、类型系统、泛型、零成本抽象
共同基础:编译器、链接器、ABI、内存、线程、工具链
因此本教程不会把 C++ 讲成“C 加 class”。 也不会把 C 讲成“落后的 C++”。 它们共享工具链,但思维方式不同。
每篇文章的阅读标准
读每篇文章时,请不要只问“语法怎么写”。 还要问:
- 这个语法解决什么问题。
- 编译器如何理解它。
- 它在内存里留下什么结构。
- 错误路径会不会泄漏资源。
- 多线程下会不会破坏并发边界。
- 跨文件、跨库、跨平台时契约是否仍然成立。
当前标准背景
C 侧以 C23 为当前标准背景,同时会说明 C11/C17 在工程中的长期存在。 C++ 侧以 C++23 为当前发布标准背景,同时把 C++26 作为演进方向,不把它当作默认生产基线。 编译器、标准库和平台 ABI 的实现进度可能不同,所以教程会持续区分“标准允许”和“当前工程可用”。
最终能力目标
完成这个方向后,你应该能从零写出一个小型 C/C++ 程序,也能解释它如何被编译、链接和运行。 你应该能读懂指针、数组、结构体、类、对象、模板和标准库容器。 更重要的是,你应该能识别未定义行为、悬垂指针、迭代器失效、数据竞争、ABI 不兼容和资源释放失败。
ZeroBug 的目标不是让代码“刚好能跑”,而是让程序的每一条边界都有证据、有约束、有观测、有回滚。