上文我们讨论了指针函数的有关内容,本文我们将围绕函数与函数参数的内容进行简单介绍与浅析。
1.函数的概念函数在我们之前的编程中已经出现过。例如主函数main(),输出(打印)函数printf()等,函数括号内的值就是函数的参数,若函数没有参数就不用为该函数提供函数值,例如getchar()。每个函数都是通过函数名进行调用,因此当我们在程序中使用一个函数时就叫做函数调用。
函数的使用可以大大提高我们程序的运行效率。c语言提供了很多库函数供我们使用,同时,我们也可以自己在程序中写我们需要的函数。函数有两个部分组成,分别是函数头和函数体。任何函数的功能都是函数体语句实现的。
函数定义的一般格式:
函数类型 函数名(形参变量表) { 函数体 }
对于该定义格式的一些说明:
1.第一行是函数头,用于对函数进行属性描述。
2.第二行是函数体,包括了实现函数功能的语句。
函数体中我们要用“return t”语句返回函数值t。函数类型有两种情况,若有返回的函数值,函数类型就是函数值的数据类型;若函数不存在返回值,则函数类型应定义为void型。这适用于控制输入输出的函数。
3.形参变量表就是用逗号分隔的一组变量说明,表明了每个形参变量的数据类型与名称。这一部分可类比参考数据的声明。当函数调用时,形参变量接受主调函数的数据。这部分可类比printf()或scanf()括号内的参数,只是需要增加对数据类型的说明。
形参变量表的格式:
数据类型1 形参1,数据类型2 形参2,数据类型n,形参n
如果函数不需要参数,那么形参变量表需要用void填充。即使可为空,()也不能省略。
这部分理解起来可能有些困难,接下来我们用一个函数实例来理解形参变量表。
定义一个能输出n个apple和m个pear的函数。
函数的定义如下:
#include//由于我们的函数不需要返回值,所以用void定义 void good(int n,int m) { int i; for(i=1;i<=n;i++) { printf("apple"); } for(i=1;i<=m;i++) { printf("pear"); } } //然后我们就可以在主函数中调用我们的good函数了 int main() { good(8,9); }
这样我们就可以得到8apple和9个pear了!
如果我们定义了一个有返回值的函数,那么我们要在函数体最后使用return语句把函数值返回到调用该函数的位置。若存在多个return语句,那么将会返回函数遇到的第一个语句并结束该函数的调用。
函数的嵌套非常容易理解,即函数a中调用了函数b,函数b中又调用了函数c等,这里就不在赘述。
递归函数是由于递归定义产生的。即一个函数在定义中直接或间接的调用了被定义函数它本身,就称它为递归函数。递归函数可以使程序更加的简洁,但是只有能使用递归方式描述的问题才能使用递归函数实现。
递归函数可分为公式递归与非公式递归,这部分内容比较复杂,我们之后再讨论。
有关函数参数的传递、数组与函数、指针作函数参数等内容,我们之后再分别独立进行讨论。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)