首页 > 编程笔记 > C++笔记 阅读:68

C++ static静态变量的作用(附带实例)

C++ 中的 static 变量是静态存储变量,定义变量时系统就会为其分配固定的存储单元,直至整个程序运行结束。我们接触过的全局变量即为 static 变量,它们存放在静态存储区中。

使用 static 关键字,可将变量声明成 static 变量。例如:
static int a,b;
static float x,y;
static int a[3]={0,1,2};
static 变量属于静态存储方式,具有以下特点:
【实例】建立函数 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

sum 是静态局部变量,其值自定义起,会一直存在。所以 5 次调用 click() 函数时,变量 sum 每次都在原来的数值上加 1。

第 5 行代码中,如果去除 static 关键字,则程序运行结果为:

此时点击量1
此时点击量1
此时点击量1
此时点击量1
此时点击量1

此时变量 sum 为动态存储形式,每次调用 click() 函数后,sum 的值都被释放,再次调用时重新被赋初值 0。因此,5 次调用 click() 函数,输出的结果都是 1。

相关文章