C语言第十一课:局部&全局

C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。

局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。在复合语句中也可定义变量,其作用域只在复合语句范围内。

全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序

案例

#include <stdio.h>
int x = 77;
//int fn1(int x) //定义带参函数
void fn1()
{
    printf("fn1(): x=%d\n", x);       
}
int main()
{
    int x = 10;
    if(x>0)
    {
        int x = 100;

/*在复合语句中也可定义变量,
其作用域只在复合语句范围内,
执行完毕后返回局部变量x=10;
如果此处没有重新定义变量X,
那么在此处执行代码执行完以后,
X值将变为50继续执行下一执行块*/

        x /= 2;
        printf("if语句内, x=%d\n", x);       
    }
    printf("main方法内, x=%d\n", x);
    fn1();
    /*fn1(x);*/
    return 0;
}

变量的引用过程,类似于栈。
就是说编译器从变量引用处以最近逻辑距离开始搜索,找到后则开始使用停止则停止搜索;如果查找失败则编译出错。
举个例子来说,就是优先引用函数内部的(逻辑距离最近),其次引用同一个源文件中全局的,如果函数内部、同一个源文件中没有,再引用包含文件中的。

本文链接:

https://www.zaigie.com/archives/100/