局部变量与全局变量
局部变量
定义:
在一个函数内部定义的变量,它只在本函数范围内 有效,也就是说只有在本函数内才能使用它们,在 此函数以外是不能使用这些变量的。
说明:
- 在复合语句中定义的变 量只在本复合语句范围 内有效。
- 形参属于局部变量
- 不同函数中同名变量,占不同内存单元
- 在函数声明中出现的参数名,其作用范围只在本行的 括号内。
全局变量
定义:
在函数之外定义的变量是外部变量,称为全局变 量(global variable,也称全程变量)。全局变量的有效范围为从定义变量的位置 开始到本源文件结束。
说明:
- 设全局变量的作用是增加函数间数据联系的渠道。
- 建议不在必要时不要使用全局变量,因为:
*全局变量在程序的全部执行过程中都占用存储单元,而 不是仅在需要时才开辟单元。
*它使函数的通用性降低了
*使用全局变量过多,会降低程序的清晰性。 - 如果在同一个源文件中,全局变量与局部变量同名 ,则在局部变量的作用范围内,全局变量被屏蔽, 即它不起作用。
局部变量与全局变量同名:
#include<iostream>
using namespace std;
int a=3;
void main()
{
int a=4;
cout<<a;
}
变量的作用域
定义:
变量的有效范围称为变量的作用域(scope)。
分类:
- 文件作用域
- 函数作用域
- 块作用域
- 函数原型作用域
域分为5类
1.文件作用域
*全局变量
*函数作用域
*局部变量
*块作用域
*局部变量
2.函数原型作用域 - 作用域从变量起作用的范围对变量进行了讨论 即变量生存的空间
- 从变量的生存时间,对变量进行讨论
变量的存储类别
- 作用域是从空间的角度来分析的,分为全局变量和局 部变量。
- 存储类别是从生存时间的角度来分析的,指的是数据 在内存中存储的方法,分为动态存储变量和静态存储变量。
静态存储:
在文件运行期间有固定的存储空间,直到文件运行结束。
动态存储:
在程序运行期间根据需要分配存储空间,函数结束后立 即释放空间。若一个函数在程序中被调用两次,则每次分配的单元 有可能不同。