我有一个基本的疑问。 Here它说我不需要返回全局变量
现在,我想知道,如果我return
是一个全局变量(让它为char
或int
或其他一些数据类型),它会引起什么可怕的呢?
我知道,当我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)?
}
答案 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)
全局变量不会被破坏,因为它们有一生(可访问的时间)是整个程序的。