static关键字的作用
1、修饰全局变量
当一个类中定义了全局变量,而想要在另外的一个文件中去引用这个全局变量,需要使用extern关键字,来说明这个变量是使用的外部变量。但是如果这个全局变量使用了static关键字来修饰之后,那么这个变量就只能够在此文件中去使用了。
2、修饰函数
作用同上
3、修饰局部变量
当static修饰局部变量时,会改变这个变量的生命周期。
例:
#include<iostream>
using namespace std;
void func(){
int num = 1;
num++;
cout << num << endl;
}
int main(){
for(int i = 0; i < 3; i++){
func();
}
return 0;
}
这个代码的结果是:
2
2
2
这是因为每一次循环结束,num变量都被释放掉了。
而使用了static关键字来修饰之后:
#include<iostream>
using namespace std;
void func(){
static int num = 1;
num++;
cout << num << endl;
}
int main(){
for(int i = 0; i < 3; i++){
func();
}
return 0;
}
代码运行结果如下所示:
2
3
4
这是因为static改变了num的生命周期,将num的值存在了静态变量区,即便函数运行结束了,这个变量也不会被销毁。