想自学C语言,有哪些书值得一看?
C语言是老外发明的,有条件还是要看老外的教材,最好是英文版的,这是最原汁原味的。英文不好的同学最好也是选择一个老外教材的中文版。我推荐两本教材,一本是谭教授的C程序设计,还有一本是C Primer Plus最新版。
一、C程序设计
这本书很适合完全不懂C语言的初学者入门,但是一些基本的计算机概念还是要知道的,比如CPU、内存、文件、计算机原理等。
C程序设计这本书用词上通俗易懂,没有什么晦涩难懂的东西,只要你认字基本上理解不会有啥问题。
整本书结构安排也很合理,从最简单的C语言介绍,到基本数据结构,到C程序三大控制结构,函数等,一直到最后的文件操作,一步步的由浅入深。
C程序设计每章的课后习题也很有针对性,针对章节中的知识点。建议把习题做一遍,这样会加深对C语言知识点的理解。
二、C Primer Plus
看完C程序设计这本教材后可以再看看C Primer Plus这本书。这本书是老外写的。
老外写教材有一个最大的特点,就是比较啰嗦。对一个知识点会用较多的篇幅来讲,而且语言也比较口语化。所以需要学习的同学有点耐心看完全书。
书中会有大量的C程序代码案例,随着知识点不断的深入,会把不完善的C程序代码不断的完善,你要特别注意在完善C程序代码中的知识点。
这本书课后的习题也很有特色,比较偏应用。建议把习题都做一遍,边做边总结,加深C语言的知识点。
上面是推荐的两本C程序设计的书。后续可根据自己的实际情况选择其他的C程序的书籍。
如果题主学C语言只是用来对付考试或者计算机二级的话,就看谭浩强的那本《C语言程序设计》吧,作为一枚C程序员,就这么说,他的书只适合拿来考试,完全不能用来做实际编程的参考。
题主如果是想以后从事编程方面工作的话,作为初学者可以看Stephen Prata的《C primer plus》,KennethA.Reek的《C和指针》,后期对C语言有一定理解之后,Dennis M·Ritchie(C语言之父)的《The C Programming Language》一定不要错过了,这本书很值得细细品味。
如果题主的英语水平不错的话强力推荐看英文原版。
学习C语言的话,可以买一本 《明解C语言入门篇 》来入门,这本书讲的通俗易懂,很适合初学者阅读学习。后续还可以看看 《C primer plus》学习一些更深层次的知识点。我个人认为这两本书在学习 C语言时是值得一看的。祝你学有所得。
学习数据结构,有什么好的书籍可以推荐?
计科专业从事软件开发多年,在学校里面数据结构这个课程开设过,基本上第一次学习数据结构C语言版本脑子几乎都是晕乎的,因为搞不懂指针来回指向,后来跟一个前辈请教如何学这东西,先把指针彻底搞明白,然后再学习数据模型,最后一步直接用C语言代码来实现,开始不要尝试着都能给搞明白,基础不够很难理解透彻,于是专门拿出时间把C语言的指针研究了一遍,由于当时不像现在的互联网上资料那么多, 只能在网上找点抽象的例子进行研究,对指针彻底的了解是看了林锐博士写的高质量C/C++编程,里面对指针的介绍特别深刻,从此指针也就慢慢理解了。
掌握了指针之后再去搞数据结构,想比之前已经轻松太多了,也不要太着急直接去尝试搞代码先把数据模型搞明白,数据模型是连接数据的桥梁,链表,队列,栈,二叉树等等概念,然后了解每个数据模型的数据结构,以及需要做的动作,在没写代码之前先把这些数据模型要做什么事情搞清楚,然后才去尝试写代码,一般来讲第一个模型写的比较费劲后面就以次类推了,万事开头难,数据结构书本主要分为多种编程语言的,有C语言,C++,java版本数据机构,对于这类的书籍讲解差异不是很大,没有必要太过追求那本书,主要是还是模型思想和代码实现.
学习数据结构有什么用?
现在就拿自己从事的行业来讲,C/C++,数据结构算是基本功,设计一个功能模块除了选择编程语言之外剩下的就是构造数据模型,在C语言里面叫结构体,在C++里面属于类,如何设计有时候就会借助数据结构里面的基本模型,常见的编程模型里面队列和链表用的比较多,一般的设计模型中都会涉及到消息队列,就是典型的一种数据模型,如果有数据结构基础这些东西理解起来就非常快,所谓的编程基础除了基本的编程语法基础还有数据模型等基础。
- 学习数据结构也非常有助于算法理解,再复杂的算法也是由基础的数据结构算法构造起来的,任何一种算法也不是什么空中楼阁都是无数个小的基础算法堆积起来的,没有这些基础直接从事算法的学习,几乎是不太可能的事情。
- 懂得常见的数据结构模型,更容易看懂大型的项目的代码,拿到一份源码首先要梳理的是功能列表以及里面数据内容的传递,懂数据结构对于理解框架非常有好处,要玩大型的项目,先从看懂基础的代码开始,研究代码需要一定的基础,有了模型概念对于有框架的代码研究起来快一些。
在刚入行的时候经常听到老程序员说到,一个新的功能模块只要数据结构都梳理清楚了,就可以考虑写代码了,不要看一个功能模块里面一个小小的类或者结构体,里面每个变量可能都会串联着一串功能,所以一个结构体设计完毕了,基本功能模块也就设计清楚了。
很多初学者都有这么一个不好的习惯,一边写着代码代码一边设计思路,这是编程大忌,编程首先要思路清晰,代码只是把你的思路展示出来,具体的实现好坏就要看基本功了,同样的功能不同的设计人员设计出来会有截然不同的效果,在性质以及实现效果上都有所差异,本质来讲是实力的差异,所以写代码的就是为了实现既定的思路,数据结构是设计结构体或者类的基本依据。
希望能帮到你。