变量的作用域和生存期
1、变量的作用域
程序中被花括号括起来的区域,叫做语句块(Block)。函数体是语句块,分支语句和循环体也是语句块。
变量的作用域(Scope)规则是:每个变量仅在定义它的语句块(包含下级语句块)内有效,并且拥有自己的存储空间。
不在任何语句块内定义的变量,称为全局变量(Global Variable)全局变量的作用域为整个程序,即全局变量在程序的所有位置均有效。这是因为假如把整个程序看作一个大语句块,按照变量的作用域规则,在与main()平行的位置即不在任何语句块内定义的变量,就应该在程序的所有位置均有效。
相反,在除整个程序以外的其他语句块内定义的变量,称为局部变量(Local Variable)
全局变量从程序运行开始起就占据内存,仅在程序结束时才将其释放,所谓释放内存,其实就是将内存中的值恢复为随机值(即乱码)。由于全局变量的作用域是整个程序,在程序运行期间始终占据着内存,因此在程序运行期间的任何时候,在程序的任何地方,都可以访问(读或者写)全局变量的值。
例题:用递归方法编程输出Fibonacci数列的基础上,同时打印出计算Fibonacci数列每一项时所需的递归调用次数。
#include <stdio.h>
int count;
long fib(int n);
int main()
{
int n,i,x;
printf("Input n:");
scanf("%d",&n)