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