C程序是由一组或是变量或是函数的外部对象组成的。函数是一个自我包含的完成一定相关功能的执行代码段。我们可以把函数看成一个"黑盒子",你只要将数据 送进去就能得到结果,而函数内部究竟是如何工作的的,外部程序是不知道的。外部程序所知道的仅限于输入给函数什么以及函数输出什么。函数提供了编制程序的 手段,使之容易读、写、理解、排除错误、修改和维护。
C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名,这个函数称为主函数,整个程序从这个主函数开始执行。
C 语言程序鼓励和提倡人们把一个大问题划分成一个个子问题,对应于解决一个子问题编制一个函数,因此,C语言程序一般是由大量的小函数而不是由少量大函数构 成的,即所谓"小函数构成大程序"。这样的好处是让各部分相互充分独立,并且任务单一。因而这些充分独立的小模块也可以作为一种固定规格的小"构件",用 来构成新的大程序。
C语言的一个主要特点是可以建立库函数。Turbo C2.0提供的运行程序库有400多个函数,每个函数都完成一定的功能,可由用户随意调用。这些函数总的分为输入输出函数、数学函数、字符串和内存函数、 与BIOS和DOS有关的函数、字符屏幕和图形功能函数、过程控制函数、目录函数等。对这些库函数应熟悉其功能,只有这样才可省去很多不必要的工作。
本教程后半部分专门介绍Turbo C2.0的库函数,并对每个函数都给出例程,读者可以将自已需要的部分以块的方式定义,然后将此块写入文件,这样就可以在进入Turbo C2.0集成开发环境后,直接调用此程序,连接,运行,观察结果,以加深对该函数的理解。
用 户编制Turbo C语言源程序,就是利用Turbo C的库函数。可以把所有使用的库函数放在一个庞大的主函数里,也可以按不同功能设计成一个个用户函数而被其它函数调用。Turbo C2.0建议用户使用后者,当用户编制了一些较常用的函数时,只要将其存在函数库里,在以后的编程中可被方便的调用而不需要再去编译它们。连接时将会自动 从相应的库中装配成所需程序。
1.函数的说明与定义
Turbo C2.0中所有函数与变量一样在使用之前必须说明。所谓说明是指说明函数是什么类型的函数,一般库函数的说明都包含在相应的头文件 中,例如标准输入输出函数包含在stdio.h中,非标准输入输出函数包含在io.h中,以后在使用库函数时必须先知道该函数包含在什么样的头文件中,在 程序的开头用#include 或#include"*.h"说明。只有这样程序在编译,连接时Turbo C才知道它是提供的库函数,否则,将认为是用户自己编写的函数而不能装配。
1.1 函数说明
1. 经典方式
其形式为: 函数类型 函数名();
2. ANSI 规定方式
其形式为: 函数类型 函数名(数据类型 形式参数, 数据类型 形式
参数, ......);
其中:函数类型是该函数返回值的数据类型,可以是以前介绍的整型(int),长整型(long),字符型(char),单浮点型(float),双浮点型(double)以及无值型(void),也可以是指针,包括结构指针。无值型表示函数没有返回值。
函数名为Turbo C2.0的标识符,小括号中的内容为该函数的形式参数说明。可以只有数据类型而没有形式参数,也可以两者都有。对于经典的函数说明没有参数信息。如:
int putlll(int x,int y,int z,int color,char *p)/*说明一个整型函数*/
char *name(void); /*说明一个字符串指什函数*/
void student(int n, char *str); /*说明一个不返回值的函数*/
float calculate(); /*说明一个浮点型函数*/
注意:如果一个函数没有说明就被调用,编译程序并不认为出错,而将此函数默认为整型(int)函数。因此当一个函数返回其它类型,又没有事先说明,编译时将会出错。
1.2 函数定义
函数定义就是确定该函数完成什么功能以及怎么运行,相当于其它语言的一个子程序。Turbo C2.0对函数的定义采用ANSI规定的方式。即:
函数类型 函数名(数据类型形式参数; 数据类型 形式参数...)
{
函数体;
}
其中函数类型和形式参数的数据类型为Turbo C2.0的基本数据类型。函数体为Turbo C2.0提供的库函数和语句以及其它用户自定义函数调用语句的组合,并包括在一对花括号"{"和"}"中。
需要指出的是一个程序必须有一个主函数,其它用户定义的子函数可以是任意多个,这些函数的位置也没有什么限制,可以在main()函数前,也可以在其后。Turbo C2.0将所有函数都被认为是全局性的。而且是外部的,即可以被另一个文件中的任何一个函数调用。