局部变量
函数中定义的变量是该函数的局部变量。它们在其他函数的语句中是不可见的,通常无法访问它们。下面的程序显示,由于函数中定义的变量被隐藏,所以其他函数可以拥有名称相同但实际上互不相干的变量
int main()
{
int i = 1; //局部变量
cout << "main, i is " << i << endl;
fun2();
return 0;
}
void fun2()
{
int i = 2; // 局部变量
cout << "In fun2, i is " << i<< endl;
}
虽然有两个名为 i 的变量,但是程序在同一时间只能“看到”其中一个,因为它们在不同的函数中,只有在定义的函数正在执行时,局部变量才存在,这称为局部变量的生存期。当函数开始时,它的形参变量和它定义的任何局部变量都将在内存中创建,当函数结束时,它们被销毁
全局变量
- 全局变量是程序中定义在所有函数(包括 main 函数)之外的任何变量。全局变量的作用域是程序从变量定义到整个程序结束的部分。这意味着全局变量可以被所有定义在全局变量之后的函数访问
全局变量在哪定义
- 一般来讲,全局变量一定要定义在.c文件中,比如int g_int=0;,然后头文件 extern int g_int 声明!
- 如果全局变量特别多,上百个,可以专门用一个头文件来引入这些全局变量
- 一定不能在头文件定义变量,容易重定义!!!
全局变量注意事项
- 全局变量使代码调试维护变得困难。程序中的任何语句都可以更改全局变量的值,如果出错,追踪将是很困难的
- 全局变量使代码可移植性变差,使用全局变量的函数通常要依赖这些变量。如果想移植这些函数,则很可能必须重新设计它,使它不再依赖于全局变量。
- 全局变量使代码可读性变差。程序中的任何语句都可以更改全局变量的值,因此,要了解任何使用了全局变量的那一部分程序,则必须了解访问该全局变量的所有程序其他部分