此书的英文名为:C Programming Language, 2nd Edition。出版日期为1988年 3月 22日,作者为Brian W. Kernighan 和 Dennis M. Ritchie。
C语言1978年诞生,是由Dennis Ritchie为UNIX操作系统设计。UNIX操作系统和其上大多应用都是用C写的。
1983年出现ANSI C标准,直到1988年才完成。
💡 到目前为止,C语言的ISO标准按时间顺序包括:C90, C99, C11, C17, C23。
- C90(等同于C89/ANSI C):第一个标准化版本,奠定 C 语言基础;
- C99:过渡性现代版本,新增大量实用语法;
- C11:成熟稳定的现代标准,新增底层 / 系统级特性;
- C17:小修小补的维护版本,无核心新特性;
- C23:最新标准,简化语法、补齐现代特性(仍在普及中)。
💡 从 C90 开始,ISO 成为 C 标准的核心制定机构,ANSI 不再独立修订,只是 “同步采纳” ISO 的标准,因此C99 及以后的版本,本质上都是 ISO 标准,ANSI 仅作为等同认可。
简洁(brevity)是C语言的一大特色。
C语言不是高级语言,但并非贬义(pejorative)。这也使得C语言内容较少,占用空间较少,易于学习。
C语言的可移植性较好。
C 不是强类型语言。
💡 弱类型语言(weakly-typed)允许隐式的、不安全的类型转换;强类型语言(strongly-typed)则不允许。
本书结构如下:第1章是关于C语言核心部分的教程。其目的是让读者尽快入门。该教程假设读者已经具备编程基本知识的实际经验;本书集中讲解语言本身,并非数据结构和算法的参考书。
第2至第6章比第1章更详细且更正式地讨论了C语言的各个方面,尽管重点仍然是完整程序的示例,而不是孤立的片段。第2章介绍了基本数据类型、运算符和表达式。第3章讲述了控制流:if-else、switch、while、for等。第4章涵盖了函数和程序结构——外部变量、作用域规则、多源文件等——同时也涉及预处理器。第5章讨论了指针和地址运算。第6章介绍了结构体和联合体。
第7章描述了标准库,它提供了与操作系统的通用接口。该库由 ANSI 标准定义,旨在所有支持 C 的计算机上都能使用,因此使用它进行输入、输出和其他操作系统访问的程序可以在不同系统之间无需修改即可移植。
第8章描述了 C 程序与 UNIX 操作系统之间的接口,重点在于输入/输出、文件系统和存储分配。尽管本章的部分内容特定于 UNIX 系统,但使用其他系统的程序员仍然可以从中获得有用的资料,包括对标准库某个版本实现方式的一些了解,以及关于可移植性的建议。
ANSI标准是C语言语法和语义的官方说明,但主要面向编译器开发者。附录A包含语言参考手册,则针对用户更简明地传达了语言定义。附录B是标准库的摘要,面向用户而非实现者。附录C是原始语言变更的简要总结。
以下是所有笔记的博客,计划按每日两篇,逐日发布:
| 1 | A Tutorial Introduction |
| 2 | Types, Operators, and Expressions |
| 3 | Control Flow |
| 4 | Functions and Program Structure |
| 5 | Pointers and Arrays |
| 6 | Structures |
| 7 | Input and Output |
| 8 | The UNIX System Interface |
| 附录A | Reference Manual |




