C、C++ 全局变量、局部变量

局部变量

函数中定义的变量是该函数的局部变量。它们在其他函数的语句中是不可见的,通常无法访问它们。下面的程序显示,由于函数中定义的变量被隐藏,所以其他函数可以拥有名称相同但实际上互不相干的变量

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 声明!
  • 如果全局变量特别多,上百个,可以专门用一个头文件来引入这些全局变量
  • 一定不能在头文件定义变量,容易重定义!!!

全局变量注意事项

  • 全局变量使代码调试维护变得困难。程序中的任何语句都可以更改全局变量的值,如果出错,追踪将是很困难的
  • 全局变量使代码可移植性变差,使用全局变量的函数通常要依赖这些变量。如果想移植这些函数,则很可能必须重新设计它,使它不再依赖于全局变量。
  • 全局变量使代码可读性变差。程序中的任何语句都可以更改全局变量的值,因此,要了解任何使用了全局变量的那一部分程序,则必须了解访问该全局变量的所有程序其他部分
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容