易百教程

全局变量

可以声明全局变量以在函数之间共享数据。全局变量不在任何函数之内,全局变量可在任何地方访问。

示例代码

#include <stdio.h>

int count = 0; // 第3行,声明一个全局变量

// 声明函数 
void test1(void);
void test2(void);

int main(void)
{
    int count = 0; // 第11行,它覆盖了全局count变量

    for (; count < 5; ++count)
    {
        test1();
        test2();
    }
    system("pause");
    return 0;
}

// test1函数使用全局变量
void test1(void)
{
    printf("test1   count = %d\n", ++count);
}

// test2函数使用全局变量
void test2(void)
{
    static int count; // 第三个变量,它隐藏了全局count变量数据
    printf("test2   count = %d\n", ++count);
}

执行上面示例代码,得到以下结果:

test1   count = 1
test2   count = 1
test1   count = 2
test2   count = 2
test1   count = 3
test2   count = 3
test1   count = 4
test2   count = 4
test1   count = 5
test2   count = 5

在上面代码中,全局变量count定义如下:

int count = 0; // 第3行,声明一个全局变量

因为它是全局的,所以如果不初始化它将默认初始化为0。第二个变量count是在main()中声明的自动变量:

int count = 0; // 第11行,它覆盖了全局count变量

因为它与全局变量具有相同的名称,所以无法从main()访问全局变量count。局部变量count被隐藏了。第三个变量是在函数test2()中声明的静态变量count

static int count; // 第三个变量,它隐藏了全局count变量数据

因为这是一个静态变量,所以默认情况下它将初始化为0
此变量隐藏同名的全局变量count,因此在test2()中只能访问静态变量counttest1()函数使用全局变量countmain()test2()函数使用局部版本的变量:count