次のコードがありましたが、何をなぜ出力するのかわかりません。
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()
、スコープ外になると破棄されることになります。ここで欠けている概念は何ですか?