静态变量:

其对应的作用域为文件作用域。文件作用域:是指在函数外部声明的变量只在当前文件范围内(包括该文件内所有定义的函数)可用,但不能被其他其他文件中的函数访问。具有文件作用域的变量或函数在声明时,一般需要在变量或函数前加上static修饰符。static类型变量可以在函数外部定义也可以在函数内部定义。由于静态变量或静态函数只有在当前文件(定义它的文件)中有效,所以我们可以在多个文件中定义两个或多个同名的静态变量或函数。这样当将多个独立编译的源文件链接成一个程序时,static修饰符避免一个文件中的外部变量由于与其他文件中的变量同名而发生冲突。

全局变量:

对应的作用域为全局作用域。全局变量声明在函数的外部因此又称外部变量。全局变量作用范围最广,甚至可以作用于组成该程序的所有源文件。在其他链接的文件中也可以使用它们,但是使用前必须进行extern外部声明。extern可以至于或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。在使用extern声明全局变量或函数时,一定要注意所声明的变量或函数必须是存在的,且仅在一个源文件中实现定义。如果你的程序声明了一个外部变量,但却没有在任何源文件中定义它,程序将可以编译通过,但无法链接通过。