在 C++ 中局部变量和全局变量

在C++中,局部变量和全局变量的地址值有以下区别:

  1. 存储位置:

    • 局部变量:局部变量存储在栈(stack)上。每当函数被调用时,局部变量的存储空间会被分配,并在函数执行完毕后自动释放。
    • 全局变量:全局变量存储在静态数据区(static data area)或全局数据区(global data area)中。它们在程序运行期间一直存在,不受函数的调用和返回影响。
  2. 生命周期:

    • 局部变量:局部变量的生命周期仅限于其所在的作用域(通常是函数)。当程序流离开该作用域时,局部变量会被销毁,其内存空间将被回收。
    • 全局变量:全局变量的生命周期贯穿整个程序的执行过程。它们在程序开始运行时创建,在程序结束时销毁。
  3. 可见性:

    • 局部变量:局部变量的作用域仅限于其所在的函数或代码块。只有在函数或代码块内部才能访问到局部变量。
    • 全局变量:全局变量具有全局可见性,可以在程序的任何地方访问到它们。
  4. 地址值:

    • 局部变量:每次函数调用时,局部变量在栈上分配新的内存空间,因此每个函数调用的局部变量都有不同的地址值。
    • 全局变量:全局变量在静态数据区或全局数据区中分配内存空间,因此它们具有固定的地址值,在程序的整个执行过程中保持不变。

局部变量和全局变量在存储位置、生命周期、可见性和地址值上有着明显的区别。局部变量存储在栈上,具有局部作用域和动态的生命周期,每次函数调用都会分配新的内存空间。全局变量存储在静态数据区或全局数据区,具有全局可见性和静态的生命周期,其地址值在程序执行期间保持不变。正确理解和区分局部变量和全局变量的特性对于编写可维护和可靠的程序非常重要。

猜你喜欢

转载自blog.csdn.net/ultramand/article/details/135009041