《C程序设计》(第三版)第八章 函数.ppt
文本预览下载声明
C语言程序设计 主讲人:杉杉 E-mail163.com 第八章 函数 8.1 概述 8.2 函数定义和调用 8.3 函数的嵌套调用和递归调用 8.4 数组作为函数参数 8.5 局部变量和全局变量 8.6 内部函数和外部函数 8.7 动态存储变量与静态存储变量 8.8 程序举例 8.1 概述 函数分为:库函数和用户自定义函数 C库函数非常丰富,在调用库函数时,必须清楚: (1)函数的功能和名称 (2)参数的个数和顺序,每个参数的意义和类型 (3)函数值的意义和类型 (4)使用标准函数时需要使用包含文件 8.2 函数定义和调用 8.2.1 函数的定义 8.2.2 函数的返回值与函数类型 8.2.3 对被调用函数的说明和函数原型 8.2.4 函数的调用 8.2.5 函数的形参与实参 8.2.1 函数的定义 根据函数是否需要参数,可将函数分为无参函数和有参函数两种。 1. 无参函数的一般形式 2. 有参函数的一般形式 3.说明 1. 无参函数的一般形式 函数类型 函数名( ) { 说明语句部分; 可执行语句部分; } 2. 有参函数的一般形式 函数类型 函数名(数据类型 参数[,数据类型 参数2……] ) { 说明语句部分; 可执行语句部分; } 【例8.1】 定义一个函数,用于求两个数的和。 3.说明 (1)函数定义不允许嵌套 在C语言中,所有函数都是平行的。一个函数的定义,可以放在程序中的任意位置,主函数main()之前或之后。但在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。 (2)空函数──既无参数、函数体又为空的函数。其一般形式为: [函数类型] 函数名( ) { } 8.2.2 函数的返回值与函数类型 1.函数返回值与return语句 2.函数类型 1.函数返回值与return语句 (1)return语句的一般格式 return ( 返回值表达式 ); return 语句后面的()可以不要,如return z;和return (z);等价。 (2)return语句的功能 返回调用函数,并将“返回值表达式”的值带给调用函数。 注意:调用函数中无return语句,并不是不返回一个值,而是一个不确定的值。为了明确表示不返回值,可以用“void”定义成“无(空)类型”。 2.函数类型 在定义函数时,对函数类型的说明,应与return语句中返回值表达式的类型一致。 如果不一致,则以函数类型为准。 如果缺省函数类型,则系统一律按整型处理。 良好的程序设计习惯: 凡不要求返回值的函数都应定义为空类型void; 即使函数类型为整型,也不使用系统的缺省处理。 8.2.3 对被调用函数的说明和函数原型 对被调用函数进行声明,其一般格式如下: 函数类型 函数名(数据类型[ 参数名1][, 数据类型[ 参数名2]…]); C语言规定在以下2种情况下,可以省去对被调用函数的说明: 当被调用函数的函数定义出现在调用函数之前时。 如果在所有函数定义之前,在函数外部(例如文件开始处)预先对各个函数进行了说明,则在调用函数中可缺省对被调用函数的说明。 【例8.2】对被调用函数作声明 #include stdio.h void main() {float add(float x, float y); /*对被调用函数add声明*/ float a,b,c; scanf(%f,%f,a,b); c=add(a,b); printf(sum is %f\n,c); } float add(float x,float y) {float z; z=x+y; return(z);} 8.2.4 函数的调用 C语言中,函数调用的一般形式为: 函数名([实际参数表]) ; 如果调用无参函数,则实际参数表可以没有,但括号不能省。 切记:实参的个数、类型和顺序,应该与被调用函数所要求的参数个数、类型和顺序一致,才能正确地进行数据传递。 在C语言中,可以用以下几种方式调用函数: (1)函数表达式。函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数有返回值。 如c=max(a,b)*20; (2)函数语句。C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。 如:Print( ); (3)函数实参。函数作为另一个函数调用的实际参数
显示全部