C核心技术手册(二)

1.1  C的结构

  组成C程序的“积木”叫做函数,每个函数都有自己的用途,并且可以相互调用。每个函数包含可被执行的语句,而这些语句可以分组,从而形成语句块。做为程序员,你可以直接使用C标准库的的函数,也可以自己编写函数来实现既定目的。除此之外,还有很多专用的库可以使用,例如图形函数库。然而,使用这些非标准库,会限制了程序的可移植性,因为它必须运行在支持此类库的系统之上。

  每个C程序必须定义至少一个函数,而且均有一个名称为main()函数,此函数在程序开始运行时首先被调用,然后由它来调用子函数。

  Example 1-1为一个简单但完整的C程序,在本书中,我们将讨论声明、函数调用、输出流等细节,目前,我们仅关心普通C代码的结构,程序Example 1-1定义了两个函数:main()circularArea(),main()函数调用circularArea()来计算一个指定半径升序的圆的面积,并使用标准库函数printf()将格式化后的结果输出在控制台上。

Example 1-1. 一个简单的C程序

 // circle.c: Calculate and print the areas of circles #include <stdio.h> // Preprocessor directive double circularArea( double r ); // Function declaration (prototype form) int main( ) // Definition of main( ) begins { double radius = 1.0, area = 0.0; printf( " Areas of Circles/n/n" ); printf( " Radius Area/n" "-------------------------/n" ); area = circularArea( radius ); printf( "%10.1f %10.2f/n", radius, area ); radius = 5.0; area = circularArea( radius ); printf( "%10.1f %10.2f/n", radius, area ); return 0; } // The function circularArea( ) calculates the area of a circle // Parameter: The radius of the circle // Return value: The area of the circle double circularArea( double r ) // Definition of circularArea( ) begins { const double pi = 3.1415926536; // Pi is a constant return pi * r * r; } Output: Areas of Circles Radius Area ------------------------- 1.0 3.14 5.0 78.54

在函数调用前,编译器要求每个函数首先需要声明,第3行的函数circularArea()的声明。标准库函数的声明在标准的头文件中,因为头文件stdio.h包含了函数printf()的声明,预处理指示符#include <stdio.h>声明的函数被预处理器间接地调用并插入到当前文件中。

  在程序中,可以任意安排函数定义的顺序,在Example 1-1中,可以将circularArea( )放在main()之前,这样的话,circularArea( )的原型声明就是多余的,因为函数的定义也是声明。

  函数的定义不能相互嵌套,你可以在一个函数体中定义一个本地变量,但不能定义一个本地函数。

 

 

你可能感兴趣的:(c,function,prototype,编译器,output,preprocessor)