注意:全局变量和静态全局变量都是静态存储方式,这两者在存储方式上并无不同。
区别:
1.(非静态)全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,(非静态)全局变量在各个源文件中都是有效的。在一个文件内定义的(非静态)全局变量,在另一个文件中,通过extern +全局变量名的声明,就可以使用全局变量。
2.(用static修饰的)静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它(即使用extern声明也不能使用)。
静态全局变量使用场景:防止全局变量在其他源文件中被使用
由于静态全局变量的作用域限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误(比如同名的变量)。