变量的作用域和局部变量
简单理解就是变量的作用范围,如:
void Func()
{
int a = 10;
cout << a <<endl;
}
这个函数中,有一个 **int 变量 a 它的作用范围就在这个函数的 "{ }"中,**出了这个大括号,这个段代码就被系统收回了,这个区域就叫做:作用域。
再如:
int main ()
{
// 这是主函数代码
string str = "hello world";
int a = 55;
bool b = false;
}
主函数和我们定义的普通函数一样,也是具有作用域的,因此我们在主函数中声明的变量,也是同样的效果**,一旦主函数执行完毕,这些变量占用的内存空间就被系统回收了。**
以上这样的变量,被叫做:局部变量,它的特点是:只在作用域内有效果,一旦出了自己的作用域,就结束它的使命了。
全局变量
**全局变量与局部变量相反,它对作用域的限制没有那么严格,并且声明的位置也有所不同,**如:
#include <iostream>
using namespace std;
int i = 999;
int main( )
{
cout << i <<endl;
}
输出:999
// 我们可以看到,int i =999 这个**变量声明赋值在主函数外,这个便是全局变量的特点。**它不属于某个函数,也不属于任何语句块,而是属于整个C++源文件,可以在程序的任何位置调用它。
|------|----------|-----------|
| | 全局变量 | 局部变量 |
| 作用范围 | 程序的任何位置 | 只在自己的作用域中 |
| 声明周期 | 程序结束了就销毁 | 作用域结束就销毁 |
就近原则:
如果定义了一个全局变量,名称为 i ,并赋值,然后又在主函数中重复定义了,即:变量类型、名称都一样,只是值不同,那么则以最后一个为准。