C 语言程序的结构特点

1. 一个程序由一个或多个源程序文件组成

一个规模较小的程序,往往只包括一个源程序文件.

在一个源程序文件中可以包括3个部分:

预处理指令。

如 #include<stdio.h> (还有一些其他预处理指令,如#define 等)

C编译系统在对源程序进行“翻译”以前,先由一个预处理器(也称预处理程序、预编译器)对预处理指令进行预处理,对于#include<stdio.h> 指令来说,就是将stdio.h 头文件的内容读进来,取代#include<stdio.h>。 由预处理得到的结果与程序其他部分一起,组成一个 完整的、可以用来编译的最后的源程序,然后由编译程序对该源程序正式进行编译,才得到目标程序。

全局声明即在函数之外进行的数据声明。例如可以把例1.2程序中的“int a,b,sum;”放到main函数的前面,这就是全局声明,在函数外面声明的变量称为全局变量。如果是在程序开头(定义函数之前)声明的变量,则在整个源程序文件范围内有效。在函数中声明的变量是局部变量,只在函数范围内有效。关于全局变量和局部变量的概念和用法见 本书第7章。在本章的例题中没有用全局声明,只有在函数中定义的局部变量。

函数定义。如例1.1、例1.2和例1.3中的main函数和例1.3中的max函数,要指 定每个函数的功能。在调用这些函数时,会完成函数定义中指定的功能。

2. 函数是C 程序的主要组成部分

程序的几乎全部工作都是由各个函数分别完成 的,函数是C 程序的基本单位,在设计良好的程序中,每个函数都用来实现一个或几个特定的功能。编写C 程序的工作主要就是编写一个个函数。

一个C 语言程序是由一个或多个函数组成的,其中必须包含一个main函数(且只能有一个main函数)。例1.1和例1.2中的程序只由一个main函数组成,例1.3程序由一个main函数和一个max 函数组成,它们组成一个源程序文件,在进行编译时对整个源程序文件统一进行编译。

一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数(其中有一个main函数)。当程序规模较大时,所包含的函数的数量较多,如果把所有的函数都放在同一个源程序文件中,则此文件显得太大,不便于编译和调试。为了便于调试和管理,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数。一个源程序文件就是一个程序模块,即将一个程序分成若干个程序模块。

在进行编译时是以源程序文件为对象进行的。在分别对各源程序文件进行编译并得到相应的目标程序后,再将这些目标程序连接成为一个统一的二进制的可执行程序。

C语言的这种特点使得容易实现程序的模块化。

在程序中被调用的函数,可以是系统提供的库函数(例如printf和scanf函数),也可以 是用户根据需要自己编制设计的函数(例如例1.3中的max函数)。C的函数库十分丰富,ANSIC 建议提供了一百多个标准库函数,不同的C 编译系统除了提供标准库函数外,还增 加了其他一些专门的函数,如Turbo C提供了三百多个库函数。不同编译系统所提供的库 函数个数和功能是不完全相同的。

3. 一个函数包括两个部分

函数首部。即函数的第1行,包括函数名、函数类型、函数属性、函数参数(形式参数)名、参数类型。

例如,例1.3中的max函数的首部为

int max (int X, int y)

函数类型 函数名 函数参数类型 函数参数名 函数参数类型 函数参数名

一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。如果函数没有参

数,可以在括号中写 void,也可以是空括号,如

int main(void)

int main()

函数体。即函数首部下面的花括号内的部分。如果在一个函数中包括有多层花括号,则最外层的一对花括号是函数体的范围。

函数体一般包括以下两部分。

      • 声明部分。声明部分包括:定义在本函数中所用到的变量,如例1.3中在main 函数中定义变量“int a,b,c;”;对本函数所调用函数进行声明,如例1.3中在main 函数中对max函数的声明“int max(int x,int y);”。
      • 执行部分。由若干个语句组成,指定在函数中所进行的操作。

在某些情况下也可以没有声明部分,甚至可以既无声明部分也无执行部分。如:

void dump()

{}

是一个空函数,什么也不做,但这是合法的。

4. 程序总是从main函数开始执行的

而不论main 函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前、另一些函数之后)。

5. 程序中要求计算机的操作是由函数中的C语句完成的

如赋值、输入输出数据的操作都是由相应的C 语句实现的。

C程序书写格式是比较自由的。一行内可以写几个语句,一个语句可以分写在多行上,但为清晰起见,习惯上每行只写一个语句。

6. 在每个数据声明和语句的最后必须有一个分号。

分号是C 语句的必要组成部分。如:

c=a+b;

中的分号是不可缺少的。

7. C语言本身不提供输入输出语句

输入和输出的操作是由库函数scanf和printf 等函数来完成的。C语言对输入输出实行“函数化”。由于输入输出操作涉及具体的计算机 设备,把输入输出操作用库函数实现,就可以使C语言本身的规模较小,编译程序简单,很容易在各种机器上实现,程序具有可移植性。

8. 程序应当包含注释

一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值