在声明变量前加关键字static,可以将变量声明成静态变量。静态局部变量的值在函数调用结束后不消失,静态全局变量只能在本源文件中使用。例如:下列的代码声明变量为静态变量:
static int a,b;
static float x,y;
static inta[3]={0,1,2};
静态变量属于静态存储方式,它具有以下特点:
(1)静态变量在函数内定义,在程序退出时释放,在程序整个运行期间都不释放,也就是说它的生存期为整个源程序;
(2)静态变量的作用域与自动变量相同,在函数定义就在函数内使用,尽管该变量还继续存在,但不能使用它,如再次调用定义它的函数,它又可继续使用;
(3)编译器会为静态局部变量赋予0值。
#include"stdafx.h"
#include<iostream>
using namespace std;
int add(int x)
{
static int n = 0;
n = n + x;
return n;
}
void main()
{
int i, j, k,sum;
cout << "input the number:" << endl;
cin >> i;
cout << "the result is" << endl;
for (j = 1; j <= i; j++)
{
sum = add(j);
cout << j << ":" << sum << endl;
}
}
程序中n是静态局部变量,每次调用函数add时,静态局部变量n都保存了前几次被调用后留的值。