#include<stdio.h>
void bar()
{
int a=4;
}
void foo()
{
int a;
printf("%d",a);
}
int main()
{
bar();
foo();
}
我确信上面的程序将输出作为一些垃圾值(这就是我编译和运行时发生的事情)。但是我在一篇文章中读到,某些编译器可以将输出本身设为 4。给出的解释是它与激活堆栈和激活帧有关。我不明白。是否类似于 bar() 函数中的 int a=4 的值存储在激活堆栈中的某个位置以供将来使用?我很困惑!