2.3 C语言源程序的主要构成成分:函数定义
我们通过例题2.1来探讨C语言源程序的主要构成成分(该程序的功能在学完本章后,读者自然应该能够懂得,现在不必为读不懂程序感到烦恼)。
【例题2.1】输入圆球的半径,求圆球的体积。
C语言源程序如下:
0 #include<stdio.h>
1 int main(void)
2 {
3 float r ;
4 float v ;
5
6 printf("请输入圆球的半径,以米为单位\n");
7 scanf("%f",&r);
8 v=(4.0/3.0) 3.1416 r r r ;
9 printf("圆球的体积是:%f立方米\n" , v );
10 return 0 ;
11 }
注意:最左边的行号是为了说明方便而加上的,实际的C语言源程序中是不会有的。
一个C语言源程序的宏观(即粗粒度)构成成分是函数定义(下面常常简称为函数)。例题2.1就是一个函数名为main的函数定义。
一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的函数(本书直到第7章才讨论两个以上函数组成的C语言程序如何编写,由多个函数顺序构成的C语言源程序的实例请参见本书后续章节),main()函数又称为主函数。
延伸与拓展:C语言函数的本质
主函数被编译程序翻译成一个机器语言形式的主程序段,任何其他函数都将被编译程序翻译成机器语言形式的子程序段。
换言之,C语言源程序中的函数,并非数学中时常显得有些高深莫测的函数,它只是完成特定数据处理任务的、功能上独立的一个程序段而已。
1.函数定义=函数首部+函数体
任何一个函数定义都是由函数首部(或称为函数头部,比如例题2.1中第1行的int main())和函数体(从第2行到第11行)构成。
函数体必须用大括号“{”和“}”括起来,函数体必须紧接在函数首部之后。
2.函数体的主要成分:变量定义序列+语句序列
C语言源程序中,任何函数的函数体的主要(即中粒度)构成成分是:
0或多条变量(或类型)定义组成的定义序列(第3、4行)。
1或多条语句顺序组成的语句序列(从第6行到第10行)。
这两种成分都要以分号结束(复合语句是不以分号结束的一个例外。关于复合语句,请参见第4章)。
C语言程序中的变量定义序列,被编译程序转变为机器语言程序中的存放多个数据的内存单元的地址;而C语言源程序函数体中的语句序列,则被编译程序翻译成对这些内存单元中的数据进行运算处理的机器指令序列。