返回变量

时间:2013-07-20 19:07:29

标签: c return return-value

我有一个基本的疑问。 Here它说我不需要返回全局变量 现在,我想知道,如果我return是一个全局变量(让它为charint或其他一些数据类型),它会引起什么可怕的呢?
我知道,当我return来自函数的变量时,变量会立即被销毁 这是否意味着,分配给该变量的内存是否已取消分配/释放? 有人可以解释一下吗? 请考虑以下代码:

#include<stdio.h>  

int var;  //a global int

int MyFuction(void)
{
    int temp_var = 0;
    temp_var++;
    return temp_var; //it will get destroyed after returning
}

int main(void)  
{
    MyFunction();
    var++; 
    return var; //Will it get destroyed here, (var being a global variable)? 
}

3 个答案:

答案 0 :(得分:0)

int main(void)  
{
    MyFunction();
    var++; 
    return var; //Will it get destroyed here, (var being a global variable)? 
}

不,它不会。具有静态存储持续时间的对象(如此处为var)在程序终止时被销毁。

答案 1 :(得分:0)

var是gloabl变量,它在返回语句后不会被销毁,它的生命直到程序执行,范围是代码中的每一个地方。

只有函数的本地变量超出范围并在返回语句后销毁。

注意:生活和范围有两个方面。 局部变量的生命是直到函数返回。范围在函数内,其内存来自堆栈。 全局变量的生命是直到程序终止,范围是C中的每个位置。

答案 2 :(得分:0)

全局变量不会被破坏,因为它们有一生(可访问的时间)是整个程序的。