第八章函数 ★C是模块化程序设计语言 C程序 源程序文件1 源程序文件i 源程序文件n 预编译命 函数1 函数n 说明部分 执行部分 C程序结构 C是函数式语言 但必须有且只能有一个名为main的主函数 口C程序的执行总是从皿ain函数开始,在main中结束 口程序中函数都是平行的,不能嵌套定义,可以嵌套调用
C是模块化程序设计语言 源程序文件1 预编译命令 说明部分 执行部分 函数1 函数n 源程序文件i 源程序文件n C程序 C程序结构 C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 程序中函数都是平行的,不能嵌套定义,可以嵌套调用 第八章 函数
例如下面是一个C源程序,它由两个函数组成, 即main与max函数 maino maino 〔inta,b; i int a, b Int c int c scanf(%d, %d", &a, &b) scanf(%/od, %d", &a, &b) c=max(a, b) c=max(a,b) printf(" Max is %/dn,c) printf("Max is%dn,c) max(x, y) max(int x, int y) Int X, y nt z i int z =X>y?x y; ZXy!Xy, return (z) return(z
main() { int a,b; int c; scanf("%d,%d",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(int x, int y) { int z; z=x>y?x:y; return(z); } 例如下面是一个C源程序,它由两个函数组成, 即 main 与 max 函数 main() { int a,b; int c; scanf("%d,%d",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max( x, y) int x , y ; { int z; z=x>y?x:y; return(z); }
函数分类 1、标准函数(库函数:由系统提供) 例如pinf函数、sqr函数 2、用户自定义函数:例如:上面程序中的 max函数 max(int x, int y) int z, Z=Xy.x:y; return(z;
函数分类 1、标准函数(库函数:由系统提供 ): 例如:printf 函数 、sqrt函数. 2、用户自定义函数 : 例如:上面程序中的 max 函数 max(int x, int y) { int z; z=x>y?x:y; return(z); }
省略时为int类型 函数的定义 void类型是无返回 ★一般格式 值 形参 函数类型函数名(形参类型说明表) 说明部分 函数体 语句部分 例有斧数聊4风格 例无参函数 printstar( i printf( cc*水水*水*水水水 n 空
函数的定义 一般格式 函数体 函数类型 函数名(形参类型说明表) { 说明部分 语句部分 } 例 有参函数(现代风格) int max(int x,int y) { int z; z=x>y?x:y; return(z); } 例 有参函数(现代风格) int max(int x, y) { int z; z=x>y?x:y; return(z); } 例 空函数 dummy( ) { } 函数体为空 例 无参函数 printstar( ) { printf(“**********\n”); } 省略时为 int 类型 void 类型是无返回 值 形参
88.3函数的返回值 maino fint c, a=1, b=2 返回语句形式 c=add(a, b); printf(“c=%d”,c) return(表达式); 或 return表达式 int add(int x, int y) f int z; 或[ return] x+y; return(z); 功能:使程序控制从被调用} 演示 数返回到调用函数中。同时把返值带给调用 函数 函数结束标志:遇到 return语旬或执行到 最后一个
§8.3 函数的返回值 返回语句形式: return(表达式); 或 return 表达式; 或 [return;] 功能:使程序控制从被调用 函数返回到调用函数中,同时把返值带给调用 函数 函数结束标志: 遇到 return 语句 或执行到 最后一个 } main() { int c , a=1 , b=2; c=add(a,b); printf( “c= %d ”,c); } int add(int x, int y) { int z; z=x+y ; return(z); } 演示
例函数带回不确定值 printstarO void printstarO print("******) i printf("*****x** maino main i int a int a a=printstarO a=-printstar printf("%od", a) printf("%/od", a) 输出:10 编译错误! 演示
printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); } 例 函数带回不确定值 输出:10 void printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); } 编译错误! 演示
例函数返回值类型转换 maino i float a, b 运行情况: int c 输入:25,3.5 scanf(%f, %f", &a, &b) c-max( a 调用函数 printf(d"Max is %dn", c); c=max(2.5, 3.5) mtma( pat x, float y)返回值( return(35) i float z z=x>y?:y 输出: Max is3 return (z) 演示
例 函数返回值类型转换 main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } int max(float x, float y) { float z; z=x>y?x:y; return(z); } 运行情况: 输入:2.5,3.5 调用函数 c=max(2.5,3.5) 返回值(return(3.5)) 输出:Max is 3 演示
88.4函数的调用 调用形式 函数名(实参1,实参2,……,实参k); 对照函数定义形式 类型函数名(类型1形参1,类型2形参2,…) 说明:实参与形参个数相等 类型一致,按顺序 对应
§8.4 函数的调用 调用形式 函数名(实参1,实参2,…,实参k); 对照函数定义形式 类型 函数名(类型1 形参1,类型2 形参2,….) {……} 说明:实参与形参 个数相等, 类型一致,按顺序一一对应
调用方式 printstar( printf("********** 函数语句 maino 例 printstar i printstar( printf( Hello, World!n) 函数表达式 maino 例m=max(a,b)*2; fint c, a=1, b=2 c=add(a, b)* 2; 函数参数 printf((“c=%d”,c) p] printf(%/od,,max(a, b ) int add(int x, int m=max(a, max(b, c) nt X return(z)
调用方式 函数语句: 例 printstar(); printf(“Hello,World!\n”); 函数表达式: 例 m=max(a,b)*2; 函数参数: 例 printf(“%d”,max(a,b)); m=max(a,max(b,c)); main() { int c , a=1 , b=2; c=add(a,b)*2; printf( “c= %d ”,c); } int add(int x, int y) { int z; z=x+y ; return(z); } printstar() { printf("**********"); } main() { printstar(); }
数声明 1、什么是函数声明? 函数声明的一般形式: 类型函数名(形参类型[形参名,…); 例如: int max(intx,iny); Et float add(float, float); 2、函数声明的作用是什么? 告诉编译系统函数类型、参数个数及类型,以便检 验
函数声明 1、什么是函数声明? 函数声明的一般形式: 类型 函数名(形参类型 [形参名],….. ) ; 例如:int max( int x , in y) ; 或 float add(float , float ) ; 2、函数声明的作用是什么? 告诉编译系统函数类型、参数个数及类型,以便检 验