全局变量与局部变量的区别
例子:Fibonacci数列
如果将一个变量定义为局部变量,比如i在这个代码里:
#include<stdio.h>
int f[1000];
void fibonacci(int n)
{
int i;
f[0] = 1;
f[1] = 1;
for(i = 2; i <= n; i ++)
{
f[i] = f[i - 1] + f[i - 2];
}
printf("%d ", i);
}
int main(void)
{
int n, i;
scanf("%d", &n);
scanf("%d", &i);
fibonacci(n);
printf("%d", f[i]);
return 0;
}
注意这里的i,是局部变量,因此每一个i只对其所在函数内负责,此时可以出现正确的结果。
如果将一个变量定义为全局变量,比如i在这个代码里:
#include<stdio.h>
int f[1000];
int i;
void fibonacci(int n)
{
f[0] = 1;
f[1] = 1;
for(i = 2; i <= n; i ++)
{
f[i] = f[i - 1] + f[i - 2];
}
printf("%d ", i);
}
int main(void)
{
int n;
scanf("%d", &n);
scanf("%d", &i);
fibonacci(n);
printf("%d", f[i]);
return 0;
}
此时则不能出现正确结果,因为i是全局变量,调用fibonacci函数后,i在循环中发生了变化,不再是输入的i的值。