8.4.2函数调用的方式 1.函数语句,一般不要求函数带回值,只要 求函数完成一定的操作 printstaro 2·函数表达式。要求函数带回一个确定的值以 参加表达式的运算。 c=2*max(a, b) 3.函数参数。函数调用作为一个函数的实参。 m=max (a, max (b, c))
8.4.2 函数调用的方式 1.函数语句,一般不要求函数带回值,只要 求函数完成一定的操作。 printstar(); 2·函数表达式。要求函数带回一个确定的值以 参加表达式的运算。 c=2*max(a,b); 3.函数参数。函数调用作为一个函数的实参。 m=max(a,max(b,c));
8.4.3函数声明和函数原型 调用函数时,应具备以下条件: 1·首先被调用的函数必须是已经存在的函数 (是库函数或用户自己定义的函数) 2·如果使用库函数,应使用文件包含语句 t include stdio. h include math.H〃 #include string. h"n
8.4.3 函数声明和函数原型 调用函数时,应具备以下条件: 1·首先被调用的函数必须是已经存在的函数 (是库函数或用户自己定义的函数)。 2·如果使用库函数,应使用文件包含语句: #include “stdio.h” #include “math.H” #include “string.h
3.如果使用同一个文件中用户自定义的函数,一般还应该 在主调函数中对被调用函数进行声明,声明形式为: 类型标识符被调用函数名(参数说明); 以上声明又称为函数原型 [例8.5] maino float add( float X, float x);/*内部声明*/ float a, b,c scanf (%f, %fm,&a &b) c=add (a, b) printf ("sum is %f",c);) float add( float x, float y)/*定义add函数*/ i float z: z=X+y return (z);
3.如果使用同一个文件中用户自定义的函数,一般还应该 在主调函数中对被调用函数进行声明,声明形式为: 类型标识符 被调用函数名(参数说明); 以上声明又称为函数原型 [例8.5] main() { float add(float x,float x); /*内部声明*/ float a,b,c; scanf(”%f,%f”,&a,&b); c=add(a,b): printf(”sum is %f”,c);} float add(float x,float y) /*定义add函数*/ { f1oat z; z=x+y; return(z);}
C语言在从上而下逐行编译检查程序时,有以下规定: (1)如果函数的值(返回值)是整型或字符型,可 以不必进行说明,系统对它们自动按整型说明。 2)如果被调用函数的定义出现在主调函数之前, 在主调函数中可以不必加以说明。 如果在函数调用之前,没有声明被调函数,则 将第一次遇到的被调函数作为对函数的声明,并默认为 整型。 (3)函数的声明与定义不同。 声明的作用是把函数的名字、类型、以及形参的类型、个数、 顺序告诉编译系统,以便系统进行检查。 (4)函数声明时可不指定形参的名字,但必须指定 类型
C语言在从上而下逐行编译检查程序时,有以下规定: (1)如果函数的值(返回值)是整型或字符型,可 以不必进行说明,系统对它们自动按整型说明。 (2)如果被调用函数的定义出现在主调函数之前, 在主调函数中可以不必加以说明。 如果在函数调用之前,没有声明被调函数,则 将第一次遇到的被调函数作为对函数的声明,并默认为 整型。 (3) 函数的声明与定义不同。 声明的作用是把函数的名字、类型、以及形参的类型、个数、 顺序告诉编译系统,以便系统进行检查。 (4)函数声明时可不指定形参的名字,但必须指定 类型
例8.5改写如下(即把main函数放在add函数 的下面),就不必在max函数中对ad进行说明。 float add (float x, float y Float z: z=XTy i return (z) main i float a,b scanf %f, %f.&a, &b) c=add (a, b) printf(%f,c)
例8.5改写如下(即把main函数放在add函数 的下面),就不必在max函数中对add进行说明。 float add(float x,float y) {float z; z=x+y; return(z);} main() { float a,b,c; scanf("%f,%f",&a,&b); c=add(a,b) ; printf("%f",c); }