Kotori 发表于 2017-8-19 22:45:07

S1E31局部变量和全局变量笔记

本帖最后由 Kotori 于 2017-8-19 22:44 编辑

局部变量和全局变量
        不同函数间的变量是无法相互访问的,但有些时候往往有这个需要。因此按作用域,可把变量分为局部变量和全局变量。作用域可以理解为变量的有效范围。
1>局部变量
        在函数中定义的变量为局部变量,这类变量的作用域只在函数内部,出了函数就无法对变量进行操作。
        定义在for循环中的循环变量也只作用在该循环中。下方代码中的i就是一个例子。
for (i=0;i<10;i++)
{
        a = i+1;
}
2>全局变量
        全局变量,定义在函数的外部,也称为外部变量。全局变量对同文件中的所有函数可见。这些函数可以访问和修改全局变量。
        全局变量定义时未初始化的,会自动初始化为0。
        C语言在C90之后支持在代码中定义变量。若在未定义的变量前先使用这个变量,可使用extern关键字进行修饰。
3>屏蔽模式
        在函数代码中定义一个和全局变量相同名字的变量,则在函数中使用的是函数中定义的局部变量。虽然两个变量名字相同,但实际上存在于内存中两个不同的位置。这时就是函数中的局部变量屏蔽了全局变量。上方的for循环也是屏蔽的一种。
int a = 1;        //a是定义的一个全局变量
int calc()
{
        int a =3;
        printf("%d",a);                //程序输出的是3,在函数中局部变量屏蔽了全局变量
}
4>全局变量的不足
        虽然全局变量方便了数据在不同函数之间的传递,但是切记不要大量使用全局变量!
        1)过多的全局变量会占用较多的资源,因为全局变量不会在函数结束后与局部变量一起被释放;
        2)污染命名空间,对函数内命名变量带来困难;
        3)提高了程序的耦合性,不便于程序的模块化设计与修改。
页: [1]
查看完整版本: S1E31局部变量和全局变量笔记