C++ static静态变量的作用(附带实例)
C++ 中的 static 变量是静态存储变量,定义变量时系统就会为其分配固定的存储单元,直至整个程序运行结束。我们接触过的全局变量即为 static 变量,它们存放在静态存储区中。
使用 static 关键字,可将变量声明成 static 变量。例如:
【实例】建立函数 click(),用于记录用户点击量。函数中定义一个静态变量 sum,用于记录点击次数。调用 5 次 click(),查看此时点击量是多少。代码如下:
第 5 行代码中,如果去除 static 关键字,则程序运行结果为:
使用 static 关键字,可将变量声明成 static 变量。例如:
static int a,b; static float x,y; static int a[3]={0,1,2};static 变量属于静态存储方式,具有以下特点:
- 无论是静态全局变量,还是静态局部变量,其生存期均为整个 C++ 源程序运行期间。
- 静态全局变量在函数外定义,作用域是整个 C++ 源程序,即可在程序任意位置使用它。
- 静态局部变量的作用域与 auto 变量类似,在函数内定义,只能在函数中使用。离开函数后,尽管其值一直存在,但无法被使用。当再次调用函数时,可以继续使用它。
- 编译器会为静态局部变量赋予 0 值。
【实例】建立函数 click(),用于记录用户点击量。函数中定义一个静态变量 sum,用于记录点击次数。调用 5 次 click(),查看此时点击量是多少。代码如下:
#include <iostream> using namespace std; void click() // 定义 click() 函数,记录用户点击量 { static int sum = 0; // 定义静态局部变量 sum,初始点击次数为 0 sum = sum + 1; // 点击次数加 1 cout << "此时点击量" << sum << endl; // 输出点击量 } int main() { // 调用 5 次 click() 函数,模拟 5 次点击行为 click(); click(); click(); click(); click(); return 0; }程序运行结果为:
此时点击量1
此时点击量2
此时点击量3
此时点击量4
此时点击量5
第 5 行代码中,如果去除 static 关键字,则程序运行结果为:
此时点击量1
此时点击量1
此时点击量1
此时点击量1
此时点击量1