这个问题试图收集社区维护的关于c编程语言的优质书籍清单,目标是各种技能水平。
C是一种复杂的编程语言,通过阅读在线教程很难随时随地学习。 综合性书籍通常是学习语言的最佳方式,找到一本好书是第一步。 重要的是要避免写得不好的书籍,更重要的是要避免包含严重技术错误的书籍。
请建议编辑接受的答案,以添加高质量的书籍,具有近似的技能水平和每本书的简短描述/描述。 ( 请注意,问题已被锁定,因此不会接受新的答案。列表中会保留一个答案 )
随意讨论书籍选择,质量,标题,摘要,技能水平以及您认为错误的任何其他内容。 C社区认为令人满意的书籍将列在名单上; 其余的将定期删除。
对于由C和C ++用户协会(ACCU)进行评论的书籍,应该与书籍一起添加指向这些评论的链接。
也可以看看:
- c 标记wiki中的其他C相关资源
- 类似的c ++列表: The Definitive C ++ Book Guide and List
这个问题在Meta上作为2018年删除问题审计的一部分进行了讨论。
达成共识的目的是保持其未被删除和积极维护。
#1楼
警告
这是各种质量的随机书籍清单。在一些人看来(有一些理由),它不再是推荐书籍的清单。一些列出的书籍包含明显不正确的陈述或教导错误/有害的做法。知道此类书籍的人可以编辑此答案以帮助改进。看到C书的清单已经乱了。怎么办呢?,以及删除问题审核2018 。
参考(所有级别)
C编程语言(第2版) - Brian W. Kernighan和Dennis M. Ritchie(1988)。 由C的发明者编写的C(C90,而不是C99或更高版本)仍然是一个很好,简短但完整的介绍。然而,语言已经发生了变化,并且在过去的25年中发展出了良好的C风格,并且有部分显示其年龄的书。
C:参考手册(第5版) - Samuel P. Harbison和Guy R. Steele(2002年)。 关于C的优秀参考书,包括C99。 它不是教程,可能不适合初学者。 如果您需要为C编写编译器,那就太好了,因为作者在创建时必须这样做。
C袖珍参考(O'Reilly) - Peter Prinz和Ulla Kirch-Prinz(2002)。
comp.lang.c常见问题 - 史蒂夫峰会。 关于C的许多问题的答案的网站
新的C标准 - 注释参考 (免费PDF) - Derek M. Jones(2009)。 提到的“新标准”是旧的C99标准而不是C11标准。
初学者
C语言编程(第4版) - Stephen Kochan(2014)。 一个很好的一般介绍和教程。
C Primer Plus(第5版) - Stephen Prata(2004)
C编程:现代方法(第2版) - KN King(2008)。 学习C的好书。
一本关于C的书 - Al Kelley / Ira Pohl(1998)。
The C Book (免费在线) - Mike Banahan,Declan Brady和Mark Doran(1991)。
C:如何编程(第8版) - Paul Deitel和Harvey M. Deitel(2015)。 为初学者提供了许多好的技巧和最佳实践。 该指数非常好,并作为一个不错的参考(只是不完全全面,非常浅)。
Head First C - David Griffiths和Dawn Griffiths(2012)。
从C开始(第5版) - Ivor Horton(2013)。 使用大量小而完整的程序对指针进行非常好的解释。
萨姆斯在21天里自学C - Bradley L. Jones和Peter Aitken(2002)。 非常好的介绍性的东西。
ANSI C中的应用程序编程 - Richard Johnsonbaugh和Martin Kalin(1996)。
中间
使用ANSI-C进行面向对象编程 (免费PDF) - Axel-Tobias Schreiner(1993)。 代码有点复杂。 如果您想要C ++,请使用C ++。
C接口和实现 - David R. Hanson(1997)。 提供有关如何以通用和可重用的方式在C中定义接口和实现之间的边界的信息。 它还通过将其应用于C中的公共机制和数据结构的实现来演示这一原理,例如列表,集合,异常,字符串操作,内存分配器等。 基本上,Hanson将他编写的所有代码作为构建Icon和lcc的一部分,并以其他人可以为自己的项目重用的形式提取出最佳位。 它是使用现代设计技术(包括Liskov的数据抽象)的良好C编程模型,展示了如何将大型C项目组织为一堆有用的库。
C拼图书 - Alan R. Feuer(1998)
标准C库 - PJ Plauger(1992)。 它包含C89标准库实现的完整源代码,以及有关设计和代码设计原因的广泛讨论。
21世纪C:来自新学校的C技巧 - Ben Klemens(2012)。 除了C语言之外,本书还介绍了gdb,valgrind,autotools和git。 关于风格的评论可以在最后一部分(第6章及以后)中找到。
C语言中的算法 - Robert Sedgewick(1997)。 让您真正掌握在C中实现算法的方法。非常清晰明确; 可能会让你想丢掉所有其他算法书籍并保留这本书。
C指针 - Kenneth Reek(1997)。
C中的指针 - Naveen Toppo和Hrishikesh Dewan(2013年)。
C语言中的问题解决和程序设计(第6版) - Jeri R. Hanly和Elliot B. Koffman(2009)。
数据结构 - 使用C的高级方法 - Jeffrey Esakov和Tom Weiss(1989)。
C Unleashed - Richard Heathfield,Lawrence Kirby,et al。 (2000年)。 不理想,但值得中级程序员练习本书中写的问题。 这是comp.lang.c贡献者建议的类似烹饪书的方法。
- 现代C - Jens Gustedt(2017)。 从C级到高级级C涵盖C级5级(遭遇,熟人,认知,经验,抱负)。它涵盖C11线程和原子访问,很少有其他书籍可以做,并不是所有编译器都能在所有环境中识别。
专家
专家C编程:Deep C Secrets - Peter van der Linden(1994)。 来自Sun编译团队的很多有趣的信息和战争故事,但有点过时了。
高级C编程示例 - John W. Perry(1998)。
UNIX环境中的高级编程 - Richard W. Stevens和Stephen A. Rago(2013)。 关于如何使用C代码中的Unix API的全面描述,但不是关于C编码的机制。
未分类
Essential C (免费PDF) - Nick Parlante(2003)。 请注意,这在几个方面描述了C90语言( 例如 ,在讨论
//
在代码中的任意点处对变量声明进行注释和放置时),因此应该谨慎对待它。C编程常见问题解答:常见问题 - Steve Summit(1995)。 这是前面列出的网站的书。 它不包括C99或更高版本的标准。
C in a Nutshell - Peter Prinz和Tony Crawford(2005)。 如果您需要C99的参考书,那就是优秀的书。
功能C - Pieter Hartel和Henk Muller(1997)。 教授对低级编程非常有用的现代实践,并考虑到并发性和模块性。
编程实践 --Brian W. Kernighan和Rob Pike(1999)。 陪伴K&R的一本非常好的书。 它也使用C ++和Java。
A. Koenig的C陷阱和陷阱 (1989)。 非常好,但C风格的标准C之前的日期,这使得它现在不太值得推荐。
有些人主张从这个清单中删除“陷阱和陷阱”,因为它困扰了一些人犯错误;其他人继续争辩将其列入。也许它应该被视为一本“专家”书,因为它需要适度广泛的C知识才能理解自出版以来发生了哪些变化。
建立自己的Lisp - Daniel Holden(2014)。 一种愉快的学习方式C.
MISRA-C - 由汽车工业软件可靠性协会发布和维护的行业标准。 涵盖C89和C99。
虽然这不是一本书,但每位经验丰富的C程序员都应尽可能多地阅读和实现它。MISRA-C最初是作为安全关键应用程序的指南,但它适用于需要稳定,无错误的C代码的任何应用领域(谁不想要更少的错误?)。MISRA-C正在成为整个嵌入式行业的事实标准,并且即使在其他编程分支中也越来越受欢迎。该标准有(至少)三种出版物(1998年,2004年,以及2012年的当前版本)。2016年还有MISRA合规指南文件和MISRA C:2012修订1 - MISRA C:2012附加安全指南(2016年4月发布)。
请注意,MISRA规则中的某些限制并不适用于所有上下文。例如,指令4.12规定“不应使用动态内存分配”。这适用于设计MISRA规则的嵌入式系统;它无处不在。(例如,编译器通常使用动态内存分配来处理符号表之类的事情,如果没有动态的内存分配则很难,如果不是荒谬的话。)累计列出了ACCU评论的书籍,其中包括2007年的初级C (116种)和来自2008年的高级C (76种)。其中大部分都不会出现在主站点上,您无法按主题浏览无论如何。
警告
警惕Herbert Schildt写的书。 特别是,你应该远离C:The Complete Reference (4th Edition,2000),在某些圈子里称为C:The Complete Nonsense。
同时要警惕Yashwant Kanetkar的书“ Let Us C” ( 第 16版,2017年)。 有些人认为它是一本非常过时的书,教授Turbo C并且有许多过时的,误导性的和彻头彻尾的错误材料。
学习C The Hard Way (2015)作者:Zed Shaw。 一本评论不一的书。 蒂姆亨特纳尔对这本书的批评:
总结我的观点,如下所示,作者以极其简单和误导的方式呈现材料,整个语料库是捆绑的混乱,他提供的一些观点和分析是完全错误的。 我试图通过一个新手的眼睛来看这本书,但不幸的是,我在C语言编写代码方面有多年的偏见。对我来说很明显,作者对C的理解有缺陷,或者他故意过度简化他实际上误导了读者(有意或无意地)。
“学习C艰难之路”并不是一本我可以推荐给那些学习编程和学习C的人的书。如果你已经是其他相关语言的称职程序员,那么它就代表了一个有趣且不同寻常的论述。 C,虽然我对本书的部分内容有所保留。 乔纳森莱弗勒
过时的
- 实用C编程(第3版) - Steve Oualline(1997)(初级)
其他贡献者 ,未在修订历史中记入:
Alex Lockwood , Ben Jackson , Bubbles , claws , coledot , Dana Robinson , Daniel Holden , Dervin Thunk , dwc , Erci Hou , Garen , haziz , Johan Bezem , Jonathan Leffler , Joshua Partogi , Lucas , Lundin , Matt K. , mossplix , Matthieu M. , midor , Nietzche-jou , Norman Ramsey , r3st0r3 , ridthyself , Robert S. Barnes , Tim Ring , Tony Bai , VMAtm
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3163774