资源预览内容
第1页 / 共87页
第2页 / 共87页
第3页 / 共87页
第4页 / 共87页
第5页 / 共87页
第6页 / 共87页
第7页 / 共87页
第8页 / 共87页
第9页 / 共87页
第10页 / 共87页
亲,该文档总共87页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第八章 函 数 (The User-defined Function)Function declaration, called, return a value and passing character(定义、调用、返回值的方法及参数传递方式 )Function usage(掌握函数使用的常用方法)Variable scope and storage class(变量的作用域和变量的存储类别)8.1 概 述一、C函数的概念将一个C程序分为若干模块,每个模块实现一个 特定的功能,在C语言中用函数来实现模块的功能 。 函数:具有某种功能的独立程序段。Independent Program Block 从程序设计方法看C函数:它是实现模块化 程序设计的语法元素。(Syntax element)从C语言中程序的组成方式看C函数:它是 程序的基本组成单位。(Program foundation) 二、C函数与C程序结构 C程序由主函数(main函数)和若干个子函数构成; 主函数调用子函数; 子函数在定义时是并列的; 子函数可相互调用,也可被多次调用。mainabcdefghhieg#include #include void main() char prime(int);/函数声明或定 义函数原形(Function Prototype) int n; printf(“nInput an integer:“); scanf(“%d“, if(prime(n)=g)/函数调用printf(“n%d is a prime.“,n); elseprintf(“n%d is NOT a prime.“,n); /函数定义(Function Definition) char prime(int n)/函数 类型、名称,形式参数 的定义 char flag=g;int i,k; k=sqrt(n)+1; for(i=2;i #include class CVectorProgram start from the “main” function, and finally ended at the end of the “main” function. (C程序执行总是从main函数开始,调用其他函数后流程回到main函数,在main函数中结束整个程序的运行。)Function can not be declared by nesting, but can be called by nesting. “main” function can never be called.(函数不能嵌套定义,但可以互相调用。注意 不能调用main函数。) 四、函数的分类 (Category of Functions)1. 从函数的参数形式看,函数可分为四类: No arguments and no return value void print_star( void ) printf(“*”); or void print_star() printf(“*”); Arguments but no return value void max( inta,intb ) int z; z=ab?a:b; printf(“The max is:%d”,z); No arguments but return a value int get_number() int number; scanf(“%d”, return number; 有参函数(Arguments With return value) 有参函数例:(输出两数中大者) #include int max( int x, int y ); /函数原形 main( ) int num1,num2,a;scnaf(“%d,%d“, a = max(num1,num2);printf(“max=%d“,a); int max( int x, int y ) int z;if(xy) z=x; else z=y; return z; 2. By user usage(从用户使用的角度看,函数有两种)Standard Library Function标准函数库函数:是由编译系统提供的已设计好的 函数,用户只需调用而无需去实现它。前几章用过 的scanf,printf,getchar,putchar,fmod,sqrt等 都是库函数。 User-defined Function用户自定义函数:由程序员自己定义和设计的函 数。需要程序员自己来编写函数功能实现代码。 8.2 Definition of Function(函数定义的一般形式 ) 一、No arguments function definition (无参函数的定义)Type function_name() variable Declaration(说明部分 ) sentences(语句) 例如: Void print_message() printf(“n Hello!”); No Parameters passedFunction head Function Body or: Void print_message(void) No input and no return value二、 Arguments function definition (有参函数的定义形式)Type function_name( parameter list)类型标识符 函数名(形式参数表列) variable Declaration(说明部分) sentences(语句)有参数传递formal parameters list例如: int max (int x, int y) /*求x和y二者中大者,x,y为形参*/ int z; /*函数体中变量的说明*/z=xy?x:y;return (z); /*将z的值作为函数返回值*/ 三、 The Empty Function(空函数的定义)类型标识符 函数名( ) 例如:dummy() 功能:do nothing(调用后什么也不做)用处:建立程序结构,在需要时补充功能。type function_name( ) 四、 对形参说明的传统方式上面讲的形式参数表的说明形式是新版C语言表 示形式(现代方式),即形式参数说明是类型和 参数在一起说明。传统的形式参数说明是类型和 参数分别说明。 如:按传统方式说明形参int max(x , y) int x,y; 按现代方式说明形参int max(int x , int y) 这两种方式都可以使用,但推荐使用现代方式。 注意这里是逗号8.3 Arguments and return value 函数参数和函数的值 一、 形式参数和实际参数 formal arguments :在定义函数时函数名后面小括 弧中的变量名,简称形参。actual arguments :在调用函数时函数名后面小括 弧中的表达式,简称实参。 main( ) int a,b,c;scanf (“%d,%d,c=max(a,b);printf(“Max is %d”,c); int max( int x, int y) int z;z=xy? x:y;return(z); formal argumentactual argument上例中形参与实参、函数名与返回值之间的关系 :c=max(a, b);-max(int x,int y) returu (z); Actual arguments: when program execution pass the value to functionformal arguments: inform the complier to allocate memory spaceAssign the return value to the function name formal arguments are local ones(形参是函数的内 部变量,只在函数内部才有意义;形参调用前不 占内存单元,调用时占用, 调用后释放) 对每个形参必须指明其名字和数据类型;max(int a,b) The actual argument must has a definitude value (实参可以是常量、变量或表达式,并且必须有 确定的值) Formal arguments must match actual ones in numbers and type(实参个数、类型必须与对应的 形参一致)Some instruction(关于参数的几点说明):c=max(a, b);- max(int x,int y) returu (z); 实参对形参的数据传递是值传递,即单向传递, 只由实参传递给形参,反之不可。调用结束后, 只有形参单元被释放,实参单元中的值不变。Values of argumentsNo return values二、函数的返回值(Return value)1. 定义:通过函数调用使主调函数得到一个确定的值,称为函数的返回值。 例如: c=max(3, 5); 此时函数的返回值是5,因此c=5 2. 函数的返回值语句 return函数的返回值是通过 return语句获得的。 return语句将被调用函数的一个确定的值带回 主调函数中去。return语句的一般形式:return(value); return value; “函数返回值”是有确定值的常量、变量或表达式 。说明:一个函数中可以有多个return语句,但是一次函数执行只能执行其中的一个。当执行到某个return语句时,则终止函数执行,并带回函数值。若函数体内没有return语句,就一直将函数执行完,再返回调用函数,有一个不确定的值带回。 return 后面的值可以是一个表达式,例如:z=xy? x:y;return(z); return (xy? x:y); return后面可以无“返回值”(即 return ;),则该return语句只起到 终止函数执行,返回主调函数的作用。三、函数值的类型(Type of return value)函数定义时说明的函数的类型(即函数值的 类型),应该与return语句的类型一致。 说明:凡不加类型说明的函数,一律自动按整型处理。如果函数类型和return语句的类型不一致,以函数类型为准。对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。如果函数不返回值,可以将函数定义为“无类型”void (或称“空类型”)。例如: void print_star()8.4 函数的调用(Function calls) 一、函数调用的一般形式 (Methods)variable_name( Arguments list ) Arguments function :No arguments :variable_name () 说明:(2)实参与形参个数相等,类型一致,按顺序对应,一 一传递数据;实际参数表中的多个实参间用逗号隔开,实参可以 是常量、变量或表达式; (3)实参表求值的顺序与系统有关。二、函数调用
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号