Wie gesagt hab' ich mehrere gelesen, aber C verhält sich mir gegenüber immer noch wie 'ne Bitch.
Welche denn?
Dafür, daß man manchmal Variablen erst initialisieren, und später deklarieren muß, ist der Sprachstandard verantwortlich (kein C99), nicht der Compiler: Ok.
Deklaration ist sowas wie "int foo;", Initialisierung zB "foo = 0;". Ein Deklarator darf eine Initialisierung enthalten ("int foo = 0;"). In C vor C99 müssen Variablen vor dem ersten Statement in einem Block (zB einer Funktion) deklariert werden, ob mit oder ohne Initialisierung ist dabei egal (siehe zB ANSI C89 3.5 und 3.6.2).
Die Frage ist, was wolltest Du mit so einem Posting bewirken? Das Niveau meines Textes auf das eines amtlichen Lehrbuchs anheben?
Ich rate mal: Die Verbreitung von Fehlinformationen reduzieren. C ist eine historisch gewachsene, komplizierte Sprache mit vielen subtilen Details, die sich auch noch je nach Untervariante unterscheiden und die diversen Compiler setzen da mit ihren Zusatzfeatures nochmal einiges an Komplexität drauf. Man findet daher gerne mal Seiten oder Bücher für "C-Anfänger", die Dinge behaupten oder empfehlen, die im besten Fall falsch aber harmlos sind und im schlimmsten Fall falsch und je nach Compiler und Laufzeitumgebung zu falschen Ergebnissen führen. "void main()" ist zB so ein Fall, auf bestimmten Betriebssystemen kann das zu einem Crash am Programmende führen weil die System-Libraries von einem standardkonformen "int main()" ausgehen.