用简单问题来说明C语言语法,会使用户很快掌握语法的使用方法。如果不结合具体问题讲语法,则学生会感到空洞没味道,更谈不上会用语法写程序。程序设计的目的是让学生学会编程,因而应紧紧围绕这个目的展开讲解。过多的文字说明只会把要点淹没,让学生在文字堆里找要点。枯燥的讲解语法就像学英语时的死记单词,结合程序理解语法就像结合句子记单词。用程序来说话(在程序中加注释),比用大篇幅的文字说明更切题,学生印象更深刻。用一个简单的问题来说明一个复杂的语法,是学习程序设计的最好方法。本书正是在这个指导思想下,在教学实践中产生的。
本书力求把C语言中难学的部分(如函数的参数传递、二级指针、二维数组的指针表示、静态变量和外部变量等)讲得通俗易懂,把问题的本质揭示给读者。例如,初学者对函数参数的所谓“单向传递”和“双向传递”(大部分书都这样说),感到不好理解。不好理解的原因是所谓“单向传递”和“双向传递”没有把问题的本质揭开。
本书对函数的参数传递有这样的描述:函数调用分“值调用”和“地址调用”两种,函数调用中的“值调用”和“地址调用”是理解函数调用的关键。函数调用中的经典经验如下。
(1) 值调用。指的是\传送给\的是值。这时,即使主程序中的变量和函数中的变量同名,但它们不在同一个地址上,函数中变量的值发生改变,并不会改变主程序中变量的值。当从函数返回到主程序后,函数中变量的值被释放(静态变量除外),这时,在主程序中看不到在函数中被改变的值(静态变量除外),即所谓的单向传递。
(2) 地址调用。指的是\传送给\的是地址。这时函数中的变量和主程序中的变量是在同一个地址上(与变量是否同名无关),同一个地址上的内容发生变化,在函数中和在主程序中的效果是一样的,即所谓的双向传递。
为了证明以上经典经验,书中程序特意将“值调用”和“地址调用”的地址(函数中变量的地址和主程序中变量的地址)显示,以证明以上经典经验。用户掌握了函数参数传递的本质后,一切问题都解决了。
C语言程序设计实例解析序言 书中对三维数组和三维数组的指针表示(这部分内容很少有书讲述)给出了重要概念,使二维数组和三维数组显得简单。三维数组学会之后,多维数组的用法也类似。
本书重要部分先给出C语言语法描述,再用一个个完整的程序例子教学生如何编程。一个完整的程序实例胜过几百个汉字的文字说明。本书用完整的程序实例说明问题,课堂上边讲解边演示,并随时修改程序,回答学生的提问。书中所有程序都调试通过(每个程序尾都有运行结果)并附有汉字注释。有些程序尾附有说明。
高级语言的种类很多,目前,国内高校都将 C语言作为计算机语言的基础课,计算机等级考试必考C语言,因而C语言的读者面很广。学好C对学C++是有很大帮助的。
书中程序可以在TC和Visual C++6.0环境下运行。书中的程序书写规范,让用户读起来很舒服。例如,大括号上下对齐(不在语句的后面加括号),稍复杂一点的问题就用图示说明。
作者2008年4月2日于南京