我认为一旦函数返回,其中声明的所有局部变量(除了带有static
关键字的变量)都会被垃圾收集。但是当我尝试下面的代码时,它仍然会在函数返回后打印值。谁能解释为什么?
int *fun();
main() {
int *p;
p = fun();
printf("%d",*p); //shouldn't print 5, for the variable no longer exists at this address
}
int *fun() {
int q;
q = 5;
return(&q);
}