当前位置:嗨网首页>书籍在线阅读

02-复习函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

9.1 复习函数

首先,什么是函数?函数(function)是完成特定任务的独立程序代码单元。语法规则定义了函数的结构和使用方式。虽然C中的函数和其他语言中的函数、子程序、过程作用相同,但是细节上略有不同。一些函数执行某些动作,如 printf() 把数据打印到屏幕上;一些函数找出一个值供程序使用,如 strlen() 把指定字符串的长度返回给程序。一般而言,函数可以同时具备以上两种功能。

为什么要使用函数?首先,使用函数可以省去编写重复代码的苦差。如果程序要多次完成某项任务,那么只需编写一个合适的函数,就可以在需要时使用这个函数,或者在不同的程序中使用该函数,就像许多程序中使用 putchar() 一样。其次,即使程序只完成某项任务一次,也值得使用函数。因为函数让程序更加模块化,从而提高了程序代码的可读性,更方便后期修改、完善。例如,假设要编写一个程序完成以下任务:

  • 读入一系列数字;
  • 分类这些数字;
  • 找出这些数字的平均值;
  • 打印一份柱状图。

可以使用下面的程序:

#include <stdio.h>
#define SIZE 50
int main(void)
{
     float list[SIZE];
     readlist(list, SIZE);
     sort(list, SIZE);
     average(list, SIZE);
     bargraph(list, SIZE);
     return 0;
}

当然,还要编写4个函数 readlist()sort()average()bargraph() 的实现细节。描述性的函数名能清楚地表达函数的用途和组织结构。然后,单独设计和测试每个函数,直到函数都能正常完成任务。如果这些函数够通用,还可以用于其他程序。

许多程序员喜欢把函数看作是根据传入信息(输入)及其生成的值或响应的动作(输出)来定义的“黑盒”。如果不是自己编写函数,根本不用关心黑盒的内部行为。例如,使用 printf() 时,只需知道给该函数传入格式字符串或一些参数以及 printf() 生成的输出,无需了解 printf() 的内部代码。以这种方式看待函数有助于把注意力集中在程序的整体设计,而不是函数的实现细节上。因此,在动手编写代码之前,仔细考虑一下函数应该完成什么任务,以及函数和程序整体的关系。

如何了解函数?首先要知道如何正确地定义函数、如何调用函数和如何建立函数间的通信。我们从一个简单的程序示例开始,帮助读者理清这些内容,然后再详细讲解。