我有以下代码,但是我不明白它输出什么以及为什么输出它的作用。
int main(){
int *i;
int *fun();
i=fun();
printf("%d\n",*i);
printf("%d\n",*i);
}
int *fun(){
int k=12;
return(&k);
}
输出是 12 和一个垃圾值。有人可以解释输出吗?
它不应该两次都返回垃圾值吗?
我知道这k
是本地的fun()
,因此它将存储在堆栈中,并且在fun()
超出范围时将被销毁。我在这里缺少什么概念?