第8章函数 8.2函数定义的一般形式 空函数 类型标识符函数名Q 例如: 函数定义: Nothing[ 函数调用: Nothing0; E对形参声明的两种方式 ☆传统方式: 例: int max(x,y) int x,y; ◆现代方式: 例: int max(intx,inty)
-6- 第8章 函数 8.2 函数定义的一般形式 空函数 类型标识符 函数名() { } 例如: 函数定义:Nothing(){} 函数调用:Nothing(); 对形参声明的两种方式 v 传统方式: 例:int max(x, y) int x, y; { … } v 现代方式: 例:int max(int x, int y) { … }
第8章函数 8.3函数参数和函数的值 形参和实参 形参:定义时函数名后面括弧中的变量名称为形式参数。 ☆实参:调用时函数名后面括弧中的参数称为实际参数。 例8.2:调用函数时的数据传递 ma n int max(int x, int y) /*对max函数的声明*/ int a. b. c scanf("%d, %d", &a, &b) c max(a, b) printf( Max is %d", c) max(int x, int y) /*对mx函数的定义*/ int z. z=X>y? x: y; return(z)
-7- 第8章 函数 8.3 函数参数和函数的值 形参和实参 v 形参:定义时函数名后面括弧中的变量名称为形式参数。 v 实参:调用时函数名后面括弧中的参数称为实际参数。 v 例8.2: 调用函数时的数据传递 main() { int max(int x, int y); /*对max函数的声明*/ int a, b, c; scanf("%d, %d", &a, &b); c = max(a, b); printf("Max is %d", c); } max(int x, int y) /*对max函数的定义*/ { int z; z=x>y? x:y; return(z); }
第8章函数 8.3函数参数和函数的值 函数的返回值 ◇由 return语句获得。 ◆一个函数中可以一个以上的 return语句,执行到哪个 return语句, 哪一个 return语句起作用。 ☆ return语句返回的函数值类型应与定义函数时说明的函数值类型 致 当二者类型不一致时,以函数类型为准。例如: main o I float a,b max(float x, float y) int c float z scanf("%f, %f", &a, &b) z=X>y? x: y c=max(a, b) return Z: pr intf(" Max is‰dn",o);‖ 输入:1.5,3.5输出? ◆无 return语句则带回不确定的值。 ☆用void定义无类型,表示"不带回值
-8- 第8章 函数 8.3 函数参数和函数的值 函数的返回值 v 由return语句获得。 v 一个函数中可以一个以上的return语句,执行到哪个return语句, 哪一个return语句起作用。 v return语句返回的函数值类型应与定义函数时说明的函数值类型 一致。 v 当二者类型不一致时,以函数类型为准。例如: 输入:1.5, 3.5 输出? v 无return语句则带回不确定的值。 v 用void定义无类型,表示"不带回值" 。 main() { float a, b; int c; scanf("%f, %f", &a, &b); c=max(a, b); printf("Max is %d\n ", c); } max(float x, float y) { float z; z=x>y? x:y; return z; }
第8章函数 8.4函数的调用 函数调用的一般形式 函数名(实参表列); 说明 ◆调用无参函数时,无″实参形列",但括弧不能省略。 ◆实参个数与形参个数相等,对应参数的类型应一致。 令多个实参时,对实参求值的顺序依系统而定。 Turbo C按自右而左 序求值 例8.4:实参求值的顺序:不是确定的 0 nt flint a, int b ma In int i=2, p if(a>b)c=1 p=f(i,++i); else if(a==b)c=o pr intf("‰d",p); ese c=-1 return C: 分析结果? ☆如果实现调用时从左至右求实参值?
-9- 第8章 函数 8.4 函数的调用 函数调用的一般形式 函数名(实参表列); 说明: v 调用无参函数时,无"实参形列" ,但括弧不能省略。 v 实参个数与形参个数相等,对应参数的类型应一致。 v 多个实参时,对实参求值的顺序依系统而定。Turbo C按自右而左 的顺序求值。 例8.4: 实参求值的顺序:不是确定的 v 分析结果? v 如果实现调用时从左至右求实参值? main() { int i=2, p p=f(i, ++i); printf("%d", p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return c; }
第8章函数 8.4函数的调用 函数调用的三种方式 函数语句 例如: pr instar0 主要用来执行某一操作,无返回值 ☆函数表达式 例如:c=2*max(a,b); 函数出现在一个表达式中,要求带回一个确定的返回值。 函数参数 例如:m=max(a,max(b,c); pr intf("%d", max(a, b)) ■函数调用作为一个函数的实参,要求带回一个确定的返回值。 10
-10- 第8章 函数 8.4 函数的调用 函数调用的三种方式 v 函数语句 例如:printstar(); 主要用来执行某一操作,无返回值。 v 函数表达式 例如:c=2*max(a, b); 函数出现在一个表达式中,要求带回一个确定的返回值。 v 函数参数 例如:m=max(a, max(b, c)); printf("%d", max(a, b)); 函数调用作为一个函数的实参,要求带回一个确定的返回值