轻松拿下C语言函数基本知识

1 函数的概念及其作用;

 C语言中的函数是一个程序的重要组成部分。

其可以将一个大的程序进行简化,并且可以重复使用,用于将一个大项目拆为很多小项目。

2.函数的组成;

C语言中一个函数是由三部分组成的,分别为返回值类型,形参,函数名。

这三部分组成。

可见上面函数是一个返回类型为double,函数名为Pow,两个形参n,k的函数。

先从返回值类型开始,常见类型有整形,浮点型和字符串。

再从函数名说起,函数名可以自拟。

唯一值得一提的就是形参了,用于接收实参,形参不是本身就有其位置的,而是用形参是时候,它才有它的位置。

以上是一个简单函数,由上可见,刚开始x和y是没有地址的,当函数接收到我们传给它的a和b时。

将a的值赋给了x,将b的值赋给了y,此时x,y才开始创建,才有地址,当出了函数范围后,形参自动销毁,但是我们看地址,x,和y的地址仍然存在,但是x和y的值不存在了。

3.函数的调用;

如下

当我们想实现a+b时,我们可以用如上方法,将要执行a,b相加的程序放入add(自己命名的)函数中来实现这样的算法,给大家看一下过程。

当我们进行调试时,可以看到,首先从主函数开始进行,当我们走到底167行的时候,按F11可以进入函数里面,将a,b两个实参被x,y两个形参接收,值得一提的时,传参时的形式必须和接收参数的形参形式吻合,不然会报错

注意这里将add(a b)之间的逗号去掉,就会报错,进入函数后,将a+b的值进行返回,存到sum里进行输出。

函数调用时,写在main函数上面不需要声明,写在main函数下需要声明,告诉编译器你要调用这个函数。

以上就是声明函数,将它的函数明放在开头,将内容放在main函数下面。

在工作中写代码时,肯定不止这一个函数,如果多个函数我们应该怎么操作呢?

可以新建一个头文件,将所有想用到的函数放在里面,一样可以调用,如下所示。

新建头文件,将函数内容放入头文件中,想用的时候直接引用头文件就好。

这样便是。

注意,传参并不是通用的,当我们想用函数实现a,b互换时,我们如果用传参来做的话,会怎样?

看看下图。

可见,传参后,a,b值无任何变化,调试看看。

可见,x和y的值发生了交换,而a,b的值并未改变,因为它只改变了函数内局部值,没影响到实参,因为形参和实参不是一块空间,最后回到main函数栈释放。

下面教大家一种方法。

传址调用;

我们将a,b的地址传给形参,看看结果如何。

将传入的参数,改为地址,给没学到指针的小伙伴们解释一下,x是指针变量,里面存放的是a的地址,*为解引用操作符,*x=a,不理解的看下图。

pa存放的是&a的地址,*解引用,可以理解为,*pa=a.

如上所示,显然pa和a是同一地址。

4.函数的嵌套

这个用法非常简单哈,就和我们之前学的if嵌套差不多,就是一个函数套一个函数,看下代码。

被嘲讽到了吧,嘿嘿。

这就是,我调用我自己,我套我自己,但是这种调用很费空间,当你调用一个函数时,它会重新申请一块空间,这种死循环调用会浪费大量空间,为了防止这种情况的发生,我们用嵌套的时候一定要谨慎啊!

5。函数嵌套的使用,递归!

这块就有点难度啦,其实也不能算太难,希望家人们可以同归这篇文章学会递归!

先从递归的作用开始,递归的好处在于,大事化小,小事化了。主要思想在于拆分,给大家看看下面案例。

求某数的阶乘;

可见,上面是求阶乘的函数,下面的主函数,那函数具体是怎样运作的呢?

首先n的阶乘为n*n-1*n-2....1,因此我们可以简化为n(n-1)!,再往下分n*(n-1)*(n-2)!

因此我们这个表达式也是如此,

将n-1再次放入函数中,直到它为1时,函数开始返回,具体过程为下图。

先循环嵌套,直到找到那个确定的值的时候,再进行返回操作。

这就是递归。

上面是一个求5!的过程。可见,将5!分为求4!直到求1的!,把大事化小,小事化了,做到了真正的接化发!

以上是递归的简单使用,读者可根据自身才能,多试试一些其他递归,比如求x的y次方之类的。

函数基本知识就到这里,编者能力有限,以上仅供参考。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值