C语言现代方法
如果只能学一门编程语言,那一定是C语言;如果C语言只能留一本书,那就是这本。
最好的C语言入门教材,首选必看,必须反复看,是艺术品。目标:阅读不下三遍。
豆瓣评分9.2《C语言程序设计:现代方法》第2版中文版2021出版
第二好的C语言入门教材有几本:
《C Primer Plus》 第6版中文版 豆瓣评分9.4。名气也很大,但其实不如前者。
日本人写的《明解C》共三本(入门、中级、实践),胜在代码示例简洁规范、图解清晰,容易看懂; 缺点是,它只基于标准C(C89)去写代码,个别地方显得比较老旧了。这方面没有上面两本新颖前沿。
《嗨翻C语言》
入门书只推荐上面几本,而且最好是都看完,其他都可以完全不看。
关于《C语言程序设计:现代方法》的书评和总结。
- 豆瓣评论: 完整覆盖C99超越了K&R。(够新) 内容丰满不亚于《C++程序设计语言》(够厚) 习题质量平均水准比较高。(比上面诸位高出不少) 提供PPT讲义和在线教师资源(就是说你看不懂可以直接问教授,啧啧啧) 探讨现代编译器的实现,揭穿了各种古老的C语言神话和信条(适合程序员的纯干货) 这五条基本超越上面所有的前辈了。(用"横扫"这个词可能有点大不敬不过管他呢)
- 还有评论: 学C语言到底用什么书,确实是一个问题。这本书,的确是好的选择。涵盖C99,语言简洁,不啰嗦,有基础的话很快就能看完,后面的问与答补充了正文中没有涉及到的内容,而且往往非常有趣。习题比较容易,与算法相关的部分也告诉你怎么做了,基本就是纯粹学语言,而不是像国内一些教程边学语言边让你做一些算法题来让一些同学失去自信和混淆语言和算法,也不像k&r的习题,完全是给已经有了一定水平的人做的。这本书前言上说是假设读者有一定的编程基础,但我认为有人指导的话,零基础者学习这本书是不成问题的,比C Primer Plus入门要好,但却远远没有C Primer Plus火,国内那些水教授编的C语言大学教材的烂书就更比不了了。
- 还有评论: 为数不多支持最新C1X标准的书。 时至今日,C 语言仍然是计算机领域的通用语言之一,但今天的C 语言已经和最初的时候大不相同了。 本书主要目的就是通过一种“现代方法”来介绍C 语言,书中强调标准C,强调软件工程,不再强调“手 工优化”。第2 版修订版中不仅有C99 中的新特性,还与时俱进地增加了C11 和C18 中的内容。本书分 为C 语言的基础特性、C 语言的高级特性、C 语言标准库和参考资料4 个部分。每章末尾的“问与答” 部分给出一系列与该章内容相关的问题及答案,此外还包含适量的习题。 本书是C 开发人员的理想参考书,在国外也被众多大学作为C 语言课程的教材。 从C11 开始,新标准的最大变化是引入了多线程和原子操作。这部分内容较多,而且是非常新颖的内容,值得大书特书,并作为一个整体系统性地加以介绍,为此我们把它放在第28 章。市面上和C 语言有关的图书多如牛毛,但据我们所知,介绍多线程和原子操作的图书,这还是第一本。 目前,我们日常接触的C 代码也许用到的C11/C18 特性还不多,但C99 特性实际上已经挺多了:如果你的项目里用到了uint8_t 或是bool,那你就已经用到了C99。截至目前,GCC 尚未在它的C 标准库实现中添加多线程支持,在学习本书第28 章时,建议使用Pelles C。尽管不那么有名,但它是当前对标准支持最好的C 语言开发工具。
第1章 C语言概述
C语言是贝尔实验室的 Ken Thompson、Dennis Ritchie 等人开发的 UNIX 操作系统的“副产品”。
1970 年,贝尔实 验室为 UNIX 项目争取到一台 PDP-11 计算机。当 B 语言经过改进并能够在 PDP-11 计算机上成 功运行后,Thompson 用 B 语言重新编写了部分 UNIX 代码。到了 1971 年,B 语言已经明显不 适合 PDP-11 计算机了,于是 Ritchie 着手开发 B 语言的升级版。最初,他将新开发的语言命名 为 NB 语言(意为“New B”),但是后来新语言越来越偏离 B 语言,于是他将其改名为 C 语言。 到了 1973 年,C 语言已经足够稳定,可以用来重新编写 UNIX 系统了。改用 C 语言编写程序有 一个非常重要的好处:可移植性。只要为贝尔实验室的其他计算机编写 C 语言编译器,他们的 团队就能让 UNIX 系统也运行在那些机器上。
1990 年,国际标准化组织(ISO)通过了此项标准,将其作为 ISO/IEC 9899:1990 国际标准。 我们把这一C语言版本称为 C89 或 C90,以区别于原始的 C 语言版本(经典 C)。
从 C99 到 C11 再到 C18 的变化,没有从 C89 到 C99 那么显著。尤其是从 C11 到 C18 的变 化,仅限于技术修正和澄清,总体上没有显著的改变,也没有引入新的语言特性。
所以新标准C99和C1X,这算是两个新的标准,都需要学习。
C 语言的缺点和它的许多优点是同源的,均来自 C 语言与机器的紧密结合。
第4章 表达式
在许多编程语言中,赋值是语句;然而,在 C 语言中,赋值就像+那样是运算符。换句话说,赋值操作产生结果,就如同两个数相加产生结果一样。赋值表达式 v = e 的值就是赋值运算后 v 的值。因此,表达式 i = 72.99f 的值是 72(不是 72.99)。