第7章 函数与变量作用域 C语言是通过函数来实现模块化程序设计的。 教学目的: 掌握函数的定义与调用,变量的作用域: 了解函数的嵌套与递归调用,内部、外部函数 特点,以及变量的存储特性。 2024/10/28 1
2024/10/28 1 第7章 函数与变量作用域 C语言是通过函数来实现模块化程序设计的。 教学目的: 掌握函数的定义与调用,变量的作用域; 了解函数的嵌套与递归调用,内部、外部函数 特点,以及变量的存储特性
教学内容: 7.1*函数的定义与调用 7.2函数的嵌套调用与递归调用 7.3内部函数与外部函数 7.4*内部变量与外部变量 7.5变量的存储特性 本章要点 本章作业与上机实践 2024/10/28 2
2024/10/28 2 教学内容: 7.1* 函数的定义与调用 7.2 函数的嵌套调用与递归调用 7.3 内部函数与外部函数 7.4* 内部变量与外部变量 7.5 变量的存储特性 本章要点 本章作业与上机实践
7.1*函数定义与函数调用 7.1.1函数定义 任何函数都是由函数说明和函数体两部分组成。 1.分类 根据函数有无参数,将函数分为无参函数和有参 函数。 2024/10/28 3
2024/10/28 3 7.1* 函数定义与函数调用 7.1.1 函数定义 任何函数都是由函数说明和函数体两部分组成。 1.分类 根据函数有无参数,将函数分为无参函数和有参 函数
(1)无参函数 [函数类型]函数名(void) {说明语句部分; 在新标准中,函数 可执行语句部分; 不可缺省参数表:用 } “void”表示不需要参数。 (2)有参函数 「函数类型]函数名(数据类型参数,数据类型参数2) {说明语句部分; 形参表。调用有 参函数时,由调用函 可执行语句部分: 数为形参提供实际值, } 简称为实参。 2024/10/28 4
2024/10/28 4 (1)无参函数 [函数类型] 函数名( void ) { 说明语句部分; 可执行语句部分; } (2)有参函数 [函数类型] 函数名(数据类型 参数[,数据类型 参数2.]) { 说明语句部分; 可执行语句部分; } 形参表。调用有 参函数时,由调用函 数为形参提供实际值, 简称为实参。 在新标准中,函数 不可缺省参数表;用 “void”表示不需要参数
2.函数的返回值与函数类型 C语言的函数,还可分为有返回值函数和无返回 值函数两种。 (I)有返回值函数与return语句 括号可以缺省 ①一般格式:return(返回值表达式); ②功能:返回调用函数,并将“返回值表达式” 的值带给调用函数。 注意:函数中无return语句,返回l个不确定的值。 可用“void”定义成“无(空)类型”,明确表示不返回 值。 2024/10/28 5
2024/10/28 5 2.函数的返回值与函数类型 C语言的函数,还可分为有返回值函数和无返回 值函数两种。 (1) 有返回值函数与return语句 ①一般格式: return( 返回值表达式); ②功能:返回调用函数,并将“返回值表达式” 的值带给调用函数。 注意:函数中无return语句,返回1个不确定的值。 可用“void”定义成“无(空)类型” ,明确表示不返回 值 。 括号可以缺省
(2)函数类型 ①函数类型应与return语句中“返回值表达式” 的类型一致。 如果不一致,则以函数类型为准。 ②如果缺省函数类型,则系统一律按t型处理。 良好的程序设计习惯: 为了使程序具有良好的可读性并减少出错,将 无返回值函数定义为空类型void; 同时,也不使用系统对函数类型的缺省处理 2024/10/28 6
2024/10/28 6 (2) 函数类型 ①函数类型应与return语句中“返回值表达式” 的类型一致。 如果不一致,则以函数类型为准。 ②如果缺省函数类型,则系统一律按int型处理。 良好的程序设计习惯: 为了使程序具有良好的可读性并减少出错,将 无返回值函数定义为空类型void; 同时,也不使用系统对函数类型的缺省处理
「案例7.1]定义一个求两个整数中极大值的max0函数。 /*功能:求2个整数中的较大数*/ /*形参:2个,整型 对函数的注释 /*返回值:2个整数中的较大数*/ int max(int n1,int n2) /*函数定义/ return nl>n2 nl n2); /*/ void main(void) int max(int nl,int n2); /*对被调用函数进行说明*/ int numl,num2; printf("input two numbers:") scanf("%d%d",&numl,&num2); printf("max-%d n",max(numl,num2)); 2024/10/28 7
2024/10/28 7 [案例7.1] 定义一个求两个整数中极大值的max()函数。 /*功能:求2个整数中的较大数 */ /*形参:2个,整型 */ /*返回值: 2个整数中的较大数 */ int max( int n1, int n2) /*函数定义 */ { return ( n1 > n2 ? n1 : n2); } /**/ void main( void ) { int max(int n1, int n2); /*对被调用函数进行说明*/ int num1,num2; printf("input two numbers: "); scanf("%d%d", &num1, &num2); printf("max=%d\n", max(num1, num2)); } 对函数的注释
3、说明 (1)函数定义不允许嵌套。 一个函数的定义,可以放在程序中的任意位置, 但不能在一个函数的函数体内,即不能嵌套定义。 例如:main() {. int max((.){.} } (2)空函数一函数体为空的无参函数: [函数类型] 函数名(void)X} 2024/10/28 8
2024/10/28 8 3、说明 (1)函数定义不允许嵌套。 一个函数的定义,可以放在程序中的任意位置, 但不能在另一个函数的函数体内,即不能嵌套定义。 例如:main( ) {. int max(.) {.} } (2)空函数──函数体为空的无参函数: [函数类型] 函数名( void ){ }
7.1.2函数调用与返回 1、对被调用函数的说明和函数原型 (1)函数说明的一般格式 在新标准中,采用函数原型方式,对被调用函数 进行说明: 函数类型函数名(形参表); 2024/10/28 9
2024/10/28 9 7.1.2 函数调用与返回 1、对被调用函数的说明和函数原型 (1) 函数说明的一般格式 在新标准中,采用函数原型方式,对被调用函数 进行说明: 函数类型 函数名(形参表);
(2)函数说明的两种方式 ①谁调用谁说明:函数说明语句放在调用函数的 函数体中。 例如,在[案例7.1]主函数main0中: void main(void int max(int nl,int n2); 对被调用函数进行说明 2024/10/28 10
2024/10/28 10 (2) 函数说明的两种方式 ① 谁调用谁说明:函数说明语句放在调用函数的 函数体中。 例如,在[案例7.1]主函数main()中: void main( void ) { int max( int n1, int n2); . } 对被调用函数进行说明