开发者社区> 问答> 正文

如何理解“静态存储类别static”的变量?

如何理解“静态存储类别static”的变量?

展开
收起
游客py5kcp7dd6tu6 2022-03-29 22:35:30 553 0
1 条回答
写回答
取消 提交回答
  • 在一般情况下,当程序调用一个函数时,将首先执行函数中的变量定义和初始化赋值,然后执行其他的代码。例如,对于以下的函数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存储类别”,即“静态存储类别”。通常是不想定义全局变量,但又希望函数内部局部变量的值不被释放,即可以使用静态存储变量。

    2022-03-29 22:36:05
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载