全局变量与局部变量的区别

来源:互联网 发布:淘宝网手机版登录 编辑:程序博客网 时间:2024/06/06 02:52

例子: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的值。

原创粉丝点击