关键字static就是静态的意思,被static修饰的变量就是静态变量,对于静态变量和普通变量有很多区别:
(1)静态变量只能被初始化一次,下一次运算的依据就是上一次的结果;
#include<stdio.h>
#include<iostream>
using namespace std;
void fun(int i)
{
static int value=i++;
value+=i;
cout<<value<<endl;
}
int main()
{
fun(1);
fun(2);
fun(3);
return 0;
}
运算结果:3
5
8
对上述函数,当调用fun(1)时,value被初始化为1;i为2;下一个语句value加上i,输出3;调用fun(2)时不会被初始化,value上次操作的值为3,加上i,结果为5;同理调用fun(3)最后结果为8;
(2) 对于非静态的变量,每个类对象都有自己的一个复制品,占一块内存空间,而对于静态变量,无论所在类的对象被定义了多少个,静态数据成员在程序中只有一份复制品,所有的对象共享访问,而且静态数据成员存储在全局数据区;