在函数中,有些事情用自动变量是不能完成的。例如,不能计算调用函数的次数,因为无法在多次调用中累积数值。
但如果非要有这种需要,那么有多种方法可以解决:
第一种:可以使用引用形参来更新调用程序中的计数器,但如果程序中许多不同位置都调用该函数的话,这种方法将无济于事;
第二种:可以使用在函数中递增的全局变量,但这样做是有风险的,因为程序中任何位置都可以访问全局变量,使得它们非常容易被意外修改;
在具有多个访问全局变量的执行线程的应用程序中,全局变量同样是危险的,因此必须特别注意管理从不同线程中访问全局变量的方式。当多个线程都可以访问某个全局变量时,必须处理的基本问题是:一个线程使用全局变量时,另外一个线程可以修改该变量的值。在这种情况下,最好的解决方式是完全避免使用全局变量。
为了创建在这次与下次函数调用之间其值继续存在的变量,可以在函数内将某个变量声明为static.