2.2 函数:C程序的基本结构
2.2.1 指令、函数与程序
C程序(Program)的基本结构是函数(Function),就是数学中的函数,如sin()、cos()等。就像“砖块”是建造房子的基本模块(Building Block)一样,“函数”是构成C程序的基本模块。在数学课本里,常用图2-5表示函数的意义。
图2-5
f是名称,f()代表函数,括号内的x表示参数,y表示函数值。假设f(x)=x * x,则y=f(5)=5 * 5=25;此时y值是25。函数的参数摆在括号内,其个数依函数的目的而定。例如:n(a, b)含两个参数a, b。如果n(a, b)=a+b,则n(2, 6)=2+6=8=y。因为n之后有(),表示n为函数名字;a和b摆在()内,表示a和b为参数。
2.2.2 函数间的调用(Call)
一方面,函数包含许多指令(Instruction);另一方面,多个函数又可以组成一个程序。函数之间互相调用与沟通,协力达成程序的目的和任务。如同砖块借水泥来联结并堆成房子一样,函数之间则借“调用”(Call)来组成程序。
图2-6中的main()将参数x传给f(),f() 则传回其函数值y,这就是main()调用f()。main()为主函数(Main-function),f() 为子函数(Sub-function)。另外,图2-6中的main()将参数a和b传给n(),而n() 则传回函数值y给main(),所以n() 为main()的子函数。C程序为一个家族,其内的函数为家族的成员,main()为家族中的家长。拜访一个家族,常先拜访家长;同样,当执行C程序时,先执行main()。
图2-6
2.2.3 库函数
数学中的函数常表现为数学表达式;程序中的函数则是一段小程序,担任某项明确的任务,例如求算圆的面积、利息、平均成绩等。C中有些现成函数,例如sin()及cos()等,您的程序可以调用它们做事,这种函数称为“库函数”(Library Function)。
然而,实际应用中库函数仍然不够,所以当编写程序时,经常需要创建新函数。它们之间可互相调用,也可以调用现成的库函数。例如:
#include <stdio.h> void f1() { printf( "Hello" ); } int main(void) { f1(); return 0; }
其中,main()和f1()是我们自创的函数,printf()是库函数。当f1()调用printf()时,传送字符串"Hello" 给它。main()和f1()函数各代表一段小程序,“{”表示函数的开始,而“}”表示函数的结束。