首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C中的局部静态变量范围

C中的局部静态变量范围
EN

Stack Overflow用户
提问于 2014-09-01 06:18:30
回答 2查看 1.4K关注 0票数 0

关于静态变量,我有一个简单的问题。如果我在函数中声明了一个静态变量:

代码语言:javascript
运行
复制
void main()
{
    int k = 0
    while(k<=4)
    {
        fun();
        k++;
    }
}
int fun()
{
    static int i=5;
    i++;
    printf(Value %d\t", i);
    return 0;
}

如我所知,函数将在返回后释放。但是i值存储在哪里。是像全局变量一样的静态变量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-01 06:20:22

该函数在返回时不会在i中释放fun()i的存储区域与全局变量相同,但它不是全局变量。它只能在定义它的函数fun()中访问。它与任何全局变量i或在任何其他函数(在任何源文件中)内是静态的任何其他变量i都是分开的,或者与定义fun()的源文件中的文件范围静态变量i分离。它的寿命和程序一样长。

票数 3
EN

Stack Overflow用户

发布于 2014-09-01 06:21:39

如我所知,函数将在返回- No后重新定位。我认为你的假设是错误的!

static变量在从函数返回后不会被释放。

存储在哪里?- static变量存储在“数据部分”或“数据内存”中。

--当程序加载到内存中时,static变量的生命周期开始,程序执行结束时,static变量的生命周期结束!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25599854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档