全局变量和局部变量
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 }
运行结果:
作者:PennyXia
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。