C++ 入门说
每个局部静态变量在第一次之前都会被初始化 执行通过对象的定义。本地静态数据是 函数结束时不会被销毁;当程序运行时它们被销毁 终止。
局部静态变量与全局静态变量有什么不同吗?除了申报地点之外,还有什么不同?
void foo () {
static int x = 0;
++x;
cout << x << endl;
}
int main (int argc, char const *argv[]) {
foo(); // 1
foo(); // 2
foo(); // 3
return 0;
}
比较
static int x = 0;
void foo () {
++x;
cout << x << endl;
}
int main (int argc, char const *argv[]) {
foo(); // 1
foo(); // 2
foo(); // 3
return 0;
}
#include <iostream>
using namespace std;
static int z = 0;
void method1() {
static int x = 0;
cout << "X : " << ++x << ", Z : " << ++z << endl;
}
void method2() {
int y = 0;
cout << "Y : " << ++y << ", Z : " << ++z << endl;
}
int main() {
method1();
method1();
method1();
method1();
method2();
method2();
method2();
method2();
return 0;
}
输出:
X : 1, Z : 1
X : 2, Z : 2
X : 3, Z : 3
X : 4, Z : 4
Y : 1, Z : 5
Y : 1, Z : 6
Y : 1, Z : 7
Y : 1, Z : 8
static storage duration object.
全局变量也是“静态存储持续时间对象”。与全局变量的主要区别是:
它们直到第一次使用才初始化
注意:与所有“静态存储持续时间对象”一样,它们以与创建相反的顺序被销毁。
<< x << endl and it would print however, in the first block it would say x not declared