无链接性的局部变量——将static限定符用于在代码块中定义的变量。
目录
一、在代码块中使用static
在代码块中使用static时,会使局部变量的存储持续性变为静态。也就是说,该变量只在该代码块中可以使用,但是当该代码块不活动时它依旧是存在的。因此在两次函数的调用之间,静态局部变量的值是保持不变的。如果初始化了静态局部变量,那么就只在程序启动时进行一次初始化,第二次再调用函数的时候将不会初始化。
二、相关代码
如下代码中,count是for循环内部的局部变量,sta_count是for循环内部的静态局部变量,并且已经被初始化为0,那么在第二次进入for循环的时候将不会再一次进行初始化。
#include<iostream>
using namespace std;
void test02()
{
for (int i = 0; i < 5; i++)
{
int count = 0;
static int sta_count = 0;
cout << "局部变量 count = " << count++ << endl;
cout << "静态局部变量 sta_count = " << sta_count++ << endl;
cout << endl;
}
}
int main()
{
test02();
system("pause");
return 0;
}
运行结果如下图所示,从图中可以看出局部变量count并没有进行自加,并且每次输出都是0,而静态局部变量sta_count就像前面所说的,初始化一次之后不再初始化并且自加之后,静态局部变量sta_count的值将保持不变。
总结
静态局部变量在代码块中初始化之后,再次运行该代码块静态局部变量将不会再一次初始化。并且再不运行该代码块的时候,其值也会保持不变。