靳润昭C语言教程讲义 2001年2月17日 或者为 return(表达式) 该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个 return 语句,但每次调用只能有一个 return语句被执行,因此只能返回一个函数值 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类 型为准,自动进行类型转换 3)如函数值为整型,在函数定义时可以省去类型说明。 4)不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void"。如例 8.2中函数s并不向主函数返函数值,因此可定义为: void s(int n) 旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了 例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n) 就是错误的 为了使程序有良好的可读性并减少出错,凡不要求返回值的函数都应定义为 空类型 84函数的调用 841函数调用的一般形式 前面己经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子 程序调用相似。 C语言中,函数调用的一般形式为 函数名(实际参数表) 对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造 类型数据及表达式。各实参之间用逗号分隔 842函数调用的方式 在C语言中,可以用以下几种方式调用函数 1.函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运 算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max 的返回值赋予变量z。 2.函数语句:函数调用的一般形式加上分号即构成函数语句。例如: ("%d",a); scanf("%d",&b);都是以函数语句的方式调用函数 3.函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作 为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y);即是把max调用的返回值又作为 printf函数的实参来使 用的。在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实 第6页靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第6页 或者为: return (表达式); 该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个 return 语句,但每次调用只能有一个 return 语句被执行,因此只能返回一个函数值。 2) 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类 型为准,自动进行类型转换。 3) 如函数值为整型,在函数定义时可以省去类型说明。 4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例 8.2 中函数 s 并不向主函数返函数值,因此可定义为: void s(int n) { …… } 一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。 例如,在定义 s 为空类型后,在主函数中写下述语句 sum=s(n); 就是错误的。 为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为 空类型。 8.4 函数的调用 8.4.1 函数调用的一般形式 前面已经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子 程序调用相似。 C语言中,函数调用的一般形式为: 函数名(实际参数表) 对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造 类型数据及表达式。各实参之间用逗号分隔。 8.4.2 函数调用的方式 在C语言中,可以用以下几种方式调用函数: 1. 函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运 算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把 max 的返回值赋予变量 z。 2. 函数语句:函数调用的一般形式加上分号即构成函数语句。例如: printf ("%d",a);scanf ("%d",&b);都是以函数语句的方式调用函数。 3. 函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作 为 实 参 进 行 传 送 , 因 此 要 求 该 函 数 必 须 是 有 返 回 值 的 。 例 如 : printf("%d",max(x,y)); 即是把 max 调用的返回值又作为 printf 函数的实参来使 用的。在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实