C语言入门之函数(5)
三。静态变量
静态变量的类型说明符是静态的。当然,静态变量属于静态存储方式,但属于静态存储方式的量不一定是静态变量。比如,外部变量虽然属于静态存储模式,但不一定是静态变量,必须由static定义,才能成为静态外部变量,或者静态全局变量。至于自动变量,前面已经介绍过,属于动态存储模式。但也可以使用static定义为静态自动变量或静态局部变量,从而成为静态存储模式。
从这个角度来看,变量可以用static重新解释,可以改变它原来的存储方式。
1.静态局部变量
通过在局部变量的描述之前添加静态描述符来形成静态局部变量。
例如:
静态int a,b;
静态浮点数组[5]={1,2,3,4,5 };
静态局部变量属于静态存储模式,具有以下特点:
(1)静态局部变量是在函数中定义的,但与自动变量不同,调用时存在,退出函数时消失。局部变量总是存在的,也就是说,它的生存期就是整个源程序。资料来源:www.examda.com
(2)虽然静态局部变量的生存期是整个源程序,但它的作用域仍然与自动变量相同,即只能在定义它的函数中使用。退出该功能后,虽然变量仍然存在,但无法使用。
(3)允许将初始值赋给结构类的静态局部量。在数组一章中,已经解释了数组的初始化。如果未指定初始值,系统将自动指定一个值0。资料来源:www.examda.com
(4)如果静态局部变量的基本类型在解释中没有给出初始值,系统将自动给出0值。但是,如果没有给自动变量一个初始值,它的值是不确定的。根据静态局部变量的特点,可以看出它是一个生存期为整个源程序的量。虽然离开定义它的函数后就不能使用了,但是如果再次调用定义它的函数,就可以继续使用,保存上次调用后留下的值。所以,当一个函数被多次调用,并且需要在调用之间保持某些变量的值时,可以考虑静态局部变量。虽然全局变量也可以达到上述目的,但全局变量有时会产生意想不到的副作用,所以最好使用局部静态变量。
位律师回复
0条评论