全局变量和局部变量

C++的默认初始化规则:

  • 栈中的变量(函数体中的自动变量)和堆中的变量(动态申请的变量)会有不确定的值;
  • 全局变量和静态变量(包括局部静态变量)会初始化为0

变量的存储:

  • 栈:在函数内部声明的所有变量都将占用栈内存。
  • 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。
  • 全局区(static):也叫静态数据内存空间,存储全局变量和静态变量,全局变量和静态变量的存储是放一块的,初始化的全局变量和静态变量放一块区域,没有初始化的在相邻的另一块区域,程序结束后由系统释放。
  • 文字常量区:常量字符串就是放在这里,程序结束后由系统释放。
  • 程序代码区:存放函数体的二进制代码。
 1 #include <iostream>
 2 using namespace std;
 3 int a;
 4 int main(){
 5     for(int i=0;i<10;i++){
 6         int a=i;//定义一个与全局变量a重名的局部变量,局部变量会屏蔽全局变量 
 7         cout<<a<<endl;
 8     }
 9     cout<<a<<endl;//输出全局变量a,全局变量会自动初始化为0,因为编译连接后它的位置就是确定的
10     return 0;
11 }

运行结果:

原文地址:https://www.cnblogs.com/PennyXia/p/12752469.html