可能重复:
C 中变量的作用域与生命周期
c中变量的范围和生命周期之间到底有什么区别?在函数内的块中声明的变量的范围和生命周期是什么?
假设我们有两个功能:
void foo()
{
/* Do some stuff */
}
void bar()
{
int local_bar;
foo();
/* Do some more stuff */
}
在函数bar
中,变量的范围local_bar
都在函数内部bar
。当调用foo
变量暂时超出范围时,即不能从foo
. 但是,变量的生命周期并没有结束,它只会在函数结束时bar
结束。
这取决于。范围代表可以访问变量的代码块,生命周期代表从创建到销毁的时间段。
在函数内的块中声明的变量的范围和生命周期是什么?
在这种情况下,它们重合:
{
int x; // begin scope and lifetime
} // end scope and lifetime
在其他情况下也会出现差异,例如使用全局变量。extern int x
您在某处声明并定义它。它的生命周期从程序的开始延伸到结束,但它的范围仅在您实际包含声明的文件中。