Scope

2022-03-22
1分钟阅读时长

所谓作用域,就是变量的有效范围。

局部变量

定义在函数内部或代码块内部的变量称为局部变量,它的作用域仅限于函数或代码块内部, 否则无效。

说明:

  1. 在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;

    同时,main 函数中也不能使用其它函数中定义的变量。main 函数是一个函数,与其它函数地位平等。

  2. 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

  3. 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。

  4. 在语句块中定义变量,它的作用域只限于当前语句块,如for、if等或单纯的语句块。

全局变量

在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序。注意整个程序是所有的源文件,包括源文件和头文件。

在一个函数内部修改全局变量的值会影响其它函数,全局变量的值在函数内部被修改后并不会自动恢复,它会一直保留该值,直到下次被修改。

就近原则

不同作用域定义的同名变量无关联;

嵌套的作用域允许定义同名变量,使用变量的原则是就近原则,外层作用域的同名变量将被屏蔽。

#include<stdio.h>
int main(int args,int *argv[]){
    int a=0;
    {
        double a=1.0;
        a+=1;
        printf("%f",a);
    }
    printf("%d",a);
}
Avatar

坐忘道琼峰 Sitting Oblivion Tao EndlessPeak

瞽者无以与乎文章之观,聋者无以与乎钟鼓之声。岂唯形骸有聋盲哉?
下一页 Pointer