【发布时间】:2011-09-28 06:17:07
【问题描述】:
下面是代码
代码:
#include <stdio.h>
int * num(void);
int main(void)
{
int * num2;
num2 =num();
printf("%d\n" , *num2);
return 0;
}
int * num(void)
{
int num = 20;
return #
}
问题:
-
1234563这是
之后,我只需使用解引用运算符提取特定
num变量的值并在main()函数中打印出来。有一件事我很困惑。我记得我读过一本关于 javascript 的书,其中提到变量生命周期在函数中,这意味着在函数完成执行其指令并将控制权传递回调用它的函数后,函数中每个变量的值将是干净的out(garbage collector)。但是为什么在这段代码中我的
main()函数仍然可以指向那个特定内存地址的值??
main()。
【问题讨论】:
-
main中的代码之所以仍然可以指向那个内存地址,是因为与 JavaScript 不同,C 中没有垃圾收集器。 -
呵呵,这点与下面的 4 个答案相矛盾
-
我不知道你在看哪个答案,但是你在考虑动态范围吗?动态范围从堆栈中清除对象,是与垃圾回收不同的概念.
标签: c variables pointers memory-address