全局变量实现了函数之间共享数据,也使得变量不再会因为某个函数的结束而消亡,但是,问题来了:一个密码检测函数根据调用(用户输错密码)的次数来限制他进入系统。如果把调用次数存放在一个局部变量里,显然是不可行的。虽然全局变量可以记录一个函数的运行次数,但是这个变量是被所有函数共享的,每个函数都可能修改它,实在很危险。
C++中,我们可以在函数体内声明一个静态局部变量(Static Local Variable)。他在函数运行结束后不会消失,并且只有声明它的函数中能够使用它。声明一个静态局部变量的方法是在声明局部变量前加上static。
C++中,我们可以在函数体内声明一个静态局部变量(Static Local Variable)。他在函数运行结束后不会消失,并且只有声明它的函数中能够使用它。声明一个静态局部变量的方法是在声明局部变量前加上static。
#include<iostream>
using namespace std;
bool password();
// 静态局部变量的使用
int main(){
do{}
while(password()!=true);{
cout << "欢迎您进入系统!" << endl;
}
return 0;
}
// 密码检测函数
bool password()
{
static int numOfRun = 0; // 声明静态局部变量存放函数调用次数
if(numOfRun<3)
{
int psw;
cout << "第" << ++numOfRun << "次输入密码" << endl;
cin >> psw;
if(psw == 123456){
return true;
}else{
cout << "密码错误!" << endl;
}
}else{
cout << "您已经输错密码三次!异常退出!" << endl;
exit(0); // 退出程序运行
}
}