UML+OOPC嵌入式C语言开发精讲
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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()函数各代表一段小程序,“{”表示函数的开始,而“}”表示函数的结束。