从http://wiki.answers.com/Q/What_is_the_difference_between_static_and_extern开始:
static存储类用于声明标识符,该标识符是函数或文件的局部变量,并且在控制从声明的位置传递后存在并保留其值.此存储类的持续时间是永久性的.从函数的一次调用到下一次调用,该类声明的变量将保留其值.作用域是本地的.变量仅由它在其中声明的函数知道,或者如果在文件中全局声明,则它只由该文件中的函数知道或可见.此存储类保证变量的声明还会将变量初始化为零或全部关闭.
extern存储类用于声明一个全局变量,该变量将为文件中的函数所知,并且能够为程序中的所有函数所知.此存储类的持续时间是永久的.此类的任何变量都保留其值,直到被另一个赋值更改为止.其范围是全球性的.程序中的所有函数都可以知道或看到一个变量.