1 static修饰全局变量

static 修饰全局变量其作用域会被限制在当前文件中(其他源文件不可见)

如果头文件定义了静态全局变量,每个导入该头文件的源文件都会定义一个静态全局变量(每个源文件的静态全局变量都是独立内存空间的,即使变量名相同)

2 static修饰局部变量

局部变量只是在第一次调用时会被初始化一次 数据是存储在全局区。

3 static修饰函数

函数被修饰后,就不可以被其他外部源文件调用该函数。静态函数只对该源文件内部可见。

#include <stdio.h>

static void func1 ();/* 只在本源文件可调用 */
void func2(); /* 可被其他源文件调用 */

int
main (int argc, char *argv[]) {

  func1 ();
  func2 ();

  return 0;
}

static void
func1 () {
  printf ("func1\n");
}


void
func2() {
  printf ("func2\n");
}