、函数参数和函数的值 ·说明: 函数的返回值,必须用 return语句带回。 return语句只能把一个返值传递给调用函数。 函数中可有多个 return语句,执行哪一个由程 序执行情况来定 fa>b)return(a) else return(b) return后的值可以是一个表达式,如: return(x>y? x: y; 返回值的类型为定义的函数类型,不指定的 按整型处理。 如: int max(intx,inty) float min(float a, float b) double abc(float d1, float d2) Advanced Programming
Advanced Programming • 说明: – 函数的返回值,必须用 return 语句带回。 – return 语句只能把一个返值传递给调用函数。 – 函数中可有多个return语句,执行哪一个由程 序执行情况来定。 if(a>b) return(a); else return(b); – return 后的值可以是一个表达式,如: return(x > y ? x : y); – 返回值的类型为定义的函数类型,不指定的 按整型处理。 如: int max(int x, int y) float min(float a,float b) double abc(float d1,float d2) 三、函数参数和函数的值
、函数参数和函数的值 若 return语句中表达式类型与函数类型不 致,则转换为函数类型。 若无 return语句,遇时,自动返回调用函数 可能返回一个不确定或无用的值。 -无返回值的函数,定义为void类型。 例:无 return语句,函数带回不确定值 printstaro void printstarO printf("**"):‖{prin("”***") yoid main void maino i int a; i int a; a=printstari a=printstar(; printf("%d", a) printf("%d", a)
Advanced Programming -若 return 语句中表达式类型与函数类型不一 致,则转换为函数类型。 -若无return语句,遇}时,自动返回调用函数。 可能返回一个不确定或无用的值 。 -无返回值的函数,定义为 void 类型。 printstar() { printf("**********"); } void main() { int a; a=printstar(); printf("%d",a); } 例:无return语句,函数带回不确定值 void printstar() { printf("**********"); } void main() { int a; a=printstar(); printf("%d",a); } 三、函数参数和函数的值
四、函数的调用 主调函数:主动去调用其它函数 被调函数:被其它函数所调用 、函数调用的一般形式 函数名(实参表列) 说明: 实参表列:有确定值的数据或表达式 实参与形参个数相等,类型一致,按顺序一一对应 当有多个实参时,实参间用“,“分隔 实参表求值顺序,因系统而定(Turb0C自右向左) 调用无参函数时,实参表列为空,但()不能省 Advanced Programming
Advanced Programming 四、 函数的调用 主调函数:主动去调用其它函数 被调函数:被其它函数所调用 1、函数调用的一般形式 函数名(实参表列) ❖说明: ⚫实参表列:有确定值的数据或表达式 ⚫实参与形参个数相等,类型一致,按顺序一一对应, 当有多个实参时,实参间用“ ,”分隔 ⚫实参表求值顺序,因系统而定(Turbo C 自右向左) ⚫调用无参函数时,实参表列为空,但( )不能省
例参数求值顺序 #include <stdio.h> 按自右向左求值 void maino 按自左向右求值 函数调用等于(3){ int f(int a, int b);函数调用等于23) 运行结果:0 int i=2, p; 运行结果:-1 p=f(i, ++i printf(("%od"’,p), 需自右向左求值时, int f(int a, int b) 需自左向右求值时, 改为:j=++ i int c; 改为:j=i; =f(j,j); f(a>b)c=1: k=++i else if(a==b)c=0; p=f(, k); else c=-1 return(c) Printf(“%d,%d”i+);/同样存在此情况*
Advanced Programming #include <stdio.h> void main() { int f(int a,int b); 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); } 例 参数求值顺序 按自右向左求值 函数调用等于f(3,3) 运行结果:0 按自左向右求值 函数调用等于f(2,3) 运行结果:- 1 为使程序有通用性: 需自右向左求值时, 改为:j=++i; p=f ( j , j ) ; 需自左向右求值时, 改为:j = i ; k = ++ i ; p = f ( j , k ) ; Printf(“%d,%d”,i,i++); /*同样存在此情况*/
四、函数的调用 2、函数调用的方式 按函数在程序中出现的位置,有三种调用方式 函数语句:以独立的语句去调用函数。不要求有返回值, 仅完成一定的操作。 例 printstar0; printf(“ Hello, World!in”); 今函数表达式: 函数返回一个确定值,以参加表达式的运算。不可用于 void 例m=max(a,b)*2 函数参数:函数调用作为另一个函数的参数。 例 printf(“%d”,max(a,b);/输出大数* m=max(a,max(b,c);/三数比大小*
Advanced Programming 2、函数调用的方式 按函数在程序中出现的位置,有三种调用方式: ❖函数语句:以独立的语句去调用函数。不要求有返回值, 仅完成一定的操作。 例 printstar(); printf(“Hello,World!\n”); ❖函数表达式: 函数返回一个确定值,以参加表达式的运算。不可用于 void 例 m=max(a,b)*2; ❖函数参数:函数调用作为另一个函数的参数。 例 printf(“%d”,max(a,b)); /*输出大数*/ m=max(a,max(b,c)); /*三数比大小*/ 四、 函数的调用