6.1.2 函数的分类

在C51语言中,从不同的角度可将函数进行分类,下面分别介绍函数的各种分类。

1.有无返回值角度

在C51中,从有无返回值的角度,可将函数划分为无返回值函数和有返回值函数两种。这两种函数的区别如下。

❑无返回值函数。用于完成某项特定的功能,执行完成后不向主调函数返回函数值的情况。库函数中包含多个不带有返回值的函数。而对于用户自定义的无返回值函数,可用类型说明符为“void”,指定其返回值为“无值型”。无返回值函数相当于其他高级语言中的过程。

❑有返回值函数。用于完成某项特定的功能,执行完成后要向主调函数返回一个执行结果的情况,这个结果称为函数返回值。库函数中包含多个带有返回值的函数。用户定义有返回函数值函数,必须在函数定义和函数说明中声明函数返回值的具体类型,如整型、字符型、指针等。

2.数据传送角度

在C51中,从主调函数和被调函数之间数据传送的角度,又可将函数分为无参数函数和有参数函数两种。这两种函数的区别如下。

❑无参数函数。用于主调函数和被调函数之间不进行参数传送的情况。此时在函数定义、函数说明以及函数调用中就可以不带参数。无参数函数常用来完成一个特定的功能,无参数函数既可以没有函数返回值,也可以带有函数返回值。

❑有参数函数。用于主调函数和被调函数之间存在参数传递的情况。此时在函数定义和函数说明时都需要声明参数,该参数称为“形式参数”(简称为“形参”)。在主调函数中进行函数调用时也必须给出参数,该参数称为“实际参数”(简称为“实参”)。在函数调用中,主调函数将把实参的值传递给形参,供被调函数使用。有参数函数既可以没有函数返回值,也可以带有函数返回值。

3.函数定义角度

在C51中,从函数定义的角度,又可将函数分为主函数、自定义函数和库函数3种。这3种函数的区别如下。

❑主函数。主函数也就是main函数,一个C51源程序有且只能有一个主函数。C51程序的执行首先从main主函数开始。

❑自定义函数。自定义函数是用户根据实际需要完成特定功能而自行定义的函数。用户需要自行定义并编写自定义函数的程序代码。在程序中使用自定义函数时,不仅要在程序中定义函数,而且还要在主调函数中对被调函数进行类型说明,然后自定义函数才能正常使用。

❑库函数。由C51编译环境提供而无须用户定义的函数。使用时,只需在主程序前声明包含有该库函数所在的函数库的头文件“*.h”即可,例如标准输入输出函数“studio.h”。声明包含后,就可以在程序中直接调用该函数库中相应的库函数。C51系统提供了大量的功能强大的库函数,从完成不同功能的角度可将常用的库函数分为以下几大类。

➣标准函数。用于完成数据类型转换以及存储器分配等操作。

➣字符函数。用于对字符按ASCII码分类,包括字母、数字、控制字符、分隔符、大小写字母等。

➣字符串函数。用于进行对字符串的操作和处理。

➣数学函数。用于常见的数学函数计算。

➣I/O函数。用于数据的输入/输出等操作,如printf、scanf等。

➣转换函数:用于字符或字符串的转换,在字符量和各类数字量(整型、实型等)之间进行转换,在大、小写之间进行转换。

❑其他函数:用于其他各种功能,包括绝对地址访问的函数、变量参数表函数、全程跳转函数以及偏移量函数。