第八章函数 ★C是模块化程序设计语言 C程序 源程序文件1源程序文件源程序文件n 预编译命令 函数1 数 n 说明部分 执行部分 C程序结构 但C是函数式语言 但必须有且只能有一个名为main的主函数 但C程序的执行总是从main函数开始,在main中结束 程序中函数都是平行的,不能嵌套定义,可以嵌套调用
C是模块化程序设计语言 源程序文件1 预编译命令 说明部分 执行部分 函数1 函数n 源程序文件i 源程序文件n C程序 C程序结构 C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 程序中函数都是平行的,不能嵌套定义,可以嵌套调用 第八章 函数
例如下面是一个C源程序,它由两个函数组成, 即main与max函数 main( maino i int a, b i int a, b Int c scanf( %od, %d",&a, &b) scanf(" %od, %od", &a, &b) c-max(a 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; i int z Int z Z-x>y? y ZXy!Xy, return(z returne
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); }
函数分类 标准函数(库函数:由系统提供) 例如 printf函数、sqt函数 2、用户自定义函数:例如:上面程序中的 max函数 max(int x, int y) Int Z, z=X>y?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类型是无返回 ★一般格式 值 形参 函数类型函数名(形参类型说明表) 说明部分 函数体 语句部分 例有衾函斯代风格) 例无参函数 printstar( { printf(***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 类型是无返回 值 形参
main §8.3函数的返回值 0 int c, a-l, b-2, 返回语句形式 c=add(a, b) printf((“c=%d”,c) return(表达式); 或 return表达式 int add(int x, int y) f int z; 或 return;] Fx+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 printf("*****x *** { printf("*米*") ma mal i int a Int a a=printstar a=printstaro 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 运行情况: 输入:2.535 scanf("%f, %f, &a, &b) c-=max(a, b) 调用函数 printf("Max is %dn", c);c=max(2.5,3. 5) int max(float x, float y 返回值( return3.5) i float z 输出: Max is3 zX>y?X y 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 演示
§8.4函数的调用 调用形式 函数名(实参1,实参2,…,实参k); 对照函数定义形式 类型函数名(类型1形参1,类型2形参2,…) 说明:实参与形参个数相等, 类型一致,按顺序一一对应
§8.4 函数的调用 调用形式 函数名(实参1,实参2,…,实参k); 对照函数定义形式 类型 函数名(类型1 形参1,类型2 形参2,….) {……} 说明:实参与形参 个数相等, 类型一致,按顺序一一对应
调用方式 printstari pnt("***** 函数语句 mainl 例 printstar( printstar printf(" Hello, World!n"); D 函数表达式: nain 例mmax(a,b)*2; f int c, a=1, b=2; =add( a, b) *2; 函数参数: printf((“c=%d”,c) 例 printf(% od max(ab) int add(int X, int y) m=max(a, max(b, c)) f int z; Fx+y; 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); st float add(float, float) 2、函数声明的作用是什么? 告诉编译系统函数类型、参数个数及类型,以便检 验
函数声明 1、什么是函数声明? 函数声明的一般形式: 类型 函数名(形参类型 [形参名],….. ) ; 例如:int max( int x , in y) ; 或 float add(float , float ) ; 2、函数声明的作用是什么? 告诉编译系统函数类型、参数个数及类型,以便检 验