C语言入门经典书籍_C语言从入门到精通
大家好,又见面了,我是你们的朋友全栈君。
国内良莠不齐的C语言教程数不胜数,同名如“C程序设计”“C语言程序设计”“C语言程序设计教程”的都多如牛毛,这些不知名的就不予考虑了,要看就看经典。笔者呕心沥血翻阅十几本C语言入门书,去其糟粕取其精华,推荐以下这些C语言入门经典书籍,希望你能少走弯路,走入C语言的神奇世界。
如果你是零基础
《明解C语言》(337页)推荐指数:★★★★★
乍一看还以为是本新书,但原版在1999年就发行了,引进得实在太晚。属于比较严肃的教材,忠诚于专业术语,并未考虑更通俗的表达方式,并涉及一些算法, 适合正儿八经地学C;内容组织很成功(把排序放在结构体部分的做法很神奇),循序渐进,知识点比较浅,并不全面,相对偏僻及细枝末节的内容没有讲述(也不 必要拿来让初学者头大),没有冗余,应该静下心来一字一句地看,一丁点也不容错过。PS:把C历史背景放在附录不失为聪明的做法,毕竟比起发展史什么的,读者可能更关心如何立马写个hello world。
《21天学通C语言》(614页)推荐指数:★★★★★
槽点一:这书名也忒俗了吧,这类书一般不都是水货吗?
解释:确实拥有这类书名总是要为人所诟病,但你千万不该因此而错过此书。这是本来自国外的教程,原名还就是“Sams Teach Yourself C in 21 Days”,然其质量是国内那些名字类似的书所难以相比的。
槽点二:614页,也忒厚了吧!完全是学霸级初学者专用啊。
解释:C语言的21天课程其实只占了前431页,后面是C++、Java、C#等附加课程。
本书把C的每一部分都讲解得特别细致,附有例子、经验、注意点、建议等,还详细地介绍了各种你脑中可能会产生的疑问或在实践中可能会遇到的问题。有些教材或多或少显性或隐性地要求读者能够举一反三,而此书不仅介绍了“一”,把“三”也逐一讲解了(比如各知识点的组合运用)。没有死循知识结构安排内容,而是按照读者慢慢适应的学习过程循序渐进。为确保读者理解清楚,提前使用时简要介绍过的知识点会在后续章节重新详解。
然 而跑上来给的例子并不简单,一股脑儿介绍不少东西,零基础者看着可能会有点头大。还存在一些不严谨的地方,虽谈不上误导,但可能会引起困惑。除去这些瑕 疵,我终究是被它惊艳到了,力荐之。PS:我看的这2012年8月第一次印刷的版本有不少印刷错误,希望后续印版会有校正。
《C Primer Plus》(626页)推荐指数:★★★★★
怎么说呢,看得出这样的作者才是真正懂C、爱C的人,对各个版本的C标准了如指掌。好比写文章,没有才华的人生搬硬套才把事情讲清楚,而浑身才气的 人稍微抖一抖,文字就散落成一篇佳作。第一章概览就把我赤裸裸地惊艳到了,同样介绍C的历史及背景,却不是其他书那样死板的陈列,语言精炼意赅,不需讲的 果断不讲,需要讲的一语中的,没有废话,一气呵成。恨自己当初学C看的不是这本。
跑上来一股脑介绍的东西很多,很细,初学者可能见了头大,但你若能耐下性子细细看懂,必会感叹它讲得真棒。行文极其精致、严谨,即使初学者可能体会不到这一点;内容详尽、细致,无愧于书的厚度,常用的不常用的,基础应用高级应用,大庭广众下的犄角旮旯里的应有尽有;全方位多层次实用技巧、注意事项,示例经典,醍醐灌顶,兼具入门书与工具书的气质。
总体上云巅工作室译得还算不错,但你依然会遇到一些拗口的句子,然而毕竟瑕不掩瑜,书的总体质量摆在那里,看引进第六版时能不能译得更好些。
《啊哈C!思考快你一步》(191页)推荐指数:★★★★☆
这是唯一一本实体书和电子版我都没能接触到的,或许是不够热门,网上找不到完整的pdf,连出版前的草稿版《啊哈C语言》也仅公开了一半。若是有朋 友能搞到完整的电子版,恳请予我共享一份。我这里看的便是只有一半内容的先行版(以及正式版的几十页试读样章),还带着新鲜的错别字和病句,但版面接近正 式版,读起来也是比较舒适的。
不知道啊哈磊(作者)这哥们是何方神圣,也仅是个有想法的普通人吧,书上是这么介绍的:“曾在中科院玩过单片 机。武汉大学历史上第一位以本科生身份加入MSRA的小伙伴,在机器学习组从事搜索引擎方面的研究。发表国际会议论文一篇(IEEE)。全国青少年信息学 奥林匹克金牌教练。”我很喜欢这样年轻一代人写的书,用语随意,带着颜表情,博文style,没有套话,没有代沟,看着很亲近。本书号称是“小学生坐在马 桶上都可以读懂的‘C语言编程’入门书”,你可能不信,大学生都喊着学C枯燥,小学生那点基础和智商就甭提了,可本书还真够小学生看懂,我甚至觉得有些地 方还能写得更萌、更形象些。不过小学生能接受的程度毕竟是有限的,本书定位是如此的低,以至于只介绍了C最浅的那部分知识,更多篇幅用来举例、增加读者的编程兴趣,简直太适合零基础入门了!而啊哈磊自己基于gcc做的啊哈C编译器也非常适合初学者练习编程,就像他自己说的,是简洁得不能再简洁的C语言编程软件,没有工程的概念、没有编译链接的步骤、没有环境配置,各种没有,你一打开连代码框架都已经写好了,是专为初学者制作的良心产品。
《C程序设计》(第三版378页、第四版390页)推荐指数:★★☆☆☆
把“发行逾1100万册”的消息印在封面大*的做法实在太中二了,你就是本指定教材又不是畅销书,全国高校都用你不破千万才怪呢!并且,千万的销 量同时也意味着接受千万读者的检验,稍欠严谨即易被喷。网上有个500多页的word文档(百度“《C程序设计》错误”即可找到),简直太蛋疼了,他写得 完别人也看不完啊!本书确实不够严谨+印刷问题层出+许多地方还存在严重错误,但这份文档有点吹毛求疵,其中不少说法令人难以苟同,500多页的规模水分 太大。
这本教材,初学者拿来学编程确实较易理解,但对C语言的把握会有一定偏差,慎读。而我们不妨暂且忽略其中的一些重大问 题,重新审视之。作为国内教材中的典范,此书虽然在内容组织上依然中规中矩,但知识点讲解十分通俗,由于通俗,稍显(我是说稍显)啰嗦。做教材可以,不适 合自学,因为你不能确定哪些是次要的。毕竟作为一本*教材,该涵括的都得涵括,不仅要领人进门,还得保证读者达到能考试的程度;摆脱不了应试教育的特 点,为了巩固知识点,时不时会冒出(i++)+(i++)+(i++)和a+=a-=a*=a这样神奇的式子。如果你喜欢这种style,千万不要错过此 书,没错,我当年就有点喜欢这种style,乃觉这书不错的原因之一——竟然让我搞懂了这么复杂混乱的玩意(后来才发现实际编程中根本没人这么做)!
如已学过一点点
《C程序设计语言》(258页)推荐指数:★★★★★
昵称K&R(两位作者姓氏首字母),C语言之父的作品,就好比向别人介绍自己的孩子,不能再精辟,不能再权威,被奉为C语言圣经。在C还没有统一标准的年代,78年K&R的第一版直接被广泛接受为C标准,其他号称是圣经的C语言书用词未免也太想当然了……
圣 经就好比一件标准模板,国内外数不清的C教程都是参照K&R写的,一如大堆的浏览器都使用了IE内核一样。B5的开本短短258页,除去供查阅的 附录仅166页,再除去第8章“Unix系统接口”仅剩148页,这么少的篇幅将C语言讲得清清楚楚,简直是场华丽的艺术!
此书写得非常严 谨,必要之处还提及老版C的情况,可以说学C必看,但并不适合零基础入门,正如其第1版序中所言:“本书并不是一本有关程序设计的入门性手册,它要求读者 熟悉基本的程序设计概念,如变量、赋值语句、循环和函数等。”从头至尾使用的均是书面化的术语,并涉及到逆波兰、二叉树、Unix等专业知识,还时常将C 与Fortran、Pascal语言进行比较,你若不了解这些看着一定头痛,因此K&R并不是入门的最佳选择。
《C语言入门经典》(第4版571页、第5版584页)推荐指数:★★★☆☆
一看这霸气的书名就知道它是部经典,当然这是译名,(第4版)原名为“Beginning C: From Novice to Professional”,表达多中肯,没错,form的是novice,首先你得是个novice,前言中果断暗示你最好此前接触过编程这玩意儿。内容是一整块一整块讲的,力争全面、深入,没有轻重缓急,讲完讲透为止,必要时毫不客气地使用后面才细讲的技术,导致一下子有过量知识点展现在读者面前。多数章尾有个程序设计的例子,而这些例子对于初学者来说也明显过于复杂。
最 要命的是,(第4版)我已经看得相当粗略,但依然发现了几处严重的错误,不是笔误也不是印刷问题,为排除翻译出错的可能,特意比照了英文原版,(同时也排 除了C标准版本的因素)确实有错(下面例举两处,尚未学C的朋友请直接跳过)。此外,不少地方讲得不够清楚,我本怀着崇敬之情拜读,结果最终对其印象并不太好。
错误1(第5版修复) P267关于realloc()函数:显然,第二个参数的值不应超过以前分配的字节数。否则,新分配的内存将与以前分配的内存区域大小相同。 原版P270:Obviously the value of the second argument should not exceed the number of bytes that was previously allocated. If it is, you will only get a memory area allocated that is equal to the size of the previous memory area. 错误2(第5版未修复) P462关于流:流是外部数据源或数据目的地的抽象表示,所以键盘、显示器上的命令行和文件都是流。……将数据写入流(即磁盘文件)有两种方式。 原版P468:A stream is an abstract representation of any external source or destination for data, so the keyboard, the command line on your display, and files on disk are all examples of streams….There are two ways of writing data to a stream that is a disk file.
第5版的改动非常小,将第4版九成内容照搬,就最后增加了一章“Advanced and Speciallized Topics”(高级专用主题),介绍Unicode、线程等,讲得也不易理解甚至不知所云。倒是在排版上有所进步,更适于阅读,如果你硬要来上一本,第 5版会更好一些。
《嗨翻C语言》(588页)推荐指数:★★★★☆
莫被这厚度吓怕,它的字很大,空白很大,图片很多……如果把一般的专业书比作word文档,那么《嗨翻C语言》就是ppt,各种字体,各种插图(即使多数只意增加趣味而与正式内容关联不大),你会觉得眼前一亮,比如:
右 下那壮汉居然在想(说?):“可我喜欢这一张,上面有小猫咪呢!”诸如此类数不胜数,随便翻开一页都能碰到这样个无厘头的吐槽或疯话,恶搞无极限;知识点 与剧情饱满的故事结合在一起,想忘都难;译者也幽默风趣,做了不少本土化的工作,比如“三位钻石王老五准备参加今天的‘非诚勿扰’”……总体感觉甚至像一 本幼儿园的启蒙画册。(Head First系列都这个无脑样我会乱说?)
在开讲知识点前先引导读者自己思考,猜猜这些东西是干啥的,甚至 时常让你站在编译器或者语言设计者的角度思考问题,这些做法很独特,让你从一开始就从很本质的层面去接触C;同时督促读者动脑,练习题有趣而简短,提示、 答案及讲解也非常到位。然而书里充斥着鲜明的老美风格,很high很激情,可以想象美国学生读了本书极可能做出很实际很创意的东西,而中国的学生读着可能 感觉反而有点混乱。并且它起点不低,相当不低,明确地说,适合学过其他语言(如Python)的人用来学C,后半部分的高级应用更是涉及操作系统和网络的知识,尽管它也做了简单介绍,但我相信没接触过的朋友一下子还是难以接受的。
《C语言点滴》(302页)推荐指数:★★★★★
看得出作者确实是个有热情有想法的好老师,语言轻松幽默有内涵,跑上来1.1节装备篇大话程序员屌丝着装就能闪瞎你眼。真正意义上的由浅入深,一开 始浅得连水都没有,然后不知不觉就潜到了马里亚纳海沟。内容并不系统,比起其他的C语言书,它不是教材而是教辅,更多的是总结性的东西(使用技巧注意事项 什么的)——作者总结了自己教学过程中常见的问题与经验,参考了一些经典之作,对其中内容进行了二次包装之后以更易理解的方式呈现给读者——而与其说是查漏补缺的教辅,其实又更像是心得写得不错的系列博文,无论你对C掌握程度如何,读一下多少会有所收获。
那 么之于初学者,相比零基础或学过其他语言,你最好是学过一点C,哪怕只有一丁点。有不少术语是在不解释的情况下出现的,你手头最好还有一本主力教材。本书 专打辅助,但把重难点剖析得十分清楚,对初学者快速、准确地掌握知识点很有帮助。如果你有地方看不明白,不必焦虑,它本来就是“点滴”,暂时漏掉几滴无伤 大雅,日后再补不迟。
PS:全书没啥可吐槽的,唯独1.2节安排不佳:从搜索引擎、e-mail、聊天工具、社交网站、论坛、博客、下载说 起,哦不,是教起,准确地说是零基础教起,虽然说得挺有意思,但其实没有必要,现在只要有点文化水平的,即使是小学生甚至幼儿园的小朋友也都会上网,而没 有文化水平的,不识字的,也根本不会用电脑,更不可能来看C语言,换个角度,学C的读者还不会上网吗,这些东西是写给谁看呢?
下一篇: C语言入门这一篇就够了(入门篇1)
推荐阅读
-
R 语言绘图(ggplot2、ggpubr)从入门到精通 04 - 条形图的调色板美化
-
全新 51 微控制器 C 语言教程:从入门到精通实例全攻略
-
Oracle 数据库从入门到精通系列之 21:增加 Oracle 19c 数据库重做日志的大小 - I. 概述
-
C语言的最新学习路线(从入门到实用)
-
C 语言编程入门经典 18 个小程序
-
C 语言从入门到精通 第 1 章 第 3 节 - 自然语言算法描述
-
C++ 从入门到精通 - 类和对象(中)
-
aps是什么意思_不同的富士APS-C画幅微单区别在哪里,档次是怎么划分的?-X-A系列原本指的是富士的入门级微单,最大的特点是没有使用富士X-Trans™CMOS 传感器,目前在售的有两款,分别是XA5和XA7。 富士(FUJIFILM)X-A5/XA5 15-45套机 富士(FUJIFILM)X-A7/XA7 15-45套机 目前这两款相机都处于历史最低价附近,XA5套机2699元,XA7套机3999元。XA5就是一个标准的入门级相机,定位就是时尚小巧自拍,在2699这个价位不要对它的性能有太多的奢求。 XA7价格来到了3999元,这就很有意思了,富士把入门型的相机价格推到了4000元,并且提供了自拍翻转屏和4K30P视频录制,这样一款相机就很有性价比了。 XE3是老款的中端相机,价格和入门级的XA7是一样的,都是3999元,这两款相机如何做选择呢?XE3有着更多的按键意味着更好的操控,但屏幕不是自拍翻转屏所以这点不如XA7好用。 要注意的是XE3用的是富士独有的X-Trans™CMOS III传感器,XA7是普通的2400万像素传感器,你可以理解为X-Trans才是富士的精髓。 富士(FUJIFILM)X-E3 15-45套机 当然,买新不买旧,XA7的新功能和自拍翻转屏可能会更适合你。 XT200是富士专门针对vlog市场推出的相机,其实之前的XA7也可以拍摄vlog,但XT200是富士官方宣传中的第一款vlog相机。数码防抖+3.5mm 麦克风口+自拍翻转屏+无裁切4K30P,这些都是XT200的优势,但这款相机也是普通的2400万像素传感器,没有用富士独有的X-Trans,可能是从价格角度考虑做了阉割吧。 富士(FUJIFILM)X-T200/XT200 微单相机 Vlog相机 富士XT30是我认为富士性价比最高的微单照相机,注意我说的是照相机。理由很简单,因为从拍照角度来看XT30和XTXT3几乎没有明显差距,主要是操控差了一些、视频性能大幅削弱,但好歹也是个有着双波轮+曝光补偿波轮+快门速度波轮的相机,操控方面不会太差的。视频方面也有着超采4K 30P的规格,支持F-log输出。 可以这么说,如果你只拍照,那么XT30是富士微单中性价比最高的,视频方面XT30也不差,只不过没有专业的10bit和4K60P而已。 富士(FUJIFILM)X-T30/XT30 15-45套机 XT3和XT4得放在一起说,这两款相机其实都挺好,420 10bit 4K60P的专业视频模式基本代表了APS-C画幅的上限水平。XT4还提升了电池续航增加了五轴防抖,配上富士独特的胶片滤镜,不管是拍照还是拍视频都非常优秀。 不要觉得这两款相机贵,同价位里能做到4K60P的微单也就是M43画幅的GGHGH5S,最便宜的G9机身也要7000多,这APS-C画幅的XT3机身接近8000也算合理价格范围内。除此之外的4K60P机身只有13998的松下S5和15999的佳能R6了。 富士(FUJIFILM)X-T3/XT3 1855套机 富士(FUJIFILM)X-T4/XT4 微单相机 套机(18-55mm) B站更新4K视频投稿后有很多人想拍摄4K升格,在很长一段时间里富士XT3和XT4是最优选,毕竟兼顾视频和拍照,对焦也还算能用。 X-Pro3和X-Pro2这两款微单可以算是旁轴相机,是富士官方意义上的旗舰级相机。从用料做工操控按键角度来说的确是旗舰级别,但视频性能方面只有4K30P,价格却比XT3还贵,可能这就是旁轴情怀带来的溢价吧。 富士(FUJIFILM)X-Pro3 微单相机 机身 黑色 我在之前的文章里提过很多次,有一些相机属于如果你想买你压根不会看测评,如果你犹豫那么这款相机不适合你,为什么这么说,因为有一些比较小众的相机可能在性能上并不好,但独特的外形、操控、体积、传承赋予了它独特的定位。譬如富士X-Pro系列微单就是旁轴的电子化,理光GR传承大师的扫街理念,尼康DF的外形源自胶片时代的相机,这些相机就不是针对大多数消费者的,定位就是小众。所以我说喜欢就买,不要考虑什么性能规格。 X100系列相机是一款不可换镜头的等效35mm旁轴数码相机,从外形看就是经典的复古造型。这两款相机和X-Pro3一样,如果你喜欢那就买,别犹豫, 你在市场上找不到同类型的其他数码相机,徕卡Q是28mm,索尼RX1R系列是35mm但外形不够复古,X100系列就是独特的你没有其他选择。 那么X100F和X100V该如何选择呢?X100F的镜头很一般甚至算不上好,如果我没记错的话和初代的X100是同款镜头,X100V的镜头是全新制作的很棒,X100V的机身性能也和XTX-Pro3差不多。 富士(FUJIFILM)X100F 数码相机 旁轴 2430万像素 富士(FUJIFILM)X100V 数码相机 旁轴 2610万像素 还是那句话,这两款相机也是那种如果你喜欢那就毫不犹豫下单的类型,而且这两款相机也没有竞品。 以前不推荐富士的原因是原厂镜头太贵,现在唯卓仕给富士出了四款可以自动对焦的大光圈镜头,覆盖35到130mm的焦段,可以基本满足人像摄影爱好者的需求。拍风景的话国产很多镜头厂商都有富士卡口的手动镜头可以选择,从这个角度来说富士微单就非常值得入手了。 和友商竞品相比:
-
C++ 教学 - 从入门到精通 9.比较大小
-
c 语言从入门到实践 - 数组指针和函数指针