C语言学习指南:从规范编程到专业级开发
上QQ阅读APP看书,第一时间看更新

2.3 了解C语言的函数

函数是一种可调用的(callable)代码片段(又称代码段),用来执行与某项计算任务有关的一条或多条语句。函数能够把一组语句紧密地组织成一套指令,以便执行某项复杂的任务。函数可以只含有一条或几条语句,也可以含有许多条语句。函数还可以继续调用其他的函数。函数跟语句一样,也是C语言的一种组成部分,但它比语句更高级,能够用来表达更复杂的逻辑单元。我们用语句来实现函数,进而用函数来实现整个程序。main()函数本身也是函数,其中可以包含其他一些语句,也可以调用其他的函数。

在编写程序(或者说,在用计算机来解决问题)的过程中,重点就是把程序拆解成多个部分(也就是多个函数),然后逐一考虑每个函数所应执行的任务。像这样把大的问题拆分成小的部分很容易就能揭示问题的实质。我们需要关注两点:一是怎样把大问题拆分成多个方面,二是怎样详细处理拆分后的每个方面。

拆分出来的每个小部件(也就是每个函数)可以重复运用,这样我们就不用在每次遇到这个小问题时复制并粘贴那段代码了(可以直接调用这个函数,让它解决该问题)。如果以后要修改函数,我们也只需要修改函数本身的代码,而不用像通过复制与粘贴代码来编程时那样,把原来粘贴的函数都修改一遍。如果函数没有把它本来应该处理的问题全都考虑到,那我们可以扩充函数本身的功能,或者另外提供一个功能稍微有点区别的函数,还可以把现有的函数拆分成多个小函数,让开发者用这些小函数灵活地组合出自己想要的功能。

这样写要比把整个程序都写到一个main()函数里面更好。在许多场合都有人写出过那种不加拆分的(monolithic,单体式的)大型程序。那种程序以后如果需要修改,那么修改的人必须先把整个程序的代码通读一遍,然后才能知道应该怎么改,就算要修改的地方只有一点,也必须这么做。与之相比,如果把程序实现到多个函数里面,那我们就能够很清楚地看到程序中的主要部分与次要部分,而且通常很容易就能把握程序的总体结构,从而迅速切入自己想要修改的组件,这种程序修改起来更加容易。

总之,我们在用C语言解决问题的时候要花很大一部分精力来拆解问题,把大问题按照功能拆解成多个部分,并针对每个部分编写相关的函数,以解决与这一部分对应的小问题。