C语言函数基础知识有哪些?
C语言函数基础知识有:
一、定义、声明和调用
函数: | 一段可以重复使用的代码 |
函数三要素: | 返回值 函数名 函数形参列表 |
函数声明: | 包含函数的三要素 |
函数定义: | 函数的具体实现 |
返回值: | 如果一个函数没有返回值,则写成 void |
函数形参列表: | 如果没有参数,写成空 ,变量之间用逗号隔开 |
二、函数声明:
函数声明时,形参可以不加变量名,只有类型也可以
int add(int, int);
三、函数定义:
函数定义时,形参可以必须要有变量名
int add(int a, int b) { int sum = a + b; return sum; }
int main() { int a = 10; int b = 20; // 函数调用的时候,传的参数叫实参 int sum= add(a, b); printf (“sum = %d\n”, sum); return 0; }
五、函数名
int (*p)(int a.int b) =add;
六、递归函数
一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。
用递归计算 n!。阶乘 n! 的计算公式如下:
根据公式编程:
long factorial(int n) { long result; if(n ==0 || n ==1) { result = 1; } else { result = factorial(n-1) * n; // 递归调用 } return result; }
这是一个典型的递归函数。调用factorial后即进入函数体,只有当 n== 0 或 n==1 时函数才会执行结束,否则就一直调用它自身。
由于每次调用的实参为 n-1,即把 n-1 的值赋给形参 n,所以每次递归实参的值都减 1,直到最后 n-1 的值为 1 时再作递归调用,形参 n 的值也为1,递归就终止了,会逐层退出。
例如求 5!,即调用factorial(5)。当进入factorial函数体后,由于 n=5,不等于0或1,所以执行result = factorial(n-1) * n;,即result = factorial(5-1) * 5;,接下来也就是调用factorial(4)。这是第一次递归。
进行四次递归调用后,实参的值为 1,也就是调用factorial(1)。这时递归就结束了,开始逐层返回。factorial(1) 的值为 1,factorial(2) 的值为 12=2,factorial(3) 的值为 23=6,factorial(4) 的值为 64=24,最后返回值 factorial(5) 为 245=120。
注意:
1.为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。
2.递归调用不但难于理解,而且开销很大,如非必要,不推荐使用递归。很多递归调用可以用迭代(循环)来代替。
推荐教程:《C视频教程》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。