文档详情

第八章zrr语言.doc

发布:2018-06-19约7.48千字共22页下载文档
文本预览下载声明
第八章?函?数 8.1 概述 C语言是通过函数来实现模块化程序设计的。应用程序往往由多个函数组成的,每个函数分别对应各自的功能模块,用户可以把自己的算法编成一个个相对独立的函数模块,然后用调用的方法使用函数来实现这些功能。 ?main() {x=2;y=3; h=cf(x,y); print (“%d”,h)} int cf(int i,int j) {int k,z=1; for (k=1;k=j;k++) {z=z*i;} return(z);}? 说明: 1. 一个C程序由一个或多个源程序文件构成,一个源程序文件也可以被多个程序公用。(比较大的c语言程序为了便于分工和程序的安全性可以分别存储在多个文件当中) 2. 一个源程序文件由一个或多个函数构成,编译时以源程序为单位进行,而不是以函数为单位。 ⒊ 主函数main可以调用其它函数,但不允许被其它函数调用,因此C程序的执行总是从main函数开始,完成对其它函数的调用后再回到main函数,最后由main函数结束整个程序。 ⒋ 程序中的所有函数定义都是平行的,即在一个函数的函数体内不能再定义另外一个函数(不嵌套定义),但是允许嵌套调用 。 C函数的分类 从用户使用的角度分为 √ 库函数 printf( )(尽量使用 ) √ 自定义函数 cf( ) √ 有参函数 scanf(“%d”,a) √ 无参函数 clrscr( ) 8.2 函数定义的一般形式 ⒈ 无参函数的定义形式(不引用程序其它部分数据) ??? 类型说明符? 函数名( ) ??????????? { 说明部分; ??????????????语句部分;} 其中“类型说明符”用来指定函数值的类型,无参函数一般带回的返回值我们不关心,所以也可以省略“类型说明符”。 Void prints( ) { int i; for(i=0;i=2;i++) Printf(“*****\n”);} ⒉ 有参函数的定义形式 ??? 类型说明符? 函数名(形参表列) ??????????? { 说明部分; ??????????????语句部分; } int max(int x, int y) {int z; z=xy? x:y; return (z);} 有参函数比无参函数多了一个形式参数表,形式参数根据需要可以是任何数据类型的变量,各个参数间用逗号分隔。在函数调用时,由主调函数给这些形参赋实际的值。 对形参的声明可以分为两种形式: √ 传统方式:声明部分放在函数的第二行,仅在括号里给出形参的名字。 Int max (x,y){int x,y;} √ 现代方式:在函数名后的括号内直接写出形参的类型和名字。 Int max(int x,int y) 建议使用 ⒊ 空函数 没有参数、函数体又为空的函数称为空函数。其一般形式为: 类型说明符 函数名() ??????? { } 调用空函数什么都不做,没有任何实际作用。通常是为了以后扩充新功能而设,先占好一个位置,以后用编好的函数类替代它。这样做可以使结构清楚,提高程序的可读行。(通常在程序整体设计时先加入一些空的函数,使主要功能模块结构清晰,将来用编好的函数体来替换.) 8.3?函数参数和函数值 ⒈ 形参和实参 在函数定义时函数名后面括号内的参数称为“形参”,函数调用时函数名后面括号内的参数称为“实参”,它们的作用是实现数据传递。 形参出现在定义中,它只能在函数体内使用;在函数调用时,主调函数把实参的值传递给被调函数的形参,从而实现了数据的传送。 说明: ⑴ 定义函数时,形参不分配内存单元,只有在被调用时才被分配内存单元,调用结束后立即释放分配的单元。 ⑵ 实参可以是常量、变量、表达式或函数等,但要求它有确定的值,以便把值传递给形参。 ⑶ 在被定义的函数中必须指定形参的类型。 ⑷ 形参与实参的类型必须相同或者赋值兼容。 ⑸ 函数调用中发生的数据传递是单向的,即只能把实参的值传递给形参。在函数调用过程中,形参的值发生变化,而实参的值不会变化。 例子001.c ⒉ 函数的返回值 通过函数调用使主调函数得到一个确定的值,就是函数的返回值。如:Sqrt(8.0) 说明: ⑴ 函数的值只能通过return语句返回主调函数。一般格式为:return(表达式); 其中括号可以省略。 ⑵ 如果被调用的函数中没有return语句,不表示它没有返回值,只是返回一个不确定的值。为了表明不需要返回一个值,可以把函数定义成void型。Void printst(){} ⑶ 函数值的类型应与return语句中表达式的值一致,如果二者不一致,则要以函数类型为准自动进行转换。 ⑷ C语言规定,凡是不加类型说明符的函数,一律按整型处理。 8.4 函数调用 ⒈ 函数调用的一般形式 在
显示全部
相似文档