在一般情况下,当程序调用一个函数时,将首先执行函数中的变量定义和初始化赋值,然后执行其他的代码。例如,对于以下的函数factorial用于计算参数x的阶乘值:
long factorial(int x)
{
long p=1;
for(;x>=1;x--) p=p*x;
return p;
}
当程序中每次调用函数factorial时,都会定义变量p,并为其赋予初始值1。而在函数执行结束,通过执行return p;语句将p的值传递到系统存储区后,变量p将被系统释放。这种类型的变量也称为“auto存储类别”或“动态存储类别”,即每次调用函数时,都需要重新定义变量,重新为其分配存储空间,因此其存储地址是“动态”的。
如果希望在函数退出后,其中的某些变量的值仍然被保留,以备以后的函数调用继续使用,则应将变量定义为“static存储类别”,即“静态存储类别”。通常是不想定义全局变量,但又希望函数内部局部变量的值不被释放,即可以使用静态存储变量。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。