|
具有全局或命名空间范围的变量的存储在程序的整个持续时间内分配。这被称为静态存储,它与局部变量(在块内声明的变量)的存储形成鲜明对比。这些使用所谓的自动存储。局部变量的存储仅在声明局部变量的块期间可用;之后,相同的存储可以用于其他函数的局部变量,或者以其他方式使用。
但是,具有静态存储的变量和具有自动存储的变量之间还有另一个实质性的区别:
- 具有静态存储的变量(例如全局变量)如果未显式初始化,则会自动初始化为零。
- 具有自动存储功能的变量(例如局部变量)如果未显式初始化,则未初始化,因此具有不确定的值。
例如:
// static vs automatic storage
#include <iostream>
using namespace std;
int x;
int main ()
{
int y;
cout << x << '\n';
cout << y << '\n';
return 0;
}
0
4285838
|
|