0

在这里,我有一个基本的疑问。这里它说我不需要返回全局变量
现在,我想知道,如果我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)? 
}
4

3 回答 3

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

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

于 2013-07-20T19:09:03.870 回答
0

var是 gloabl 变量,它在 return 语句后不会被破坏,它的生命是直到程序执行并且范围是代码中的每个位置。

只有函数的局部变量超出范围并在 return 语句后销毁。

注意:有生命和范围两件事。局部变量的生命是直到函数返回。范围在函数内,它的内存来自堆栈。全局变量的生命周期是直到程序终止并且范围是 C 中的每一个地方。

于 2013-07-20T19:09:31.017 回答
0

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

于 2013-07-20T19:13:12.470 回答