黑马程序员------C语言函数部分总结(二)

-----<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;}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值