1.静态变量定义
在C++的,静态变量是一个非常有用的特性,它在程序执行期间只初始化一次,并在程序的整个执行期间都保持其值。
可能这样子说大家无法特别理解:静态变量该怎么定义呢?静态变量的作用是什么?该如何体现呢?别急,举个例子,你将豁然开朗。
2.静态变量的应用
假设我们现在想编写一个函数,功能是记录我们调用该函数的次数,对于初学者可能会编写出如下代码:
#include<iostream>
using namespace std;
void count() {
int n = 0;
n++;
cout << "程序count()总共被调用了" << n << "次"<<endl;
}
int main(void) {
for (int i = 0; i < 5; i++) {
count();
}
}
得到的结果是:
聪明的你可能会发现,每一次调用count()时,n都会被初始化为0,所以每一次输都是 “程序count()总共被调用了1次”。那么在不改变程序结构的情况下如何实现我们想要的结果呢?这就轮到我们今天的主角静态变量登场了!
静态变量可以使变量在程序执行期间只初始化一次,并在程序的整个执行期间都保持其值。程序应用十分方便,只需在变量定义前面加一个static,代码如下:
#include<iostream>
using namespace std;
void count() {
static int n = 0;
n++;
cout << "程序count()总共被调用了" << n << "次"<<endl;
}
int main(void) {
for (int i = 0; i < 5; i++) {
count();
}
}
得到结果如下:
可以发现,经过了一个小小的修改, 记录调用函数次数的功能就实现了!!
3.静态变量的分类(扩展)
- 全局静态变量:定义在程序所有函数之外,其作用域包括全体函数,类似于全局变量。
- 局部静态变量:定义在某个函数中,其作用域仅限于本函数内。
- 类中的静态成员变量:属于类的成员变量,其作用域为整个程序执行期间。