1. 对于全局变量
作用:将作用域锁定在本程序文件,不可通过extern扩展
int xixi;
生存期:整个程序运行过程
作用域:本程序文件,但可通过外部属性说明(extern)将其作用域扩展到整个程序
static int xixi;
生存期:整个程序运行过程
作用域:本程序文件,作用域不可扩展,在其他程序文件使用外部属性说明(extern)试图扩展其作用域会导致错误
2. 对于局部变量
作用:将生存期扩展到整个程序运行过程
{ ... int hoho; ... }
生存期:所在语句块或函数体
作用域:所在语句块或函数体
{ ... static int hoho; ... }
生存期:整个程序运行过程
作用域:所在语句块或函数体
静态局部变量不大好理解,举个例子说明
// example.cpp
#include <iostream>
using namespace std;
void fn();
void main()
{
fn();
fn();
fn();
}
void fn()
{
static int n = 10;
cout << n << endl;
n++;
}
输出结果:
10
11
12
3. 对于函数
作用:将作用域锁定在本程序文件
int f() { return 0; } ;
生存期:整个程序运行过程
作用域:整个程序,但可通过外部属性说明(extern)将其作用域扩展到整个程序
static int f() { return 0; } ;