上一章我们对函数有了基本的了解,对函数的实参和形参也有了一定的概念,上一章我们说道函数中定义的参数都是局部变量(除了static修饰的变量),那么如果我们需要从函数中返回一个值需要怎么做呢:我们可以用return来从函数中返回一个值。
假如有这么个例子,用户输入两个整数,然后在自定义函数中进行大小比较,然后返回大的那个值,并且在主函数中打印输出。
这里就需要函数有一个返回值来给主函数中的打印函数printf。
先上代码:
在这个例子中我们在函数名前面的这个int,这个int表明返回的值的类型必须是int类型的;第二个我们说下这个return,return指明了其后的表达式的数值既是该函数的返回值;然后我们在来看这句c=max(a,b);一个函数和一个int型变量,如果这个函数没有返回值,那么这个表达式没有意义,编译器就会报错,而这里函数有一个int'型的返回值,实际上我们可以理解为c=(w>c?w:c的值),那么这个表达式我们在运算符这一章中学过这个三目运算符?:,意思就是比较大小,然后把大的那个返回后赋值给c这个变量。
return会导致函数终止,怎么理解呢,我们用一个函数来解释一下,我们还是用上面的例子修改一下:
这样我想大家应该对return有了了解了吧。
刚才我们说道在函数名前的那个int,我们返回值也必须是int类型,在C语言中函数的类型声明是函数定义的一部分,如果没有返回值应该被声明为void,在声明类型时注意返回值的类型。
接下来简单了解下不确定参数,我们一般用3个点(...)来声明比确定参数,我们常用的printf的声明就像这样int printf (const char *__restrict __format, ...);,对于参数个数不确定的函数,c库中通过stdarg.h头文件定义了该类函数的标准方法。
函数的调用声明就介绍到这里,接下来讲一下递归。
在C语言中允许一个函数条用其本身,这种调用被称作递归。递归有使用用的挺方便但是对资源开销挺大的,然后递归的条件不处理好,很容易造成无限循环。
我今天先放一个例子,来展示下递归,然后大家今天先想想递归的工作过程: