c++中的static变量

来源:互联网 发布:使用sysprep 恢复数据 编辑:程序博客网 时间:2024/05/19 02:16
1)当函数中的局部变量为static时
此变量只在函数第一次被调用时初始化,函数调用之间保持变量的值不变。那为什么不使用全局变量呢?static变量的优点是在函数的范围之外它是不可用的。e.g.:
#include <iostream>
using namespace std;

void f()
{
  static int si=0;//此句只会被执行一次
  cout << "si=" << ++si << endl;
}

int main()
{
  for(int i=0; i<10; i++)
    f();
}

output如下:
si=1
si=2
...
si=10

2)static的另一层含义是:“在某个作用域外不可访问”
当应用static于函数名和所有函数外部的变量时,它的意思是“在文件的外部不可以使用这个名字”。函数名或变量是局部于文件的;我们说它具有文件作用域(file scope)。e.g.,编译和连接下面两个文件会引起连接器错误:
// file1
static int fs;
// file scope means only available in this file:

int main()
{
  fs = 1;
}

// file2
extern int fs; // trying to reference fs
void func()
{
  fs = 1000;
}

3)static也可以在一个类中 
原创粉丝点击