一.函数是什么
函数是一个可执行的代码块,它接受输入参数,并根据输入参数执行特定的任务或计算,并返回一个或多个结果,函数可以封装可重复使用的代码,以便在程序的不同部分调用.
二.c语言函数分类
1.库函数
库函数是一组已经预先定义好的函数集合,通常被打包成库文件(也称为库或模块).这些库函数提供了一些常见的功能和操作,可以被程序员在自己的程序中调用和使用,以实现特定的任务。比如熟知的printf函数,scanf函数都是库函数,c语言使用库函数需要包含头文件.
2.自定义函数
自定义函数是程序员定义的用于执行特定任务的代码块,通过自定义函数,程序员可以将一段重复使用的代码封装起来,并给它一个特定的名称,以便在程序的其他部分多次调用.即方便又能使代码更有可读性.
三.函数的参数
1.形参
是在函数定义中声明的参数,用于定义函数的输入.形参是函数定义中的占位符,它们指定了函数所期望的输入的数量和类型.当函数被调用时,实参的值将会被传递给形参,从而实现函数的功能.
2.实参
是在函数调用时传递给函数的值或变量.它们是函数调用过程中实际传递给形参的数据.
四.函数调用
1.传值
传向函数内部的值与外部无关,内部值发生改变不会改变函数外的值,
2.传址
可以用函数内的形参改变传入值,让函数内与函数外的值建立关系,
五.函数定义和声明
函数调用是通过函数名称和实参来执行函数体内的代码块,比如Print(arr),假设这个函数用于打印数组的全部数据,那么传入arr就是数组,对于声明,这个函数不需要返回值,声明即可void Print(int arr); 调用函数可直接Print(arr); 函数定义就是对这个函数的的实现,比如void Print(int arr){ 代码块 }这就对这个函数进行了定义,注意,函数可以嵌套调用,但绝不能嵌套定义,
六.函数递归
函数递归是指函数在其定义中调用自身的过程.递归函数可以解决需要重复执行相同任务的问题,并以一种更简洁的方式的解决方法.递归函数中的每次递归调用都会将问题规模缩小,直到达到基本情况,从而终止递归.递归应该有1.递归的条件,什么时候结束 2.每次调用必与递归结束的条件越来越接近,不然就是死递归了,导致堆栈溢出.
有的问题用递归解决非常方便,比如汉诺塔,也有的反而更麻烦,比如求斐波那契数列,重复运算太多使用递归解决问题时要思考是否会把问题更复杂化,