
1.3.2 C语言程序基本结构
通过以上的例子,可以看到一个C语言程序的基本结构有如下特点。
(1)一个程序由一个或多个源程序文件组成。源程序文件包括三个部分:预处理指令、全局声明、函数定义。
①预处理指令。在C语言程序中包括各种以符号#开头的编译指令,这些指令称为预处理指令。预处理指令属于C语言编译器,但不是C语言的组成部分,通过预处理指令可扩展C语言程序设计的环境。预处理指令主要有以下三种。
第一种,包含文件。将源文件中以#include格式包含的文件复制到编译的源文件中,包含文件可以是头文件,也可以是其他的程序文件。
第二种,宏定义指令。#define指令定义一个宏,#undef指令删除一个宏定义。
第三种,条件编译。根据#ifdef和#ifndef后面的条件决定需要编译的代码。
②全局声明。即在函数之外进行的数据声明。简单来说,即把声明的变量放到main函数的前面,这就是全局声明,在函数外面声明的变量称为全局变量。如果是在程序开头(定义函数之前)声明的变量,则在整个源程序文件范围内有效。在函数中声明的变量是局部变量,只在函数范围内有效。
③函数定义。如案例一中的main函数、案例二中的max函数,要指定每个函数的功能。在调用这些函数时,会完成函数定义中指定的功能。
(2)函数是C程序的主要组成部分。程序的全部工作几乎都是由各个函数分别完成的,函数是C程序的基本单位。编写C程序的工作主要就是编写一个个函数。
一个C语言程序是由一个或多个函数组成的。例如案例二的程序由一个main函数和一个max函数组成,它们组成一个源程序文件,在进行编译时对整个源程序文件进行统一编译。
(3)一个函数包括两个部分。
①函数首部。即函数的第1行,包括函数名、函数类型、函数属性、函数参数(形式参数)名、参数类型。
一个函数名后面必须跟一对圆括号,括号内有函数的参数名及其类型。如果函数没有参数,可以在括号中写void,也可以是空括号,如:

②函数体。即函数首部下面的花括号内的部分。如果在一个函数中包括多层花括号,则最外层的一对花括号是函数体的范围。
(4)程序总是从main函数开始执行的。一个C程序有且仅有一个main函数,任何一个C程序总是从main函数开始执行的,main函数后面的一对圆括号不能省略。
(5)在每个数据声明和语句的最后必须有一个分号,分号是C语句的必要组成部分。
(6)程序应当包含注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。