应预先用赋值、输入等办法使实参获得确定值。 ③实参和形参在数量上、类型上、顺序上应严格一致, 否则会发生―类型不匹配‖的错误。 ④函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 3、数组作函数参数 ①数组元素作函数实参 同变量作实参一样,―值传递‖。 如print(a[5]); ②数组名作为函数参数 [1]一维数组作为函数参数 1)函数定义格式: <类型><函数名>(<类型><数组名[长度],…) 2)函数调用格式:函数名(数组名,…) 注:A、实参数组名后不参加[]。 B、传递的是数组的首地址,不为形参分配空间。 对形参的修 改就是对实参的修改。 C、主函数中和被调函数中分别定义数组,类型需一致,大小可 一致可不一致。 D、形参数组可不指定大小,定义形参时,采用―数组名[]‖即 可,可另设一个参数,传递数组元素的个数。 [2]二维数组作为函数参数 1)函数定义格式:<类型> <函数名>(<类型><数组名>[行长度][列长度]…) 2)函数调用格式:函数名(数组名,…) 3)参数传递方式为地址传递。 注:形参中定义二维数组时,行长度可以省略,列长度不能省略 作 业 教学反馈
26
四川警安职业学院标准教案纸
课程名称 授课时间 教学目标 第五章 函数 第8讲 函数变量的作用域 09.4.13 地点 六多媒体 任课教师 授课班级 07计信 人数 53人 理解变量的作用域,能够理解全局变量、局部变量、静态变量的概念和用法; 掌握函数原形的概念及使用方法 全局变量、局部变量、静态变量的概念,用法。函数原形的使用方法 全局变量、局部变量、静态变量的概念,用法。函数原形的使用方法 讲授法、演示法、2节 教学方法 教学手段 多媒体教学 实践操作法 教学重点 教学难点 教学时数 教学内容: 一、函数变量 (一)变量的作用域的定义即分类。 变量在程序、函数或者程序体中的作用范围即变量的作用域。包括以下四类作用域: 1、块作用域:从块内变量定义到块结束; 2、文件作用域:从函数外变量定义开到文件结束。 3、函数原型作用域:从原型变量定义开始到函数原型说明结束 4、函数作用域:从函数开始到函数结束。 (二)局部变量 函数或块内定义的变量称为局部变量。局部变量都具有块作用域,只能在定义它的函数或块内使用。 int f1(int a) //函数f1 { int b,c; …} int f2(int x) //函数f2 { int y,z; … } //x,y,z作用域:仅限于函数f2( )中 void main( )
27
{ int m,n; … } //a,b,c作用域:仅限于函数f1( )中;//m,n作用域:仅限于函数main( )中 (三)全局变量 定义在函数体外的变量。 int f1(int a) //函数f1 { int b,c; … } int f2(int x) //函数f2 { int y,z; … } //x,y,z作用域:仅限于函数f2( )中 #include
28
void main( ) { int i,a=0; for(i=0;i<5;i++) a+=f( ); cout<<变量名表> 例:auto int x; ①自动类型—auto: [1]可省略,自动类型是局部变量,只能定义在函数内,其作用域为块作用域。 [2]变量放在动态存储区。 [3]此类型的变量若没有赋初值,初值是不定的 ②寄存器型 –register 动态局部变量,存储于CPU的寄存器中,存取速度快。通常用做循环控制变量。 ③静态类型—static 函数内—局部静态变量(函数外—全局静态变量) [1]程序执行过程中,当调用定义该变量的函数结事后,并不收回存储空间,再次调用函数时,变量仍然使用相同的空间,整个程序运行期间变量都存在。 [2]变量存储于静态存储区中,默认初值为0 [3]静态变量只能由定义它的函数引用它,其它函数不能引用它。 ④外部类型—extern [1]在同一文件中使用extern说明外部变量,扩展全局变量的作用域。若全局变量在同一文件中定义在后,引用在前,则引用前要将此全局变量说明成外部变量 [2] 在多个文件的程序中使用extern 说明外部变量,在一个文件中定义的全局变量,要被其他文件引用时,引用的文件中要用extern将此全局变量说明成外部变量。即可将一个文件中定义伯全局变量的作用域扩大到引用文件中。 二、函数的原型 1、定义:
29
函数的原形也称为函数声明或函数模型。 在主调函数中,如果要调用另一个函数,则需在本函数或本文件中的开头将要被调用的函数事先作一声明。声明函数,就是告诉编译器函数的返回类型、名称和形参表构成,以便编译系统对函数的调用进行检查。 2、函数声明的一般格式为: 函数类型 函数名(形式参数表); 3、对于函数原型的几点说明: (1)一个完整的程序中,函数的定义和函数的调用可以在同一个程序文件中,也可以处在不同的程序文件中,但必须确保函数声明语句与函数调用表达式出现在同一个文件中,并且函数声明语句出现在前,函数的调用出现在后。 (2)当一个函数要被一个文件中的多个函数调用时,可以将该函数声明写在所有函数之前。 (3)虽然函数声明与函数头相似,但是它们之间也有细微的差别,注意区别。 (4)函数声明中不能只写形参名而不写类型。 (5)函数声明中除了当函数返回值类型为int或char时函数类型可以省略外,一般情况下不能省略函数类型。 (6)由于调用时是按参数顺序进行传递的,所以函数声明中形参的次序也不要写错。 (7)并不是对所有被调函数都要作声明。 作 业 教学反馈
30