n=20;
cout < <n < <endl;
fn();
}
void fn()
{
n++;
cout < <n < <endl;
}
D、文件作用域下声明的 const 的常量默认为 static
存储类型。
静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的
程序,在内存中的分布情况如下图:
代码区
全局数据区
堆区
栈区
一般程序的由 new 产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自
动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变
量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的
读者可能会发现,Example 1
中的代码中将
static int n; //
定义静态全局变量
改为:
int n; //定义全局变量程序照样正常运行。的确,定义全局变量就可以实现变量在文件中的
共享,但定义静态全局变量还有以下好处: