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

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

posted @ 2017-10-13 19:42  moonlight987  阅读(167)  评论(0编辑  收藏  举报