c语言入门买什么书好
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。
一、要读就读好书,否则不如不读
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。
大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:)
Kernighan和 Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。
如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
二、Unix/Linux还是Windows,这是个很大的问题
不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉 Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。
对于一个只懂得Windows基本操作、连 DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C 语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。
所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。
等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格(说到代码风格,我会专门写一篇文章详细叙述)。
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
三、万事俱备,你就是东风
书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清 Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
写到最后,还有非常非常重要的一点没有提及──代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专门的一篇文章来详细讨论,请大家关注《程序员之路──关于代码风格》。
想看国内的还是国外的?
国内的看谭浩强的《c语言程序设计》,虽然褒贬不一,不过依然是本很好的教材。国外的就选《C Primer Plus》,C语言的入门经典,很厚的一本书(初学者千万别被吓到……),课后习题一定要都自己做了,这本书会让你打下很牢的基础。
综合来说,毕竟是国人,先看看谭浩强的吧,《C Primer Plus》对初学者来说啃起来很难,看完谭的再看《C Primer Plus》会好很多。
注:另外也可以看《Head First C》,虽然我没看过,但Head First 系列评价一直不错,我看的是这系列中的Python教程,编书的风格很好,如果不喜欢教科书式的枯燥内容,Head First系列就是不错的选择,让你的学习不那么枯燥并且快速入门。看完后再看《C Primer Plus》(当然其他c语言基础教程书也行),绝对可以事半功倍。
看到别的评论说到指针,虽说对初学者来说有点早,不过我也补充一下(不知道指针的话可以先略过下面这段话):对于指针,记住一句话:“指针中存的是地址。”这也是指针的定义,永远不要忘了这句话,万变不离其宗,指针函数、函数指针、数组指针、指针数组、常量指针、指针常量、指向常量的常量指针……很头疼的东西,但不要觉得它难,觉得难只会让它越来越难,第一次学学不透不要紧,知道基本概念即可。学完了c再回头来看指针,抓住它定义的那句话,无非就是一个存地址的。以前我也混乱过,然后清晰了,然后又混乱……周而复始,混乱的时候无一例外都是被指针指来指去搞晕了,而忘记了它的定义——一个存地址的。后来看了一本书,名字我忘了,好像是C和指针,很薄的一本书,很经典的教材,这才算彻底理清了指针,也把指针中存的是地址这句话真正记在了心上,然后任何复杂的例子都是一眼明了,当同学还在为指针困惑时,我也在为他困惑:这么简单的例子有什么好困惑的?(哈哈,当时确实被同学们奉为大神了,允许我装一下)。所以对于指针不要怕,记住它的本意,再复杂的例子也可以由里到外慢慢肢解,第一遍看不透不要急眼,过后再看,有了基础可以再找一找c和指针这本书,它会让你豁然开朗。
如果是自学的话,最好不要看潭浩强的书,他喜欢用数学公式做例题,不适合初学者或自学。
其实潭浩强的书并不怎么样,比国外的教程差远了,只是国内高校缺乏创新意识,跟风现象严重,从高校到职校,《C程序设计》几乎人手一本,这才创下了“发行量第一”现象。而且潭浩强已公开表示:不再就他的书回答任何技术性的问题!这分明是对自己技术没信心、落后于时代的表现。
学习C语言阔以莱这个裙,前面是497,中间是594,最后是374,组合起来就可以找到,我想说的是,除非你是对学习非常热爱,如果只是凑热闹的话,就不要来了
国外教程:
《21天学通C语言》
《C语言三日通》(很多人国外自学者都是看了这本书才入门的,所用的例题简单易懂)
再介绍以下两本真正经典的教材:
1.《The C Programming Language》
2.《Expert C Programming --- Deep C Secrets》
如果E文好就看原版,否则只有买译本了。
强调一句:如果您是自学(初学者),千万别表谭浩强的书,否则你很难看懂。他的书到处都是,您自己找一本先体验一下就知道了
1、基础(C语言入门,初学,编程基础)
《C语言程序设计:现代方法》(第2版)(C
Programming: A Modern Approach, 2nd Edition, K.N.King)
《深入理解计算机系统》(修订版或第2版)(Computer Systems: A Programmer's Perspective,
Randal E. Bryant et al),阅读建议
《C语言程序设计》(第2版)(The
C Programming Language, Brian W. Kernighan & Dennis M.
Ritchie)
《程序员修炼之道》(The
Pragmatic Programmer: From Journeyman to master, Andy
Hunt & Dave Thomas)
2、内核/驱动
《Linux内核设计与实现》(第3版)(Linux
Kernel Development, 3rd Edition, Robert Love)
《Linux设备驱动程序》(第3版)(Linux
Device Driver, 3rd Edition, Jonathan Corbet et al)
《深入Linux内核架构》(Professional
Linux Kernel Architecture, Wolfgang Mauerer)
3、应用
《UNIX网络编程》(Unix
Network Programming, W. Richard Stevens)
《UNIX环境高级编程》(Advanced
Programming in the UNIX Environment, W. Richard Stevens)
4、进阶
《C陷阱与缺陷》(C Traps and Pitfalls, Andrew Koenig)
《C专家编程》(Expert C Programming, Peter
van der Linden)
《ARM嵌入式系统开发:软件设计与优化》(ARM
System Developer's Guide: Designing and Optimizing System Software,
Andrew Sloss et al)
我建议你买《C Prime Plus 中文第6版》和《C语言从入门到精通 陈长生 杨玉兰等编著》,这两本书都挺不错的,都是最新出版的,涵盖了C语言的最新的内容,讲解也通俗易懂,还有就是每个知识点都要相应的范例程序和程序讲解部分,很好地帮助读者理解。
如果是为了考试,就买清华大学出版社的谭浩强的《C语言程序设计》。
如果是为了学习,任何的C语言都比那本好建议《C语言入门经典》。然后多去论坛看看,多写程序多交流。
推荐<C程序设计语言>,<C与指针>,<C专家编程>,个人认为比其他书好太多了。
另外,最好别看国内作者的,存在被耽误的风险。
c语言入门自学书籍
1、常用的C语言入门书籍有《C Primer Plus》和《C语言程序设计》两本。2、《C Primer Plus》是C语言的经典教材。《C Primer Plus》是2005年2月人民邮电出版社出版的图书,作者Stephen Prata。3、《C语言程序设计》讲述了C语言的基本概念、各种数据类型的使用技巧、程序流程控制、数组、函数、指针以及...
想了解汉语言应该看哪些书比较好?
如果你想了解汉语言,以下是一些推荐的书籍:1.《汉语教程》(NewPracticalChineseReader)是一套非常实用的教材,适合初学者。它包含了丰富的课文和练习,帮助学生掌握基本的词汇、语法和句型。2.《汉字源流字典》是一本介绍汉字起源和发展的字典。它详细解释了每个汉字的形状、结构和意义,对于理解汉字的...
语言学入门的必读书籍有哪些值得推荐?
语言学入门的必读书籍有很多值得推荐,就比如说《语言学概论》,《语言学》,这两本书都是在语言学领域比较知名的和权威的书籍,在学习语言学的时候很值得去读。
自学英语入门买什么书好
想要学好英语,选择合适的教材书籍非常重要,它可以帮助我们更好地学习英语。下面就来说说自学英语入门买什么书好,一起来看看吧!(1)剑桥商务英语BEC 这套教材继承了国外教材的精华,非常实用!具体来说,BEC是根据不同的业务场景进行编译的,并扩展到相关的对话、词汇和主题。如果你比较一下同一领域的国内...
C语言从入门到进阶有哪些可以书籍推荐一下?
《程序员修炼之道》 - 算法与时间管理的基石,助你提升编程效率和思维深度。《C和指针》 - 精准入门教材,深入浅出地讲解指针在C语言中的作用。进阶篇:《C Primer plus》 - 一本值得珍藏的书籍,多次阅读让你理解更深入,解决疑惑,启发思考。《高质量程序设计指南》 - 国内优秀之作,对计算机专业...
0基础学英语是系统书籍好还是简单的学口语
当然是系统书籍好,简单学口语没有什么用。适合零基础英语学习者的入门教材有:《新概念英语》《Listen To This》和薄冰英语语法系列等。零基础学英语要从哪里开始 入手先要完成两件事,一是学会读英语,二是学会查字典。英语是拼音语言,拼音语言的本质是用字母记录发音。如果你不会读,那英语基本上没...
适合英语入门看的书籍有什么
学好英语不仅需要多背单词多做题,还要多看书,这样你的理论知识才能得到丰富。下面就来说说适合英语入门看的书籍有什么,一起来看看吧!一.《新概念英语》系列 第一册:学习英语的基础内容。练习基本的语音、语调和基本的英语语法、词法、句法和句子结构。学好第一本书是练习基本英语技能的关键。适合英语...
在家自学英语需要买哪些书?哪些书是很值得推荐的?
主要就在于他特别适合自学入门。整个教材答案齐备,语言资料完备且权威。对于想要自学的人士,完全可以从这套教材入手,那是不可多得的自学好教材。2. 《语法新思维》不用讲了,这套教材确实非常优秀。本套书从更宏观思维的角度来给我们分析讲解英语的语法结构。如果你能够耐着性子,认认真真将这套书共...
学习语言学看什么书
1、如果你要看英语的书,近年来读的人最多、用作考研参考书最多的应该是胡壮麟的《语言学教程》,不知道现在是第几版了,比较经典和全面,体例也比较适合中国读者。如果你觉得胡壮麟的这本趣味性不够,也可以读Yule的Study of Language,好像也是第n版了。这本写的很有趣,既适合初学者入门,也适合...
有哪些语言学方面的书籍值得推荐
1、普通语言学教程 [瑞士]费尔迪南·德·索绪尔(1857—1913)著,高名凯根据法文原本译,岑麒祥、叶蜚声校注。商务印书馆 1980年11月初版本,1985年2月第3次印本。2、语言论——言语研究导论 [美]爱德华·萨丕尔(1884—1939)著,陆卓元译,陆志韦校订,商务印书馆1964年2月初版,1985年 2月...
主殷盘得: 您好,作为一个自学的过来人,强烈建议你不要学什么谭浩强,绝对一学一个坑. 下面我先把C语言的相关书单奉上: 个人意见如下: 入门:《C语言程序设计-现代方法》、《C primer plus》,不推荐K&B的C语言程序设计,写的太古板,可以当参考手册用. 进阶:《C和指针》、《C陷阱与缺陷》、《C专家编程》等. 高阶:《C标准库》,顺便学习《数据结构》,用C语言将数据结构里的东西全部自己实现一边. 精通:学无止境,我也不知道什么是精通!!!
中原区13211218992: 我想学C语言编程买什么书合适! - ?
主殷盘得: 你就买本《C语言程序与设计》谭浩强版的,这本书史公认C语言初学者最好的学习资料,现在90%高校都在使用此教材,这是我QQ:407663385
中原区13211218992: c语言入门好书 推荐 - ?
主殷盘得: 强烈推荐《C语言入门经典》!!!!!!谭浩强的书前几章的例子几乎都是数学题,枯燥没意思.《C语言入门经典》例子简单生活化,而且每个例子分析很细.章节安排合理,章末的例子还特别注重思路的引导,
中原区13211218992: 请问有什么好的《c语言》入门书本?? - ?
主殷盘得: 《C语言程序设计》高等教育出版社 何钦铭 我也在用,易懂不复杂,不错
中原区13211218992: C语言入门学习应该买哪些书籍 - ?
主殷盘得: 如果想以后深入的话 不推荐国内的书(谭浩强的过分注重语法细节,而且讲得不深入,代码风格也不好) 如果只是学一下,以后没想过要深入编程的话 可以看 谭的书(大学都用这书) 国外的经典 我推荐《c primer plus》 这本600页左右 内容注...
中原区13211218992: C语言初学者应该看什么书籍 - ?
主殷盘得: 针对考试的书籍都比较简单易懂,譬如:高教出版社的二级C语言程序设计,谭浩强老师的C语言程序设计,清华大学版,先入门再学起来相对比较轻松易懂.之后可以找找实例分析一下,自己尝试着写,熟能生巧.
中原区13211218992: 初学C语言该用什么书呢??
主殷盘得: 首先:C语言入门相对比较简单,但如果想成为一个优秀的C程序员,需要很艰苦的训练,多读代码,多练习,多上机操作,多思考,学习是一件辛苦的事情,要放弃很多东西,要坚持下来才可以,可以说C语言是基础,将来想学其他的C++,...
中原区13211218992: 零基础自学c语言用哪本书好? - ?
主殷盘得: 全国高等教育自学考试制定教材 计算机及应用专业 高级语言程序设计
中原区13211218992: C语言入门教材哪本较适合新手用?如上. ?
主殷盘得: 谭浩强的《C语言程序设计》 电子版下载地址: 《21天学通C语言》,这两本书各有各特点,都是入门的好书,第二本网上也有电子版的,可惜大多数的都是超星格式,pdf格式的比较难找.建议还是到书店买纸质的比较好,看起来方便.
中原区13211218992: 请问:初学C语言选那本书比较好呢?1.C语言是一种纯语言吗,它包 ?
主殷盘得: 1.初学者《c程序设计》谭浩强,很多大学都用这本书. 2.更进一步,学习算法《啊哈!算法》,入门级别,浅显易懂. 3.竞赛类,刘汝佳《算法竞赛入门经典》,庄俊元等人翻译的《挑战程序设计》.