1.在一段代码中写函数能提高代码的复用性,并达到功能分解的作用。
2.所有的函数都是平行的,几=即在定义函数时是分别进行的,是相互独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义。
3.无参函数定义:类型标识符 函数名()
有参函数定义:类型标识符 函数名(形式参数表列)
每个形参的类型和名称,以“逗号”隔开。
4.主调函数:功能或服务的使用方(实参)
被调函数:功能或服务的提供方(形参)
实参和形参的类型应当相同
实参——形参(值传递)
5.函数的返回值
return后跟变量,常量,表达式(返回主调方)
6.函数调用的一般形式
多个实参,自右向左,
7.函数的递归调用
应用场景:如果一个问题可以分解为若干个小问题,而每个小问题解法相同,只是规模更小,当规模笑道一定程度是,有显而易见的解。
例如:用函数递归求n!
#include<stdio.h>
int f(int n)
{
if((n== 1) || (0==n))
{
return 1;
}
else if(n>1)
{
return f(n-1)*n;
}
int main()
{
printf("%d\n",f(n);
}
8.数组元素作为函数实参:单向传递
数组名做函数参数:此时形参应当用数组名,数组名作函数参数是,一般会附加一个参数表明数组长度,通过形参数组名对数组元素的修改,改变实参数组元素的值。形参数组类型的实参数组类型应严格一致,否则结果出错。
9.局部变量:只在自己的作用域内有效
全局变量:函数外所定义的变量,作用范围从定义开始,到本文件结束而结束,增加函数间数据通讯渠道。(在执行过程中都占用存储单元,不建议使用)
静态局部变量:不随函数结束销毁,函数再次进行时依旧能保留上一次运行的值。