学习C语言的教材

作者: 阮一峰

日期: 2011年9月18日

我的C语言是自学的,这些年看过不少教材。

下面,我对其中一些教材做个点评。

1. How to Think Like a Computer Scientist: C version

这是我读过最易懂的C语言教材。

虽然它只讲解最基本的语法,但是写得特别好懂,深入浅出,读起来不觉得累,而且它还允许免费下载。我认为,这是C语言的首选入门教材。

下载网址:http://prof.beuth-hochschule.de/scheffler/lehre/programmieren-in-c/

2. C Primer PlusC Programming: A Modern Approach

上面这两本,都是著名的C语言初级教材,都是厚厚的大部头。

我通读过它们,感觉都写得不错,都值得推荐。但是因为这两本书定位类似,内容重复,相比之下,我觉得C Primer Plus可能更适合中国读者的思维,更易读一些。

3. C Programming Language (2nd Edition)

这是最著名的C语言书籍。

但是,它不是写给初学者看的,更偏重C语言的编程技巧和算法思维。我读过两遍,还是觉得很多地方没读懂。

4. 国产教材

通常来说,国产教材质量不高,不值得推荐。但是有两本,我想特别提一下。

《零基础学C语言》,康莉等著,机械工业出版社,2009。

这本是我在图书馆里偶然捡起来的,翻了几页,发现是原创的,而且写得比较认真,代码解释详尽,行文错误少,就把它读完了。我认为,在国产教材中,这本书的质量很高,值得推荐。

《Linux C编程一站式学习》

这本书在国产书籍中罕见地采用了GFDL许可证,http://learn.akae.cn有在线阅读,可以免费下载。这一点值得高度肯定。

但是,正如前言所说,它的主要资料来源是两本英语教材《How To Think Like A Computer Scientist: Learning with C++》和《Programming from the Ground Up》,以及一些教师的上课讲义,然后拼在一起,做成一本书。所以,造成它的体系比较生硬,缺乏整体感,衔接得不好,很多地方没有做到由潜入深、循序渐进。所以,我觉得这本书不适合初学者,可以当做手册查资料。

5. Beginning Linux Programming

这是我现在正在阅读的书。我看它在Amazon上排名Linux C编程的第一位,就选了它。

它主要讲解如何用C语言调用Linux的系统API,偏重基本概念的解释,我已经读了两章,感觉还不错。

=================================

下面想听听大家的意见。

我现在的C语言,到了这样一个水平:语法已经基本掌握了,可以独立开发一些小程序。下一步,我想进一步提高C语言水平,主要用于Linux开发。

大家能不能推荐一些C语言的中级教材?

(完)

留言(103条)

直接上系统编程,停留在语言层面没什么意思。
《unix环境高级编程》

语言就像窗户,可以让你看到不同的世界

没看过K&R也敢说你会C?

这位说话很不客气啊,为什么没看过你说的那个就不能会C了?你很牛逼呗?

K&R必看, 如果你要学linux编程, 直接买《unix环境高级编程》. 然后开始在写自己需要的程序, 有什么不会再看书. 在初学阶段是要看书没错, 但是过了那个阶段, 要提高就只能多写程序, 遇到不会再来查.

还有, 其实C语言很简单, 完全没必要看那么多这类入门书. 有精力就看 这类书比较好.

C是一个比较小的语言,明面上的语法特性您上面看的那些书已经足够。进阶主要在一些技法和陷阱方面。这些书我觉得比较好:C Traps and Pitfalls、Pointers on C、Expert C Programming。其中最后那本涉及到挺多底层细节,如果您觉得看K&R有点吃力,那可能Expert C Programming也比较有难度。还有一本国内没有上市:C Programming FAQs,不过在网上可以找到内容:http://c-faq.com/。

关键还是要多读多写代码。读的方面可以看看The Standard C Library,学习C标准库是怎么实现的。还有本可能不太出名但其实非常好的书是Linux Programming by Example: The Fundamentals,它的一个特点是很多例子基于真实的GNU或UNIX代码讲解。

国内的《c程序设计》谭浩强,好像是最经典的一个。

国产教材的话裘宗燕老师的《从问题到程序》也挺不错,很适合编程的初学者。

Unix环境高级编程,+1。10年Linux C编程,看完和没看完的也有几百本了,手头留下的开发用的实体书只有Unix环境高级编程,TCP/IP详解,和Unix网络编程,都是Richard Stevens的。好些书看过了就再也不需要了,接口的东西网上有的是,而这几本书讲的是机制,是Unix C开发的生态环境。面试的时候经常听人说熟悉C开发,了解Haskell,精通Java,熟练Python,可是什么叫精通,熟练一门语言呢,还是生态系统。编译器,编译环境,运行环境,测试工具,性能评测,解释器扩展,GUI等各种支持库的框架。至于语法和标准库,这些只是用来入门的。

C语言四书五经:
《C和指针》
《C语言陷阱与缺陷》
《C专家编程》
《C语言接口与实现》

SICP,看看语言设计背后的东西你就会知道,c语言有现在这样简洁的面貌是设计上的自觉,它把理论性的东西和工程上的脏东西处理的很好,好到大部分人甚至都不知道有这事情,一切都是那么自然。
然后就是UNIX高级编程之类都工具书啦,当然,这个和c语言本身没什么关系,离体了,不过要拿c语言干活倒是必须知道这些
如果相当语言专家都话,直接看c99标准吧。

C Programming Language可以当工具书用,很薄,但是很多细节的小东西不确定了都可以查到。Beginning Linux Programming国内英文版的要170多,据说中文版翻译巨烂,我现在看英文电子书呢,很好。千万别看谭浩强的书,错误很多,坑人,还不如哈工大出的那本教材用来入门。接下来可以看看Unix网络编程,还有C专家编程什么的吧,我也还在看。

关于C语言的教材,我推荐The GNU C Programming Tutorial。
据说Richard Stallman有一次遇到了作者,要求他将这本书开源,他就照办了。
这本书也许深度有所不及,但是作为入门的教材是相当的好。章节安排合理,结构清晰,很短时间内就可以读完。

我认为看书对于补充理论来说很有意义,现阶段阮一峰可以多读下C的经典代码吧,这个对于提升能力非常快。

KK都还有很多地方没懂不应该,先把KK弄个底朝天再说

峰哥推荐,值得信赖。
其实现在不是缺少资料,是缺少耐心。

恩,我是不懂。
那再说一句:没看过CC也敢说你是程序猿?

你说你看不太懂K&R,这样应该不是语言层面的问题,而是对计算机硬件和OS的理解不足导致的。我觉得,要理解C语言,需要理解计算机原理和汇编,才能明白C语言为啥设计成那个样子。

从这个角度,推荐《深入理解计算机系统》,能让你更好的理解计算机和OS,同时这书也是很好的linux下的C语言开发入门教材。

http://sunxiunan.com/?p=1661
漫谈C语言及如何学习C语言

感谢推荐!我一直想找一本入门的书,您推荐的第一本看了几页,觉得作者的确是很有针对性的给初学者写的!百度知道那些求助都不适合我,哈哈。

引用土木坛子@比利时的发言:

峰哥推荐,值得信赖。
其实现在不是缺少资料,是缺少耐心。

土木君!没想到在这里遇到了~~~非常赞同你的说法~~缺的就是耐心啊……而且现在信息量大反而不能够很好的汲取。

其实国产的入门教材有一本值得一推,裘宗燕老师著作,比起他的译作来籍籍无名。
实际上写得很好,深入浅出。我通读过。
从问题到程序:程序设计与C语言引论(第2版)
http://images.china-pub.com/ebook195001-200000/198062/zcover.jpg
http://product.china-pub.com/198062

引用yanng的发言:

国内的《c程序设计》谭浩强,好像是最经典的一个。

这本恰恰是C入门比较糟糕的一本书。如果不是高校垄断使用也不可能有这么高的发行量。

推荐《Computer Systems: A Programmer's Perspective》 2ed,建议可以参考一下CMU的课程的online Notes。 CMU系统编程的三门课:15123 15213 15410。 上面本书是15213的课本。

可以推荐fortran方面的吗?支持峰哥。

http://book.douban.com/subject/3012360/
人民邮电出版社《c和指针》,Kenneth A.Reek著,徐波译。
在经历了谭浩强等国内的烂教材的蹂躏之后,我对c语言倍感迷茫,借由此书,才终于在某些地方豁然开朗,从此走上真正的C学习之路。

Expert C programming
强烈建议看看中文版, 我见过的翻译书中, 最正点的中文翻译了!

C语言是个比较小的语言。楼上Neutralevil的意见靠谱。

K&R讲的是C语言的语法和语义,是针对编程老手的,不是准备来教新手如何编程的。这本书,最好是买本英文本备查。新手学C,最好用把语言和基本编程方法结合在一起教的教材。

C语言与机器结合比较紧密,所以,很多概念最好是懂点汇编语言,才容易理解,最好是知道C语言中的某个特性在对应的汇编中是怎么样的。

学语言,《C专家编程》
学Linux编程,《Unix环境高级编程》

用c做整个软件的构架设计是最难的。

我觉得你看的已经够了,开始做具体的项目吧.
有不清楚的就上网查,查查就会知道还缺少哪方面的知识需要去学习,很可能并不是C语言本身的知识.

c,linux的很多资料我都是直接去查linux man page的,比如: http://www.linuxmanpages.com/

编程语言不是用来学的,是用来用的(少数语言例如lisp除外)。K&R是C作者写的东西,当然值得读,就如同说你学C++必须要读BS的书一样,通常只有读发明者的书才能更深刻的理解这个语言,不过一般而言,发明者的书不适合初学者。

我想象不出有什么语言需要看5本书之多,以我二十多年的编程经验来说,似乎没有什么语言有必要看超过两本书。直接上手开始做,才能真正掌握,而这些是看100本书都无法得到的。

对于每个语言来说,入门书有一本就够了,至于提高书,当你有了一定的编程经验后有一本也就够了。这就是我认为不需要超过两本书的原因。

至于工具书,我个人认为意义不大,因为绝大多数用于查API和基本概念的东西都有电子版,也都可以直接在网上搜到,没有必要收藏一本书(收藏一个页面或者一个google关键字要比收藏一本书方便得多)

《Unix环境高级编程》,现在linux作C开发,这本是必看的。C的语法其实很简单,看几本语法书就行了,主要是要多实践。现在c主要用在效率要求的比较高的地方和嵌入式方面,这本书主要是用于学习c跟系统的交互。

恩,最主要的是要去写。我们老板就是说,不要把东西都学会了再去干。

有个错别字:"由潜入深"

好多搞C的大拿啊。
有两个事希望大家或者博主介绍一下:
1.国内目前做C开发的都做哪些应用?
2.能够做一个类似的C++的推介?
谢啦

问下各位大大,如果是在校的非计算机专业的本科生,能怎么找到写C代码的机会呢?
我唯一想到的就是看STL,然后自己写下基本的lib。
请指教。

引用kk的发言:

没看过K&R也敢说你会C?

老兄,就你这水平也敢在这里丢人现眼。还不赶紧查查 K&R C 到底说的是那本书。
The C Programming Language[1] (aka "K&R") is the seminal book on C.

一们语言的繁荣往往得益于它所寄生的平台的繁荣。C语言生于Unix,介绍Unix的经典书籍也就那些,如上面有人提到过的“Unix环境高级编程,TCP/IP详解,和Unix网络编程,都是Richard Stevens的”。要往深处了解一们语言,就要掌握这们语言的平台和生态系统。

其实我觉得你对C语言本身的掌握到了这个程度已经足够了,那些介绍所谓C语言的各种奇技赢巧的书大可不必看,浪费时间好处又不是很多。目前我觉得另一本书更适合你《Computer Systems: A Programmer's perspective》,目前已经出了第二版了。我觉得这本书可以弥补C语言本身以及Linux编程之间的知识空缺。

学汇编,尤其是AT&T语法的汇编,学链接与装载,学习c标准库,每一个的学习难度都比C上不止一个台阶,但如果拿下了,你的C,或者说你的计算机功底,能让你轻松胜任很多工作,对计算机或者说语言的理解层次上几层台阶。我觉得这是学习一门语言的要义,我个人认为不能把语言纯当作一门工具,用它来工作在我看来是在有深刻理解后一种自然而然顺带的事。欢迎一起学习.

同推荐Richard Stevens系列,字字珠玑,Unix/Linux必备。

经典书籍上面都有列出了,,,(共三卷),K&R C作者既是C语言的创立者,是难得的一本好书.其他教材入门即可以扔掉.c primer plus可以作手册用,里面写的很详细..

不用教材,写程序就好。

博主推荐的那本蓝色的零基础学C,这个系列的书都很不错的,比如学习PHP,JAVA,MYSQL等等,都有,而且写的都挺好。不过我们学校用的是清华大学出版社的一本书,谭浩强写的,绿色封皮的,忘了叫啥名了,感觉也没啥特色。

这里的评论真是个宝库,就像楼上几位高手说的,阮兄书看多了。K&R的开篇就说了:the best to learn a language is using it.(大意如此)。我也觉得一两本书就够了,然后就是看代码,写代码。有一些*nix上的小工具代码据说挺适合阅读一下,比如coreutils的代码。

唉。。。今天遇到个女计算机硕士 只会写printf.........

认真看完了所有评论,评论意义大于文章,受教了。

《C专家编程》
《linux程序设计》
C就这两本就够了...基本熟悉linux下面的文件,网络,线程,信号量...
基础就有了,再选一个UI(随便),就可以开发小工具了...
其实吧,你把这两本书看完,练习做完,就很不错了...
我反正现在对语言都没概念了,学哪个都是coding...
木激情,

該推薦的樓上諸位都說了~
不過我覺得博主看第三本還有許多沒讀懂,說明基礎仍然不扎實,需要的是更多思考揣摩。

哈哈,锋哥,我刚整理完一个C语言速查,就看见你整理C语的书。。

https://ganquan.info/standard-c/

C语言算法比较难,其他还好。现代的语言很多语法都跟它类似的。

我感觉如果想用C语言开发程序,《C语言详解第六版》十分精彩,它的特别之处就是在于能够用软件工程的思想来介绍C语言,而且难得可贵之处就是其中很多例子举得十分其当,看的时候都会十分的敬佩作者怎么会想的如此得体,后来想想也是,已经出了六版了,而且它其中会涉及到项目,项目都是实战型的,还有代码解析,每个例子都是以实践为基础的,所以也让人看起来津津有味。
从刚开始学习C语言就被很多人告诉它属于中级语言(介于汇编与高级语言之间),特长在于底层开发,尤其它的精髓在于指针,后来随着学习的深入才发现这话的确是太对了,《C与指针》这本书也适合强化指针,如果已经有了许多基础在看就会如鱼得水一般,会对自己的指针能力得到强化,全书都是贯穿指针来讲解的。《C陷阱与缺陷》应该说是咱们的枕边书了,该书是为数不多的这么多年了,都维持原版原貌,没再版而又一直经典的书籍呀,书中介绍的许多编程技巧都太值得思考了,比如说开篇就介绍的 ==技巧,几乎好像所有人都犯过这个毛病(将=写到条件里),一个简单的变换 1==i ,就解决了,网上对谭浩强老师的书籍攻击,有很大一部分都是因为编程风格,养成一种好的编程风格确实好处太多,尤其是在编写大程序的时候。我感觉如果可以尝试编写1000行代码的程序,就尽量写的大一些,写小程序和大程序的感觉是不一样的,1000行代码的程序和10个100行的感觉可真是没法比的,乐趣当然也没法比较,也许是阶乘的关系吧。有些很有趣的算法书也可以尝试,但是初期最好看源码的,虽然很多人说源码影响理解算法精髓,当刚开始个人感觉最好还是从源码入手。数据结构也可以有效强化C语言。
非常感谢您的博客,一直在订阅,说实话,您的好多文章都对我帮助许多,给我了莫大的启示,您的好多话语也在影响我——让一名普通的大学生不断的得到成长与反思,一直都不知道怎么感谢您,也借助这个机会,想和您说句:谢谢。大学时间我一直热衷C语言编程和底层编程,希望这些文字可以给您一些参考。

看了那些书,c语言层面的东西就足够了,下一步就是牛逼加班敲代码,api调用看系统文档,程序结构看软件设计书,这阶段跟具体语言关系不大。

《C Programming Language (2nd Edition)》 这本不就是 K&R C的了吗?怎么还有评论者说没有K&R?

在补上一本,“微软C编程精粹”,关于C设计的书。

K&R 作为入门是必须要看完的,其他的都不需要。有的例子不太好理解,但是书很薄,完全能啃完。习惯了你就会发现看这本书的乐趣。不懂的可以发邮件问我:)

其实我也是想推荐《深入理解计算机系统》(最近出第三版了)。这本书一共有三部分,第一部分以C语言为例介绍了一些计算机系统里面的基本问题,对理解C语言和计算机系统特别有启发性,虽然不难,但很细致,肯定能满足你这阶段学习的需要。后面两部分基本上都是系统编程的东西,也都是以UNIX为例讲的,整个大流程的东西都讲到了,个人感觉看完后两部分就能开始动手在 UNIX上面用C做一些小东西了。
这本书整体都讲的都很清楚,中文版译的也很好,而且书中习题设计的也很好,如果遇到比较难懂而且不太容易动手做的部分(比如链接那部分,对于新手来说基本没有省时省力的动手实践的方法),还可以通过做题增加感性认识。还想深入学习或者对更具体的问题有疑问的话看参考文献就成了。

推荐了很多好教材, 万分感谢

来过好多次了,今天发现博主要学C,本人是程序员,自己主要用C++,说说体会供你参考。
个人感觉,教材有一两本好的就够了,你前边列的应该都够用了。我是好多都没看过,C语言的我主要就一本教材,是上面3号的中文版,说实话,初学者一两遍看懂倒是不正常了。
我当初入门的时候也是不懂,现在想想,其实开始不清楚的地方可以放一阵再看,一些相关的知识只看一点是很难理解的,要联系起来理解。
《Programming from the Ground Up》看过前面一点,理解内存结构对C很有帮助,后面就没怎么看了,本人英文水平也不太好,汇编也用不到。

比较重要的是要实践,多写多练。
建议你写自己用得着的小程序,少写那种写完就扔的(初学实验代码除外)练习,可以持续改进,不断完善。遇到问题查查书上的解释,直接Google一下也挺方便的。这个过程中,许多知识慢慢就掌握了。
那时候再看相关的书,就不全是“哦,原来如此”了,而是经常要“这个我也知道”呵;以博主的水平,以后可以考虑自己写一本入门书啊。

很遗憾,我是那种和C语言结婚的人。

如果你打算只是用C写一些小工具,或者没什么过高的需求,从楼上各位的回复也基本能推敲出来:看上一两本书,然后就是写代码实践之。

如果你也想成为和C语言结婚的人,除了上面大家已列出来的经典书籍必读外(国内的书我始终不推荐),我建议尝试写一些代码练练手,慢慢地写一些基本的库,然后自己实现整个标准库。

最后我想说的是,掌握汇编,至少要很轻松地读懂汇编语言写的代码(那种格式的无所谓)。

在amazon上搜“linux programming”,出来的第一条是The Linux Programming Interface: A Linux and UNIX System Programming Handbook。作者是linux man-page的maintainer。此书无论从权威性到可读性都堪称一流。另外推荐同样是nostarch出版的autotools一书。这俩本书算包括了在source tarball里能够看到的全部内容。

留言的都是牛人!
我学生一个,目前自学计算机,主要编程语言也是C。
大一时学过谭浩强的,带我入门。虽然网上骂的很多,但毕竟这本书对我来说还是带来了价值。幸亏当时学的不太好,后来看K&R相当于重新学习C。接下来看了《C专家编程》和《C陷阱与缺陷》。个人觉得学C语言上的东西这么多已经足够了。学C一定要学Linux,前面人都推荐过了,《深入理解计算机系统》(CSAPP),《UNIX环境高级编程》(APUE),两本书非常推荐。还有Richard Steven其他的《TCP/IP详解》,《UNIX网络编程》都是很好的书。《UNIX编程艺术》,《编程珠玑》也值得一看。

《你必须知道的495个C语言问题》。关注于编写代码时语法等相关细节问题的小书。很多人推荐的都是大部头,我表示不能理解,实际写代码时,书都是拿来翻的,不是拿来看的。

劝阮兄别深入学C语言了。C语言是个泥潭,陷进去了出不来。虽然阮兄很好学,但也不必样样精通。就算你很精通,也敌不过一个三年C语言编程的程序员。
我觉得您的价值还是多思考,而不是都去实践一番。人的精力毕竟有限。要做什么事情说一声,程序员一大把。
这是一个兴趣太广范的人的心声:)

C语言其实是最难的一门编程语言,难再它灵活的应用,它的底层结构。如果对硬件,计算机系统等等不是很了解的话是很难学好C的。如果仅仅需要编写一些电脑上的应用的话。建议可以尝试其他的语言

《如何学好C语言》 : http://coolshell.cn/articles/4102.html
阮一峰先生,您可以看看这个,最好订阅这个博客,会有些帮助。不知道您是出于何种目的学习 C 语言,应该根据自己的目的选择教材。在这里留言的人,包括本人,往往是有自己的专职工作,被经验限制住了自己的看法,并不一定可靠。
C 语言最权威的文档是上面网友说的 C99 标准,该文档可以在下面的地址下载:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
这个文档适合编译出错的时候查询。
学习使用 C 语言,要养成良好的习惯,就要选择好编程环境,还要有氛围良好的交流空间。尤其是对于您这样的自学者,可能会缺少一些系统性的基础知识,才产生了障碍。上面也有网友指出, K&R 是入门的书,吃透这本书不是必要的,但是可以减小以后产生基础盲点的可能性。
我的建议是,您先设计一个有一定难度的项目,并完成它。根据您的兴趣,设计一个桌面程序或网络服务,然后搜索类似的项目的源代码,在其基础上修改,完成自己的项目。这个过程中,发现什么不知道的,再去查对应的文档。查文档,看手册,要比看些教程更实用。

Next:
《C语言程序设计:现代方法(第2版)》(可选)
《C专家编程》
《C陷阱与缺陷》
Next:
《UNIX环境高级编程》

Expert C Programming

1.学计算机语言和学英语一样,可以分成两个层次。第一个层次是未入门的层次,表现为:不知道哪本书对自己有用;学了不少,感觉好像进步不大;感觉好像掌握了不少知识,但是碰到实际问题,需要真刀真枪地上,感觉还是不行;如果一段时间不用,感觉忘得很快。。。
第二个层次是入门的层次,表现在:能对各种资料自由取舍,为我所用;碰到实际问题,虽然不一定立刻就知道解决办法,但是心里有底,适当查些资料,很快就能适应;不容易遗忘,即使很长时间不搞,需要的时候,稍微热热身,就能重新捡起来。
所以,阮兄的C语言,应该还是未入门的水平。入门未入门,不是用写了多少行程序来衡量的。不要以为能看懂所谓的中级或者高级教程,就以为自己的水平就是中级或者高级了。其实中级和高级的差距,远远没有未入门和已入门的差距大。
2.学计算机语言,一定要自己动手写代码,才能真正理解。楼上几位说得很多了。
3.C语言的难度,我的理解,其实未必是语言本身。纯从语言来讲,可能Prolog还更难一些。因为C语言主要用于系统编程,所以难度主要在于理解系统的实现细节。

我时时关注你的blog,也买了两本实体书:)

这里对你学习c的目标有些疑问。我本人是DBA,工作中基本没有用c写程序的需求。在这里谈谈我学习使用c的一些感想,希望对你有些帮助。

1)通过c,逐渐了解OS。
2)利用对c的熟悉,阅读一些程序源码,进而学习到一些设计方法。
3)三不五时用c写一些小程序,热热身,将很多os的知识点温习。
4)偶尔用c写一些算法关联的小程序。
大概有这么几条。
之前项目中用c写过一批设备驱动(应用层)的移植(windows->linux),开发的感想是必需在工作中将程序所经历的各个知识点(包括语言层面、OS层面)都需要尽量的掌握。这样就会越做越熟。能把遭遇的每个知识点讲清楚其实不简单。

楼上的许多朋友开了很多书单,不少我都有。有一部分作了细读。很多经典书我都在淘宝上卖了盗版:)论斤买:)手上有实体书,偶尔翻一翻,都有收获。特别是2、3本书对同一个知识点用不同的角度阐述,收获较多。

最后作个总结:)
c就像打开os的一把钥匙、一个电筒,没这个,很难成为系统程序员。

我觉得Accelerated C++很不错,学了那个,再学习C的内存管理(指针之类的)会有快速入门的效果!

博猪就是传说中的猪脑了吧,看什么也没用。这些书都是相当基础的了,这些也看不懂还搞什么C

我现在想学习网络攻防的东西 但是我的c语言太差了我想从头开始学习,请问那本书比较全面的讲解c 谭浩强的入门书籍我看过

引用Vix的发言:

土木君!没想到在这里遇到了~~~非常赞同你的说法~~缺的就是耐心啊……而且现在信息量大反而不能够很好的汲取。

很赞同

博主看的都是英文版的,这说明博主已经是一个高手了,《Unix环境高级编程》不错,我之前看过一段时间,看得很吃力,不过书的确不错,现在因为其它事情就停下来了

引用cndj的发言:

其实C语言很简单, 完全没必要看那么多这类入门书. 有精力就看 这类书比较好.

这位兄弟说的我赞同,停留在语言层面没什么意思,也没有意义,用它来做东西才是意义所在,我是计划学完第一遍《Unix环境高级编程》后就开始参考Apache或Nginx写Http服务器的,但是因为其它一些事情就停下来

引用ning的发言:

Unix环境高级编程,+1。10年Linux C编程,看完和没看完的也有几百本了,手头留下的开发用的实体书只有Unix环境高级编程,TCP/IP详解,和Unix网络编程,都是Richard Stevens的。

这位前辈是高手啊,已经有10年Linux C编程经验了

引用hqs的发言:

用c做整个软件的构架设计是最难的。

非常赞同你的说法,看过一些大型程序的源代码,架构设计的确是最难和最有最有创造性的

unix/linux 编程实践 这本不知名的书籍要强烈推荐。
其它就是著名的 unix环境编程 unix网络编程
如果都会了,我觉得可以再来学pyhon, python+python库具备c+ c各种库的所有功能,好用易懂优雅,是快速开发的良好选择,因为有了C 和 unix 的基础, 对python各种库也能很轻松掌握。

引用YetAnother无证程序员的发言:

其实我觉得你对C语言本身的掌握到了这个程度已经足够了,那些介绍所谓C语言的各种奇技赢巧的书大可不必看,浪费时间好处又不是很多。目前我觉得另一本书更适合你《Computer Systems: A Programmer's perspective》,目前已经出了第二版了。我觉得这本书可以弥补C语言本身以及Linux编程之间的知识空缺。

支持,实践才是最好的证明。

之前在图书馆看过两本书《C语言的科学和艺术》(《The Art and Science of C》),《C程序设计的抽象思维》(《Programming Abstractions in C》),都是罗伯茨写的,是斯坦福大学的教材,非常不错,尤其是第二本,这两本不能算是语法书,总结了程序设计的思想,各种数据结构的实现,通过头文件作为接口,几乎实现了面向对象,代码也很规范,命名很地道,读起来很舒服,两本书我都买来珍藏了。
PS:相比之下,谭浩强的那本简直弱爆了,纯粹误人子弟啊。

C Programming Language
这本蛮好的,我在网上下的PDF看了中文以后...去买了一本英文实体书...

引用K&R的发言:

博猪就是传说中的猪脑了吧,看什么也没用。这些书都是相当基础的了,这些也看不懂还搞什么C

您这么说,我等都是石头脑子了,当然也不曾想望您项背。本来一个讨论式的回帖,竟招来如此喷子。

引用风吟的发言:

哈哈,锋哥,我刚整理完一个C语言速查,就看见你整理C语的书。。

https://ganquan.info/standard-c/

C语言算法比较难,其他还好。现代的语言很多语法都跟它类似的。

已经加入收藏夹,非常感谢!

引用Neutralevil的发言:

还有一本国内没有上市:C Programming FAQs,不过在网上可以找到内容:http://c-faq.com/。

这书图灵出过,中文版的名字是《你必须知道的495个C语言问题》:http://book.douban.com/subject/3422332/

引用Neutralevil的发言:
关键还是要多读多写代码。读的方面可以看看The Standard C Library,学习C标准库是怎么实现的。

图灵的中文版《C标准库》:http://www.ituring.com.cn/book/317

引用kk的发言:

没看过K&R也敢说你会C?

C Programming Language 这个不就是么

看《黑客与画家》里面作者格雷厄姆就说过C语言的教材"The C Programming Language"是写得非常好的,语法用示例阐述得很明白。我看过两遍,觉得有它就够打基础的了。精力有限,没有必有看那么多书

语言仅仅是个工具,重要的还是原理吧?

看了你的文章,认为你提的这个应该不是一个能困惑到你的问题了。

范磊老师的《零起点学通C语言》这本不错

非常强烈推荐地你看看这本《C语言其实很简单》,新出版的书。确实很接地气,很好玩,很另类的书。漫画顺口溜还一大堆,还有很独特的学习方法。看了指针那章,那些方法简直从未听说过(我也读了不少书都没有),没费什么劲指针我感觉指针就掌握到高手的境界了,简直是一绝!

最近买了一本《C语言其实很简单》,读了几章,那叫眼前一亮的说,讲的太好了!学习方法很独特,看过这么多C语言教材是我从未见过的,可谓经典的一本!这样的方法和叙述风格初学者学起来会很轻松。这是刚刚新出版的书,你应该吧这本也加上介绍或评论

楼上的也看过这本?英雄所见略同的说,握手:)

引用kk的发言:

没看过K&R也敢说你会C?

那本C Programming Language (2nd Edition)不就是K&R吗?这哥们是不是不懂装懂呀?

大家推荐的确实有不少相当经典。不过,谭浩强的那本真是不敢恭维,举例子都用数据库那方面的,干脆讲office得了。

请问什么是K&R?

最近在看C专家编程。s

part 1:

技术:C Traps and Pitfalls、Pointers on C、Expert C Programming、C Interfaces and Implementations:Techniques for Creating Reusable Software,这五本书,够够的了!

辅助进阶:21st Century C(中文名:C程序设计新思维)、Advanced C and C++Compiling、C Programming FAQs:Frequently Asked Questions。

算法:Mastering Algorithms with C。

机制:The Art of UNIX Programming、Advanced Programming in the UNIX Environment,Third Edition、UNIX Network Programming,Volume 2:Interprocess Communications,2nd Edition、Unix Network Programming,Volume 1:The Sockets Networking API,3rd Edition,这四本书,够够的了!

其他:操作系统(Modern operating systems (fourth edition)、Operating Systems:internals and Design Principles,eighth Edition、Computer Systems:A Programmer's Perspective)三选一。

part 2:

其他(选读):Hackers and Painters Big Ideas from the Computer Age(黑客与画家)、The Art of Deception:Controlling the Human Element of Security(反欺骗的艺术)、The Art of Intrusion:The Real Stories Behind the Exploits of Hackers,Intruders and Deceivers(反入侵的艺术)、The Art of Deception(欺骗的艺术)、The Cathedral & the Bazaar:Musings on Linux and Open Source by an Accidental Revolutionary(大教堂与集市)、Hackers: Heroes of the Computer Revolution(黑客:计算机革命的英雄)、The Hacker Ethic and the Spirit of the Information Age(黑客伦理与信息时代精神)

提升自己就看上面的书,学学玩就看国内那些无聊的渣吧。

谭浩强的书是对计算机科学的侮辱!谭浩强的书是对计算机科学的侮辱!谭浩强的书是对计算机科学的侮辱!重要的事情说三遍。

补充两本:

The Art and Science of C、C: A Reference Manual, 5th Edition

对于基础入门,说点,K&R 的书所描述的内容(标准)太陈旧了。不建议学习。很早看过 C Primer Plus 5th,虽然描述的标准是C99,但写的很赞,推荐初学者。第六版太厚了,会吓跑初学者的。

另外,有些基础了,建议读读lisp的书,比如Common LISP: A Gentle Introduction to Symbolic Computation,很可惜这书没有中文版。

这年头还有人提k&r?这种过时的书除了能提出来装逼外还能干什么?那些提k&r的你真的看完了?怕是你只写过一个helloworld吧

作为一个前端还没学明白的程序员,大学也有学过C语言,现在正在react开发,目前还找不到学习C理由(但感觉会非常有用),但是看了评论,却发现了一个更重要问题——学习方法。

有人建议:看什么书,拿起来就是干,边写边找问题也就边解决问题;说实话,我觉得能做到这种程度的人还是要有些基础的,最起码你能够写出个90%出来,剩下在慢慢调试调试。

可是对于一个连前期90%都写不出来,你让他如何一边写代码一边翻书找找解决办法,这会很难的,而且对于一切都非常陌生的人来说是很绝望的,感觉看不到任何希望。

其实,我推荐的一种方法是:对于一个东西,最起码你要先知道一个整体大概流程,并且也熟悉相关语法,再才可能边写边查问题。可是我还是很关系基础东西,因为程序都是由一行行代码拼接成的,如何一个语法或者用法错了,都会导致程序运行报错,不说一定要等到所有基础都非常牢固了才写代码,但好歹基础都要知道的,出了问题还明白是哪个出了问题。

说实话,我不太习惯像个无头苍蝇拆了东墙补西墙的写代码方式,这是极其低效并且事倍功半的,一个项目下来虽然收获了些东西,但还是收效甚微。

以上只是个人看法,毕竟对这一行还是非常了解,很多东西也还是在摸索中,希望各位前辈有更好的建议,也可以给我这菜鸟指教指教!!!

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接