本节介绍C程序的基本单元函数。函数中包含了程序的可执行代码。每个C程序的入口和出口都位于函数mai
之中。mai
函数可以调用其他函数,这些函数执行完毕后程序的控制又返回到mai
函数中,mai
函数不能被别的函数所调用。通常我们把这些被调用的函数称为下层lowerlevel函数。函数调用发生时,立即执行被调用的函数,而调用者则进入等待状态,直到被调用函数执行完毕。函数可以有参数和返回值。r
r
程序员一般把函数当作“黑箱”处理,并不关心它内部的实现细节。当然程序员也可以自己开发函数库。r
说明一点,函数这一节很重要,可以说一个程序的优劣集中体现在函数上。如果函数使用的恰当,可以让程序看起来有条理,容易看懂。如果函数使用的乱七八糟,或者是没有使用函数,程序就会显得很乱,不仅让别人无法查看,就连自己也容易晕头转向。可以这样说,如果超过100行的程序中没有使用函数,那么这个程序一定很罗嗦有些绝对,但也是事实。r
r
一、函数的定义r
一个函数包括函数头和语句体两部分。r
函数头由下列三不分组成:r
函数返回值类型r
函数名r
参数表r
一个完整的函数应该是这样的:r
函数返回值类型函数名参数表r
r
语句体;r
r
函数返回值类型可以是前面说到的某个数据类型、或者是某个数据类型的指针、指向结构的指针、指向数组的指针。指针概念到以后再介绍。r
函数名在程序中必须是唯一的,它也遵循标识符命名规则。r
参数表可以没有也可以有多个,在函数调用的时候,实际参数将被拷贝到这些变量中。语句体包括局部变量的声明和可执行代码。r
我们在前面其实已经接触过函数了,如abssqrt,我们并不知道它的内部是什么,我们只要会使用它即可。r
这一节主要讲解无参数无返回值的函数调用。r
r
二、函数的声明和调用r
为了调用一个函数,必须事先声明该函数的返回值类型和参数类型,这和使用变量的道理是一样的有一种可以例外,就是函数的定义在调用之前,下面再讲述。r
看一个简单的例子:r
voida函数声明r
r
mai
r
r
a函数调用r
r
r
voida函数定义r
r
i
t
umr
sca
fd
umr
pri
tfd
umr
r
r
在mai
的前面声明了一个函数,函数类型是void型,函数名为a,无参数。然后在mai
函数里面调用这个函数,该函数的作用很简单,就是输入一个整数然后再显示它。在调用函数之前声明了该函数其实它和下面这个程序的功能是一样的:r
mai
r
r
i
t
umr
sca
fd
umr
pri
tfd
umr
r
可以看出,实际上就是把a函数里面的所有内容直接搬到mai
函数里面注意,这句话不是r