【发布时间】:2016-03-16 23:14:09
【问题描述】:
变量 a 在两个单独的函数中声明,但只在其中一个函数中初始化。主函数调用声明和初始化 a 的函数,然后调用第二个函数重新声明该变量而不初始化它。它打印 42,即使 a 在不同的函数范围内初始化,其数据应该在函数完成后被销毁。为什么会这样?
#include <stdio.h>
void foo() {
int a = 42;
}
void bar() {
int a;
printf("%d",a);
}
main() {
foo();
bar();
}
【问题讨论】:
-
他们是不同的
as。阅读变量范围。 -
你告诉我们,它打印的是 42 吗?
-
顺便说一句,它实际上是在两个函数中定义的,但只在一个函数中初始化。它在问题中的措辞倒置
-
谢谢@TinyTheBrontosaurus
-
啊,该死。以为这是重复的。结果不完全是,我想到的是
c++,但我认为很多相同的原则也适用于此。 Eric Lippert 通常有很好的答案:stackoverflow.com/questions/6441218/…