變量a在兩個單獨的函數中聲明,但僅在其中一個函數中初始化。主函數調用聲明和初始化a的函數,然後調用第二個函數,該函數在不初始化的情況下重新聲明該變量。它打印42,儘管a在一個不同的函數範圍內被初始化,其數據應該在函數完成後被銷燬。這是爲什麼發生?在兩個函數中聲明變量,但只初始化其中的一個
#include <stdio.h>
void foo() {
int a = 42;
}
void bar() {
int a;
printf("%d",a);
}
main() {
foo();
bar();
}
他們不同'a's。閱讀關於變量*範圍*。 – Roddy
你告訴我們,它打印42嗎? – pm100
順便說一句,它實際上定義了兩個函數,但只在一個函數中初始化。它的措辭在 – TinyTheBrontosaurus