background image

                n=20; 

                cout < <n < <endl; 

                fn(); 

                            } 

                              void fn() 

                              { 

                n++; 

                cout < <n < <endl; 

                              } 

  D、文件作用域下声明的 const 的常量默认为 static

 

存储类型。

静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的

 

程序,在内存中的分布情况如下图:

 

 

  代码区

 

全局数据区

 

堆区

 

栈区

  一般程序的由 new 产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自
动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变
量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的
读者可能会发现,Example 1

 

中的代码中将

                static int n; //

 

定义静态全局变量

改为: 

int n; //定义全局变量程序照样正常运行。的确,定义全局变量就可以实现变量在文件中的

 

共享,但定义静态全局变量还有以下好处: