前言
我们知道不同的函数之间可以互相调用,比如a函数调用b函数,b函数调用c函数,那能不能a函数调用他本身呢?
我们刚开始学习变量,变量有没有作用范围呢?
一.函数的递归调用
1.递归指的是在函数的定义中使用函数自身的方法。
递归的思想:
(1)找到规律
(2)递归调用的条件
(3)结束递归的条件
递归的程序图如下:
2.递归的案例分析
int fac(int n);
int main (void)
{
printf ("%d\n",fac(5));
return 0;
}
int fac(int n)
{
if(n<1)
return -1;
else if (n==1)
return 1;
else
return n*fac(n-1);
}
二.作用域
1.作用域:一个代码空间。
2.文件作用域:从文件头到文件尾的代码空间。
3.函数作用域:函数的参数和函数体属于函数作用域,函数的返回值和函数名属于文件作用域。
4.语句块作用域
int c=10;//c的作用域是文件作用域
int fun(int b);
int main (void )
{
int a=10;//函数的作用域
a=20;
{
int j=0;//语句块作用域
j=50;
}
a=fun(5);
return 0;
}
int fun(int b)//b也是函数的作用域
{
int i=0;
b=30;
return b;
}
三.存储类别
1.存储类别解决的是标识符的”生命周期“或者变量内存的开辟时间和销毁时间。
2.存储类别与作用域没有关系。
void foo(int a)
{
int b=0;
}//a的内存销毁
int main(void)
{
foo(10);//a内存开辟
return 0;
}
总结
作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问,这就是本章的重点。