第八章函数 3.3函数返回值 个函数的返回值是通过 retur语句获得的 return后面可以是一个表达式 如果 return语句中表达式的类型与函数值的类 型不一致,以函数类型为准。(见例4、例5) 如果被调函数中没有eum语句,则带回的是 一个不磅定的值。为了明确表示不带返回值, 可以用void定义无类型 16
第八章函 数 16 3.3 函数返回值 一个函数的返回值是通过return语句获得的 return后面可以是一个表达式 如果return语句中表达式的类型与函数值的类 型不一致,以函数类型为准。(见例4、例5) 如果被调函数中没有return语句,则带回的是 一个不确定的值。为了明确表示不带返回值, 可以用void定义无类型
第八章函数 33函数返回值 例4 函数返回值的类型是int int max(float x, float y) Float z main if (x>=y)z=x; float a, b int c se z-y, scanf( %f%f,&a, &b) return(z: 1 c=maxa, b) printf( %d\n",c) return语句中表达式的类型是foat 17
第八章函 数 17 例4: int max(float x,float y) {float z; if(x>=y) z=x; else z=y; return(z);} 3.3 函数返回值 main() {float a,b;int c; scanf("%f%f",&a,&b); c=max(a,b); printf("%d\n",c);} 函数返回值的类型是int return语句中表达式的类型是float
第八章函数 34形参和实参的几点说明 1、在调用函数时,主调函数和被调用函数之间 有数据传递关系。即把实参的值按照位置一 传递给形参,使形参有了具体值。但形参改变 后的值不能回传给实参,即值是单向传递的 2 5 2 X 2 X 5 2
第八章函 数 20 1、在调用函数时,主调函数和被调用函数之间 有数据传递关系。即把实参的值按照位置一一 传递给形参,使形参有了具体值。但形参改变 后的值不能回传给实参,即值是单向传递的。 2 5 2 5 a b x y 2 5 5 2 a b x y 3.4 形参和实参的几点说明
第八章函数 例6 main inta,b; scanf("%d,%d",&a,&b);/*键入2,5*/ printf(“a=%d,b=%d\n”,a,b);/*显示a=2,b=5*/ exch(a, b) 实际参数nb printf(“a=%d,b=%dln”,a,b);}/*显示a=2 b=5*/ int exch (int x, int yr 形式参数xy ir nt t: printf(“x=%d,y=%dⅦn”,x,y);/*显示 y=5 t=x: x=y; y=t 21
第八章函 数 21 例6: main() {int a,b;scanf("%d,%d",&a,&b); /*键入2,5*/ printf(“a=%d,b=%d\n”,a,b); /*显示a=2,b=5*/ exch(a,b); printf(“a=%d,b=%d\n”,a,b);} /*显示a=2, b=5*/ int exch(int x,int y) {int t; printf(“x=%d, y=%d\n”,x,y); /*显示x=2, y=5*/ t=x; x=y; y=t; printf(“x=%d,y=%d\n”,x,y);} /*显示x=5, 实际参数a,b 形式参数x,y
第八章函数 3.4形参和实参的几点说明 □2、形参的有效范围是:在其定义所在的函数内。 形参仅当其定义所在的函数被执行时,系统才 为其分配存储空间,在未出现函数调用时,它们 并 不占内存的存储单元,并且在函数调用结束后, 该 存储空思考:例6在主函数的最后插入: printf("x和y是:%,%\n",x,y); 结果? 22
第八章函 数 22 2、形参的有效范围是:在其定义所在的函数内。 形参仅当其定义所在的函数被执行时,系统才 为其分配存储空间,在未出现函数调用时,它们 并 不占内存的存储单元,并且在函数调用结束后, 该 存储空间即被系统收回。 思考:例6在主函数的最后插入: printf("x和y是:%d,%d\n",x,y); 结果?! 3.4 形参和实参的几点说明