书是非常私人的东西,编程类书籍也不例外。我们都是通过阅读书籍来帮助掌握某种语言的基本知识。随后又通过阅读书籍来全面探索这门语言的灵活性。我仔细考察了一些我最喜爱的 C 语言书籍,并从其中选出了对我意义最大的九本。
C 语言是一种通用的、面向过程的高级编程语言。也是最具流行度和影响力的编程语言之一。该语言在设计时就被设计为可以通过编译器进行编译,以此来对内存进行底层操作、高效地执行机器指令以及在运行时仅需要最小的支持。很多很多编程语言都得益于 C 语言, C 语言就像是编程界的通用语言一样。
C 语言非常易懂。它允许程序员能够以一种清晰、简单、符合逻辑的方式来组织程序。这是一种非常灵活、实用并且简洁的语言,同时它还具有非常容易读懂的语法。使用 C 语言编写的代码运行非常快。可以非常简单地操作计算机的底层设施。通过编译器的指令可以允许我们为不同体系结构的设备生成同一个版本的程序。
C 语言是自由的。因此学习 C 语言的书籍也是体现了其自由性。快来看看我挑选的开源书籍,有没有哪一本能够吸引你?好好享受它吧!
《C 语言》( The C Book)
作者: Mike Banahan, Declan Brady 和 Mark Doran ,350 页
这本书是为那些已经具备使用现代高级面向过程编程语言的程序员设计的。这本书专注于那些 C 语言的特有之处。尤其是使用 C 语言的方式是这本书所重点关注的。
包含以下章节:
变量及运算法则介绍 – 介绍了 C 语言的基础知识, 包括关键字和标识符,变量声明,实数类型,整型,表达式和运算法则以及常量
控制流及逻辑表达式 – 这一章介绍了在 C 语言中可以用于控制程序流程的几种方法,包括一些尚未介绍的语句。 控制流,逻辑表达式以及奇怪的运算符。
函数 – 函数的类型, 递归,传参数以及链接
数组和指针 – 数组, 指针, 字符处理, sizeof 以及储存空间分配, 函数指针,包含指针的表达式,数组,
&
运算符以及函数声明结构体数据类型 – 结构体, 联合体, 位字段, 枚举类型, 限定符、派生类型以及初始化
预处理器 – 预处理器是如何工作的及其相关指令
C 语言中的一些特定内容 – 声明, 定义,
typedef
,const
和volatile
以及序列点库 – 诊断, 字符处理, 本地化, 与具体实现相关的限制, 数学函数, 非局部跳转, 信号处理, 可变参数, 输入输出, 格式化 I/O, 字符 I/O, 无格式 I/O, 随机访问函数, 通用函数, 字符串处理, 日期和时间
C 语言编写的完整程序 – 综合以上内容, main函数的参数, 解析程序参数, 模式匹配程序以及一个难度更大的程序
作者允许读者利用此书做任何他们想做的事情,只需说明作者和版权。经Mike Banahan确认,本书通过知识共享协议发布。
风格的要素—— C 语言版(C Elements of Style)
作者 Steve Oualline ,265页
这是一本十分有用的编程风格指南,指导 C 和 C++程序员如何去编写可读性良好的,易懂的,易于维护的程序。不论你是一个学生还是专业程序员,你都能从这本书中提供的技巧和技术中获益,构建优雅可靠的代码。
这本书意在向读者们展示如何在你的程序中融入风格良好的代码。机器仅处理代码,而人类关注于注释。良好的编程风格与这两部分都有关。
我们的最终目标是构建设计良好,编写良好的代码,这种代码对于计算机来说是高效的,同时包含了精心编写的注释用于帮助人类理解程序。这样一来,调试,维护和增强程序,都变得更加容易了。最终还提升了代码的可读性,简洁性,可靠性和可维护性。
在本书中,你可以找到有关编写注释,程序头,变量命名,语句格式化,语句细节,编写预处理器命令,组织目录和创建makefile的指南。
本书通过知识共享协议发布。
《编写你自己的Lisp语言》(Build Your Own Lisp)
作者 Daniel Holden ,212页
在学习 C 语言的同时学习如何创造你自己的编程语言——一个最简的Lisp语言(仅用不到1000行代码)。
这本书是为两种人写的,一种是想要学习 C 语言的人,另一种是想要知道如何创建一门语言的人。本书并不适合作为第一本入门书籍,因为你需要一些编程经验才能读懂它的内容。
本书基于 Creative Commons Attribution-NonCommercial-ShareAlike 3.0.协议发布
纸质版可以在Amazon上购买。
《 GNU C 语言参考手册》(The GNU C Reference Manual)
作者 Trevis Rothwell, James Youngman ,91页
本书是一本 C 语言参考手册,意在写明C89,C99标准以及当前GNU对标准 C 语言的扩展情况。本书并不适合新手阅读。
包含以下章节:
词法元素——这部分内容描述了预编译之后,组成 C 语言代码的词法元素。包括5种:关键字,标识符,常量,操作符和分隔符
数据类型——研究基础的数据类型,枚举,联合体,结构体,数组,指针,不完全类型,类型修饰词,储存类型修饰词以及重命名类型
表达式和操作符 —— 还介绍了自增/自减,算数操作符,复共轭性,比较操作符,逻辑运算符,位移,位运算符,指针运算符,
sizeof
,类型转换等等。语句 —— 标签,表达式,
if
语句,switch
语句,while
语句,do
语句,for
语句,代码块,null
语句,goto
语句,break
语句,continue
语句,return
语句以及typedef
语句函数 —— 学习函数声明,函数定义,函数调用,参数,变长参数列表,通过指针调用函数,
main
函数,递归函数等等。程序结构和定义域 —— 从宏观上来看程序
一个例程 —— 一个用 C 语言编写的完整程序,包含 C 语言源文件和头文件。这个程序是一个典型“hello world”程序的扩展版,它向我们展示了在 GNU FSF 项目中 C 语言是如何工作的。
本书基于GNU Free Documentation License Version 1.3 及其更新版本发布。
《GNU C 语言编程教程》(The GNU C Programming Tutorial)
作者 Mark Burgess, Ron Hale-Evans ,290页
本书以逻辑顺序向读者介绍了 C 语言的基本内容。本书内容涵盖了 C 语言的全部主要内容的细节以及如何使用 C 语言编程,特别强调了GNU/Linux编译器以及相关软件。
一些章节主要介绍了函数,变量以及声明,作用域,表达式和操作符,参数,指针,判定,循环,数组,字符串,输入输出等等。
本书基于GNU Free Documentation 协议 Version 1.1版发布。
《GCC简介》(An Introduction to GCC)
作者 Brian Gough ,144页
本书介绍了 GNU C 语言和 C++编译器——gcc 和 g++,它们是 GNU 编译器套装(GCC)的一部分。
本书介绍了如何使用编译器。通过多年以来对邮件列表中的问题的观察,本书带领读者直击 GCC 的重要内容。
章节介绍:
编译c程序——介绍了如何使用gcc来编译 C 语言程序。单个文件或多个文件均可以编译,也可以使用操作系统函数和头文件。
编译选项——介绍了gcc中一些常用的编译选项。这些参数控制一些功能,例如搜索库函数和头文件的路径,提供额外的编译告警和诊断。预处理宏和 C 语言方言。
使用预处理器——描述了cpp(GNU C preprocessor)的使用方法,cpp是GCC的一部分。预处理器会在编译前将代码中的宏展开,当GCC处理c或者c+代码时,预处理器会自动被调用。
编译带有debug信息的程序——提供了一个
-g
选项用以在中间文件和可执行文件中存储额外的调试信息。这些调试信息使得我们可以追踪错误,将机器指令中的问题定位到源代码中。优化编译——GCC是一个优化过的编译器。它提供了很多选项,可以加速编译或是减少编译后文件的体积。
编译C++程序——介绍了如何使用GCC编译C++程序以及该语言可以使用的命令行选项。
平台相关选项——介绍了一些常见平台可以使用的选项
排错——GCC提供了一些帮助和诊断选项用于帮助我们定位编译过程中出现的问题。
编译器相关工具——介绍了GCC编译过程中会用到的一些有用的工具。包括用来创建库的 GNU 归档工具 ar,GNU 性能和覆盖率测试程序gprof 和 gcov
编译器是如何工作的——详细介绍了GCC是如何把源文件编译为可执行文件的。编译是一个多阶段过程,涉及很多工具,包括GNU编译器本身,GNU汇编器,以及GNU链接器。在编译过程中使用的各种工具,我们统称为编译链。
检查编译后的文件——介绍了一些用来检查可执行文件和obj文件内容的工具。
常见错误信息——介绍了gcc和g++产生的最常见的错误和告警信息。每种情况都带有原因分析,样例以及建议的解决办法。
获取帮助——如果读者遇到了书中没有提到的问题,还有很多介绍GCC和语言的手册可以参考。
本书基于GNU Free Documentation协议发布
很多 C 语言书籍都可以免费下载,但是可惜的是它们并没有以开源协议来发布,或其基于何种协议并没有明确说明。以下对其进行介绍,排名不分先后:
《C编程导论》( Introduction to C Programming )– 作者 Rob Miles
《新标准 C 语言》(The New Standard C: An Economic and Cultural Commentary) – 作者 Derek M. Jones
《使用标准 C 语言进行面向对象编程》(Object-Oriented Programming with ANSI-C )– 作者 Axel-Tobias Schreiner
《编写零缺陷的 C 语言代码》(Writing Bug-Free C Code) – 作者 Jerry Jongenius
最后,如果你想买一本权威参考书,请认准《C程序设计语言》(The C Programming Language)。这本书非常简练,不适合新手,但是被奉为经典。
未经允许请勿转载:程序喵 » 学习 C 语言看这9本开源好书