■ return该语句的功能是计算表达式的值,并返回给主调 函数。在函数中允许有多个 return语句,但每次调用只能 有一个 return语句被执行,因此只能返回一个函数值。 2.函数值的类型和函数定义中函数的类型应保持一致。如果 两者不一致,则以函数类型为准,自动进行类型转换。 3.如函数值为整型,在函数定义时可以省去类型说明。 4.不返回函数值的函数,可以明确定义为“空类型”,类 型说明符为“void〃
16 2. 函数值的类型和函数定义中函数的类型应保持一致。如果 两者不一致,则以函数类型为准,自动进行类型转换。 3. 如函数值为整型,在函数定义时可以省去类型说明。 4. 不返回函数值的函数,可以明确定义为“空类型”,类 型说明符为“void” 。 return该语句的功能是计算表达式的值,并返回给主调 函数。 在函数中允许有多个return语句,但每次调用只能 有一个return 语句被执行,因此只能返回一个函数值
如上例中函数s并不向主函数返函数值 int s(int n) 因此可定义为: for(i=n-1; i>=l;i--) void s(int n) n=nti; printf("n=%dn", n); return 0: 旦函数被定义为空类型后,就不能在主调函数中使用 被调函数的函数值了。 ■例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n);就是错误的。 为了使程序有良好的可读性并减少出错,凡不要求返回 值的函数都应定义为空类型
17 因此可定义为: void s(int n) { …… } 如上例中函数s并不向主函数返函数值 一旦函数被定义为空类型后,就不能在主调函数中使用 被调函数的函数值了。 例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n); 就是错误的。 为了使程序有良好的可读性并减少出错,凡不要求返回 值的函数都应定义为空类型。 int s(int n) { int i; for(i=n-1;i>=1;i--) n=n+i; printf("n=%d\n",n); return 0; }
函数的调用 函数调用的一般形式 函数名(实际参数表) ■对无参函数调用时则无实际参数表。 ■实际参数表中的参数可以是常数,变量或其它构造类型 数据及表达式 ■各个实际参数之间用逗号分隔
18 函数的调用 函数调用的一般形式 函数名(实际参数表) 对无参函数调用时则无实际参数表。 实际参数表中的参数可以是常数,变量或其它构造类型 数据及表达式。 各个实际参数之间用逗号分隔
调用函数的方法: 1.函数表达式 ■函数作表达式中的一项出现在表达式中,以函数返回值 参与表达式的运算。这种方式要求函数是有返回值的 例如:zmax(x,y)是一个赋值表达式,把max函数的 返回值赋予变量z。 2.函数语句 ■函数调用的一般形式加上分号即构成函数语句,即 函数名(实际参数表); ■例如: printf("%d",a); scanf("%d’,&b;都是以函 数语句的方式调用函数
19 1. 函数表达式 函数作表达式中的一项出现在表达式中,以函数返回值 参与表达式的运算。这种方式要求函数是有返回值的。 例如: z=max(x,y) 是一个赋值表达式,把max函数的 返回值赋予变量z。 调用函数的方法: 2. 函数语句 函数调用的一般形式加上分号即构成函数语句,即: 函数名(实际参数表); 例如: printf ("%d",a); scanf ("%d",&b);都是以函 数语句的方式调用函数
调用函数的方法 3函数实参 ■函数作为另一个函数调用的实际参数出现。 ■这种情况是把该函数的返回值作为实参进行传送,因此要 求该函数必须是有返回值的。 ■例如: printf("%d,max(x2y);即是把max调用的返回 值又作为 printi函数的实参来使用的
20 3.函数实参 函数作为另一个函数调用的实际参数出现。 这种情况是把该函数的返回值作为实参进行传送,因此要 求该函数必须是有返回值的。 例如: printf("%d",max(x,y)); 即是把max调用的返回 值又作为printf函数的实参来使用的。 调用函数的方法: