书是十分私家的东西,编程类书本也不破例。咱们都是经过阅览书本来协助把握某种言语的根本常识。随后又经过阅览书本来全面探究这门言语的灵敏性。我细心调查了一些我最喜欢的 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版发布。
《 C 言语根底》(Essential C)
作者 Nick Parlante ,45页
这份简略的文档解说了 C 言语悉数的常用特性和技能。这份文档十分简练,因而它的方针人群是现已具有其他编程言语布景的人。
内容包含变量,整型,浮点型,类型提高,切断,操作符,操控结构(if,while,for),函数,数值参数,引证参数,结构体,指针,数组,预处理器以及 C 言语规范库函数。
目录:
简介
根底类型与运算符
操控结构
杂乱数据类型
函数
杂项
高档数组与指针
运算符和规范库
依据作者的描绘,咱们得知这是一本依据开源协议发布的书本。
《Beej的 C 言语教程》(Beej’s Guide to C Programming)
作者 Brian “Beej” Hall ,130 pages
本书试图为那些心存困惑的读者带来一种仅能经过朴实 C 言语编程而发生的快感。
章节:
构建程序的根本结构块
变量,表达式和,句子。变量便是一个数字的姓名——一个 C 言语表达式能够包含其他的表达式以及运算符。文章还介绍了if,while,do while以及程序重复履行的for句子。
函数——当程序块变得很大,或是当这些程序块用来履行一些特定的作业时,咱们会把它们封装到函数中。
变量(续篇)——探讨了变量的效果域和贮存类型
指针——它们是数据在内存中的地址。就像一个整型的值能够是12,一个指针的值便是数据在内存中的地址
结构体——结构体答应你将逻辑上相关的变量分组。随后你能够将其作为一个全体来运用。
数组——一组相关数据的线性调集
字符串—— C 言语中的字符串便是内存中的一组接连的比特,包含了一组字符
动态内存——探讨了malloc(), free(), realloc() 和 calloc() 函数
更多内容——指针运算,typedef,枚举,结构体声明,指令行参数,多维数组,类型转化和类型提高,不完好类型,void指针,NULL指针和static关键字
规范输入输出库——用来进行文件的读写。
字符串操作——用来查找子串的函数,衔接字符串的函数,获取字符串长度的函数,等等。
管用——一些能够满意你根本管用需求的函数。
本书依据Creative Commons Attribution-Noncommercial- No Derivative Works 3.0 协议发布。
《现代 C 言语》(Modern C)
作者 Jens Gustedt ,310页
本书鼓舞读者逐级探究 C 言语的特性。内容总共分为如下五层境地:
第一层——使读者了解最根本的 C 言语程序。了解运用 C 言语的意图和数据结构,以及怎么去运用它们
第二层——具体的阐明晰大部分首要概念以及特性,包含操控结构,数据类型操作符和函数。这一级的首要意图是让读者能够关于这些运转程序必备的常识,有更深化的了解。
第三层——进入 C 言语的中心部分。具体的解说了指针,让你了解 C 言语的内存模型,而且让你了解大多数 C 言语库的接口
第四层——深化了解一些特定的主题。比方功用,重入,原子性,线程及泛型编程
第五层——探讨了作者对这门言语未来发展趋势的了解
本书依据Creative Commons Attribution-Noncommercial- No Derivative Works 3.0 协议发布
《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)。这本书十分简练,不合适新手,可是被奉为经典。