在程序中,当我们提到静态变量时,通常是在全局变量(也称为外部变量)前面加上"static"关键字。静态全局变量与普通的全局变量在存储方式上是相同的,都是采用静态存储。它们的主要区别在于作用域。非静态全局变量的作用域扩展到了整个源程序,即使在由多个源文件构成的程序中,它在各个源文件中都是可用的。
然而,静态全局变量的作用域被限制在定义它的源文件内,这意味着在其他源文件中无法直接访问它。这种特性使得静态全局变量在特定的源文件中公用,有助于防止因变量使用不当而在不同源文件间引发的潜在错误。
从存储和作用域的角度来看,将局部变量转换为静态变量改变了其生存期,使其仅在特定的作用域内存在,而将全局变量变为静态则限制了其使用范围,仅在定义它的源文件中有效。因此,"static"这个关键字在不同的上下文中具有不同的含义,对理解变量的生命周期和限制其使用至关重要。在编程时,应充分注意这一点以确保代码的正确性和一致性。
静态变量的类型关键字是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量, 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 对于自动变量,它属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。 由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。