黑马程序员 ---c语言函数的使用

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

昨天学了一天的函数的使用,还有递归函数,大概总结了一下,用比较简单的方式说一下,可以让你们很好的明白,什么是函数。


----------------函数的基本概念--------------------

 函数:完成特定功能代码段

 函数的作用:1、方便代码管理

           2、将不同功能的代码段,封装到函数中,方便以后使用

 

 注意点:函数只有调用的时候才会执行

 

 函数格式:                  形参列表

 返回值类型 函数名称(形参类型1 形参名称1,形参类型2 形参名称2,....)

 {

    语句;

    ....

    return value;

 }

 

 1、函数体一定是使用大括号括起来的

 写一个函数的步骤:

 1、明确函数的功能,给函数起一个有意义的名字

 2、确定要完成这样的功能,需要函数的调用者给什么样补助的数据,确定形参列表

 3、确定返回值的类型

 4、写函数体,完成相应功能

 

 1、当函数不要返回值的时候,可以将返回值类型声明void,此时可以没有return语句


很笼统定义内容是吧!举一个简单的小例子,昨天老师用打印玫瑰花给我们解释的!

#include <stdio.h>



void printOneRose() //先确定有没有返回值,因为是直接打印的,所以不需要返回值,所以我们就用void。

{

    printf(" {@} \n");

    printf(" \\|/\n");

    printf("  |\n");

    printf("  |\n");

}

void printManyRose(int number) //再建立一个打印多多��花的函数,打印多少朵是用户自己定义,所以,我们就需要用到循环了,然后再嵌套刚定

//定义的一朵��花的函数。

{

    for (int i = 0; i < number; i++)

    {

        printOneRose();

    }

}


int main(int argc, const char * argv[])

{

/*

进入主函数,直接调用打印多朵��花的函数,然后number是我们传的值3,再进入for循环后,就又进入上面printOneRose()的函数中,打印一朵后,再次循环,以此类推,直到不满足为止

*/

    

    printManyFiveStar(3);

    return 0;

}


很简单的小例子吧,一目了然的效果,你现在应该知道什么叫函数了吧,其实举个最简单的例子,就是我们有套房子,要卖出去,不可能每个想买的人我们都去沟通一遍,那我们把中介就可以设为函数,我们把需求告诉中介,以后想卖的时候直接找中介就可以了。所以,你明白这个意思了吧,函数就相当于一个第三方,什么时候想用,什么时候调出来就可以了,不需要你每次都麻烦的写!!!



----------------------说下函数的返回值---------------------------

    1、函数定义中是什么样的返回值类型就必须返回相应类型的值

    2、如果返回值类型不一致就出现精度损失

    return 作用:

    1、返回数据给函数调用者

    2、结束函数

    

    如果返回值类型为void可以没有return语句,但是可以使用 return; 来提前结束函数

 

#include <stdio.h>

/*

  定义一个两数相加的函数,输出结果。

*/

int sum(int num1,int num2)

{

/*

先定义一个相加的函数,传入两个形参,我们先确定,我们定义函数的意思,是为了让这两个数加完后把值返给我们,所以,它是有返回值的。像上面的玫瑰花的例子,因为我们在函数中已经打印了,所以我们不需要再返回什么了,所以它就没有返回值。

*/

   return  num1 + num2;

}


int main(int argc, const char * argv[])

{


    int result =  sum(10, 20);

    printf("result = %lf\n",result);

    

    

    return 0;

}


返回值很容易理解吧,俗套一些说,就是,你定义函数,你想让它干嘛,达到什么样的结果,你就确定有没有返回值了。


-------------回调函数-----------------------------------

其实我理解的回调函数,就是函数调用函数,其实就和循环语句的概念差不多!循环语句是一直循环的计算,回调函数是互相调用!

我们老师给我们留了一个作业,要求如下::

/*

 5个人坐在一起,问第5个人多少岁?他说比第4个人大两岁,问第4个人岁数,他说比第3个人大两岁,问第3个人岁数,他又说比第2个人大两岁,问第2个人岁数,他说比第1个人大两岁,最后问第1个人他说10岁。编写程序,当输入第几个人时求出其对应的年龄。

 

这道题其实我们人工计算很快嘛,第5个人,肯定是10+2+2+2+2,加四次2嘛,但是如果人多了呢,或者是条件更难了呢?如果都人工可以计算,那我们要编程干嘛,老师在讲课的时候,告诉了我们一个方法。就是你要学会找到他们的规律,看看是否有迹可循。我喜欢拿笔在纸上先画出一个大概的模样,然后根据模样再编写相应代码,我老公还笑我说,别人编码也没有用到过笔和纸啊,你太浪费家里财产了,呵呵,其实这样也不错,比凭空想要来的快!


我是这样考虑的,第一个人是10岁,第二个人是10+2岁,第三个是第二个人+2岁,也就是(10+2)+2,第四个人是(10+2+2)+2,以此类推,你应该看出什么规律了吧。一开始我想过用循环,遇到偶数的时候就+2,如果奇数就继续,这个方法也可以,但是写起来可能稍微麻烦一些。 可以看下下面的代码:

 */




#include <stdio.h>

int age(int n);


int main()

{

    int i,n;

    printf("请输入人数:");

    scanf("%d",&i);

    n=age(i);

    printf("%d个人的年龄是:%d\n",i,n);

}

/*

这个函数其实蛮简单的,只要找到规律就可以了,如果当人数为1个人的时候,那肯定是返回10岁,如果是2个人的时候,进入else语句,age1=2+age(n-1);此时碰到后面的age就又进入自己的循环,那因为n-1了,此时n就成了1,再进入循环if语句就成立了,返回了十,那age(n-1)此时就相当于等于了10,2+10,所以就是12了。以此类推!!

*/

int age(int n)

{

    int age1;

    if (n==1)

    {

        return 10;

    }

    else

    {

        age1=2+age(n-1);

        return age1;

    }

}



------------------------------------------------------

其实学习函数也不是很难,一开始,我特别怕函数怎么学,因为以为函数特别难,其实也确实挺难,老师讲的是越讲越糊涂,我教你一个方法,你不用一下理解那么多,就用最简单的一个例子,你一点点的顺着这条语句走,你明白了一个程序,下一个程序的时候,你用相同的思路去做,你就会明白了,再或者,你用最笨的方法,拿个笔和纸,在本子上写出来这个程序用数学的算术方法,然后用ab这些相当于变量的往里套,你就知道代码怎么写了

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值