0

可能重复:
C 中变量的作用域与生命周期

c中变量的范围和生命周期之间到底有什么区别?在函数内的块中声明的变量的范围和生命周期是什么?

4

2 回答 2

9

假设我们有两个功能:

void foo()
{
    /* Do some stuff */
}

void bar()
{
    int local_bar;

    foo();

    /* Do some more stuff */
}

在函数bar中,变量的范围local_bar都在函数内部bar。当调用foo变量暂时超出范围时,即不能从foo. 但是,变量的生命周期并没有结束,它只会在函数结束时bar结束。

于 2012-07-12T08:42:58.217 回答
1

这取决于。范围代表可以访问变量的代码块,生命周期代表从创建到销毁的时间段。

在函数内的块中声明的变量的范围和生命周期是什么?

在这种情况下,它们重合:

{
   int x; // begin scope and lifetime
}  // end scope and lifetime

在其他情况下也会出现差异,例如使用全局变量。extern int x您在某处声明并定义它。它的生命周期从程序的开始延伸到结束,但它的范围仅在您实际包含声明的文件中。

于 2012-07-12T08:38:15.663 回答