自己博客上的文章
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。
那么究竟怎样学习C语言呢?
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo?C?2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo?C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo?C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。?
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。
那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。
如何学习?
找一些项目来做,多做项目,才能真正学到东西
网站:
www.codeguru.com
www.codeproject.com
www.vckbase.com
www.csdn.net
软件:
http://www.codeguru.cn/fav/soft.htm
教程:
C函数实例参考手册
http://www.codeguru.cn/CPP/CExample/
C\C++实例参考手册
http://www.codeguru.cn/CPP/cppExample/
Win32Api实例参考手册
http://www.codeguru.cn/VC%26MFC/Win32ApiExample/
MFC实例参考手册
http://www.codeguru.cn/VC&MFC/MFCExample/
HTML实例参考手册
http://www.codeguru.cn/HTML/HtmlExample
Transact-SQL实例参考手册
http://www.codeguru.cn/Script/TransactSQLExample
ASP对象实例参考手册
http://www.codeguru.cn/Script/ASPObjectExample
Windows脚本实例参考手册
http://www.codeguru.cn/Script/WinScriptExample
十部算法经典著作 合集
http://www.codeguru.cn/cpp/10book
二级试题全集
http://www.codeguru.cn/cpp/2JiCShiTiJi
高质量C++/C编程指南
http://www.codeguru.cn/cpp/AdvanceC++-CProgramGuide
应用C++技术构建优质软件
http://www.codeguru.cn/cpp/AppliedCpp
ASCII码表
http://www.codeguru.cn/cpp/ASCII
C\C++语言程序百例
http://www.codeguru.cn/cpp/C&&C++YuanYanChenXuBaili
C++编码规范与指导
http://www.codeguru.cn/cpp/C++CodingGuide
C++PrimerPlus4th
http://www.codeguru.cn/cpp/C++PrimerPlus4th
C++语言程序设计课件(作者:郑莉)
http://www.codeguru.cn/cpp/C++ProgramingZhengLi
C++语言程序设计
http://www.codeguru.cn/cpp/C++YuYanChengXuSheJi
C语言函数示例集
http://www.codeguru.cn/cpp/CFunctionExamples
C高级编程技术
http://www.codeguru.cn/cpp/CGaoJiBianCheng
C语言技术文章
http://www.codeguru.cn/cpp/CLanguageArticle
C++疑难解答
http://www.codeguru.cn/cpp/CppAQ
C++实践之路
http://www.codeguru.cn/cpp/CppInAction
C++应用程序例解
http://www.codeguru.cn/cpp/CppProgramLiJie
C++参考
http://www.codeguru.cn/cpp/cppreference
CPrimerPlus5thEdition习题答案
http://www.codeguru.cn/cpp/CPrimerPlus5thEditionAnswer
C语言编程宝典之一
http://www.codeguru.cn/cpp/Cprogramdict
C语言参考手册
http://www.codeguru.cn/cpp/Creference
C语言学习和精华文摘
http://www.codeguru.cn/cpp/CStudyAndArticle
数据访问模式
http://www.codeguru.cn/cpp/DataAccessPatterns
数据结构与算法综合资料库
http://www.codeguru.cn/cpp/DataStructsLibrary
数据结构-严蔚敏
http://www.codeguru.cn/cpp/DataStructYanWeiMin
Effective C++
http://www.codeguru.cn/cpp/EffectiveCpp
GenericProgramming
http://www.codeguru.cn/cpp/GenericProgramming
设计模式迷你手册
http://www.codeguru.cn/cpp/MiniDesignPattern
经典排序算法
http://www.codeguru.cn/cpp/SortingAlgorithms
谭浩强C语言
http://www.codeguru.cn/cpp/TanHaoQiangC
TheC++ProgrammingLanguage3rdEd
http://www.codeguru.cn/cpp/TheC++ProgrammingLanguage3rdEd
TheCprogrammingLanguage
http://www.codeguru.cn/cpp/TheCprogrammingLanguage
TurboC2.0集成开发环境的使用
http://www.codeguru.cn/cpp/TurboC2ShiYong
用VC开发ACTIVEX
http://www.codeguru.cn/VC&MFC/ActiveXProgramingWithVC
用DirctX9进行高级3D游戏程序设计
http://www.codeguru.cn/VC&MFC/Advanced3DGameProgrammingwithDirectX9
APracticalGuideUsingVisual C++andATL
http://www.codeguru.cn/VC&MFC/APracticalGuideUsingVisualCandATL
21天学会VC数据库编程
http://www.codeguru.cn/VC&MFC/DatabaseProgrammingWithVisualC6In21Days
STL轻松入门
http://www.codeguru.cn/VC&MFC/EasySTL
InsideAtl
http://www.codeguru.cn/VC&MFC/InsideAtl
COM+组件服务技术内幕
http://www.codeguru.cn/VC&MFC/InsideCOM+
MFC参考手册
http://www.codeguru.cn/VC&MFC/MFCReference
Windows网络编程技术
http://www.codeguru.cn/VC&MFC/NetworkProgramingForMicrosoftWindows
OGRE手册
http://www.codeguru.cn/VC&MFC/OGREManual
OpenGL基础图形编程
http://www.codeguru.cn/VC&MFC/OpenGLJiChuTuXingBianCheng
MFC程序设计
http://www.codeguru.cn/VC&MFC/progmfc2
VC技术内幕
http://www.codeguru.cn/VC&MFC/ProgramingVC
Windows核心编程
http://www.codeguru.cn/VC&MFC/ProgrammingApplicationsforMicrosoftWindows
21天学会ActiveX编程
http://www.codeguru.cn/VC&MFC/TeachYourselfActivexIn21Days
游戏编程大师技巧(第二版)
http://www.codeguru.cn/VC&MFC/TricksofWinGameProgrammingGurus2ed
VC编程经验总结
http://www.codeguru.cn/VC&MFC/VCBianChengJianYanZongJie
VC编程资料
http://www.codeguru.cn/VC&MFC/VCBianChengZiliao
VC常见问题集(中文)
http://www.codeguru.cn/VC&MFC/VCFaqsCN
VC高级编程
http://www.codeguru.cn/VC&MFC/VCGaoJiBianCheng
vchome图形图像编程技术篇
http://www.codeguru.cn/VC&MFC/vchomeGraph
VC知识库
http://www.codeguru.cn/VC&MFC/vckbase
VC语言参考手册
http://www.codeguru.cn/VC&MFC/VCLANG
vc++ 编程指南
http://www.codeguru.cn/VC&MFC/VCProgramGuide
Windows程序设计
http://www.codeguru.cn/VC&MFC/WindowsProgramming
Winsock程序员疑难解答
http://www.codeguru.cn/VC&MFC/WinsockProgrammerFAQ
Microsoft编程精粹
http://www.codeguru.cn/VC&MFC/WritingCleanCode
我是学C语言的,现在刚刚学完C++ ,,,对于你提出的问题,我想,我认为啊,应该没有谁能做出正确的选择。
C语言,对于初学者来说,真是个难题,我刚开始学的时候,也很头痛。锁事都有一个原理,难者不会,会者不难。。
C语言更为蹊跷,刚开始,你学的不懂,更有可能的就是学点忘点。很多好学的学生,总是在一个问题上叫,不会,我就要弄懂。这种思想,是学不了语言的,编程不讲一个问题,你应该买些辅助工具书,来看一看,不要太认真,平时可以和同学探讨一下问题,这样增加记忆。
更重要的是,想学好C语言,不是个很简单的事,如果说,不像语文英语一样,学过了,记下了,平时练练口语什么的。就可以了。C有很大的不一样,学过了,记下了,平时练练学过的什么。这学的,你记下了,后学的,你也记下了,返过来,你只学会了,书面的东西。
多说什么我也挺累的,打字也不好玩!!!简单的说,想学好C语言,就不能报着一定要学好的心理。计算机,不是固定的。你把你这个学期的认务,初步的学完了。抽出时间,返回来,从头开始,这时你会感觉,哎!C语言原来也是很简单的事啊。很一遍感觉难的地方,你都可以解决了,不是你学会了这些。是因为C语言就像食物连一样,最后的,也和最前的结合。如果你想学到哪,弄懂到哪,这样,你的压力可能大于你的心理承受能力。学会我服你,学不会正常。
我也就是这样了,也没有太好的学习方法。只知道,编程是要学几遍才可以懂的事。 谢谢观赏
如果有英语方面好的学习方法,介绍给我,thank you
我学英语,怎么也是学不会,单词,背过了,返回来,再背一遍,一说单词,我都快知道,在那列那行了,就是不会用,结合不起来。一起一整页英语,我就头痛。。。
学习任何一种语言,有一本好的教材是很重要的,编的不好的教材会造成一些错误或不全面的理解。必须要注重动手的能力,学到一定的程度后,要尝试去写一些应用程序。注意循序渐进的方法,勿太好高骛远。