给初学C语言的童鞋几点建议
写本文,主要是在论坛看到有几个人发贴咨询如何学习C语言等等。。。。。。不知其他人是怎么样。我曾经历下面几个阶段:
第一阶段:写出的代码一编译就一大堆错误,除非是编译helloworld程序。看着一大堆的错误,但就是不知道怎么改。放网上问问大家,运气好一些会有人帮忙看看。但最后发现大量的错误竟然是中文标点、括号未对齐这种低级错误。但正是这些错误,难道了一大批人啊。
第二阶段:写出的代码低级错误还是一大堆,但随着只是点的学习,语法错误更多了。
第三阶段:写出的代码慢慢地能经过几次的修改编译成功了,低级错误也少了许多。但就是一运行,妈呀,直接发生错误退出了。看了一遍又一遍的代码,就是不知道问题的所在。而此时的代码以及无法和以前比了,几十上百行的代码都有。放网上,几乎没人看啊,更别说帮忙解决了。
第四阶段:此时,好不容易把一本书或是一套视频看完了,感觉还是蛮有成就感的。何不写写有界面的程序?天天看这黑底白自无聊啊。网上发帖子问牛人们怎么写出有界面的程序。得到的回复是,看那本《Windows 程序设计》,也有人说先别想这界面,学学数据结构和算法,再或者去做做ACM的题。出于好奇,还是学习了界面设计,但最后感觉收获不多啊,果断放弃。
第五阶段:把重点放在C标准库的学习上,感觉有时候能够借助标准库写出像点样的程序来了。很想直到其他人是如何编写代码的,就跑去gnu网站上下载人家的代码,但看了两眼直接放弃了。各种东西都是以前没见过的啊,自己感觉C语言学得差不多了,但就是看不明白人家写了些啥。
第六阶段:由于兴趣爱好,放了不少精力学习了Linux0.12的源代码。这一段时间还学习了汇编语言,x86体系架构知识,编译工具(gcc\gas\gld\make)的使用。以前都是用VS的,直接感觉VS把我们当傻瓜了。因为VS是想我们用点一下实现编译链接以及启动的步骤,我们几乎没机会了解这些底层细节。学习了汇编,一个感觉看待C程序代码都有些不一样了,有些代码完全可以用另一种方式啊,指针之类的错误少了不少。以前都是胡乱的加&和*,现在都可以去掉一些无用的了,甚至到明白为什么应该如此加。搞清楚了左值和右值的区别等等。以前都比较排斥#define,现在感觉这东西特定场合下太有用了。
......
写出之前的东西,只是想告诉大家下面几件事:
1、只是为了应付考试,你仅仅只会做题,但很难真正入门C语言。你的目标应该更高一些。
2、代码中有大量错误是正常的。如果一开始写出来的代码中一点错都没有,这才是不正常。只有不断的代码实践,才能慢慢减少这些错误。到某种程序,看一眼编译错误或警告,无需调试就可以知道问题的错误所在。
3、对于代码中的问题,自己应该首先调试。大家的时间都有限,没有多少人愿意花时间帮你调试。而且只有自己亲自调试,才能不断提高代码质量。
4、如果学完一本书了,就继续学习C语言标准,或是学习C标准库函数。这些东西是我们编码的基础,可以让我们少造轮子。
5、适当地学习汇编语言,从计算机的角度看待C程序,这有助于你理解和解决较为难懂的问题。
6、到一定程度了,可以看看开源的优秀代码。这对代码风格和特殊用法很有帮助。
7、一定要清楚一件事情:C语言仅仅是个工具,如同写字的钢笔。会用钢笔≠会写散文。要想写出优秀的程序,需要的知识很多很多。比如:算法,数据结构,系统编程,网络编程等等。没有提界面编程,是因为个人觉得不需要花费太多的时间在界面编程上。
8、永远都别觉得自己的C语言学得足够好了,需要经常打磨。学完一本书或是一个视频,这不是学完了C语言。当你用C语言独立编写自己想要的程序时,你才真正入门,这才是学习C语言的开始。永远都不要相信21天或30天学会或精通C语言。
当然,我本身也是个初学者,有很多东西没有学会。有问题的地方,大家就不考虑了。希望有对大家帮助的地方。
[此贴子已经被作者于2016-7-1 20:07编辑过]