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