C语言的学习可分为四个阶段。
第一阶段 理解C语言与计算机的关系
理解计算机如何计算。
计算机由五大部件组成,C语言如何使用这五大组成部件?
计算机采用二进制,那么正负号,小数点、字符等如何在计算机中存储?采用不同的编码方式,计算机中的运算与数学上的运算有何异同?
在理解上述问题的基础上,能根据优先级、结合性、数据类型和序列点熟练地对C语言表达式求值,也就是能模拟计算机进行计算。
第二阶段 掌握编程方法
计算机通过连续地对表达式求值(计算)解决实际问题。
掌握逻辑运算之后,理解计算机解决问题的方法,即有条件地重复。编程的关键在于找到利用“重复”解决问题的方法。算一次加法,再算一次加法,又算一次加法,“重复加”,如1+2+3+…+100。大僧人数为1时满足条件吗?大僧人数为2时满足条件吗?大僧人数为3时满足条件吗?“重复试”,如百僧百馍问题。
遇到问题一定要先用自己的超级计算机(大脑)分析问题找出重复,再用循环把重复表达出现,这就是编程。
第三阶段 用函数组织代码
当程序由多个函数组成时,可以借助对函数封闭性的研究来理解这一阶段遇到的问题。
递归函数是个奇迹,自然而优雅地模拟了递归算法。递归算法是更高级的重复。
第四阶段 掌握指针的用法
指针提供了使用内存中相关存储单元的另一种途径。
由于只需某类型的地址,就可使用相关存储单元,指针变量可以提高函数的执行效率。由于void型指针变量的特点,程序中的某些函数可以超越类型的限制而具有了某种通用性。
理解了指针的作用,掌握指针也并非什么难事。
九、后记
后记与C语言的内容无关,关于“沸沸扬扬”的教育。
一个人的素质,不在于他有多少知识,而在于他的知识是如何获得的。
素质教育的本质就是如何以“研究性”的教学方式让学生“发现”知识。
现在的教育过于注重学生知道多少知识,而忽视了“知识究竟该以什么样的方式让学生获得”这个关键性的问题,只注重结果不注重过程。幼儿园教学小学化,大学课堂“一言堂”,无不让人喟然。
有研究表明,我们的中学教育质量高于西方的。这种结论大多是片面的。类似于“我们学生的英语水平高于西方学生的汉语水平”,只是“真实的谎言”。