第八章函数 本章内容 1函数的定义形式 2函数的参数和函数的值 3函数调用、函数的嵌套调用以及函数的递归调用 4数组作为函数参数 5变量的作用域 6变量的存储类别 7内部函数和外部函数
1 第八章 函 数 本章内容: 1.函数的定义形式 2.函数的参数和函数的值 3.函数调用、函数的嵌套调用以及函数的递归调用 4.数组作为函数参数 5.变量的作用域 6.变量的存储类别 7.内部函数和外部函数
概述 ■C源程序是由函数组成的。虽然在前面的程序中都只有 个主函数main(,但实用程序往往由多个函数组成。 ■函数是C源程序的基本模块,通过对函数模块的调用实现 特定的功能。可以说C程序的全部工作都是由各式各样的函 数完成的,所以也把C语言称为函数式语言。 ■C语言不仅提供了极为丰富的库函数(如 Turbo C提供了三 百多个库函数),还允许用户建立自己定义的函数。 ■用户可把自己的算法编成一个个相对独立的函数模块,然 后用调用的方法来使用函数
2 C源程序是由函数组成的。 虽然在前面的程序中都只有一 个主函数main(),但实用程序往往由多个函数组成。 函数是C源程序的基本模块,通过对函数模块的调用实现 特定的功能。可以说C程序的全部工作都是由各式各样的函 数完成的,所以也把C语言称为函数式语言。 C语言不仅提供了极为丰富的库函数(如Turbo C提供了三 百多个库函数),还允许用户建立自己定义的函数。 用户可把自己的算法编成一个个相对独立的函数模块,然 后用调用的方法来使用函数。 概 述
函数的分类 1.从函数定义的角度看,函数可分为库函数和用户定义函数 (1)库函数 由C系统提供,用户无须定义,也不必在程序中作类型说 明,只需在程序前包含有该函数原型的头文件即可在程序中 直接调用。 在前面各章的例题中反复用到 printf、 scanf、 getchar putchar、gets、puts、 strcat等函数均属此类。 (2)用户定义函数 由用户按需要写的函数。对于用户自定义函数,不仅要 在程序中定义函数本身,而且在主调函数模块中还必须对该 被调函数进行类型说明,然后才能使用
3 函数的分类 (1) 库函数 由C系统提供,用户无须定义,也不必在程序中作类型说 明,只需在程序前包含有该函数原型的头文件即可在程序中 直接调用。 在前面各章的例题中反复用到printf 、 scanf 、 getchar 、 putchar、gets、puts、strcat等函数均属此类。 (2) 用户定义函数 由用户按需要写的函数。对于用户自定义函数,不仅要 在程序中定义函数本身,而且在主调函数模块中还必须对该 被调函数进行类型说明,然后才能使用。 1. 从函数定义的角度看,函数可分为库函数和用户定义函数
2.C语言的函数兼有其它语言中的函数和过程两种功能,从 这个角度看,又可把函数分为有返回值函数和无返回值函数 1)有返回值函数 此类函数被调用执行完后将向调用者返回一个执行结果, 称为函数返回值。如数学函数即属于此类函数。 由用户定义的这种要返回函数值的函数,必须在函数定 义和函数说明中明确返回值的类型。 (2)无返回值函数 此类函数用于完成某项特定的处理任务,执行完成后不 向调用者返回函数值。这类函数类似于其它语言的过程。 由于函数无须返回值,用户在定义此类函数时可指定它 的返回为“空类型”,空类型的说明符为“void〃
4 (1) 有返回值函数 此类函数被调用执行完后将向调用者返回一个执行结果, 称为函数返回值。如数学函数即属于此类函数。 由用户定义的这种要返回函数值的函数,必须在函数定 义和函数说明中明确返回值的类型。 (2) 无返回值函数 此类函数用于完成某项特定的处理任务,执行完成后不 向调用者返回函数值。这类函数类似于其它语言的过程。 由于函数无须返回值,用户在定义此类函数时可指定它 的返回为“空类型” , 空类型的说明符为“void” 。 2. C语言的函数兼有其它语言中的函数和过程两种功能,从 这个角度看,又可把函数分为有返回值函数和无返回值函数
3.从主调函数和被调函数之间数据传送的角度看可分为无参 函数和有参函数两种 (1)无参函数 ■函数定义、函数说明及函数调用中均不带参数 主调函数和被调函数之间不进行参数传送。 ■此类函数通常用来完成一组指定的功能,可以返回或不 返回函数值。 (2)有参函数(带参函数) ■在函数定义及说明时都有参数,称为形式参数(形参)。 ■在函数调用时也必须给出参数,称为实际参数(实参) ■进行函数调用时,主调函数将把实参的值传送给形参, 供被调函数使用
5 (1) 无参函数 函数定义、函数说明及函数调用中均不带参数。 主调函数和被调函数之间不进行参数传送。 此类函数通常用来完成一组指定的功能,可以返回或不 返回函数值。 (2) 有参函数(带参函数) 在函数定义及说明时都有参数,称为形式参数(形参)。 在函数调用时也必须给出参数,称为实际参数(实参)。 进行函数调用时,主调函数将把实参的值传送给形参, 供被调函数使用。 3. 从主调函数和被调函数之间数据传送的角度看可分为无参 函数和有参函数两种