static的作用

static的作用

  1. 在函数体内,static变量在函数被多次调用时,其值保持不变。
  2. 在模块内(函数体外),static变量为本地全局变量,即只能被该模块内的函数访问。
  3. 在模块内,static函数被限制只能在模块内被调用,不能被模块外调用。

举例

//待填充。。。

引申:static全局变量 vs. extern全局变量

示例一

#include <iostream>
using namespace std;

int var = 1;  //编译器提示:no previous extern declaration for non-static variable 'var'

int main()
{
    cout << "global var = " << var << endl;
    return 0;
}

static的作用
示例一的代码要定义一个模块内的全局变量,但是编译器提示了一个warning,这个warning时一个语义问题(semantic issue),具体内容是:非静态的变量var没有被extern声明。什么意思呢?就是要求全局变量定义时,要么声明为static(模块内的本地全局变量),要么声明为extern(模块外也可以访问的全局变量)。

示例二

#include <iostream>
using namespace std;

static int var;  //可以初始化,但必须要使用
extern int var2; //不可以初始化,可以不使用

int main()
{
    var = 100;
    return 0;
}

示例二说明了static和extern全局变量在定义时的区别。

上一篇:【转】c语言函数定义、函数声明、函数调用以及extern跨文件的变量引用


下一篇:JavaScript Patterns 4.7 Init-Time Branching