清华大学出版社 TSINGHUA UNIVERSITY PRESS 说明 (1)形参只有在发生函数调用时,才被分配内 存单元在调用结束后,形参所占的内存单元 即被释放,考虑两次调用max函数的情况 (2)发生调用时将实参的值传递给形参,实参 是常量、变量或表达式均可,如 max(3, a+b) (4)实参与形参的类型应相同或赋值兼容
说明: (1) 形参只有在发生函数调用时,才被分配内 存单元;在调用结束后,形参所占的内存单元 即被释放,考虑两次调用max函数的情况 (2) 发生调用时将实参的值传递给形参,实参 是常量、变量或表达式均可,如: max(3,a+b); (4) 实参与形参的类型应相同或赋值兼容
清华大学出版社 TSINGHUA UNIVERSITY PRES. (5)在C语言中,实参向对形参的数据传递是 “值传递”,单向传递,只由实参传给形参, 而不能由形参传回来给实参,形参变量的改 变不影响实参的取值,通常通过函数返回值 带回信息。如两实参变量值的互换目前无法 用函数实现,因为在内存中,实参单元与形 参单元是不同的单元 8.32(3)定义函数时指定的函数类型一般应和 return语句中的表达式类型一致,若不一致,则以函数 类型为准进行类型转换 补充:一旦遇到 return语句则函数停止执行并返回
(5)在C语言中,实参向对形参的数据传递是 “值传递”,单向传递,只由实参传给形参, 而不能由形参传回来给实参,形参变量的改 变不影响实参的取值,通常通过函数返回值 带回信息。如两实参变量值的互换目前无法 用函数实现,因为在内存中,实参单元与形 参单元是不同的单元。 8.3.2(3)定义函数时指定的函数类型一般应和 return语句中的表达式类型一致,若不一致,则以函数 类型为准进行类型转换 补充:一旦遇到return语句则函数停止执行并返回
例83返回值类型与运行情况如下: include <stdio.h> 1.5,2,5Y void main o t int m a x (float x, Max is 2 float a, b /若将c改为浮点型?*/ int c scanf ("%f, %f,, &a,&b) c=m a x (a, b): printf ("Max i s %d\n ",c); int max (float x, float y i float z z =X>y? : yi return(z)
例 8.3 返回值类型与函数类型不同 # include <stdio.h> void main() { int max(float x,float y); 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); } 运行情况如下: 1.5, 2.5↙ Max is 2 /*若将c改为浮点型?*/
§8.4函数的调用 GHUA UNIVERSITY PRESS 84.1函数调用的一般形式 形式:函数名(实参表列) 即使无参括弧也不能省 参数间用逗号隔开 对实参求值的顺序并不是确定的,如f(++i)。应避 免歧义的发生,如用j++i;ij);
§8.4 函数的调用 8.4.1 函数调用的一般形式 形式:函数名(实参表列) 即使无参括弧也不能省 参数间用逗号隔开 对实参求值的顺序并不是确定的,如f(i,++i)。应避 免歧义的发生,如用j=++i;f(i,j);
§8.4.2函数调用的方式s 1.函数语句:如 printstar(),不要求函数带回值, 要求函数完成一定的操作 2.函数表达式:如c=2max(a,b);要 求函数带回一个确定的值,并参加表达式的运算 3.函数参数:函数调用作为实参。如 mmax(a, max(b,c))
§8.4.2函数调用的方式 1.函数语句:如printstar( ), 不要求函数带回值,只 要求函数完成一定的操作 2.函数表达式:如c=2*max(a,b);要 求函数带回一个确定的值,并参加表达式的运算 3.函数参数:函数调用作为实参。如 m=max (a , max ( b , c ) )