-----<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
函数返回值
1.函数的返回值称为函数的值,只能通过return语句返回给主调函数。
关于return:①return 常量;// return 0;
②return 表达式;// return a >5;return a + b;return a = 5;
③return (常量/变量/表达式);// 括号可以省略
④函数即使没有返回值也可以用return来结束函数的执行,回到主调函数。return后面的语句不再执行。
2.函数返回值的类型和return实际返回值的类型应保持一致,如果不一致,则以return实际类型为准,自动进行类型转换。
例:int sum(int x,int y){//若函数返回值为整型,在函数定义时可以省去类型说明符int,但尽量不省。
float b = 3.4f;
return b;}// b = 3
int main(){
printf("sum = %d\n",sum);// sum = 3
return 0;}
3.一个函数只能有一个返回值。无返回值用void定义,void不能省。
函数声明
在调用函数之前应对该函数进行声明。
①如果被调函数的返回值是int类型,可以不用声明而直接调用。
②如果被调函数写在主调函数之前可以不用声明。
③函数声明的格式:被调函数的头部加上分号;
函数调用
注意:
1.函数表达式 m=max(34,10)+10;
2.函数调用作为另外一个函数的实参 m=sum(max(23,2),12);
3.函数的嵌套调用 m=max(max(2,1),4);
4.函数名不能和变量名同名 int sum(sum,a);
例:求三个数之和,三个数的平均数
#include<stdio.h>
int sum(int x,int y,int z)
{return x + y + z;}
float avg(int x,int y,int z)
{return sum(x,y,z)/3.0f;}
int main( )
{printf("sum = %d\n",sum(23,12,8));
printf("avg = %.2f\n",avg(12,3,1));
return 0;}
几类常见的函数应用
递归函数(特别耗内存,尽量不用)
一个函数在它的函数体内调用它自身
例:求n的阶乘
#include<stdio.h>
int jiecheng(intn)
{int ji;
if (n == 1){
ji = 1;}
else{
ji = jiecheng(n-1)*n;}
return ji;}
int main( )
{int ji = jiecheng(3);
printf("ji = %d\n",ji);
return 0;}
回调函数
回调函数是一个函数,它由调用方自己实现,供被调方调用。
回调函数的核心,函数指针作为参数。
例:
#import <Foundation/Foundation.h>
typedef int (*PFUN)( int,int);
int sum(int a,int b)
{return a + b;}
int maxValue(int x,int y)
{return x>y?x:y;}
int minus(int x,int y)
{return x - y;}
int getValue(int x,int y,PFUN p)
{return p(x,y);}
int main(void)
{int a = getValue(10,20,maxValue);//maxValue为回调函数
int b = getValue(100,50,minus);//minus为回调函数
printf("%d,%d,%d"a,b,getValue(20,1,sum));//sum为回调函数
return 0;}