Pointer und for-Schleife
-
Hallo,
ich habe gerade versucht diesen Code auszuführen, aber der Compiler meckert mit dem folgenden Fehler:
#include <stdio.h> int main() { int *a, b; b = 17; a = &b; int i; for(i = 0; i < 500; i++) { printf("%2d\n", *a); a++; } getchar(); return 0; }
error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ'
error C2065: 'i': nichtdeklarierter BezeichnerWenn ich jetzt aber nochmal einen extra Block um die For-Schleife und int i; mache geht das ganze. Wieso kommt da der Fehler, dass ein ; fehlen würde?
Danke für eure Hilfe!
-
Hi,
pack malint i;
über
b = 17;
Gruß,
B.B.
-
In C müssen die Deklartionen von Variablen immer am Blockanfang stehen.
Deine Deklaration von i gehört also unter die andere Deklaration.Das sollte auch die Frage klären, warum es geht, wenn du ein Block darum machst.
Dann steht die Deklaration nämlich wieder am Anfang und alles ist gut.
-
Achso ok. Vielen Danke für die schnellen Antworten
-
In C89 und C90 müssen Variablendeklarationen am Anfang des Blocks stehen, in C99 nicht mehr. Gute, aktiv entwickelte Compiler sollten das eigentlich schlucken, falls du nicht explizit in einem alten Modus arbeitest.
Deklarationen am Blockanfang sind aber sowieso in den meisten Fällen schöner.