全局变量和局部变量在内存中是否有区别(如果有,是什么区别?)

1.生存周期不同 全局变量:全局区(静态区)(static):全局变量和静态变量是存储在一起的,初始化过的全局变量和静态变量在同一块区域,未初始化的全局变量和静态变量存放在一块相邻的区域内。此区域由系统在程序结束后释放 局部变量: 放在堆栈中。由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
2.作用范围不同 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。 局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回
3.静态变量分为 全局静态变量(常称为全局变量)和局部静态变量(static修饰的变量)
【全局变量和局部变量在内存中是否有区别(如果有,是什么区别?)】

using namespace std; static int var1 = 0; //局部静态变量,虽然位置在函数体外 static int var2; //同上,局部静态变量 int var3 = 0; //全局静态变量 int main(int argc, char const *argv[]) { int var4 = 3; //在text段 static int var5 = 1; //局部静态变量 return 0; }



    推荐阅读