static的作用
1)保持变量值:在函数体,一个被声明为静态的变量在这一函数中可以维持其值。这句话可能描述不太准确,大家看下面这个例子吧。
void staticLocalVar() { static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作 cout<<"a="<<a<<endl; ++a; } int main() { staticLocalVar(); // 第一次调用, 输出a=0 staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1 return 0; }
2) 对其他模块(文件)隐藏该变量(方法),相当于限定其变量或方法的作用域——只在定义它的文件中可用。
注意:
a,必须用static的场合:函数返回指针,应该返回static类型的变量指针。
b,避免用static的场合:可重入函数应该避免使用static类型变量。